##// END OF EJS Templates
- Small fix to demos to flush stdout on each printed block.
fperez -
Show More
@@ -1,309 +1,311 b''
1 """Module for interactive demos using IPython.
1 """Module for interactive demos using IPython.
2
2
3 This module implements a single class, Demo, for running Python scripts
3 This module implements a single class, Demo, for running Python scripts
4 interactively in IPython for demonstrations. With very simple markup (a few
4 interactively in IPython for demonstrations. With very simple markup (a few
5 tags in comments), you can control points where the script stops executing and
5 tags in comments), you can control points where the script stops executing and
6 returns control to IPython.
6 returns control to IPython.
7
7
8 The file is run in its own empty namespace (though you can pass it a string of
8 The file is run in its own empty namespace (though you can pass it a string of
9 arguments as if in a command line environment, and it will see those as
9 arguments as if in a command line environment, and it will see those as
10 sys.argv). But at each stop, the global IPython namespace is updated with the
10 sys.argv). But at each stop, the global IPython namespace is updated with the
11 current internal demo namespace, so you can work interactively with the data
11 current internal demo namespace, so you can work interactively with the data
12 accumulated so far.
12 accumulated so far.
13
13
14 By default, each block of code is printed (with syntax highlighting) before
14 By default, each block of code is printed (with syntax highlighting) before
15 executing it and you have to confirm execution. This is intended to show the
15 executing it and you have to confirm execution. This is intended to show the
16 code to an audience first so you can discuss it, and only proceed with
16 code to an audience first so you can discuss it, and only proceed with
17 execution once you agree. There are a few tags which allow you to modify this
17 execution once you agree. There are a few tags which allow you to modify this
18 behavior.
18 behavior.
19
19
20 The supported tags are:
20 The supported tags are:
21
21
22 # <demo> --- stop ---
22 # <demo> --- stop ---
23
23
24 Defines block boundaries, the points where IPython stops execution of the
24 Defines block boundaries, the points where IPython stops execution of the
25 file and returns to the interactive prompt.
25 file and returns to the interactive prompt.
26
26
27 # <demo> silent
27 # <demo> silent
28
28
29 Make a block execute silently (and hence automatically). Typically used in
29 Make a block execute silently (and hence automatically). Typically used in
30 cases where you have some boilerplate or initialization code which you need
30 cases where you have some boilerplate or initialization code which you need
31 executed but do not want to be seen in the demo.
31 executed but do not want to be seen in the demo.
32
32
33 # <demo> auto
33 # <demo> auto
34
34
35 Make a block execute automatically, but still being printed. Useful for
35 Make a block execute automatically, but still being printed. Useful for
36 simple code which does not warrant discussion, since it avoids the extra
36 simple code which does not warrant discussion, since it avoids the extra
37 manual confirmation.
37 manual confirmation.
38
38
39 # <demo> auto_all
39 # <demo> auto_all
40
40
41 This tag can _only_ be in the first block, and if given it overrides the
41 This tag can _only_ be in the first block, and if given it overrides the
42 individual auto tags to make the whole demo fully automatic (no block asks
42 individual auto tags to make the whole demo fully automatic (no block asks
43 for confirmation). It can also be given at creation time (or the attribute
43 for confirmation). It can also be given at creation time (or the attribute
44 set later) to override what's in the file.
44 set later) to override what's in the file.
45
45
46 While _any_ python file can be run as a Demo instance, if there are no stop
46 While _any_ python file can be run as a Demo instance, if there are no stop
47 tags the whole file will run in a single block (no different that calling
47 tags the whole file will run in a single block (no different that calling
48 first %pycat and then %run). The minimal markup to make this useful is to
48 first %pycat and then %run). The minimal markup to make this useful is to
49 place a set of stop tags; the other tags are only there to let you fine-tune
49 place a set of stop tags; the other tags are only there to let you fine-tune
50 the execution.
50 the execution.
51
51
52 This is probably best explained with the simple example file below. You can
52 This is probably best explained with the simple example file below. You can
53 copy this into a file named ex_demo.py, and try running it via:
53 copy this into a file named ex_demo.py, and try running it via:
54
54
55 from IPython.demo import Demo
55 from IPython.demo import Demo
56 d = Demo('ex_demo.py')
56 d = Demo('ex_demo.py')
57 d() <--- Call the d object (omit the parens if you have autocall on).
57 d() <--- Call the d object (omit the parens if you have autocall on).
58
58
59 Each time you call the demo object, it runs the next block. The demo object
59 Each time you call the demo object, it runs the next block. The demo object
60 has a few useful methods for navigation, like again(), jump(), seek() and
60 has a few useful methods for navigation, like again(), jump(), seek() and
61 back(). It can be reset for a new run via reset() or reloaded from disk (in
61 back(). It can be reset for a new run via reset() or reloaded from disk (in
62 case you've edited the source) via reload(). See their docstrings below.
62 case you've edited the source) via reload(). See their docstrings below.
63
63
64 #################### EXAMPLE DEMO <ex_demo.py> ###############################
64 #################### EXAMPLE DEMO <ex_demo.py> ###############################
65 '''A simple interactive demo to illustrate the use of IPython's Demo class.'''
65 '''A simple interactive demo to illustrate the use of IPython's Demo class.'''
66
66
67 print 'Hello, welcome to an interactive IPython demo.'
67 print 'Hello, welcome to an interactive IPython demo.'
68
68
69 # The mark below defines a block boundary, which is a point where IPython will
69 # The mark below defines a block boundary, which is a point where IPython will
70 # stop execution and return to the interactive prompt.
70 # stop execution and return to the interactive prompt.
71 # Note that in actual interactive execution,
71 # Note that in actual interactive execution,
72 # <demo> --- stop ---
72 # <demo> --- stop ---
73
73
74 x = 1
74 x = 1
75 y = 2
75 y = 2
76
76
77 # <demo> --- stop ---
77 # <demo> --- stop ---
78
78
79 # the mark below makes this block as silent
79 # the mark below makes this block as silent
80 # <demo> silent
80 # <demo> silent
81
81
82 print 'This is a silent block, which gets executed but not printed.'
82 print 'This is a silent block, which gets executed but not printed.'
83
83
84 # <demo> --- stop ---
84 # <demo> --- stop ---
85 # <demo> auto
85 # <demo> auto
86 print 'This is an automatic block.'
86 print 'This is an automatic block.'
87 print 'It is executed without asking for confirmation, but printed.'
87 print 'It is executed without asking for confirmation, but printed.'
88 z = x+y
88 z = x+y
89
89
90 print 'z=',x
90 print 'z=',x
91
91
92 # <demo> --- stop ---
92 # <demo> --- stop ---
93 # This is just another normal block.
93 # This is just another normal block.
94 print 'z is now:', z
94 print 'z is now:', z
95
95
96 print 'bye!'
96 print 'bye!'
97 ################### END EXAMPLE DEMO <ex_demo.py> ############################
97 ################### END EXAMPLE DEMO <ex_demo.py> ############################
98
98
99 WARNING: this module uses Python 2.3 features, so it won't work in 2.2
99 WARNING: this module uses Python 2.3 features, so it won't work in 2.2
100 environments.
100 environments.
101 """
101 """
102 #*****************************************************************************
102 #*****************************************************************************
103 # Copyright (C) 2005-2006 Fernando Perez. <Fernando.Perez@colorado.edu>
103 # Copyright (C) 2005-2006 Fernando Perez. <Fernando.Perez@colorado.edu>
104 #
104 #
105 # Distributed under the terms of the BSD License. The full license is in
105 # Distributed under the terms of the BSD License. The full license is in
106 # the file COPYING, distributed as part of this software.
106 # the file COPYING, distributed as part of this software.
107 #
107 #
108 #*****************************************************************************
108 #*****************************************************************************
109
109
110 import exceptions
110 import exceptions
111 import re
111 import re
112 import sys
112 import sys
113
113
114 from IPython.PyColorize import Parser
114 from IPython.PyColorize import Parser
115 from IPython.genutils import marquee, shlex_split, file_read
115 from IPython.genutils import marquee, shlex_split, file_read
116
116
117 __all__ = ['Demo','DemoError']
117 __all__ = ['Demo','DemoError']
118
118
119 class DemoError(exceptions.Exception): pass
119 class DemoError(exceptions.Exception): pass
120
120
121 def re_mark(mark):
121 def re_mark(mark):
122 return re.compile(r'^\s*#\s+<demo>\s+%s\s*$' % mark,re.MULTILINE)
122 return re.compile(r'^\s*#\s+<demo>\s+%s\s*$' % mark,re.MULTILINE)
123
123
124 class Demo:
124 class Demo:
125
125
126 re_stop = re_mark('---\s?stop\s?---')
126 re_stop = re_mark('---\s?stop\s?---')
127 re_silent = re_mark('silent')
127 re_silent = re_mark('silent')
128 re_auto = re_mark('auto')
128 re_auto = re_mark('auto')
129 re_auto_all = re_mark('auto_all')
129 re_auto_all = re_mark('auto_all')
130
130
131 def __init__(self,fname,arg_str='',auto_all=None):
131 def __init__(self,fname,arg_str='',auto_all=None):
132 """Make a new demo object. To run the demo, simply call the object.
132 """Make a new demo object. To run the demo, simply call the object.
133
133
134 See the module docstring for full details and an example (you can use
134 See the module docstring for full details and an example (you can use
135 IPython.Demo? in IPython to see it).
135 IPython.Demo? in IPython to see it).
136
136
137 Inputs:
137 Inputs:
138
138
139 - fname = filename.
139 - fname = filename.
140
140
141 Optional inputs:
141 Optional inputs:
142
142
143 - arg_str(''): a string of arguments, internally converted to a list
143 - arg_str(''): a string of arguments, internally converted to a list
144 just like sys.argv, so the demo script can see a similar
144 just like sys.argv, so the demo script can see a similar
145 environment.
145 environment.
146
146
147 - auto_all(None): global flag to run all blocks automatically without
147 - auto_all(None): global flag to run all blocks automatically without
148 confirmation. This attribute overrides the block-level tags and
148 confirmation. This attribute overrides the block-level tags and
149 applies to the whole demo. It is an attribute of the object, and
149 applies to the whole demo. It is an attribute of the object, and
150 can be changed at runtime simply by reassigning it to a boolean
150 can be changed at runtime simply by reassigning it to a boolean
151 value.
151 value.
152 """
152 """
153
153
154 self.fname = fname
154 self.fname = fname
155 self.sys_argv = [fname] + shlex_split(arg_str)
155 self.sys_argv = [fname] + shlex_split(arg_str)
156 self.auto_all = auto_all
156 self.auto_all = auto_all
157
157
158 # get a few things from ipython. While it's a bit ugly design-wise,
158 # get a few things from ipython. While it's a bit ugly design-wise,
159 # it ensures that things like color scheme and the like are always in
159 # it ensures that things like color scheme and the like are always in
160 # sync with the ipython mode being used. This class is only meant to
160 # sync with the ipython mode being used. This class is only meant to
161 # be used inside ipython anyways, so it's OK.
161 # be used inside ipython anyways, so it's OK.
162 self.ip_showtb = __IPYTHON__.showtraceback
162 self.ip_showtb = __IPYTHON__.showtraceback
163 self.ip_ns = __IPYTHON__.user_ns
163 self.ip_ns = __IPYTHON__.user_ns
164 self.ip_colorize = __IPYTHON__.pycolorize
164 self.ip_colorize = __IPYTHON__.pycolorize
165
165
166 # load user data and initialize data structures
166 # load user data and initialize data structures
167 self.reload()
167 self.reload()
168
168
169 def reload(self):
169 def reload(self):
170 """Reload source from disk and initialize state."""
170 """Reload source from disk and initialize state."""
171 # read data and parse into blocks
171 # read data and parse into blocks
172 self.src = file_read(self.fname)
172 self.src = file_read(self.fname)
173 src_b = [b.strip() for b in self.re_stop.split(self.src) if b]
173 src_b = [b.strip() for b in self.re_stop.split(self.src) if b]
174 self._silent = [bool(self.re_silent.findall(b)) for b in src_b]
174 self._silent = [bool(self.re_silent.findall(b)) for b in src_b]
175 self._auto = [bool(self.re_auto.findall(b)) for b in src_b]
175 self._auto = [bool(self.re_auto.findall(b)) for b in src_b]
176
176
177 # if auto_all is not given (def. None), we read it from the file
177 # if auto_all is not given (def. None), we read it from the file
178 if self.auto_all is None:
178 if self.auto_all is None:
179 self.auto_all = bool(self.re_auto_all.findall(src_b[0]))
179 self.auto_all = bool(self.re_auto_all.findall(src_b[0]))
180 else:
180 else:
181 self.auto_all = bool(self.auto_all)
181 self.auto_all = bool(self.auto_all)
182
182
183 # Clean the sources from all markup so it doesn't get displayed when
183 # Clean the sources from all markup so it doesn't get displayed when
184 # running the demo
184 # running the demo
185 src_blocks = []
185 src_blocks = []
186 auto_strip = lambda s: self.re_auto.sub('',s)
186 auto_strip = lambda s: self.re_auto.sub('',s)
187 for i,b in enumerate(src_b):
187 for i,b in enumerate(src_b):
188 if self._auto[i]:
188 if self._auto[i]:
189 src_blocks.append(auto_strip(b))
189 src_blocks.append(auto_strip(b))
190 else:
190 else:
191 src_blocks.append(b)
191 src_blocks.append(b)
192 # remove the auto_all marker
192 # remove the auto_all marker
193 src_blocks[0] = self.re_auto_all.sub('',src_blocks[0])
193 src_blocks[0] = self.re_auto_all.sub('',src_blocks[0])
194
194
195 self.nblocks = len(src_blocks)
195 self.nblocks = len(src_blocks)
196 self.src_blocks = src_blocks
196 self.src_blocks = src_blocks
197
197
198 # also build syntax-highlighted source
198 # also build syntax-highlighted source
199 self.src_blocks_colored = map(self.ip_colorize,self.src_blocks)
199 self.src_blocks_colored = map(self.ip_colorize,self.src_blocks)
200
200
201 # ensure clean namespace and seek offset
201 # ensure clean namespace and seek offset
202 self.reset()
202 self.reset()
203
203
204 def reset(self):
204 def reset(self):
205 """Reset the namespace and seek pointer to restart the demo"""
205 """Reset the namespace and seek pointer to restart the demo"""
206 self.user_ns = {}
206 self.user_ns = {}
207 self.finished = False
207 self.finished = False
208 self.block_index = 0
208 self.block_index = 0
209
209
210 def _validate_index(self,index):
210 def _validate_index(self,index):
211 if index<0 or index>=self.nblocks:
211 if index<0 or index>=self.nblocks:
212 raise ValueError('invalid block index %s' % index)
212 raise ValueError('invalid block index %s' % index)
213
213
214 def seek(self,index):
214 def seek(self,index):
215 """Move the current seek pointer to the given block"""
215 """Move the current seek pointer to the given block"""
216 self._validate_index(index)
216 self._validate_index(index)
217 self.block_index = index
217 self.block_index = index
218 self.finished = False
218 self.finished = False
219
219
220 def back(self,num=1):
220 def back(self,num=1):
221 """Move the seek pointer back num blocks (default is 1)."""
221 """Move the seek pointer back num blocks (default is 1)."""
222 self.seek(self.block_index-num)
222 self.seek(self.block_index-num)
223
223
224 def jump(self,num):
224 def jump(self,num):
225 """Jump a given number of blocks relative to the current one."""
225 """Jump a given number of blocks relative to the current one."""
226 self.seek(self.block_index+num)
226 self.seek(self.block_index+num)
227
227
228 def again(self):
228 def again(self):
229 """Move the seek pointer back one block and re-execute."""
229 """Move the seek pointer back one block and re-execute."""
230 self.back(1)
230 self.back(1)
231 self()
231 self()
232
232
233 def show(self,index=None):
233 def show(self,index=None):
234 """Show a single block on screen"""
234 """Show a single block on screen"""
235 if index is None:
235 if index is None:
236 if self.finished:
236 if self.finished:
237 print 'Demo finished. Use reset() if you want to rerun it.'
237 print 'Demo finished. Use reset() if you want to rerun it.'
238 return
238 return
239 index = self.block_index
239 index = self.block_index
240 else:
240 else:
241 self._validate_index(index)
241 self._validate_index(index)
242 print marquee('<%s> block # %s (%s remaining)' %
242 print marquee('<%s> block # %s (%s remaining)' %
243 (self.fname,index,self.nblocks-index-1))
243 (self.fname,index,self.nblocks-index-1))
244 print self.src_blocks_colored[index],
244 print self.src_blocks_colored[index],
245 sys.stdout.flush()
245
246
246 def show_all(self):
247 def show_all(self):
247 """Show entire demo on screen, block by block"""
248 """Show entire demo on screen, block by block"""
248
249
249 fname = self.fname
250 fname = self.fname
250 nblocks = self.nblocks
251 nblocks = self.nblocks
251 silent = self._silent
252 silent = self._silent
252 for index,block in enumerate(self.src_blocks_colored):
253 for index,block in enumerate(self.src_blocks_colored):
253 if silent[index]:
254 if silent[index]:
254 print marquee('<%s> SILENT block # %s (%s remaining)' %
255 print marquee('<%s> SILENT block # %s (%s remaining)' %
255 (fname,index,nblocks-index-1))
256 (fname,index,nblocks-index-1))
256 else:
257 else:
257 print marquee('<%s> block # %s (%s remaining)' %
258 print marquee('<%s> block # %s (%s remaining)' %
258 (fname,index,nblocks-index-1))
259 (fname,index,nblocks-index-1))
259 print block,
260 print block,
261 sys.stdout.flush()
260
262
261 def __call__(self,index=None):
263 def __call__(self,index=None):
262 """run a block of the demo.
264 """run a block of the demo.
263
265
264 If index is given, it should be an integer >=1 and <= nblocks. This
266 If index is given, it should be an integer >=1 and <= nblocks. This
265 means that the calling convention is one off from typical Python
267 means that the calling convention is one off from typical Python
266 lists. The reason for the inconsistency is that the demo always
268 lists. The reason for the inconsistency is that the demo always
267 prints 'Block n/N, and N is the total, so it would be very odd to use
269 prints 'Block n/N, and N is the total, so it would be very odd to use
268 zero-indexing here."""
270 zero-indexing here."""
269
271
270 if index is None and self.finished:
272 if index is None and self.finished:
271 print 'Demo finished. Use reset() if you want to rerun it.'
273 print 'Demo finished. Use reset() if you want to rerun it.'
272 return
274 return
273 if index is None:
275 if index is None:
274 index = self.block_index
276 index = self.block_index
275 self._validate_index(index)
277 self._validate_index(index)
276 try:
278 try:
277 next_block = self.src_blocks[index]
279 next_block = self.src_blocks[index]
278 self.block_index += 1
280 self.block_index += 1
279 if self._silent[index]:
281 if self._silent[index]:
280 print marquee('Executing silent block # %s (%s remaining)' %
282 print marquee('Executing silent block # %s (%s remaining)' %
281 (index,self.nblocks-index-1))
283 (index,self.nblocks-index-1))
282 else:
284 else:
283 self.show(index)
285 self.show(index)
284 if self.auto_all or self._auto[index]:
286 if self.auto_all or self._auto[index]:
285 print marquee('output')
287 print marquee('output')
286 else:
288 else:
287 print marquee('Press <q> to quit, <Enter> to execute...'),
289 print marquee('Press <q> to quit, <Enter> to execute...'),
288 ans = raw_input().strip()
290 ans = raw_input().strip()
289 if ans:
291 if ans:
290 print marquee('Block NOT executed')
292 print marquee('Block NOT executed')
291 return
293 return
292 try:
294 try:
293 save_argv = sys.argv
295 save_argv = sys.argv
294 sys.argv = self.sys_argv
296 sys.argv = self.sys_argv
295 exec next_block in self.user_ns
297 exec next_block in self.user_ns
296 finally:
298 finally:
297 sys.argv = save_argv
299 sys.argv = save_argv
298
300
299 except:
301 except:
300 self.ip_showtb(filename=self.fname)
302 self.ip_showtb(filename=self.fname)
301 else:
303 else:
302 self.ip_ns.update(self.user_ns)
304 self.ip_ns.update(self.user_ns)
303
305
304 if self.block_index == self.nblocks:
306 if self.block_index == self.nblocks:
305 print
307 print
306 print marquee(' END OF DEMO ')
308 print marquee(' END OF DEMO ')
307 print marquee('Use reset() if you want to rerun it.')
309 print marquee('Use reset() if you want to rerun it.')
308 self.finished = True
310 self.finished = True
309
311
@@ -1,5067 +1,5072 b''
1 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
2
3 * IPython/demo.py (Demo.show): Flush stdout after each block, so
4 computationally intensive blocks don't appear to stall the demo.
5
1 2006-01-24 Ville Vainio <vivainio@gmail.com>
6 2006-01-24 Ville Vainio <vivainio@gmail.com>
2
7
3 * iplib.py, hooks.py: 'result_display' hook can return a non-None
8 * iplib.py, hooks.py: 'result_display' hook can return a non-None
4 value to manipulate resulting history entry.
9 value to manipulate resulting history entry.
5
10
6 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
11 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
7 to instance methods of IPApi class, to make extending an embedded
12 to instance methods of IPApi class, to make extending an embedded
8 IPython feasible. See ext_rehashdir.py for example usage.
13 IPython feasible. See ext_rehashdir.py for example usage.
9
14
10 * Merged 1071-1076 from banches/0.7.1
15 * Merged 1071-1076 from banches/0.7.1
11
16
12
17
13 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
18 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
14
19
15 * tools/release (daystamp): Fix build tools to use the new
20 * tools/release (daystamp): Fix build tools to use the new
16 eggsetup.py script to build lightweight eggs.
21 eggsetup.py script to build lightweight eggs.
17
22
18 * Applied changesets 1062 and 1064 before 0.7.1 release.
23 * Applied changesets 1062 and 1064 before 0.7.1 release.
19
24
20 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
25 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
21 see the raw input history (without conversions like %ls ->
26 see the raw input history (without conversions like %ls ->
22 ipmagic("ls")). After a request from W. Stein, SAGE
27 ipmagic("ls")). After a request from W. Stein, SAGE
23 (http://modular.ucsd.edu/sage) developer. This information is
28 (http://modular.ucsd.edu/sage) developer. This information is
24 stored in the input_hist_raw attribute of the IPython instance, so
29 stored in the input_hist_raw attribute of the IPython instance, so
25 developers can access it if needed (it's an InputList instance).
30 developers can access it if needed (it's an InputList instance).
26
31
27 * Versionstring = 0.7.2.svn
32 * Versionstring = 0.7.2.svn
28
33
29 * eggsetup.py: A separate script for constructing eggs, creates
34 * eggsetup.py: A separate script for constructing eggs, creates
30 proper launch scripts even on Windows (an .exe file in
35 proper launch scripts even on Windows (an .exe file in
31 \python24\scripts).
36 \python24\scripts).
32
37
33 * ipapi.py: launch_new_instance, launch entry point needed for the
38 * ipapi.py: launch_new_instance, launch entry point needed for the
34 egg.
39 egg.
35
40
36 2006-01-23 Ville Vainio <vivainio@gmail.com>
41 2006-01-23 Ville Vainio <vivainio@gmail.com>
37
42
38 * Added %cpaste magic for pasting python code
43 * Added %cpaste magic for pasting python code
39
44
40 2006-01-22 Ville Vainio <vivainio@gmail.com>
45 2006-01-22 Ville Vainio <vivainio@gmail.com>
41
46
42 * Merge from branches/0.7.1 into trunk, revs 1052-1057
47 * Merge from branches/0.7.1 into trunk, revs 1052-1057
43
48
44 * Versionstring = 0.7.2.svn
49 * Versionstring = 0.7.2.svn
45
50
46 * eggsetup.py: A separate script for constructing eggs, creates
51 * eggsetup.py: A separate script for constructing eggs, creates
47 proper launch scripts even on Windows (an .exe file in
52 proper launch scripts even on Windows (an .exe file in
48 \python24\scripts).
53 \python24\scripts).
49
54
50 * ipapi.py: launch_new_instance, launch entry point needed for the
55 * ipapi.py: launch_new_instance, launch entry point needed for the
51 egg.
56 egg.
52
57
53 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
58 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
54
59
55 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
60 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
56 %pfile foo would print the file for foo even if it was a binary.
61 %pfile foo would print the file for foo even if it was a binary.
57 Now, extensions '.so' and '.dll' are skipped.
62 Now, extensions '.so' and '.dll' are skipped.
58
63
59 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
64 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
60 bug, where macros would fail in all threaded modes. I'm not 100%
65 bug, where macros would fail in all threaded modes. I'm not 100%
61 sure, so I'm going to put out an rc instead of making a release
66 sure, so I'm going to put out an rc instead of making a release
62 today, and wait for feedback for at least a few days.
67 today, and wait for feedback for at least a few days.
63
68
64 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
69 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
65 it...) the handling of pasting external code with autoindent on.
70 it...) the handling of pasting external code with autoindent on.
66 To get out of a multiline input, the rule will appear for most
71 To get out of a multiline input, the rule will appear for most
67 users unchanged: two blank lines or change the indent level
72 users unchanged: two blank lines or change the indent level
68 proposed by IPython. But there is a twist now: you can
73 proposed by IPython. But there is a twist now: you can
69 add/subtract only *one or two spaces*. If you add/subtract three
74 add/subtract only *one or two spaces*. If you add/subtract three
70 or more (unless you completely delete the line), IPython will
75 or more (unless you completely delete the line), IPython will
71 accept that line, and you'll need to enter a second one of pure
76 accept that line, and you'll need to enter a second one of pure
72 whitespace. I know it sounds complicated, but I can't find a
77 whitespace. I know it sounds complicated, but I can't find a
73 different solution that covers all the cases, with the right
78 different solution that covers all the cases, with the right
74 heuristics. Hopefully in actual use, nobody will really notice
79 heuristics. Hopefully in actual use, nobody will really notice
75 all these strange rules and things will 'just work'.
80 all these strange rules and things will 'just work'.
76
81
77 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
82 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
78
83
79 * IPython/iplib.py (interact): catch exceptions which can be
84 * IPython/iplib.py (interact): catch exceptions which can be
80 triggered asynchronously by signal handlers. Thanks to an
85 triggered asynchronously by signal handlers. Thanks to an
81 automatic crash report, submitted by Colin Kingsley
86 automatic crash report, submitted by Colin Kingsley
82 <tercel-AT-gentoo.org>.
87 <tercel-AT-gentoo.org>.
83
88
84 2006-01-20 Ville Vainio <vivainio@gmail.com>
89 2006-01-20 Ville Vainio <vivainio@gmail.com>
85
90
86 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
91 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
87 (%rehashdir, very useful, try it out) of how to extend ipython
92 (%rehashdir, very useful, try it out) of how to extend ipython
88 with new magics. Also added Extensions dir to pythonpath to make
93 with new magics. Also added Extensions dir to pythonpath to make
89 importing extensions easy.
94 importing extensions easy.
90
95
91 * %store now complains when trying to store interactively declared
96 * %store now complains when trying to store interactively declared
92 classes / instances of those classes.
97 classes / instances of those classes.
93
98
94 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
99 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
95 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
100 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
96 if they exist, and ipy_user_conf.py with some defaults is created for
101 if they exist, and ipy_user_conf.py with some defaults is created for
97 the user.
102 the user.
98
103
99 * Startup rehashing done by the config file, not InterpreterExec.
104 * Startup rehashing done by the config file, not InterpreterExec.
100 This means system commands are available even without selecting the
105 This means system commands are available even without selecting the
101 pysh profile. It's the sensible default after all.
106 pysh profile. It's the sensible default after all.
102
107
103 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
108 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
104
109
105 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
110 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
106 multiline code with autoindent on working. But I am really not
111 multiline code with autoindent on working. But I am really not
107 sure, so this needs more testing. Will commit a debug-enabled
112 sure, so this needs more testing. Will commit a debug-enabled
108 version for now, while I test it some more, so that Ville and
113 version for now, while I test it some more, so that Ville and
109 others may also catch any problems. Also made
114 others may also catch any problems. Also made
110 self.indent_current_str() a method, to ensure that there's no
115 self.indent_current_str() a method, to ensure that there's no
111 chance of the indent space count and the corresponding string
116 chance of the indent space count and the corresponding string
112 falling out of sync. All code needing the string should just call
117 falling out of sync. All code needing the string should just call
113 the method.
118 the method.
114
119
115 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
120 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
116
121
117 * IPython/Magic.py (magic_edit): fix check for when users don't
122 * IPython/Magic.py (magic_edit): fix check for when users don't
118 save their output files, the try/except was in the wrong section.
123 save their output files, the try/except was in the wrong section.
119
124
120 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
125 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
121
126
122 * IPython/Magic.py (magic_run): fix __file__ global missing from
127 * IPython/Magic.py (magic_run): fix __file__ global missing from
123 script's namespace when executed via %run. After a report by
128 script's namespace when executed via %run. After a report by
124 Vivian.
129 Vivian.
125
130
126 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
131 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
127 when using python 2.4. The parent constructor changed in 2.4, and
132 when using python 2.4. The parent constructor changed in 2.4, and
128 we need to track it directly (we can't call it, as it messes up
133 we need to track it directly (we can't call it, as it messes up
129 readline and tab-completion inside our pdb would stop working).
134 readline and tab-completion inside our pdb would stop working).
130 After a bug report by R. Bernstein <rocky-AT-panix.com>.
135 After a bug report by R. Bernstein <rocky-AT-panix.com>.
131
136
132 2006-01-16 Ville Vainio <vivainio@gmail.com>
137 2006-01-16 Ville Vainio <vivainio@gmail.com>
133
138
134 * Ipython/magic.py:Reverted back to old %edit functionality
139 * Ipython/magic.py:Reverted back to old %edit functionality
135 that returns file contents on exit.
140 that returns file contents on exit.
136
141
137 * IPython/path.py: Added Jason Orendorff's "path" module to
142 * IPython/path.py: Added Jason Orendorff's "path" module to
138 IPython tree, http://www.jorendorff.com/articles/python/path/.
143 IPython tree, http://www.jorendorff.com/articles/python/path/.
139 You can get path objects conveniently through %sc, and !!, e.g.:
144 You can get path objects conveniently through %sc, and !!, e.g.:
140 sc files=ls
145 sc files=ls
141 for p in files.paths: # or files.p
146 for p in files.paths: # or files.p
142 print p,p.mtime
147 print p,p.mtime
143
148
144 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
149 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
145 now work again without considering the exclusion regexp -
150 now work again without considering the exclusion regexp -
146 hence, things like ',foo my/path' turn to 'foo("my/path")'
151 hence, things like ',foo my/path' turn to 'foo("my/path")'
147 instead of syntax error.
152 instead of syntax error.
148
153
149
154
150 2006-01-14 Ville Vainio <vivainio@gmail.com>
155 2006-01-14 Ville Vainio <vivainio@gmail.com>
151
156
152 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
157 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
153 ipapi decorators for python 2.4 users, options() provides access to rc
158 ipapi decorators for python 2.4 users, options() provides access to rc
154 data.
159 data.
155
160
156 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
161 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
157 as path separators (even on Linux ;-). Space character after
162 as path separators (even on Linux ;-). Space character after
158 backslash (as yielded by tab completer) is still space;
163 backslash (as yielded by tab completer) is still space;
159 "%cd long\ name" works as expected.
164 "%cd long\ name" works as expected.
160
165
161 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
166 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
162 as "chain of command", with priority. API stays the same,
167 as "chain of command", with priority. API stays the same,
163 TryNext exception raised by a hook function signals that
168 TryNext exception raised by a hook function signals that
164 current hook failed and next hook should try handling it, as
169 current hook failed and next hook should try handling it, as
165 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
170 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
166 requested configurable display hook, which is now implemented.
171 requested configurable display hook, which is now implemented.
167
172
168 2006-01-13 Ville Vainio <vivainio@gmail.com>
173 2006-01-13 Ville Vainio <vivainio@gmail.com>
169
174
170 * IPython/platutils*.py: platform specific utility functions,
175 * IPython/platutils*.py: platform specific utility functions,
171 so far only set_term_title is implemented (change terminal
176 so far only set_term_title is implemented (change terminal
172 label in windowing systems). %cd now changes the title to
177 label in windowing systems). %cd now changes the title to
173 current dir.
178 current dir.
174
179
175 * IPython/Release.py: Added myself to "authors" list,
180 * IPython/Release.py: Added myself to "authors" list,
176 had to create new files.
181 had to create new files.
177
182
178 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
183 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
179 shell escape; not a known bug but had potential to be one in the
184 shell escape; not a known bug but had potential to be one in the
180 future.
185 future.
181
186
182 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
187 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
183 extension API for IPython! See the module for usage example. Fix
188 extension API for IPython! See the module for usage example. Fix
184 OInspect for docstring-less magic functions.
189 OInspect for docstring-less magic functions.
185
190
186
191
187 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
192 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
188
193
189 * IPython/iplib.py (raw_input): temporarily deactivate all
194 * IPython/iplib.py (raw_input): temporarily deactivate all
190 attempts at allowing pasting of code with autoindent on. It
195 attempts at allowing pasting of code with autoindent on. It
191 introduced bugs (reported by Prabhu) and I can't seem to find a
196 introduced bugs (reported by Prabhu) and I can't seem to find a
192 robust combination which works in all cases. Will have to revisit
197 robust combination which works in all cases. Will have to revisit
193 later.
198 later.
194
199
195 * IPython/genutils.py: remove isspace() function. We've dropped
200 * IPython/genutils.py: remove isspace() function. We've dropped
196 2.2 compatibility, so it's OK to use the string method.
201 2.2 compatibility, so it's OK to use the string method.
197
202
198 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
203 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
199
204
200 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
205 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
201 matching what NOT to autocall on, to include all python binary
206 matching what NOT to autocall on, to include all python binary
202 operators (including things like 'and', 'or', 'is' and 'in').
207 operators (including things like 'and', 'or', 'is' and 'in').
203 Prompted by a bug report on 'foo & bar', but I realized we had
208 Prompted by a bug report on 'foo & bar', but I realized we had
204 many more potential bug cases with other operators. The regexp is
209 many more potential bug cases with other operators. The regexp is
205 self.re_exclude_auto, it's fairly commented.
210 self.re_exclude_auto, it's fairly commented.
206
211
207 2006-01-12 Ville Vainio <vivainio@gmail.com>
212 2006-01-12 Ville Vainio <vivainio@gmail.com>
208
213
209 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
214 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
210 Prettified and hardened string/backslash quoting with ipsystem(),
215 Prettified and hardened string/backslash quoting with ipsystem(),
211 ipalias() and ipmagic(). Now even \ characters are passed to
216 ipalias() and ipmagic(). Now even \ characters are passed to
212 %magics, !shell escapes and aliases exactly as they are in the
217 %magics, !shell escapes and aliases exactly as they are in the
213 ipython command line. Should improve backslash experience,
218 ipython command line. Should improve backslash experience,
214 particularly in Windows (path delimiter for some commands that
219 particularly in Windows (path delimiter for some commands that
215 won't understand '/'), but Unix benefits as well (regexps). %cd
220 won't understand '/'), but Unix benefits as well (regexps). %cd
216 magic still doesn't support backslash path delimiters, though. Also
221 magic still doesn't support backslash path delimiters, though. Also
217 deleted all pretense of supporting multiline command strings in
222 deleted all pretense of supporting multiline command strings in
218 !system or %magic commands. Thanks to Jerry McRae for suggestions.
223 !system or %magic commands. Thanks to Jerry McRae for suggestions.
219
224
220 * doc/build_doc_instructions.txt added. Documentation on how to
225 * doc/build_doc_instructions.txt added. Documentation on how to
221 use doc/update_manual.py, added yesterday. Both files contributed
226 use doc/update_manual.py, added yesterday. Both files contributed
222 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
227 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
223 doc/*.sh for deprecation at a later date.
228 doc/*.sh for deprecation at a later date.
224
229
225 * /ipython.py Added ipython.py to root directory for
230 * /ipython.py Added ipython.py to root directory for
226 zero-installation (tar xzvf ipython.tgz; cd ipython; python
231 zero-installation (tar xzvf ipython.tgz; cd ipython; python
227 ipython.py) and development convenience (no need to kee doing
232 ipython.py) and development convenience (no need to kee doing
228 "setup.py install" between changes).
233 "setup.py install" between changes).
229
234
230 * Made ! and !! shell escapes work (again) in multiline expressions:
235 * Made ! and !! shell escapes work (again) in multiline expressions:
231 if 1:
236 if 1:
232 !ls
237 !ls
233 !!ls
238 !!ls
234
239
235 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
240 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
236
241
237 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
242 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
238 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
243 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
239 module in case-insensitive installation. Was causing crashes
244 module in case-insensitive installation. Was causing crashes
240 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
245 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
241
246
242 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
247 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
243 <marienz-AT-gentoo.org>, closes
248 <marienz-AT-gentoo.org>, closes
244 http://www.scipy.net/roundup/ipython/issue51.
249 http://www.scipy.net/roundup/ipython/issue51.
245
250
246 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
251 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
247
252
248 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
253 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
249 problem of excessive CPU usage under *nix and keyboard lag under
254 problem of excessive CPU usage under *nix and keyboard lag under
250 win32.
255 win32.
251
256
252 2006-01-10 *** Released version 0.7.0
257 2006-01-10 *** Released version 0.7.0
253
258
254 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
259 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
255
260
256 * IPython/Release.py (revision): tag version number to 0.7.0,
261 * IPython/Release.py (revision): tag version number to 0.7.0,
257 ready for release.
262 ready for release.
258
263
259 * IPython/Magic.py (magic_edit): Add print statement to %edit so
264 * IPython/Magic.py (magic_edit): Add print statement to %edit so
260 it informs the user of the name of the temp. file used. This can
265 it informs the user of the name of the temp. file used. This can
261 help if you decide later to reuse that same file, so you know
266 help if you decide later to reuse that same file, so you know
262 where to copy the info from.
267 where to copy the info from.
263
268
264 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
269 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
265
270
266 * setup_bdist_egg.py: little script to build an egg. Added
271 * setup_bdist_egg.py: little script to build an egg. Added
267 support in the release tools as well.
272 support in the release tools as well.
268
273
269 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
274 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
270
275
271 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
276 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
272 version selection (new -wxversion command line and ipythonrc
277 version selection (new -wxversion command line and ipythonrc
273 parameter). Patch contributed by Arnd Baecker
278 parameter). Patch contributed by Arnd Baecker
274 <arnd.baecker-AT-web.de>.
279 <arnd.baecker-AT-web.de>.
275
280
276 * IPython/iplib.py (embed_mainloop): fix tab-completion in
281 * IPython/iplib.py (embed_mainloop): fix tab-completion in
277 embedded instances, for variables defined at the interactive
282 embedded instances, for variables defined at the interactive
278 prompt of the embedded ipython. Reported by Arnd.
283 prompt of the embedded ipython. Reported by Arnd.
279
284
280 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
285 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
281 it can be used as a (stateful) toggle, or with a direct parameter.
286 it can be used as a (stateful) toggle, or with a direct parameter.
282
287
283 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
288 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
284 could be triggered in certain cases and cause the traceback
289 could be triggered in certain cases and cause the traceback
285 printer not to work.
290 printer not to work.
286
291
287 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
292 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
288
293
289 * IPython/iplib.py (_should_recompile): Small fix, closes
294 * IPython/iplib.py (_should_recompile): Small fix, closes
290 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
295 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
291
296
292 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
297 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
293
298
294 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
299 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
295 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
300 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
296 Moad for help with tracking it down.
301 Moad for help with tracking it down.
297
302
298 * IPython/iplib.py (handle_auto): fix autocall handling for
303 * IPython/iplib.py (handle_auto): fix autocall handling for
299 objects which support BOTH __getitem__ and __call__ (so that f [x]
304 objects which support BOTH __getitem__ and __call__ (so that f [x]
300 is left alone, instead of becoming f([x]) automatically).
305 is left alone, instead of becoming f([x]) automatically).
301
306
302 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
307 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
303 Ville's patch.
308 Ville's patch.
304
309
305 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
310 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
306
311
307 * IPython/iplib.py (handle_auto): changed autocall semantics to
312 * IPython/iplib.py (handle_auto): changed autocall semantics to
308 include 'smart' mode, where the autocall transformation is NOT
313 include 'smart' mode, where the autocall transformation is NOT
309 applied if there are no arguments on the line. This allows you to
314 applied if there are no arguments on the line. This allows you to
310 just type 'foo' if foo is a callable to see its internal form,
315 just type 'foo' if foo is a callable to see its internal form,
311 instead of having it called with no arguments (typically a
316 instead of having it called with no arguments (typically a
312 mistake). The old 'full' autocall still exists: for that, you
317 mistake). The old 'full' autocall still exists: for that, you
313 need to set the 'autocall' parameter to 2 in your ipythonrc file.
318 need to set the 'autocall' parameter to 2 in your ipythonrc file.
314
319
315 * IPython/completer.py (Completer.attr_matches): add
320 * IPython/completer.py (Completer.attr_matches): add
316 tab-completion support for Enthoughts' traits. After a report by
321 tab-completion support for Enthoughts' traits. After a report by
317 Arnd and a patch by Prabhu.
322 Arnd and a patch by Prabhu.
318
323
319 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
324 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
320
325
321 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
326 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
322 Schmolck's patch to fix inspect.getinnerframes().
327 Schmolck's patch to fix inspect.getinnerframes().
323
328
324 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
329 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
325 for embedded instances, regarding handling of namespaces and items
330 for embedded instances, regarding handling of namespaces and items
326 added to the __builtin__ one. Multiple embedded instances and
331 added to the __builtin__ one. Multiple embedded instances and
327 recursive embeddings should work better now (though I'm not sure
332 recursive embeddings should work better now (though I'm not sure
328 I've got all the corner cases fixed, that code is a bit of a brain
333 I've got all the corner cases fixed, that code is a bit of a brain
329 twister).
334 twister).
330
335
331 * IPython/Magic.py (magic_edit): added support to edit in-memory
336 * IPython/Magic.py (magic_edit): added support to edit in-memory
332 macros (automatically creates the necessary temp files). %edit
337 macros (automatically creates the necessary temp files). %edit
333 also doesn't return the file contents anymore, it's just noise.
338 also doesn't return the file contents anymore, it's just noise.
334
339
335 * IPython/completer.py (Completer.attr_matches): revert change to
340 * IPython/completer.py (Completer.attr_matches): revert change to
336 complete only on attributes listed in __all__. I realized it
341 complete only on attributes listed in __all__. I realized it
337 cripples the tab-completion system as a tool for exploring the
342 cripples the tab-completion system as a tool for exploring the
338 internals of unknown libraries (it renders any non-__all__
343 internals of unknown libraries (it renders any non-__all__
339 attribute off-limits). I got bit by this when trying to see
344 attribute off-limits). I got bit by this when trying to see
340 something inside the dis module.
345 something inside the dis module.
341
346
342 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
347 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
343
348
344 * IPython/iplib.py (InteractiveShell.__init__): add .meta
349 * IPython/iplib.py (InteractiveShell.__init__): add .meta
345 namespace for users and extension writers to hold data in. This
350 namespace for users and extension writers to hold data in. This
346 follows the discussion in
351 follows the discussion in
347 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
352 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
348
353
349 * IPython/completer.py (IPCompleter.complete): small patch to help
354 * IPython/completer.py (IPCompleter.complete): small patch to help
350 tab-completion under Emacs, after a suggestion by John Barnard
355 tab-completion under Emacs, after a suggestion by John Barnard
351 <barnarj-AT-ccf.org>.
356 <barnarj-AT-ccf.org>.
352
357
353 * IPython/Magic.py (Magic.extract_input_slices): added support for
358 * IPython/Magic.py (Magic.extract_input_slices): added support for
354 the slice notation in magics to use N-M to represent numbers N...M
359 the slice notation in magics to use N-M to represent numbers N...M
355 (closed endpoints). This is used by %macro and %save.
360 (closed endpoints). This is used by %macro and %save.
356
361
357 * IPython/completer.py (Completer.attr_matches): for modules which
362 * IPython/completer.py (Completer.attr_matches): for modules which
358 define __all__, complete only on those. After a patch by Jeffrey
363 define __all__, complete only on those. After a patch by Jeffrey
359 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
364 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
360 speed up this routine.
365 speed up this routine.
361
366
362 * IPython/Logger.py (Logger.log): fix a history handling bug. I
367 * IPython/Logger.py (Logger.log): fix a history handling bug. I
363 don't know if this is the end of it, but the behavior now is
368 don't know if this is the end of it, but the behavior now is
364 certainly much more correct. Note that coupled with macros,
369 certainly much more correct. Note that coupled with macros,
365 slightly surprising (at first) behavior may occur: a macro will in
370 slightly surprising (at first) behavior may occur: a macro will in
366 general expand to multiple lines of input, so upon exiting, the
371 general expand to multiple lines of input, so upon exiting, the
367 in/out counters will both be bumped by the corresponding amount
372 in/out counters will both be bumped by the corresponding amount
368 (as if the macro's contents had been typed interactively). Typing
373 (as if the macro's contents had been typed interactively). Typing
369 %hist will reveal the intermediate (silently processed) lines.
374 %hist will reveal the intermediate (silently processed) lines.
370
375
371 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
376 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
372 pickle to fail (%run was overwriting __main__ and not restoring
377 pickle to fail (%run was overwriting __main__ and not restoring
373 it, but pickle relies on __main__ to operate).
378 it, but pickle relies on __main__ to operate).
374
379
375 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
380 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
376 using properties, but forgot to make the main InteractiveShell
381 using properties, but forgot to make the main InteractiveShell
377 class a new-style class. Properties fail silently, and
382 class a new-style class. Properties fail silently, and
378 misteriously, with old-style class (getters work, but
383 misteriously, with old-style class (getters work, but
379 setters don't do anything).
384 setters don't do anything).
380
385
381 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
386 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
382
387
383 * IPython/Magic.py (magic_history): fix history reporting bug (I
388 * IPython/Magic.py (magic_history): fix history reporting bug (I
384 know some nasties are still there, I just can't seem to find a
389 know some nasties are still there, I just can't seem to find a
385 reproducible test case to track them down; the input history is
390 reproducible test case to track them down; the input history is
386 falling out of sync...)
391 falling out of sync...)
387
392
388 * IPython/iplib.py (handle_shell_escape): fix bug where both
393 * IPython/iplib.py (handle_shell_escape): fix bug where both
389 aliases and system accesses where broken for indented code (such
394 aliases and system accesses where broken for indented code (such
390 as loops).
395 as loops).
391
396
392 * IPython/genutils.py (shell): fix small but critical bug for
397 * IPython/genutils.py (shell): fix small but critical bug for
393 win32 system access.
398 win32 system access.
394
399
395 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
400 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
396
401
397 * IPython/iplib.py (showtraceback): remove use of the
402 * IPython/iplib.py (showtraceback): remove use of the
398 sys.last_{type/value/traceback} structures, which are non
403 sys.last_{type/value/traceback} structures, which are non
399 thread-safe.
404 thread-safe.
400 (_prefilter): change control flow to ensure that we NEVER
405 (_prefilter): change control flow to ensure that we NEVER
401 introspect objects when autocall is off. This will guarantee that
406 introspect objects when autocall is off. This will guarantee that
402 having an input line of the form 'x.y', where access to attribute
407 having an input line of the form 'x.y', where access to attribute
403 'y' has side effects, doesn't trigger the side effect TWICE. It
408 'y' has side effects, doesn't trigger the side effect TWICE. It
404 is important to note that, with autocall on, these side effects
409 is important to note that, with autocall on, these side effects
405 can still happen.
410 can still happen.
406 (ipsystem): new builtin, to complete the ip{magic/alias/system}
411 (ipsystem): new builtin, to complete the ip{magic/alias/system}
407 trio. IPython offers these three kinds of special calls which are
412 trio. IPython offers these three kinds of special calls which are
408 not python code, and it's a good thing to have their call method
413 not python code, and it's a good thing to have their call method
409 be accessible as pure python functions (not just special syntax at
414 be accessible as pure python functions (not just special syntax at
410 the command line). It gives us a better internal implementation
415 the command line). It gives us a better internal implementation
411 structure, as well as exposing these for user scripting more
416 structure, as well as exposing these for user scripting more
412 cleanly.
417 cleanly.
413
418
414 * IPython/macro.py (Macro.__init__): moved macros to a standalone
419 * IPython/macro.py (Macro.__init__): moved macros to a standalone
415 file. Now that they'll be more likely to be used with the
420 file. Now that they'll be more likely to be used with the
416 persistance system (%store), I want to make sure their module path
421 persistance system (%store), I want to make sure their module path
417 doesn't change in the future, so that we don't break things for
422 doesn't change in the future, so that we don't break things for
418 users' persisted data.
423 users' persisted data.
419
424
420 * IPython/iplib.py (autoindent_update): move indentation
425 * IPython/iplib.py (autoindent_update): move indentation
421 management into the _text_ processing loop, not the keyboard
426 management into the _text_ processing loop, not the keyboard
422 interactive one. This is necessary to correctly process non-typed
427 interactive one. This is necessary to correctly process non-typed
423 multiline input (such as macros).
428 multiline input (such as macros).
424
429
425 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
430 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
426 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
431 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
427 which was producing problems in the resulting manual.
432 which was producing problems in the resulting manual.
428 (magic_whos): improve reporting of instances (show their class,
433 (magic_whos): improve reporting of instances (show their class,
429 instead of simply printing 'instance' which isn't terribly
434 instead of simply printing 'instance' which isn't terribly
430 informative).
435 informative).
431
436
432 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
437 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
433 (minor mods) to support network shares under win32.
438 (minor mods) to support network shares under win32.
434
439
435 * IPython/winconsole.py (get_console_size): add new winconsole
440 * IPython/winconsole.py (get_console_size): add new winconsole
436 module and fixes to page_dumb() to improve its behavior under
441 module and fixes to page_dumb() to improve its behavior under
437 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
442 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
438
443
439 * IPython/Magic.py (Macro): simplified Macro class to just
444 * IPython/Magic.py (Macro): simplified Macro class to just
440 subclass list. We've had only 2.2 compatibility for a very long
445 subclass list. We've had only 2.2 compatibility for a very long
441 time, yet I was still avoiding subclassing the builtin types. No
446 time, yet I was still avoiding subclassing the builtin types. No
442 more (I'm also starting to use properties, though I won't shift to
447 more (I'm also starting to use properties, though I won't shift to
443 2.3-specific features quite yet).
448 2.3-specific features quite yet).
444 (magic_store): added Ville's patch for lightweight variable
449 (magic_store): added Ville's patch for lightweight variable
445 persistence, after a request on the user list by Matt Wilkie
450 persistence, after a request on the user list by Matt Wilkie
446 <maphew-AT-gmail.com>. The new %store magic's docstring has full
451 <maphew-AT-gmail.com>. The new %store magic's docstring has full
447 details.
452 details.
448
453
449 * IPython/iplib.py (InteractiveShell.post_config_initialization):
454 * IPython/iplib.py (InteractiveShell.post_config_initialization):
450 changed the default logfile name from 'ipython.log' to
455 changed the default logfile name from 'ipython.log' to
451 'ipython_log.py'. These logs are real python files, and now that
456 'ipython_log.py'. These logs are real python files, and now that
452 we have much better multiline support, people are more likely to
457 we have much better multiline support, people are more likely to
453 want to use them as such. Might as well name them correctly.
458 want to use them as such. Might as well name them correctly.
454
459
455 * IPython/Magic.py: substantial cleanup. While we can't stop
460 * IPython/Magic.py: substantial cleanup. While we can't stop
456 using magics as mixins, due to the existing customizations 'out
461 using magics as mixins, due to the existing customizations 'out
457 there' which rely on the mixin naming conventions, at least I
462 there' which rely on the mixin naming conventions, at least I
458 cleaned out all cross-class name usage. So once we are OK with
463 cleaned out all cross-class name usage. So once we are OK with
459 breaking compatibility, the two systems can be separated.
464 breaking compatibility, the two systems can be separated.
460
465
461 * IPython/Logger.py: major cleanup. This one is NOT a mixin
466 * IPython/Logger.py: major cleanup. This one is NOT a mixin
462 anymore, and the class is a fair bit less hideous as well. New
467 anymore, and the class is a fair bit less hideous as well. New
463 features were also introduced: timestamping of input, and logging
468 features were also introduced: timestamping of input, and logging
464 of output results. These are user-visible with the -t and -o
469 of output results. These are user-visible with the -t and -o
465 options to %logstart. Closes
470 options to %logstart. Closes
466 http://www.scipy.net/roundup/ipython/issue11 and a request by
471 http://www.scipy.net/roundup/ipython/issue11 and a request by
467 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
472 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
468
473
469 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
474 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
470
475
471 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
476 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
472 better hadnle backslashes in paths. See the thread 'More Windows
477 better hadnle backslashes in paths. See the thread 'More Windows
473 questions part 2 - \/ characters revisited' on the iypthon user
478 questions part 2 - \/ characters revisited' on the iypthon user
474 list:
479 list:
475 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
480 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
476
481
477 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
482 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
478
483
479 (InteractiveShell.__init__): change threaded shells to not use the
484 (InteractiveShell.__init__): change threaded shells to not use the
480 ipython crash handler. This was causing more problems than not,
485 ipython crash handler. This was causing more problems than not,
481 as exceptions in the main thread (GUI code, typically) would
486 as exceptions in the main thread (GUI code, typically) would
482 always show up as a 'crash', when they really weren't.
487 always show up as a 'crash', when they really weren't.
483
488
484 The colors and exception mode commands (%colors/%xmode) have been
489 The colors and exception mode commands (%colors/%xmode) have been
485 synchronized to also take this into account, so users can get
490 synchronized to also take this into account, so users can get
486 verbose exceptions for their threaded code as well. I also added
491 verbose exceptions for their threaded code as well. I also added
487 support for activating pdb inside this exception handler as well,
492 support for activating pdb inside this exception handler as well,
488 so now GUI authors can use IPython's enhanced pdb at runtime.
493 so now GUI authors can use IPython's enhanced pdb at runtime.
489
494
490 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
495 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
491 true by default, and add it to the shipped ipythonrc file. Since
496 true by default, and add it to the shipped ipythonrc file. Since
492 this asks the user before proceeding, I think it's OK to make it
497 this asks the user before proceeding, I think it's OK to make it
493 true by default.
498 true by default.
494
499
495 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
500 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
496 of the previous special-casing of input in the eval loop. I think
501 of the previous special-casing of input in the eval loop. I think
497 this is cleaner, as they really are commands and shouldn't have
502 this is cleaner, as they really are commands and shouldn't have
498 a special role in the middle of the core code.
503 a special role in the middle of the core code.
499
504
500 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
505 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
501
506
502 * IPython/iplib.py (edit_syntax_error): added support for
507 * IPython/iplib.py (edit_syntax_error): added support for
503 automatically reopening the editor if the file had a syntax error
508 automatically reopening the editor if the file had a syntax error
504 in it. Thanks to scottt who provided the patch at:
509 in it. Thanks to scottt who provided the patch at:
505 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
510 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
506 version committed).
511 version committed).
507
512
508 * IPython/iplib.py (handle_normal): add suport for multi-line
513 * IPython/iplib.py (handle_normal): add suport for multi-line
509 input with emtpy lines. This fixes
514 input with emtpy lines. This fixes
510 http://www.scipy.net/roundup/ipython/issue43 and a similar
515 http://www.scipy.net/roundup/ipython/issue43 and a similar
511 discussion on the user list.
516 discussion on the user list.
512
517
513 WARNING: a behavior change is necessarily introduced to support
518 WARNING: a behavior change is necessarily introduced to support
514 blank lines: now a single blank line with whitespace does NOT
519 blank lines: now a single blank line with whitespace does NOT
515 break the input loop, which means that when autoindent is on, by
520 break the input loop, which means that when autoindent is on, by
516 default hitting return on the next (indented) line does NOT exit.
521 default hitting return on the next (indented) line does NOT exit.
517
522
518 Instead, to exit a multiline input you can either have:
523 Instead, to exit a multiline input you can either have:
519
524
520 - TWO whitespace lines (just hit return again), or
525 - TWO whitespace lines (just hit return again), or
521 - a single whitespace line of a different length than provided
526 - a single whitespace line of a different length than provided
522 by the autoindent (add or remove a space).
527 by the autoindent (add or remove a space).
523
528
524 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
529 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
525 module to better organize all readline-related functionality.
530 module to better organize all readline-related functionality.
526 I've deleted FlexCompleter and put all completion clases here.
531 I've deleted FlexCompleter and put all completion clases here.
527
532
528 * IPython/iplib.py (raw_input): improve indentation management.
533 * IPython/iplib.py (raw_input): improve indentation management.
529 It is now possible to paste indented code with autoindent on, and
534 It is now possible to paste indented code with autoindent on, and
530 the code is interpreted correctly (though it still looks bad on
535 the code is interpreted correctly (though it still looks bad on
531 screen, due to the line-oriented nature of ipython).
536 screen, due to the line-oriented nature of ipython).
532 (MagicCompleter.complete): change behavior so that a TAB key on an
537 (MagicCompleter.complete): change behavior so that a TAB key on an
533 otherwise empty line actually inserts a tab, instead of completing
538 otherwise empty line actually inserts a tab, instead of completing
534 on the entire global namespace. This makes it easier to use the
539 on the entire global namespace. This makes it easier to use the
535 TAB key for indentation. After a request by Hans Meine
540 TAB key for indentation. After a request by Hans Meine
536 <hans_meine-AT-gmx.net>
541 <hans_meine-AT-gmx.net>
537 (_prefilter): add support so that typing plain 'exit' or 'quit'
542 (_prefilter): add support so that typing plain 'exit' or 'quit'
538 does a sensible thing. Originally I tried to deviate as little as
543 does a sensible thing. Originally I tried to deviate as little as
539 possible from the default python behavior, but even that one may
544 possible from the default python behavior, but even that one may
540 change in this direction (thread on python-dev to that effect).
545 change in this direction (thread on python-dev to that effect).
541 Regardless, ipython should do the right thing even if CPython's
546 Regardless, ipython should do the right thing even if CPython's
542 '>>>' prompt doesn't.
547 '>>>' prompt doesn't.
543 (InteractiveShell): removed subclassing code.InteractiveConsole
548 (InteractiveShell): removed subclassing code.InteractiveConsole
544 class. By now we'd overridden just about all of its methods: I've
549 class. By now we'd overridden just about all of its methods: I've
545 copied the remaining two over, and now ipython is a standalone
550 copied the remaining two over, and now ipython is a standalone
546 class. This will provide a clearer picture for the chainsaw
551 class. This will provide a clearer picture for the chainsaw
547 branch refactoring.
552 branch refactoring.
548
553
549 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
554 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
550
555
551 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
556 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
552 failures for objects which break when dir() is called on them.
557 failures for objects which break when dir() is called on them.
553
558
554 * IPython/FlexCompleter.py (Completer.__init__): Added support for
559 * IPython/FlexCompleter.py (Completer.__init__): Added support for
555 distinct local and global namespaces in the completer API. This
560 distinct local and global namespaces in the completer API. This
556 change allows us top properly handle completion with distinct
561 change allows us top properly handle completion with distinct
557 scopes, including in embedded instances (this had never really
562 scopes, including in embedded instances (this had never really
558 worked correctly).
563 worked correctly).
559
564
560 Note: this introduces a change in the constructor for
565 Note: this introduces a change in the constructor for
561 MagicCompleter, as a new global_namespace parameter is now the
566 MagicCompleter, as a new global_namespace parameter is now the
562 second argument (the others were bumped one position).
567 second argument (the others were bumped one position).
563
568
564 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
569 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
565
570
566 * IPython/iplib.py (embed_mainloop): fix tab-completion in
571 * IPython/iplib.py (embed_mainloop): fix tab-completion in
567 embedded instances (which can be done now thanks to Vivian's
572 embedded instances (which can be done now thanks to Vivian's
568 frame-handling fixes for pdb).
573 frame-handling fixes for pdb).
569 (InteractiveShell.__init__): Fix namespace handling problem in
574 (InteractiveShell.__init__): Fix namespace handling problem in
570 embedded instances. We were overwriting __main__ unconditionally,
575 embedded instances. We were overwriting __main__ unconditionally,
571 and this should only be done for 'full' (non-embedded) IPython;
576 and this should only be done for 'full' (non-embedded) IPython;
572 embedded instances must respect the caller's __main__. Thanks to
577 embedded instances must respect the caller's __main__. Thanks to
573 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
578 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
574
579
575 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
580 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
576
581
577 * setup.py: added download_url to setup(). This registers the
582 * setup.py: added download_url to setup(). This registers the
578 download address at PyPI, which is not only useful to humans
583 download address at PyPI, which is not only useful to humans
579 browsing the site, but is also picked up by setuptools (the Eggs
584 browsing the site, but is also picked up by setuptools (the Eggs
580 machinery). Thanks to Ville and R. Kern for the info/discussion
585 machinery). Thanks to Ville and R. Kern for the info/discussion
581 on this.
586 on this.
582
587
583 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
588 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
584
589
585 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
590 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
586 This brings a lot of nice functionality to the pdb mode, which now
591 This brings a lot of nice functionality to the pdb mode, which now
587 has tab-completion, syntax highlighting, and better stack handling
592 has tab-completion, syntax highlighting, and better stack handling
588 than before. Many thanks to Vivian De Smedt
593 than before. Many thanks to Vivian De Smedt
589 <vivian-AT-vdesmedt.com> for the original patches.
594 <vivian-AT-vdesmedt.com> for the original patches.
590
595
591 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
596 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
592
597
593 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
598 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
594 sequence to consistently accept the banner argument. The
599 sequence to consistently accept the banner argument. The
595 inconsistency was tripping SAGE, thanks to Gary Zablackis
600 inconsistency was tripping SAGE, thanks to Gary Zablackis
596 <gzabl-AT-yahoo.com> for the report.
601 <gzabl-AT-yahoo.com> for the report.
597
602
598 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
603 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
599
604
600 * IPython/iplib.py (InteractiveShell.post_config_initialization):
605 * IPython/iplib.py (InteractiveShell.post_config_initialization):
601 Fix bug where a naked 'alias' call in the ipythonrc file would
606 Fix bug where a naked 'alias' call in the ipythonrc file would
602 cause a crash. Bug reported by Jorgen Stenarson.
607 cause a crash. Bug reported by Jorgen Stenarson.
603
608
604 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
609 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
605
610
606 * IPython/ipmaker.py (make_IPython): cleanups which should improve
611 * IPython/ipmaker.py (make_IPython): cleanups which should improve
607 startup time.
612 startup time.
608
613
609 * IPython/iplib.py (runcode): my globals 'fix' for embedded
614 * IPython/iplib.py (runcode): my globals 'fix' for embedded
610 instances had introduced a bug with globals in normal code. Now
615 instances had introduced a bug with globals in normal code. Now
611 it's working in all cases.
616 it's working in all cases.
612
617
613 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
618 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
614 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
619 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
615 has been introduced to set the default case sensitivity of the
620 has been introduced to set the default case sensitivity of the
616 searches. Users can still select either mode at runtime on a
621 searches. Users can still select either mode at runtime on a
617 per-search basis.
622 per-search basis.
618
623
619 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
624 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
620
625
621 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
626 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
622 attributes in wildcard searches for subclasses. Modified version
627 attributes in wildcard searches for subclasses. Modified version
623 of a patch by Jorgen.
628 of a patch by Jorgen.
624
629
625 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
630 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
626
631
627 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
632 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
628 embedded instances. I added a user_global_ns attribute to the
633 embedded instances. I added a user_global_ns attribute to the
629 InteractiveShell class to handle this.
634 InteractiveShell class to handle this.
630
635
631 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
636 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
632
637
633 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
638 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
634 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
639 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
635 (reported under win32, but may happen also in other platforms).
640 (reported under win32, but may happen also in other platforms).
636 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
641 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
637
642
638 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
643 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
639
644
640 * IPython/Magic.py (magic_psearch): new support for wildcard
645 * IPython/Magic.py (magic_psearch): new support for wildcard
641 patterns. Now, typing ?a*b will list all names which begin with a
646 patterns. Now, typing ?a*b will list all names which begin with a
642 and end in b, for example. The %psearch magic has full
647 and end in b, for example. The %psearch magic has full
643 docstrings. Many thanks to JΓΆrgen Stenarson
648 docstrings. Many thanks to JΓΆrgen Stenarson
644 <jorgen.stenarson-AT-bostream.nu>, author of the patches
649 <jorgen.stenarson-AT-bostream.nu>, author of the patches
645 implementing this functionality.
650 implementing this functionality.
646
651
647 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
652 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
648
653
649 * Manual: fixed long-standing annoyance of double-dashes (as in
654 * Manual: fixed long-standing annoyance of double-dashes (as in
650 --prefix=~, for example) being stripped in the HTML version. This
655 --prefix=~, for example) being stripped in the HTML version. This
651 is a latex2html bug, but a workaround was provided. Many thanks
656 is a latex2html bug, but a workaround was provided. Many thanks
652 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
657 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
653 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
658 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
654 rolling. This seemingly small issue had tripped a number of users
659 rolling. This seemingly small issue had tripped a number of users
655 when first installing, so I'm glad to see it gone.
660 when first installing, so I'm glad to see it gone.
656
661
657 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
662 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
658
663
659 * IPython/Extensions/numeric_formats.py: fix missing import,
664 * IPython/Extensions/numeric_formats.py: fix missing import,
660 reported by Stephen Walton.
665 reported by Stephen Walton.
661
666
662 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
667 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
663
668
664 * IPython/demo.py: finish demo module, fully documented now.
669 * IPython/demo.py: finish demo module, fully documented now.
665
670
666 * IPython/genutils.py (file_read): simple little utility to read a
671 * IPython/genutils.py (file_read): simple little utility to read a
667 file and ensure it's closed afterwards.
672 file and ensure it's closed afterwards.
668
673
669 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
674 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
670
675
671 * IPython/demo.py (Demo.__init__): added support for individually
676 * IPython/demo.py (Demo.__init__): added support for individually
672 tagging blocks for automatic execution.
677 tagging blocks for automatic execution.
673
678
674 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
679 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
675 syntax-highlighted python sources, requested by John.
680 syntax-highlighted python sources, requested by John.
676
681
677 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
682 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
678
683
679 * IPython/demo.py (Demo.again): fix bug where again() blocks after
684 * IPython/demo.py (Demo.again): fix bug where again() blocks after
680 finishing.
685 finishing.
681
686
682 * IPython/genutils.py (shlex_split): moved from Magic to here,
687 * IPython/genutils.py (shlex_split): moved from Magic to here,
683 where all 2.2 compatibility stuff lives. I needed it for demo.py.
688 where all 2.2 compatibility stuff lives. I needed it for demo.py.
684
689
685 * IPython/demo.py (Demo.__init__): added support for silent
690 * IPython/demo.py (Demo.__init__): added support for silent
686 blocks, improved marks as regexps, docstrings written.
691 blocks, improved marks as regexps, docstrings written.
687 (Demo.__init__): better docstring, added support for sys.argv.
692 (Demo.__init__): better docstring, added support for sys.argv.
688
693
689 * IPython/genutils.py (marquee): little utility used by the demo
694 * IPython/genutils.py (marquee): little utility used by the demo
690 code, handy in general.
695 code, handy in general.
691
696
692 * IPython/demo.py (Demo.__init__): new class for interactive
697 * IPython/demo.py (Demo.__init__): new class for interactive
693 demos. Not documented yet, I just wrote it in a hurry for
698 demos. Not documented yet, I just wrote it in a hurry for
694 scipy'05. Will docstring later.
699 scipy'05. Will docstring later.
695
700
696 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
701 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
697
702
698 * IPython/Shell.py (sigint_handler): Drastic simplification which
703 * IPython/Shell.py (sigint_handler): Drastic simplification which
699 also seems to make Ctrl-C work correctly across threads! This is
704 also seems to make Ctrl-C work correctly across threads! This is
700 so simple, that I can't beleive I'd missed it before. Needs more
705 so simple, that I can't beleive I'd missed it before. Needs more
701 testing, though.
706 testing, though.
702 (KBINT): Never mind, revert changes. I'm sure I'd tried something
707 (KBINT): Never mind, revert changes. I'm sure I'd tried something
703 like this before...
708 like this before...
704
709
705 * IPython/genutils.py (get_home_dir): add protection against
710 * IPython/genutils.py (get_home_dir): add protection against
706 non-dirs in win32 registry.
711 non-dirs in win32 registry.
707
712
708 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
713 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
709 bug where dict was mutated while iterating (pysh crash).
714 bug where dict was mutated while iterating (pysh crash).
710
715
711 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
716 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
712
717
713 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
718 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
714 spurious newlines added by this routine. After a report by
719 spurious newlines added by this routine. After a report by
715 F. Mantegazza.
720 F. Mantegazza.
716
721
717 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
722 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
718
723
719 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
724 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
720 calls. These were a leftover from the GTK 1.x days, and can cause
725 calls. These were a leftover from the GTK 1.x days, and can cause
721 problems in certain cases (after a report by John Hunter).
726 problems in certain cases (after a report by John Hunter).
722
727
723 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
728 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
724 os.getcwd() fails at init time. Thanks to patch from David Remahl
729 os.getcwd() fails at init time. Thanks to patch from David Remahl
725 <chmod007-AT-mac.com>.
730 <chmod007-AT-mac.com>.
726 (InteractiveShell.__init__): prevent certain special magics from
731 (InteractiveShell.__init__): prevent certain special magics from
727 being shadowed by aliases. Closes
732 being shadowed by aliases. Closes
728 http://www.scipy.net/roundup/ipython/issue41.
733 http://www.scipy.net/roundup/ipython/issue41.
729
734
730 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
735 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
731
736
732 * IPython/iplib.py (InteractiveShell.complete): Added new
737 * IPython/iplib.py (InteractiveShell.complete): Added new
733 top-level completion method to expose the completion mechanism
738 top-level completion method to expose the completion mechanism
734 beyond readline-based environments.
739 beyond readline-based environments.
735
740
736 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
741 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
737
742
738 * tools/ipsvnc (svnversion): fix svnversion capture.
743 * tools/ipsvnc (svnversion): fix svnversion capture.
739
744
740 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
745 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
741 attribute to self, which was missing. Before, it was set by a
746 attribute to self, which was missing. Before, it was set by a
742 routine which in certain cases wasn't being called, so the
747 routine which in certain cases wasn't being called, so the
743 instance could end up missing the attribute. This caused a crash.
748 instance could end up missing the attribute. This caused a crash.
744 Closes http://www.scipy.net/roundup/ipython/issue40.
749 Closes http://www.scipy.net/roundup/ipython/issue40.
745
750
746 2005-08-16 Fernando Perez <fperez@colorado.edu>
751 2005-08-16 Fernando Perez <fperez@colorado.edu>
747
752
748 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
753 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
749 contains non-string attribute. Closes
754 contains non-string attribute. Closes
750 http://www.scipy.net/roundup/ipython/issue38.
755 http://www.scipy.net/roundup/ipython/issue38.
751
756
752 2005-08-14 Fernando Perez <fperez@colorado.edu>
757 2005-08-14 Fernando Perez <fperez@colorado.edu>
753
758
754 * tools/ipsvnc: Minor improvements, to add changeset info.
759 * tools/ipsvnc: Minor improvements, to add changeset info.
755
760
756 2005-08-12 Fernando Perez <fperez@colorado.edu>
761 2005-08-12 Fernando Perez <fperez@colorado.edu>
757
762
758 * IPython/iplib.py (runsource): remove self.code_to_run_src
763 * IPython/iplib.py (runsource): remove self.code_to_run_src
759 attribute. I realized this is nothing more than
764 attribute. I realized this is nothing more than
760 '\n'.join(self.buffer), and having the same data in two different
765 '\n'.join(self.buffer), and having the same data in two different
761 places is just asking for synchronization bugs. This may impact
766 places is just asking for synchronization bugs. This may impact
762 people who have custom exception handlers, so I need to warn
767 people who have custom exception handlers, so I need to warn
763 ipython-dev about it (F. Mantegazza may use them).
768 ipython-dev about it (F. Mantegazza may use them).
764
769
765 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
770 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
766
771
767 * IPython/genutils.py: fix 2.2 compatibility (generators)
772 * IPython/genutils.py: fix 2.2 compatibility (generators)
768
773
769 2005-07-18 Fernando Perez <fperez@colorado.edu>
774 2005-07-18 Fernando Perez <fperez@colorado.edu>
770
775
771 * IPython/genutils.py (get_home_dir): fix to help users with
776 * IPython/genutils.py (get_home_dir): fix to help users with
772 invalid $HOME under win32.
777 invalid $HOME under win32.
773
778
774 2005-07-17 Fernando Perez <fperez@colorado.edu>
779 2005-07-17 Fernando Perez <fperez@colorado.edu>
775
780
776 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
781 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
777 some old hacks and clean up a bit other routines; code should be
782 some old hacks and clean up a bit other routines; code should be
778 simpler and a bit faster.
783 simpler and a bit faster.
779
784
780 * IPython/iplib.py (interact): removed some last-resort attempts
785 * IPython/iplib.py (interact): removed some last-resort attempts
781 to survive broken stdout/stderr. That code was only making it
786 to survive broken stdout/stderr. That code was only making it
782 harder to abstract out the i/o (necessary for gui integration),
787 harder to abstract out the i/o (necessary for gui integration),
783 and the crashes it could prevent were extremely rare in practice
788 and the crashes it could prevent were extremely rare in practice
784 (besides being fully user-induced in a pretty violent manner).
789 (besides being fully user-induced in a pretty violent manner).
785
790
786 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
791 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
787 Nothing major yet, but the code is simpler to read; this should
792 Nothing major yet, but the code is simpler to read; this should
788 make it easier to do more serious modifications in the future.
793 make it easier to do more serious modifications in the future.
789
794
790 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
795 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
791 which broke in .15 (thanks to a report by Ville).
796 which broke in .15 (thanks to a report by Ville).
792
797
793 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
798 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
794 be quite correct, I know next to nothing about unicode). This
799 be quite correct, I know next to nothing about unicode). This
795 will allow unicode strings to be used in prompts, amongst other
800 will allow unicode strings to be used in prompts, amongst other
796 cases. It also will prevent ipython from crashing when unicode
801 cases. It also will prevent ipython from crashing when unicode
797 shows up unexpectedly in many places. If ascii encoding fails, we
802 shows up unexpectedly in many places. If ascii encoding fails, we
798 assume utf_8. Currently the encoding is not a user-visible
803 assume utf_8. Currently the encoding is not a user-visible
799 setting, though it could be made so if there is demand for it.
804 setting, though it could be made so if there is demand for it.
800
805
801 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
806 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
802
807
803 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
808 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
804
809
805 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
810 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
806
811
807 * IPython/genutils.py: Add 2.2 compatibility here, so all other
812 * IPython/genutils.py: Add 2.2 compatibility here, so all other
808 code can work transparently for 2.2/2.3.
813 code can work transparently for 2.2/2.3.
809
814
810 2005-07-16 Fernando Perez <fperez@colorado.edu>
815 2005-07-16 Fernando Perez <fperez@colorado.edu>
811
816
812 * IPython/ultraTB.py (ExceptionColors): Make a global variable
817 * IPython/ultraTB.py (ExceptionColors): Make a global variable
813 out of the color scheme table used for coloring exception
818 out of the color scheme table used for coloring exception
814 tracebacks. This allows user code to add new schemes at runtime.
819 tracebacks. This allows user code to add new schemes at runtime.
815 This is a minimally modified version of the patch at
820 This is a minimally modified version of the patch at
816 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
821 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
817 for the contribution.
822 for the contribution.
818
823
819 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
824 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
820 slightly modified version of the patch in
825 slightly modified version of the patch in
821 http://www.scipy.net/roundup/ipython/issue34, which also allows me
826 http://www.scipy.net/roundup/ipython/issue34, which also allows me
822 to remove the previous try/except solution (which was costlier).
827 to remove the previous try/except solution (which was costlier).
823 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
828 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
824
829
825 2005-06-08 Fernando Perez <fperez@colorado.edu>
830 2005-06-08 Fernando Perez <fperez@colorado.edu>
826
831
827 * IPython/iplib.py (write/write_err): Add methods to abstract all
832 * IPython/iplib.py (write/write_err): Add methods to abstract all
828 I/O a bit more.
833 I/O a bit more.
829
834
830 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
835 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
831 warning, reported by Aric Hagberg, fix by JD Hunter.
836 warning, reported by Aric Hagberg, fix by JD Hunter.
832
837
833 2005-06-02 *** Released version 0.6.15
838 2005-06-02 *** Released version 0.6.15
834
839
835 2005-06-01 Fernando Perez <fperez@colorado.edu>
840 2005-06-01 Fernando Perez <fperez@colorado.edu>
836
841
837 * IPython/iplib.py (MagicCompleter.file_matches): Fix
842 * IPython/iplib.py (MagicCompleter.file_matches): Fix
838 tab-completion of filenames within open-quoted strings. Note that
843 tab-completion of filenames within open-quoted strings. Note that
839 this requires that in ~/.ipython/ipythonrc, users change the
844 this requires that in ~/.ipython/ipythonrc, users change the
840 readline delimiters configuration to read:
845 readline delimiters configuration to read:
841
846
842 readline_remove_delims -/~
847 readline_remove_delims -/~
843
848
844
849
845 2005-05-31 *** Released version 0.6.14
850 2005-05-31 *** Released version 0.6.14
846
851
847 2005-05-29 Fernando Perez <fperez@colorado.edu>
852 2005-05-29 Fernando Perez <fperez@colorado.edu>
848
853
849 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
854 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
850 with files not on the filesystem. Reported by Eliyahu Sandler
855 with files not on the filesystem. Reported by Eliyahu Sandler
851 <eli@gondolin.net>
856 <eli@gondolin.net>
852
857
853 2005-05-22 Fernando Perez <fperez@colorado.edu>
858 2005-05-22 Fernando Perez <fperez@colorado.edu>
854
859
855 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
860 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
856 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
861 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
857
862
858 2005-05-19 Fernando Perez <fperez@colorado.edu>
863 2005-05-19 Fernando Perez <fperez@colorado.edu>
859
864
860 * IPython/iplib.py (safe_execfile): close a file which could be
865 * IPython/iplib.py (safe_execfile): close a file which could be
861 left open (causing problems in win32, which locks open files).
866 left open (causing problems in win32, which locks open files).
862 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
867 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
863
868
864 2005-05-18 Fernando Perez <fperez@colorado.edu>
869 2005-05-18 Fernando Perez <fperez@colorado.edu>
865
870
866 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
871 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
867 keyword arguments correctly to safe_execfile().
872 keyword arguments correctly to safe_execfile().
868
873
869 2005-05-13 Fernando Perez <fperez@colorado.edu>
874 2005-05-13 Fernando Perez <fperez@colorado.edu>
870
875
871 * ipython.1: Added info about Qt to manpage, and threads warning
876 * ipython.1: Added info about Qt to manpage, and threads warning
872 to usage page (invoked with --help).
877 to usage page (invoked with --help).
873
878
874 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
879 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
875 new matcher (it goes at the end of the priority list) to do
880 new matcher (it goes at the end of the priority list) to do
876 tab-completion on named function arguments. Submitted by George
881 tab-completion on named function arguments. Submitted by George
877 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
882 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
878 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
883 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
879 for more details.
884 for more details.
880
885
881 * IPython/Magic.py (magic_run): Added new -e flag to ignore
886 * IPython/Magic.py (magic_run): Added new -e flag to ignore
882 SystemExit exceptions in the script being run. Thanks to a report
887 SystemExit exceptions in the script being run. Thanks to a report
883 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
888 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
884 producing very annoying behavior when running unit tests.
889 producing very annoying behavior when running unit tests.
885
890
886 2005-05-12 Fernando Perez <fperez@colorado.edu>
891 2005-05-12 Fernando Perez <fperez@colorado.edu>
887
892
888 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
893 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
889 which I'd broken (again) due to a changed regexp. In the process,
894 which I'd broken (again) due to a changed regexp. In the process,
890 added ';' as an escape to auto-quote the whole line without
895 added ';' as an escape to auto-quote the whole line without
891 splitting its arguments. Thanks to a report by Jerry McRae
896 splitting its arguments. Thanks to a report by Jerry McRae
892 <qrs0xyc02-AT-sneakemail.com>.
897 <qrs0xyc02-AT-sneakemail.com>.
893
898
894 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
899 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
895 possible crashes caused by a TokenError. Reported by Ed Schofield
900 possible crashes caused by a TokenError. Reported by Ed Schofield
896 <schofield-AT-ftw.at>.
901 <schofield-AT-ftw.at>.
897
902
898 2005-05-06 Fernando Perez <fperez@colorado.edu>
903 2005-05-06 Fernando Perez <fperez@colorado.edu>
899
904
900 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
905 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
901
906
902 2005-04-29 Fernando Perez <fperez@colorado.edu>
907 2005-04-29 Fernando Perez <fperez@colorado.edu>
903
908
904 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
909 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
905 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
910 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
906 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
911 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
907 which provides support for Qt interactive usage (similar to the
912 which provides support for Qt interactive usage (similar to the
908 existing one for WX and GTK). This had been often requested.
913 existing one for WX and GTK). This had been often requested.
909
914
910 2005-04-14 *** Released version 0.6.13
915 2005-04-14 *** Released version 0.6.13
911
916
912 2005-04-08 Fernando Perez <fperez@colorado.edu>
917 2005-04-08 Fernando Perez <fperez@colorado.edu>
913
918
914 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
919 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
915 from _ofind, which gets called on almost every input line. Now,
920 from _ofind, which gets called on almost every input line. Now,
916 we only try to get docstrings if they are actually going to be
921 we only try to get docstrings if they are actually going to be
917 used (the overhead of fetching unnecessary docstrings can be
922 used (the overhead of fetching unnecessary docstrings can be
918 noticeable for certain objects, such as Pyro proxies).
923 noticeable for certain objects, such as Pyro proxies).
919
924
920 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
925 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
921 for completers. For some reason I had been passing them the state
926 for completers. For some reason I had been passing them the state
922 variable, which completers never actually need, and was in
927 variable, which completers never actually need, and was in
923 conflict with the rlcompleter API. Custom completers ONLY need to
928 conflict with the rlcompleter API. Custom completers ONLY need to
924 take the text parameter.
929 take the text parameter.
925
930
926 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
931 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
927 work correctly in pysh. I've also moved all the logic which used
932 work correctly in pysh. I've also moved all the logic which used
928 to be in pysh.py here, which will prevent problems with future
933 to be in pysh.py here, which will prevent problems with future
929 upgrades. However, this time I must warn users to update their
934 upgrades. However, this time I must warn users to update their
930 pysh profile to include the line
935 pysh profile to include the line
931
936
932 import_all IPython.Extensions.InterpreterExec
937 import_all IPython.Extensions.InterpreterExec
933
938
934 because otherwise things won't work for them. They MUST also
939 because otherwise things won't work for them. They MUST also
935 delete pysh.py and the line
940 delete pysh.py and the line
936
941
937 execfile pysh.py
942 execfile pysh.py
938
943
939 from their ipythonrc-pysh.
944 from their ipythonrc-pysh.
940
945
941 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
946 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
942 robust in the face of objects whose dir() returns non-strings
947 robust in the face of objects whose dir() returns non-strings
943 (which it shouldn't, but some broken libs like ITK do). Thanks to
948 (which it shouldn't, but some broken libs like ITK do). Thanks to
944 a patch by John Hunter (implemented differently, though). Also
949 a patch by John Hunter (implemented differently, though). Also
945 minor improvements by using .extend instead of + on lists.
950 minor improvements by using .extend instead of + on lists.
946
951
947 * pysh.py:
952 * pysh.py:
948
953
949 2005-04-06 Fernando Perez <fperez@colorado.edu>
954 2005-04-06 Fernando Perez <fperez@colorado.edu>
950
955
951 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
956 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
952 by default, so that all users benefit from it. Those who don't
957 by default, so that all users benefit from it. Those who don't
953 want it can still turn it off.
958 want it can still turn it off.
954
959
955 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
960 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
956 config file, I'd forgotten about this, so users were getting it
961 config file, I'd forgotten about this, so users were getting it
957 off by default.
962 off by default.
958
963
959 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
964 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
960 consistency. Now magics can be called in multiline statements,
965 consistency. Now magics can be called in multiline statements,
961 and python variables can be expanded in magic calls via $var.
966 and python variables can be expanded in magic calls via $var.
962 This makes the magic system behave just like aliases or !system
967 This makes the magic system behave just like aliases or !system
963 calls.
968 calls.
964
969
965 2005-03-28 Fernando Perez <fperez@colorado.edu>
970 2005-03-28 Fernando Perez <fperez@colorado.edu>
966
971
967 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
972 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
968 expensive string additions for building command. Add support for
973 expensive string additions for building command. Add support for
969 trailing ';' when autocall is used.
974 trailing ';' when autocall is used.
970
975
971 2005-03-26 Fernando Perez <fperez@colorado.edu>
976 2005-03-26 Fernando Perez <fperez@colorado.edu>
972
977
973 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
978 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
974 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
979 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
975 ipython.el robust against prompts with any number of spaces
980 ipython.el robust against prompts with any number of spaces
976 (including 0) after the ':' character.
981 (including 0) after the ':' character.
977
982
978 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
983 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
979 continuation prompt, which misled users to think the line was
984 continuation prompt, which misled users to think the line was
980 already indented. Closes debian Bug#300847, reported to me by
985 already indented. Closes debian Bug#300847, reported to me by
981 Norbert Tretkowski <tretkowski-AT-inittab.de>.
986 Norbert Tretkowski <tretkowski-AT-inittab.de>.
982
987
983 2005-03-23 Fernando Perez <fperez@colorado.edu>
988 2005-03-23 Fernando Perez <fperez@colorado.edu>
984
989
985 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
990 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
986 properly aligned if they have embedded newlines.
991 properly aligned if they have embedded newlines.
987
992
988 * IPython/iplib.py (runlines): Add a public method to expose
993 * IPython/iplib.py (runlines): Add a public method to expose
989 IPython's code execution machinery, so that users can run strings
994 IPython's code execution machinery, so that users can run strings
990 as if they had been typed at the prompt interactively.
995 as if they had been typed at the prompt interactively.
991 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
996 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
992 methods which can call the system shell, but with python variable
997 methods which can call the system shell, but with python variable
993 expansion. The three such methods are: __IPYTHON__.system,
998 expansion. The three such methods are: __IPYTHON__.system,
994 .getoutput and .getoutputerror. These need to be documented in a
999 .getoutput and .getoutputerror. These need to be documented in a
995 'public API' section (to be written) of the manual.
1000 'public API' section (to be written) of the manual.
996
1001
997 2005-03-20 Fernando Perez <fperez@colorado.edu>
1002 2005-03-20 Fernando Perez <fperez@colorado.edu>
998
1003
999 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1004 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1000 for custom exception handling. This is quite powerful, and it
1005 for custom exception handling. This is quite powerful, and it
1001 allows for user-installable exception handlers which can trap
1006 allows for user-installable exception handlers which can trap
1002 custom exceptions at runtime and treat them separately from
1007 custom exceptions at runtime and treat them separately from
1003 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1008 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1004 Mantegazza <mantegazza-AT-ill.fr>.
1009 Mantegazza <mantegazza-AT-ill.fr>.
1005 (InteractiveShell.set_custom_completer): public API function to
1010 (InteractiveShell.set_custom_completer): public API function to
1006 add new completers at runtime.
1011 add new completers at runtime.
1007
1012
1008 2005-03-19 Fernando Perez <fperez@colorado.edu>
1013 2005-03-19 Fernando Perez <fperez@colorado.edu>
1009
1014
1010 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1015 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1011 allow objects which provide their docstrings via non-standard
1016 allow objects which provide their docstrings via non-standard
1012 mechanisms (like Pyro proxies) to still be inspected by ipython's
1017 mechanisms (like Pyro proxies) to still be inspected by ipython's
1013 ? system.
1018 ? system.
1014
1019
1015 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1020 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1016 automatic capture system. I tried quite hard to make it work
1021 automatic capture system. I tried quite hard to make it work
1017 reliably, and simply failed. I tried many combinations with the
1022 reliably, and simply failed. I tried many combinations with the
1018 subprocess module, but eventually nothing worked in all needed
1023 subprocess module, but eventually nothing worked in all needed
1019 cases (not blocking stdin for the child, duplicating stdout
1024 cases (not blocking stdin for the child, duplicating stdout
1020 without blocking, etc). The new %sc/%sx still do capture to these
1025 without blocking, etc). The new %sc/%sx still do capture to these
1021 magical list/string objects which make shell use much more
1026 magical list/string objects which make shell use much more
1022 conveninent, so not all is lost.
1027 conveninent, so not all is lost.
1023
1028
1024 XXX - FIX MANUAL for the change above!
1029 XXX - FIX MANUAL for the change above!
1025
1030
1026 (runsource): I copied code.py's runsource() into ipython to modify
1031 (runsource): I copied code.py's runsource() into ipython to modify
1027 it a bit. Now the code object and source to be executed are
1032 it a bit. Now the code object and source to be executed are
1028 stored in ipython. This makes this info accessible to third-party
1033 stored in ipython. This makes this info accessible to third-party
1029 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1034 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1030 Mantegazza <mantegazza-AT-ill.fr>.
1035 Mantegazza <mantegazza-AT-ill.fr>.
1031
1036
1032 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1037 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1033 history-search via readline (like C-p/C-n). I'd wanted this for a
1038 history-search via readline (like C-p/C-n). I'd wanted this for a
1034 long time, but only recently found out how to do it. For users
1039 long time, but only recently found out how to do it. For users
1035 who already have their ipythonrc files made and want this, just
1040 who already have their ipythonrc files made and want this, just
1036 add:
1041 add:
1037
1042
1038 readline_parse_and_bind "\e[A": history-search-backward
1043 readline_parse_and_bind "\e[A": history-search-backward
1039 readline_parse_and_bind "\e[B": history-search-forward
1044 readline_parse_and_bind "\e[B": history-search-forward
1040
1045
1041 2005-03-18 Fernando Perez <fperez@colorado.edu>
1046 2005-03-18 Fernando Perez <fperez@colorado.edu>
1042
1047
1043 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1048 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1044 LSString and SList classes which allow transparent conversions
1049 LSString and SList classes which allow transparent conversions
1045 between list mode and whitespace-separated string.
1050 between list mode and whitespace-separated string.
1046 (magic_r): Fix recursion problem in %r.
1051 (magic_r): Fix recursion problem in %r.
1047
1052
1048 * IPython/genutils.py (LSString): New class to be used for
1053 * IPython/genutils.py (LSString): New class to be used for
1049 automatic storage of the results of all alias/system calls in _o
1054 automatic storage of the results of all alias/system calls in _o
1050 and _e (stdout/err). These provide a .l/.list attribute which
1055 and _e (stdout/err). These provide a .l/.list attribute which
1051 does automatic splitting on newlines. This means that for most
1056 does automatic splitting on newlines. This means that for most
1052 uses, you'll never need to do capturing of output with %sc/%sx
1057 uses, you'll never need to do capturing of output with %sc/%sx
1053 anymore, since ipython keeps this always done for you. Note that
1058 anymore, since ipython keeps this always done for you. Note that
1054 only the LAST results are stored, the _o/e variables are
1059 only the LAST results are stored, the _o/e variables are
1055 overwritten on each call. If you need to save their contents
1060 overwritten on each call. If you need to save their contents
1056 further, simply bind them to any other name.
1061 further, simply bind them to any other name.
1057
1062
1058 2005-03-17 Fernando Perez <fperez@colorado.edu>
1063 2005-03-17 Fernando Perez <fperez@colorado.edu>
1059
1064
1060 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1065 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1061 prompt namespace handling.
1066 prompt namespace handling.
1062
1067
1063 2005-03-16 Fernando Perez <fperez@colorado.edu>
1068 2005-03-16 Fernando Perez <fperez@colorado.edu>
1064
1069
1065 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1070 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1066 classic prompts to be '>>> ' (final space was missing, and it
1071 classic prompts to be '>>> ' (final space was missing, and it
1067 trips the emacs python mode).
1072 trips the emacs python mode).
1068 (BasePrompt.__str__): Added safe support for dynamic prompt
1073 (BasePrompt.__str__): Added safe support for dynamic prompt
1069 strings. Now you can set your prompt string to be '$x', and the
1074 strings. Now you can set your prompt string to be '$x', and the
1070 value of x will be printed from your interactive namespace. The
1075 value of x will be printed from your interactive namespace. The
1071 interpolation syntax includes the full Itpl support, so
1076 interpolation syntax includes the full Itpl support, so
1072 ${foo()+x+bar()} is a valid prompt string now, and the function
1077 ${foo()+x+bar()} is a valid prompt string now, and the function
1073 calls will be made at runtime.
1078 calls will be made at runtime.
1074
1079
1075 2005-03-15 Fernando Perez <fperez@colorado.edu>
1080 2005-03-15 Fernando Perez <fperez@colorado.edu>
1076
1081
1077 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1082 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1078 avoid name clashes in pylab. %hist still works, it just forwards
1083 avoid name clashes in pylab. %hist still works, it just forwards
1079 the call to %history.
1084 the call to %history.
1080
1085
1081 2005-03-02 *** Released version 0.6.12
1086 2005-03-02 *** Released version 0.6.12
1082
1087
1083 2005-03-02 Fernando Perez <fperez@colorado.edu>
1088 2005-03-02 Fernando Perez <fperez@colorado.edu>
1084
1089
1085 * IPython/iplib.py (handle_magic): log magic calls properly as
1090 * IPython/iplib.py (handle_magic): log magic calls properly as
1086 ipmagic() function calls.
1091 ipmagic() function calls.
1087
1092
1088 * IPython/Magic.py (magic_time): Improved %time to support
1093 * IPython/Magic.py (magic_time): Improved %time to support
1089 statements and provide wall-clock as well as CPU time.
1094 statements and provide wall-clock as well as CPU time.
1090
1095
1091 2005-02-27 Fernando Perez <fperez@colorado.edu>
1096 2005-02-27 Fernando Perez <fperez@colorado.edu>
1092
1097
1093 * IPython/hooks.py: New hooks module, to expose user-modifiable
1098 * IPython/hooks.py: New hooks module, to expose user-modifiable
1094 IPython functionality in a clean manner. For now only the editor
1099 IPython functionality in a clean manner. For now only the editor
1095 hook is actually written, and other thigns which I intend to turn
1100 hook is actually written, and other thigns which I intend to turn
1096 into proper hooks aren't yet there. The display and prefilter
1101 into proper hooks aren't yet there. The display and prefilter
1097 stuff, for example, should be hooks. But at least now the
1102 stuff, for example, should be hooks. But at least now the
1098 framework is in place, and the rest can be moved here with more
1103 framework is in place, and the rest can be moved here with more
1099 time later. IPython had had a .hooks variable for a long time for
1104 time later. IPython had had a .hooks variable for a long time for
1100 this purpose, but I'd never actually used it for anything.
1105 this purpose, but I'd never actually used it for anything.
1101
1106
1102 2005-02-26 Fernando Perez <fperez@colorado.edu>
1107 2005-02-26 Fernando Perez <fperez@colorado.edu>
1103
1108
1104 * IPython/ipmaker.py (make_IPython): make the default ipython
1109 * IPython/ipmaker.py (make_IPython): make the default ipython
1105 directory be called _ipython under win32, to follow more the
1110 directory be called _ipython under win32, to follow more the
1106 naming peculiarities of that platform (where buggy software like
1111 naming peculiarities of that platform (where buggy software like
1107 Visual Sourcesafe breaks with .named directories). Reported by
1112 Visual Sourcesafe breaks with .named directories). Reported by
1108 Ville Vainio.
1113 Ville Vainio.
1109
1114
1110 2005-02-23 Fernando Perez <fperez@colorado.edu>
1115 2005-02-23 Fernando Perez <fperez@colorado.edu>
1111
1116
1112 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1117 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1113 auto_aliases for win32 which were causing problems. Users can
1118 auto_aliases for win32 which were causing problems. Users can
1114 define the ones they personally like.
1119 define the ones they personally like.
1115
1120
1116 2005-02-21 Fernando Perez <fperez@colorado.edu>
1121 2005-02-21 Fernando Perez <fperez@colorado.edu>
1117
1122
1118 * IPython/Magic.py (magic_time): new magic to time execution of
1123 * IPython/Magic.py (magic_time): new magic to time execution of
1119 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1124 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1120
1125
1121 2005-02-19 Fernando Perez <fperez@colorado.edu>
1126 2005-02-19 Fernando Perez <fperez@colorado.edu>
1122
1127
1123 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1128 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1124 into keys (for prompts, for example).
1129 into keys (for prompts, for example).
1125
1130
1126 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1131 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1127 prompts in case users want them. This introduces a small behavior
1132 prompts in case users want them. This introduces a small behavior
1128 change: ipython does not automatically add a space to all prompts
1133 change: ipython does not automatically add a space to all prompts
1129 anymore. To get the old prompts with a space, users should add it
1134 anymore. To get the old prompts with a space, users should add it
1130 manually to their ipythonrc file, so for example prompt_in1 should
1135 manually to their ipythonrc file, so for example prompt_in1 should
1131 now read 'In [\#]: ' instead of 'In [\#]:'.
1136 now read 'In [\#]: ' instead of 'In [\#]:'.
1132 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1137 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1133 file) to control left-padding of secondary prompts.
1138 file) to control left-padding of secondary prompts.
1134
1139
1135 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1140 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1136 the profiler can't be imported. Fix for Debian, which removed
1141 the profiler can't be imported. Fix for Debian, which removed
1137 profile.py because of License issues. I applied a slightly
1142 profile.py because of License issues. I applied a slightly
1138 modified version of the original Debian patch at
1143 modified version of the original Debian patch at
1139 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1144 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1140
1145
1141 2005-02-17 Fernando Perez <fperez@colorado.edu>
1146 2005-02-17 Fernando Perez <fperez@colorado.edu>
1142
1147
1143 * IPython/genutils.py (native_line_ends): Fix bug which would
1148 * IPython/genutils.py (native_line_ends): Fix bug which would
1144 cause improper line-ends under win32 b/c I was not opening files
1149 cause improper line-ends under win32 b/c I was not opening files
1145 in binary mode. Bug report and fix thanks to Ville.
1150 in binary mode. Bug report and fix thanks to Ville.
1146
1151
1147 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1152 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1148 trying to catch spurious foo[1] autocalls. My fix actually broke
1153 trying to catch spurious foo[1] autocalls. My fix actually broke
1149 ',/' autoquote/call with explicit escape (bad regexp).
1154 ',/' autoquote/call with explicit escape (bad regexp).
1150
1155
1151 2005-02-15 *** Released version 0.6.11
1156 2005-02-15 *** Released version 0.6.11
1152
1157
1153 2005-02-14 Fernando Perez <fperez@colorado.edu>
1158 2005-02-14 Fernando Perez <fperez@colorado.edu>
1154
1159
1155 * IPython/background_jobs.py: New background job management
1160 * IPython/background_jobs.py: New background job management
1156 subsystem. This is implemented via a new set of classes, and
1161 subsystem. This is implemented via a new set of classes, and
1157 IPython now provides a builtin 'jobs' object for background job
1162 IPython now provides a builtin 'jobs' object for background job
1158 execution. A convenience %bg magic serves as a lightweight
1163 execution. A convenience %bg magic serves as a lightweight
1159 frontend for starting the more common type of calls. This was
1164 frontend for starting the more common type of calls. This was
1160 inspired by discussions with B. Granger and the BackgroundCommand
1165 inspired by discussions with B. Granger and the BackgroundCommand
1161 class described in the book Python Scripting for Computational
1166 class described in the book Python Scripting for Computational
1162 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1167 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1163 (although ultimately no code from this text was used, as IPython's
1168 (although ultimately no code from this text was used, as IPython's
1164 system is a separate implementation).
1169 system is a separate implementation).
1165
1170
1166 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1171 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1167 to control the completion of single/double underscore names
1172 to control the completion of single/double underscore names
1168 separately. As documented in the example ipytonrc file, the
1173 separately. As documented in the example ipytonrc file, the
1169 readline_omit__names variable can now be set to 2, to omit even
1174 readline_omit__names variable can now be set to 2, to omit even
1170 single underscore names. Thanks to a patch by Brian Wong
1175 single underscore names. Thanks to a patch by Brian Wong
1171 <BrianWong-AT-AirgoNetworks.Com>.
1176 <BrianWong-AT-AirgoNetworks.Com>.
1172 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1177 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1173 be autocalled as foo([1]) if foo were callable. A problem for
1178 be autocalled as foo([1]) if foo were callable. A problem for
1174 things which are both callable and implement __getitem__.
1179 things which are both callable and implement __getitem__.
1175 (init_readline): Fix autoindentation for win32. Thanks to a patch
1180 (init_readline): Fix autoindentation for win32. Thanks to a patch
1176 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1181 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1177
1182
1178 2005-02-12 Fernando Perez <fperez@colorado.edu>
1183 2005-02-12 Fernando Perez <fperez@colorado.edu>
1179
1184
1180 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1185 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1181 which I had written long ago to sort out user error messages which
1186 which I had written long ago to sort out user error messages which
1182 may occur during startup. This seemed like a good idea initially,
1187 may occur during startup. This seemed like a good idea initially,
1183 but it has proven a disaster in retrospect. I don't want to
1188 but it has proven a disaster in retrospect. I don't want to
1184 change much code for now, so my fix is to set the internal 'debug'
1189 change much code for now, so my fix is to set the internal 'debug'
1185 flag to true everywhere, whose only job was precisely to control
1190 flag to true everywhere, whose only job was precisely to control
1186 this subsystem. This closes issue 28 (as well as avoiding all
1191 this subsystem. This closes issue 28 (as well as avoiding all
1187 sorts of strange hangups which occur from time to time).
1192 sorts of strange hangups which occur from time to time).
1188
1193
1189 2005-02-07 Fernando Perez <fperez@colorado.edu>
1194 2005-02-07 Fernando Perez <fperez@colorado.edu>
1190
1195
1191 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1196 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1192 previous call produced a syntax error.
1197 previous call produced a syntax error.
1193
1198
1194 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1199 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1195 classes without constructor.
1200 classes without constructor.
1196
1201
1197 2005-02-06 Fernando Perez <fperez@colorado.edu>
1202 2005-02-06 Fernando Perez <fperez@colorado.edu>
1198
1203
1199 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1204 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1200 completions with the results of each matcher, so we return results
1205 completions with the results of each matcher, so we return results
1201 to the user from all namespaces. This breaks with ipython
1206 to the user from all namespaces. This breaks with ipython
1202 tradition, but I think it's a nicer behavior. Now you get all
1207 tradition, but I think it's a nicer behavior. Now you get all
1203 possible completions listed, from all possible namespaces (python,
1208 possible completions listed, from all possible namespaces (python,
1204 filesystem, magics...) After a request by John Hunter
1209 filesystem, magics...) After a request by John Hunter
1205 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1210 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1206
1211
1207 2005-02-05 Fernando Perez <fperez@colorado.edu>
1212 2005-02-05 Fernando Perez <fperez@colorado.edu>
1208
1213
1209 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1214 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1210 the call had quote characters in it (the quotes were stripped).
1215 the call had quote characters in it (the quotes were stripped).
1211
1216
1212 2005-01-31 Fernando Perez <fperez@colorado.edu>
1217 2005-01-31 Fernando Perez <fperez@colorado.edu>
1213
1218
1214 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1219 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1215 Itpl.itpl() to make the code more robust against psyco
1220 Itpl.itpl() to make the code more robust against psyco
1216 optimizations.
1221 optimizations.
1217
1222
1218 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1223 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1219 of causing an exception. Quicker, cleaner.
1224 of causing an exception. Quicker, cleaner.
1220
1225
1221 2005-01-28 Fernando Perez <fperez@colorado.edu>
1226 2005-01-28 Fernando Perez <fperez@colorado.edu>
1222
1227
1223 * scripts/ipython_win_post_install.py (install): hardcode
1228 * scripts/ipython_win_post_install.py (install): hardcode
1224 sys.prefix+'python.exe' as the executable path. It turns out that
1229 sys.prefix+'python.exe' as the executable path. It turns out that
1225 during the post-installation run, sys.executable resolves to the
1230 during the post-installation run, sys.executable resolves to the
1226 name of the binary installer! I should report this as a distutils
1231 name of the binary installer! I should report this as a distutils
1227 bug, I think. I updated the .10 release with this tiny fix, to
1232 bug, I think. I updated the .10 release with this tiny fix, to
1228 avoid annoying the lists further.
1233 avoid annoying the lists further.
1229
1234
1230 2005-01-27 *** Released version 0.6.10
1235 2005-01-27 *** Released version 0.6.10
1231
1236
1232 2005-01-27 Fernando Perez <fperez@colorado.edu>
1237 2005-01-27 Fernando Perez <fperez@colorado.edu>
1233
1238
1234 * IPython/numutils.py (norm): Added 'inf' as optional name for
1239 * IPython/numutils.py (norm): Added 'inf' as optional name for
1235 L-infinity norm, included references to mathworld.com for vector
1240 L-infinity norm, included references to mathworld.com for vector
1236 norm definitions.
1241 norm definitions.
1237 (amin/amax): added amin/amax for array min/max. Similar to what
1242 (amin/amax): added amin/amax for array min/max. Similar to what
1238 pylab ships with after the recent reorganization of names.
1243 pylab ships with after the recent reorganization of names.
1239 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1244 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1240
1245
1241 * ipython.el: committed Alex's recent fixes and improvements.
1246 * ipython.el: committed Alex's recent fixes and improvements.
1242 Tested with python-mode from CVS, and it looks excellent. Since
1247 Tested with python-mode from CVS, and it looks excellent. Since
1243 python-mode hasn't released anything in a while, I'm temporarily
1248 python-mode hasn't released anything in a while, I'm temporarily
1244 putting a copy of today's CVS (v 4.70) of python-mode in:
1249 putting a copy of today's CVS (v 4.70) of python-mode in:
1245 http://ipython.scipy.org/tmp/python-mode.el
1250 http://ipython.scipy.org/tmp/python-mode.el
1246
1251
1247 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1252 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1248 sys.executable for the executable name, instead of assuming it's
1253 sys.executable for the executable name, instead of assuming it's
1249 called 'python.exe' (the post-installer would have produced broken
1254 called 'python.exe' (the post-installer would have produced broken
1250 setups on systems with a differently named python binary).
1255 setups on systems with a differently named python binary).
1251
1256
1252 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1257 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1253 references to os.linesep, to make the code more
1258 references to os.linesep, to make the code more
1254 platform-independent. This is also part of the win32 coloring
1259 platform-independent. This is also part of the win32 coloring
1255 fixes.
1260 fixes.
1256
1261
1257 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1262 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1258 lines, which actually cause coloring bugs because the length of
1263 lines, which actually cause coloring bugs because the length of
1259 the line is very difficult to correctly compute with embedded
1264 the line is very difficult to correctly compute with embedded
1260 escapes. This was the source of all the coloring problems under
1265 escapes. This was the source of all the coloring problems under
1261 Win32. I think that _finally_, Win32 users have a properly
1266 Win32. I think that _finally_, Win32 users have a properly
1262 working ipython in all respects. This would never have happened
1267 working ipython in all respects. This would never have happened
1263 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1268 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1264
1269
1265 2005-01-26 *** Released version 0.6.9
1270 2005-01-26 *** Released version 0.6.9
1266
1271
1267 2005-01-25 Fernando Perez <fperez@colorado.edu>
1272 2005-01-25 Fernando Perez <fperez@colorado.edu>
1268
1273
1269 * setup.py: finally, we have a true Windows installer, thanks to
1274 * setup.py: finally, we have a true Windows installer, thanks to
1270 the excellent work of Viktor Ransmayr
1275 the excellent work of Viktor Ransmayr
1271 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1276 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1272 Windows users. The setup routine is quite a bit cleaner thanks to
1277 Windows users. The setup routine is quite a bit cleaner thanks to
1273 this, and the post-install script uses the proper functions to
1278 this, and the post-install script uses the proper functions to
1274 allow a clean de-installation using the standard Windows Control
1279 allow a clean de-installation using the standard Windows Control
1275 Panel.
1280 Panel.
1276
1281
1277 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1282 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1278 environment variable under all OSes (including win32) if
1283 environment variable under all OSes (including win32) if
1279 available. This will give consistency to win32 users who have set
1284 available. This will give consistency to win32 users who have set
1280 this variable for any reason. If os.environ['HOME'] fails, the
1285 this variable for any reason. If os.environ['HOME'] fails, the
1281 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1286 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1282
1287
1283 2005-01-24 Fernando Perez <fperez@colorado.edu>
1288 2005-01-24 Fernando Perez <fperez@colorado.edu>
1284
1289
1285 * IPython/numutils.py (empty_like): add empty_like(), similar to
1290 * IPython/numutils.py (empty_like): add empty_like(), similar to
1286 zeros_like() but taking advantage of the new empty() Numeric routine.
1291 zeros_like() but taking advantage of the new empty() Numeric routine.
1287
1292
1288 2005-01-23 *** Released version 0.6.8
1293 2005-01-23 *** Released version 0.6.8
1289
1294
1290 2005-01-22 Fernando Perez <fperez@colorado.edu>
1295 2005-01-22 Fernando Perez <fperez@colorado.edu>
1291
1296
1292 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1297 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1293 automatic show() calls. After discussing things with JDH, it
1298 automatic show() calls. After discussing things with JDH, it
1294 turns out there are too many corner cases where this can go wrong.
1299 turns out there are too many corner cases where this can go wrong.
1295 It's best not to try to be 'too smart', and simply have ipython
1300 It's best not to try to be 'too smart', and simply have ipython
1296 reproduce as much as possible the default behavior of a normal
1301 reproduce as much as possible the default behavior of a normal
1297 python shell.
1302 python shell.
1298
1303
1299 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1304 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1300 line-splitting regexp and _prefilter() to avoid calling getattr()
1305 line-splitting regexp and _prefilter() to avoid calling getattr()
1301 on assignments. This closes
1306 on assignments. This closes
1302 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1307 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1303 readline uses getattr(), so a simple <TAB> keypress is still
1308 readline uses getattr(), so a simple <TAB> keypress is still
1304 enough to trigger getattr() calls on an object.
1309 enough to trigger getattr() calls on an object.
1305
1310
1306 2005-01-21 Fernando Perez <fperez@colorado.edu>
1311 2005-01-21 Fernando Perez <fperez@colorado.edu>
1307
1312
1308 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1313 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1309 docstring under pylab so it doesn't mask the original.
1314 docstring under pylab so it doesn't mask the original.
1310
1315
1311 2005-01-21 *** Released version 0.6.7
1316 2005-01-21 *** Released version 0.6.7
1312
1317
1313 2005-01-21 Fernando Perez <fperez@colorado.edu>
1318 2005-01-21 Fernando Perez <fperez@colorado.edu>
1314
1319
1315 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1320 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1316 signal handling for win32 users in multithreaded mode.
1321 signal handling for win32 users in multithreaded mode.
1317
1322
1318 2005-01-17 Fernando Perez <fperez@colorado.edu>
1323 2005-01-17 Fernando Perez <fperez@colorado.edu>
1319
1324
1320 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1325 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1321 instances with no __init__. After a crash report by Norbert Nemec
1326 instances with no __init__. After a crash report by Norbert Nemec
1322 <Norbert-AT-nemec-online.de>.
1327 <Norbert-AT-nemec-online.de>.
1323
1328
1324 2005-01-14 Fernando Perez <fperez@colorado.edu>
1329 2005-01-14 Fernando Perez <fperez@colorado.edu>
1325
1330
1326 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1331 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1327 names for verbose exceptions, when multiple dotted names and the
1332 names for verbose exceptions, when multiple dotted names and the
1328 'parent' object were present on the same line.
1333 'parent' object were present on the same line.
1329
1334
1330 2005-01-11 Fernando Perez <fperez@colorado.edu>
1335 2005-01-11 Fernando Perez <fperez@colorado.edu>
1331
1336
1332 * IPython/genutils.py (flag_calls): new utility to trap and flag
1337 * IPython/genutils.py (flag_calls): new utility to trap and flag
1333 calls in functions. I need it to clean up matplotlib support.
1338 calls in functions. I need it to clean up matplotlib support.
1334 Also removed some deprecated code in genutils.
1339 Also removed some deprecated code in genutils.
1335
1340
1336 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1341 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1337 that matplotlib scripts called with %run, which don't call show()
1342 that matplotlib scripts called with %run, which don't call show()
1338 themselves, still have their plotting windows open.
1343 themselves, still have their plotting windows open.
1339
1344
1340 2005-01-05 Fernando Perez <fperez@colorado.edu>
1345 2005-01-05 Fernando Perez <fperez@colorado.edu>
1341
1346
1342 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1347 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1343 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1348 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1344
1349
1345 2004-12-19 Fernando Perez <fperez@colorado.edu>
1350 2004-12-19 Fernando Perez <fperez@colorado.edu>
1346
1351
1347 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1352 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1348 parent_runcode, which was an eyesore. The same result can be
1353 parent_runcode, which was an eyesore. The same result can be
1349 obtained with Python's regular superclass mechanisms.
1354 obtained with Python's regular superclass mechanisms.
1350
1355
1351 2004-12-17 Fernando Perez <fperez@colorado.edu>
1356 2004-12-17 Fernando Perez <fperez@colorado.edu>
1352
1357
1353 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1358 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1354 reported by Prabhu.
1359 reported by Prabhu.
1355 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1360 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1356 sys.stderr) instead of explicitly calling sys.stderr. This helps
1361 sys.stderr) instead of explicitly calling sys.stderr. This helps
1357 maintain our I/O abstractions clean, for future GUI embeddings.
1362 maintain our I/O abstractions clean, for future GUI embeddings.
1358
1363
1359 * IPython/genutils.py (info): added new utility for sys.stderr
1364 * IPython/genutils.py (info): added new utility for sys.stderr
1360 unified info message handling (thin wrapper around warn()).
1365 unified info message handling (thin wrapper around warn()).
1361
1366
1362 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1367 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1363 composite (dotted) names on verbose exceptions.
1368 composite (dotted) names on verbose exceptions.
1364 (VerboseTB.nullrepr): harden against another kind of errors which
1369 (VerboseTB.nullrepr): harden against another kind of errors which
1365 Python's inspect module can trigger, and which were crashing
1370 Python's inspect module can trigger, and which were crashing
1366 IPython. Thanks to a report by Marco Lombardi
1371 IPython. Thanks to a report by Marco Lombardi
1367 <mlombard-AT-ma010192.hq.eso.org>.
1372 <mlombard-AT-ma010192.hq.eso.org>.
1368
1373
1369 2004-12-13 *** Released version 0.6.6
1374 2004-12-13 *** Released version 0.6.6
1370
1375
1371 2004-12-12 Fernando Perez <fperez@colorado.edu>
1376 2004-12-12 Fernando Perez <fperez@colorado.edu>
1372
1377
1373 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1378 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1374 generated by pygtk upon initialization if it was built without
1379 generated by pygtk upon initialization if it was built without
1375 threads (for matplotlib users). After a crash reported by
1380 threads (for matplotlib users). After a crash reported by
1376 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1381 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1377
1382
1378 * IPython/ipmaker.py (make_IPython): fix small bug in the
1383 * IPython/ipmaker.py (make_IPython): fix small bug in the
1379 import_some parameter for multiple imports.
1384 import_some parameter for multiple imports.
1380
1385
1381 * IPython/iplib.py (ipmagic): simplified the interface of
1386 * IPython/iplib.py (ipmagic): simplified the interface of
1382 ipmagic() to take a single string argument, just as it would be
1387 ipmagic() to take a single string argument, just as it would be
1383 typed at the IPython cmd line.
1388 typed at the IPython cmd line.
1384 (ipalias): Added new ipalias() with an interface identical to
1389 (ipalias): Added new ipalias() with an interface identical to
1385 ipmagic(). This completes exposing a pure python interface to the
1390 ipmagic(). This completes exposing a pure python interface to the
1386 alias and magic system, which can be used in loops or more complex
1391 alias and magic system, which can be used in loops or more complex
1387 code where IPython's automatic line mangling is not active.
1392 code where IPython's automatic line mangling is not active.
1388
1393
1389 * IPython/genutils.py (timing): changed interface of timing to
1394 * IPython/genutils.py (timing): changed interface of timing to
1390 simply run code once, which is the most common case. timings()
1395 simply run code once, which is the most common case. timings()
1391 remains unchanged, for the cases where you want multiple runs.
1396 remains unchanged, for the cases where you want multiple runs.
1392
1397
1393 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1398 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1394 bug where Python2.2 crashes with exec'ing code which does not end
1399 bug where Python2.2 crashes with exec'ing code which does not end
1395 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1400 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1396 before.
1401 before.
1397
1402
1398 2004-12-10 Fernando Perez <fperez@colorado.edu>
1403 2004-12-10 Fernando Perez <fperez@colorado.edu>
1399
1404
1400 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1405 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1401 -t to -T, to accomodate the new -t flag in %run (the %run and
1406 -t to -T, to accomodate the new -t flag in %run (the %run and
1402 %prun options are kind of intermixed, and it's not easy to change
1407 %prun options are kind of intermixed, and it's not easy to change
1403 this with the limitations of python's getopt).
1408 this with the limitations of python's getopt).
1404
1409
1405 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1410 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1406 the execution of scripts. It's not as fine-tuned as timeit.py,
1411 the execution of scripts. It's not as fine-tuned as timeit.py,
1407 but it works from inside ipython (and under 2.2, which lacks
1412 but it works from inside ipython (and under 2.2, which lacks
1408 timeit.py). Optionally a number of runs > 1 can be given for
1413 timeit.py). Optionally a number of runs > 1 can be given for
1409 timing very short-running code.
1414 timing very short-running code.
1410
1415
1411 * IPython/genutils.py (uniq_stable): new routine which returns a
1416 * IPython/genutils.py (uniq_stable): new routine which returns a
1412 list of unique elements in any iterable, but in stable order of
1417 list of unique elements in any iterable, but in stable order of
1413 appearance. I needed this for the ultraTB fixes, and it's a handy
1418 appearance. I needed this for the ultraTB fixes, and it's a handy
1414 utility.
1419 utility.
1415
1420
1416 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1421 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1417 dotted names in Verbose exceptions. This had been broken since
1422 dotted names in Verbose exceptions. This had been broken since
1418 the very start, now x.y will properly be printed in a Verbose
1423 the very start, now x.y will properly be printed in a Verbose
1419 traceback, instead of x being shown and y appearing always as an
1424 traceback, instead of x being shown and y appearing always as an
1420 'undefined global'. Getting this to work was a bit tricky,
1425 'undefined global'. Getting this to work was a bit tricky,
1421 because by default python tokenizers are stateless. Saved by
1426 because by default python tokenizers are stateless. Saved by
1422 python's ability to easily add a bit of state to an arbitrary
1427 python's ability to easily add a bit of state to an arbitrary
1423 function (without needing to build a full-blown callable object).
1428 function (without needing to build a full-blown callable object).
1424
1429
1425 Also big cleanup of this code, which had horrendous runtime
1430 Also big cleanup of this code, which had horrendous runtime
1426 lookups of zillions of attributes for colorization. Moved all
1431 lookups of zillions of attributes for colorization. Moved all
1427 this code into a few templates, which make it cleaner and quicker.
1432 this code into a few templates, which make it cleaner and quicker.
1428
1433
1429 Printout quality was also improved for Verbose exceptions: one
1434 Printout quality was also improved for Verbose exceptions: one
1430 variable per line, and memory addresses are printed (this can be
1435 variable per line, and memory addresses are printed (this can be
1431 quite handy in nasty debugging situations, which is what Verbose
1436 quite handy in nasty debugging situations, which is what Verbose
1432 is for).
1437 is for).
1433
1438
1434 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1439 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1435 the command line as scripts to be loaded by embedded instances.
1440 the command line as scripts to be loaded by embedded instances.
1436 Doing so has the potential for an infinite recursion if there are
1441 Doing so has the potential for an infinite recursion if there are
1437 exceptions thrown in the process. This fixes a strange crash
1442 exceptions thrown in the process. This fixes a strange crash
1438 reported by Philippe MULLER <muller-AT-irit.fr>.
1443 reported by Philippe MULLER <muller-AT-irit.fr>.
1439
1444
1440 2004-12-09 Fernando Perez <fperez@colorado.edu>
1445 2004-12-09 Fernando Perez <fperez@colorado.edu>
1441
1446
1442 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1447 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1443 to reflect new names in matplotlib, which now expose the
1448 to reflect new names in matplotlib, which now expose the
1444 matlab-compatible interface via a pylab module instead of the
1449 matlab-compatible interface via a pylab module instead of the
1445 'matlab' name. The new code is backwards compatible, so users of
1450 'matlab' name. The new code is backwards compatible, so users of
1446 all matplotlib versions are OK. Patch by J. Hunter.
1451 all matplotlib versions are OK. Patch by J. Hunter.
1447
1452
1448 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1453 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1449 of __init__ docstrings for instances (class docstrings are already
1454 of __init__ docstrings for instances (class docstrings are already
1450 automatically printed). Instances with customized docstrings
1455 automatically printed). Instances with customized docstrings
1451 (indep. of the class) are also recognized and all 3 separate
1456 (indep. of the class) are also recognized and all 3 separate
1452 docstrings are printed (instance, class, constructor). After some
1457 docstrings are printed (instance, class, constructor). After some
1453 comments/suggestions by J. Hunter.
1458 comments/suggestions by J. Hunter.
1454
1459
1455 2004-12-05 Fernando Perez <fperez@colorado.edu>
1460 2004-12-05 Fernando Perez <fperez@colorado.edu>
1456
1461
1457 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1462 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1458 warnings when tab-completion fails and triggers an exception.
1463 warnings when tab-completion fails and triggers an exception.
1459
1464
1460 2004-12-03 Fernando Perez <fperez@colorado.edu>
1465 2004-12-03 Fernando Perez <fperez@colorado.edu>
1461
1466
1462 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1467 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1463 be triggered when using 'run -p'. An incorrect option flag was
1468 be triggered when using 'run -p'. An incorrect option flag was
1464 being set ('d' instead of 'D').
1469 being set ('d' instead of 'D').
1465 (manpage): fix missing escaped \- sign.
1470 (manpage): fix missing escaped \- sign.
1466
1471
1467 2004-11-30 *** Released version 0.6.5
1472 2004-11-30 *** Released version 0.6.5
1468
1473
1469 2004-11-30 Fernando Perez <fperez@colorado.edu>
1474 2004-11-30 Fernando Perez <fperez@colorado.edu>
1470
1475
1471 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1476 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1472 setting with -d option.
1477 setting with -d option.
1473
1478
1474 * setup.py (docfiles): Fix problem where the doc glob I was using
1479 * setup.py (docfiles): Fix problem where the doc glob I was using
1475 was COMPLETELY BROKEN. It was giving the right files by pure
1480 was COMPLETELY BROKEN. It was giving the right files by pure
1476 accident, but failed once I tried to include ipython.el. Note:
1481 accident, but failed once I tried to include ipython.el. Note:
1477 glob() does NOT allow you to do exclusion on multiple endings!
1482 glob() does NOT allow you to do exclusion on multiple endings!
1478
1483
1479 2004-11-29 Fernando Perez <fperez@colorado.edu>
1484 2004-11-29 Fernando Perez <fperez@colorado.edu>
1480
1485
1481 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1486 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1482 the manpage as the source. Better formatting & consistency.
1487 the manpage as the source. Better formatting & consistency.
1483
1488
1484 * IPython/Magic.py (magic_run): Added new -d option, to run
1489 * IPython/Magic.py (magic_run): Added new -d option, to run
1485 scripts under the control of the python pdb debugger. Note that
1490 scripts under the control of the python pdb debugger. Note that
1486 this required changing the %prun option -d to -D, to avoid a clash
1491 this required changing the %prun option -d to -D, to avoid a clash
1487 (since %run must pass options to %prun, and getopt is too dumb to
1492 (since %run must pass options to %prun, and getopt is too dumb to
1488 handle options with string values with embedded spaces). Thanks
1493 handle options with string values with embedded spaces). Thanks
1489 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1494 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1490 (magic_who_ls): added type matching to %who and %whos, so that one
1495 (magic_who_ls): added type matching to %who and %whos, so that one
1491 can filter their output to only include variables of certain
1496 can filter their output to only include variables of certain
1492 types. Another suggestion by Matthew.
1497 types. Another suggestion by Matthew.
1493 (magic_whos): Added memory summaries in kb and Mb for arrays.
1498 (magic_whos): Added memory summaries in kb and Mb for arrays.
1494 (magic_who): Improve formatting (break lines every 9 vars).
1499 (magic_who): Improve formatting (break lines every 9 vars).
1495
1500
1496 2004-11-28 Fernando Perez <fperez@colorado.edu>
1501 2004-11-28 Fernando Perez <fperez@colorado.edu>
1497
1502
1498 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1503 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1499 cache when empty lines were present.
1504 cache when empty lines were present.
1500
1505
1501 2004-11-24 Fernando Perez <fperez@colorado.edu>
1506 2004-11-24 Fernando Perez <fperez@colorado.edu>
1502
1507
1503 * IPython/usage.py (__doc__): document the re-activated threading
1508 * IPython/usage.py (__doc__): document the re-activated threading
1504 options for WX and GTK.
1509 options for WX and GTK.
1505
1510
1506 2004-11-23 Fernando Perez <fperez@colorado.edu>
1511 2004-11-23 Fernando Perez <fperez@colorado.edu>
1507
1512
1508 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1513 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1509 the -wthread and -gthread options, along with a new -tk one to try
1514 the -wthread and -gthread options, along with a new -tk one to try
1510 and coordinate Tk threading with wx/gtk. The tk support is very
1515 and coordinate Tk threading with wx/gtk. The tk support is very
1511 platform dependent, since it seems to require Tcl and Tk to be
1516 platform dependent, since it seems to require Tcl and Tk to be
1512 built with threads (Fedora1/2 appears NOT to have it, but in
1517 built with threads (Fedora1/2 appears NOT to have it, but in
1513 Prabhu's Debian boxes it works OK). But even with some Tk
1518 Prabhu's Debian boxes it works OK). But even with some Tk
1514 limitations, this is a great improvement.
1519 limitations, this is a great improvement.
1515
1520
1516 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1521 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1517 info in user prompts. Patch by Prabhu.
1522 info in user prompts. Patch by Prabhu.
1518
1523
1519 2004-11-18 Fernando Perez <fperez@colorado.edu>
1524 2004-11-18 Fernando Perez <fperez@colorado.edu>
1520
1525
1521 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1526 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1522 EOFErrors and bail, to avoid infinite loops if a non-terminating
1527 EOFErrors and bail, to avoid infinite loops if a non-terminating
1523 file is fed into ipython. Patch submitted in issue 19 by user,
1528 file is fed into ipython. Patch submitted in issue 19 by user,
1524 many thanks.
1529 many thanks.
1525
1530
1526 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1531 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1527 autoquote/parens in continuation prompts, which can cause lots of
1532 autoquote/parens in continuation prompts, which can cause lots of
1528 problems. Closes roundup issue 20.
1533 problems. Closes roundup issue 20.
1529
1534
1530 2004-11-17 Fernando Perez <fperez@colorado.edu>
1535 2004-11-17 Fernando Perez <fperez@colorado.edu>
1531
1536
1532 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1537 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1533 reported as debian bug #280505. I'm not sure my local changelog
1538 reported as debian bug #280505. I'm not sure my local changelog
1534 entry has the proper debian format (Jack?).
1539 entry has the proper debian format (Jack?).
1535
1540
1536 2004-11-08 *** Released version 0.6.4
1541 2004-11-08 *** Released version 0.6.4
1537
1542
1538 2004-11-08 Fernando Perez <fperez@colorado.edu>
1543 2004-11-08 Fernando Perez <fperez@colorado.edu>
1539
1544
1540 * IPython/iplib.py (init_readline): Fix exit message for Windows
1545 * IPython/iplib.py (init_readline): Fix exit message for Windows
1541 when readline is active. Thanks to a report by Eric Jones
1546 when readline is active. Thanks to a report by Eric Jones
1542 <eric-AT-enthought.com>.
1547 <eric-AT-enthought.com>.
1543
1548
1544 2004-11-07 Fernando Perez <fperez@colorado.edu>
1549 2004-11-07 Fernando Perez <fperez@colorado.edu>
1545
1550
1546 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1551 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1547 sometimes seen by win2k/cygwin users.
1552 sometimes seen by win2k/cygwin users.
1548
1553
1549 2004-11-06 Fernando Perez <fperez@colorado.edu>
1554 2004-11-06 Fernando Perez <fperez@colorado.edu>
1550
1555
1551 * IPython/iplib.py (interact): Change the handling of %Exit from
1556 * IPython/iplib.py (interact): Change the handling of %Exit from
1552 trying to propagate a SystemExit to an internal ipython flag.
1557 trying to propagate a SystemExit to an internal ipython flag.
1553 This is less elegant than using Python's exception mechanism, but
1558 This is less elegant than using Python's exception mechanism, but
1554 I can't get that to work reliably with threads, so under -pylab
1559 I can't get that to work reliably with threads, so under -pylab
1555 %Exit was hanging IPython. Cross-thread exception handling is
1560 %Exit was hanging IPython. Cross-thread exception handling is
1556 really a bitch. Thaks to a bug report by Stephen Walton
1561 really a bitch. Thaks to a bug report by Stephen Walton
1557 <stephen.walton-AT-csun.edu>.
1562 <stephen.walton-AT-csun.edu>.
1558
1563
1559 2004-11-04 Fernando Perez <fperez@colorado.edu>
1564 2004-11-04 Fernando Perez <fperez@colorado.edu>
1560
1565
1561 * IPython/iplib.py (raw_input_original): store a pointer to the
1566 * IPython/iplib.py (raw_input_original): store a pointer to the
1562 true raw_input to harden against code which can modify it
1567 true raw_input to harden against code which can modify it
1563 (wx.py.PyShell does this and would otherwise crash ipython).
1568 (wx.py.PyShell does this and would otherwise crash ipython).
1564 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1569 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1565
1570
1566 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1571 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1567 Ctrl-C problem, which does not mess up the input line.
1572 Ctrl-C problem, which does not mess up the input line.
1568
1573
1569 2004-11-03 Fernando Perez <fperez@colorado.edu>
1574 2004-11-03 Fernando Perez <fperez@colorado.edu>
1570
1575
1571 * IPython/Release.py: Changed licensing to BSD, in all files.
1576 * IPython/Release.py: Changed licensing to BSD, in all files.
1572 (name): lowercase name for tarball/RPM release.
1577 (name): lowercase name for tarball/RPM release.
1573
1578
1574 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1579 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1575 use throughout ipython.
1580 use throughout ipython.
1576
1581
1577 * IPython/Magic.py (Magic._ofind): Switch to using the new
1582 * IPython/Magic.py (Magic._ofind): Switch to using the new
1578 OInspect.getdoc() function.
1583 OInspect.getdoc() function.
1579
1584
1580 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1585 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1581 of the line currently being canceled via Ctrl-C. It's extremely
1586 of the line currently being canceled via Ctrl-C. It's extremely
1582 ugly, but I don't know how to do it better (the problem is one of
1587 ugly, but I don't know how to do it better (the problem is one of
1583 handling cross-thread exceptions).
1588 handling cross-thread exceptions).
1584
1589
1585 2004-10-28 Fernando Perez <fperez@colorado.edu>
1590 2004-10-28 Fernando Perez <fperez@colorado.edu>
1586
1591
1587 * IPython/Shell.py (signal_handler): add signal handlers to trap
1592 * IPython/Shell.py (signal_handler): add signal handlers to trap
1588 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1593 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1589 report by Francesc Alted.
1594 report by Francesc Alted.
1590
1595
1591 2004-10-21 Fernando Perez <fperez@colorado.edu>
1596 2004-10-21 Fernando Perez <fperez@colorado.edu>
1592
1597
1593 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1598 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1594 to % for pysh syntax extensions.
1599 to % for pysh syntax extensions.
1595
1600
1596 2004-10-09 Fernando Perez <fperez@colorado.edu>
1601 2004-10-09 Fernando Perez <fperez@colorado.edu>
1597
1602
1598 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
1603 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
1599 arrays to print a more useful summary, without calling str(arr).
1604 arrays to print a more useful summary, without calling str(arr).
1600 This avoids the problem of extremely lengthy computations which
1605 This avoids the problem of extremely lengthy computations which
1601 occur if arr is large, and appear to the user as a system lockup
1606 occur if arr is large, and appear to the user as a system lockup
1602 with 100% cpu activity. After a suggestion by Kristian Sandberg
1607 with 100% cpu activity. After a suggestion by Kristian Sandberg
1603 <Kristian.Sandberg@colorado.edu>.
1608 <Kristian.Sandberg@colorado.edu>.
1604 (Magic.__init__): fix bug in global magic escapes not being
1609 (Magic.__init__): fix bug in global magic escapes not being
1605 correctly set.
1610 correctly set.
1606
1611
1607 2004-10-08 Fernando Perez <fperez@colorado.edu>
1612 2004-10-08 Fernando Perez <fperez@colorado.edu>
1608
1613
1609 * IPython/Magic.py (__license__): change to absolute imports of
1614 * IPython/Magic.py (__license__): change to absolute imports of
1610 ipython's own internal packages, to start adapting to the absolute
1615 ipython's own internal packages, to start adapting to the absolute
1611 import requirement of PEP-328.
1616 import requirement of PEP-328.
1612
1617
1613 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
1618 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
1614 files, and standardize author/license marks through the Release
1619 files, and standardize author/license marks through the Release
1615 module instead of having per/file stuff (except for files with
1620 module instead of having per/file stuff (except for files with
1616 particular licenses, like the MIT/PSF-licensed codes).
1621 particular licenses, like the MIT/PSF-licensed codes).
1617
1622
1618 * IPython/Debugger.py: remove dead code for python 2.1
1623 * IPython/Debugger.py: remove dead code for python 2.1
1619
1624
1620 2004-10-04 Fernando Perez <fperez@colorado.edu>
1625 2004-10-04 Fernando Perez <fperez@colorado.edu>
1621
1626
1622 * IPython/iplib.py (ipmagic): New function for accessing magics
1627 * IPython/iplib.py (ipmagic): New function for accessing magics
1623 via a normal python function call.
1628 via a normal python function call.
1624
1629
1625 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
1630 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
1626 from '@' to '%', to accomodate the new @decorator syntax of python
1631 from '@' to '%', to accomodate the new @decorator syntax of python
1627 2.4.
1632 2.4.
1628
1633
1629 2004-09-29 Fernando Perez <fperez@colorado.edu>
1634 2004-09-29 Fernando Perez <fperez@colorado.edu>
1630
1635
1631 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
1636 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
1632 matplotlib.use to prevent running scripts which try to switch
1637 matplotlib.use to prevent running scripts which try to switch
1633 interactive backends from within ipython. This will just crash
1638 interactive backends from within ipython. This will just crash
1634 the python interpreter, so we can't allow it (but a detailed error
1639 the python interpreter, so we can't allow it (but a detailed error
1635 is given to the user).
1640 is given to the user).
1636
1641
1637 2004-09-28 Fernando Perez <fperez@colorado.edu>
1642 2004-09-28 Fernando Perez <fperez@colorado.edu>
1638
1643
1639 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
1644 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
1640 matplotlib-related fixes so that using @run with non-matplotlib
1645 matplotlib-related fixes so that using @run with non-matplotlib
1641 scripts doesn't pop up spurious plot windows. This requires
1646 scripts doesn't pop up spurious plot windows. This requires
1642 matplotlib >= 0.63, where I had to make some changes as well.
1647 matplotlib >= 0.63, where I had to make some changes as well.
1643
1648
1644 * IPython/ipmaker.py (make_IPython): update version requirement to
1649 * IPython/ipmaker.py (make_IPython): update version requirement to
1645 python 2.2.
1650 python 2.2.
1646
1651
1647 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
1652 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
1648 banner arg for embedded customization.
1653 banner arg for embedded customization.
1649
1654
1650 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
1655 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
1651 explicit uses of __IP as the IPython's instance name. Now things
1656 explicit uses of __IP as the IPython's instance name. Now things
1652 are properly handled via the shell.name value. The actual code
1657 are properly handled via the shell.name value. The actual code
1653 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
1658 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
1654 is much better than before. I'll clean things completely when the
1659 is much better than before. I'll clean things completely when the
1655 magic stuff gets a real overhaul.
1660 magic stuff gets a real overhaul.
1656
1661
1657 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
1662 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
1658 minor changes to debian dir.
1663 minor changes to debian dir.
1659
1664
1660 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
1665 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
1661 pointer to the shell itself in the interactive namespace even when
1666 pointer to the shell itself in the interactive namespace even when
1662 a user-supplied dict is provided. This is needed for embedding
1667 a user-supplied dict is provided. This is needed for embedding
1663 purposes (found by tests with Michel Sanner).
1668 purposes (found by tests with Michel Sanner).
1664
1669
1665 2004-09-27 Fernando Perez <fperez@colorado.edu>
1670 2004-09-27 Fernando Perez <fperez@colorado.edu>
1666
1671
1667 * IPython/UserConfig/ipythonrc: remove []{} from
1672 * IPython/UserConfig/ipythonrc: remove []{} from
1668 readline_remove_delims, so that things like [modname.<TAB> do
1673 readline_remove_delims, so that things like [modname.<TAB> do
1669 proper completion. This disables [].TAB, but that's a less common
1674 proper completion. This disables [].TAB, but that's a less common
1670 case than module names in list comprehensions, for example.
1675 case than module names in list comprehensions, for example.
1671 Thanks to a report by Andrea Riciputi.
1676 Thanks to a report by Andrea Riciputi.
1672
1677
1673 2004-09-09 Fernando Perez <fperez@colorado.edu>
1678 2004-09-09 Fernando Perez <fperez@colorado.edu>
1674
1679
1675 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
1680 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
1676 blocking problems in win32 and osx. Fix by John.
1681 blocking problems in win32 and osx. Fix by John.
1677
1682
1678 2004-09-08 Fernando Perez <fperez@colorado.edu>
1683 2004-09-08 Fernando Perez <fperez@colorado.edu>
1679
1684
1680 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
1685 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
1681 for Win32 and OSX. Fix by John Hunter.
1686 for Win32 and OSX. Fix by John Hunter.
1682
1687
1683 2004-08-30 *** Released version 0.6.3
1688 2004-08-30 *** Released version 0.6.3
1684
1689
1685 2004-08-30 Fernando Perez <fperez@colorado.edu>
1690 2004-08-30 Fernando Perez <fperez@colorado.edu>
1686
1691
1687 * setup.py (isfile): Add manpages to list of dependent files to be
1692 * setup.py (isfile): Add manpages to list of dependent files to be
1688 updated.
1693 updated.
1689
1694
1690 2004-08-27 Fernando Perez <fperez@colorado.edu>
1695 2004-08-27 Fernando Perez <fperez@colorado.edu>
1691
1696
1692 * IPython/Shell.py (start): I've disabled -wthread and -gthread
1697 * IPython/Shell.py (start): I've disabled -wthread and -gthread
1693 for now. They don't really work with standalone WX/GTK code
1698 for now. They don't really work with standalone WX/GTK code
1694 (though matplotlib IS working fine with both of those backends).
1699 (though matplotlib IS working fine with both of those backends).
1695 This will neeed much more testing. I disabled most things with
1700 This will neeed much more testing. I disabled most things with
1696 comments, so turning it back on later should be pretty easy.
1701 comments, so turning it back on later should be pretty easy.
1697
1702
1698 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
1703 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
1699 autocalling of expressions like r'foo', by modifying the line
1704 autocalling of expressions like r'foo', by modifying the line
1700 split regexp. Closes
1705 split regexp. Closes
1701 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
1706 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
1702 Riley <ipythonbugs-AT-sabi.net>.
1707 Riley <ipythonbugs-AT-sabi.net>.
1703 (InteractiveShell.mainloop): honor --nobanner with banner
1708 (InteractiveShell.mainloop): honor --nobanner with banner
1704 extensions.
1709 extensions.
1705
1710
1706 * IPython/Shell.py: Significant refactoring of all classes, so
1711 * IPython/Shell.py: Significant refactoring of all classes, so
1707 that we can really support ALL matplotlib backends and threading
1712 that we can really support ALL matplotlib backends and threading
1708 models (John spotted a bug with Tk which required this). Now we
1713 models (John spotted a bug with Tk which required this). Now we
1709 should support single-threaded, WX-threads and GTK-threads, both
1714 should support single-threaded, WX-threads and GTK-threads, both
1710 for generic code and for matplotlib.
1715 for generic code and for matplotlib.
1711
1716
1712 * IPython/ipmaker.py (__call__): Changed -mpthread option to
1717 * IPython/ipmaker.py (__call__): Changed -mpthread option to
1713 -pylab, to simplify things for users. Will also remove the pylab
1718 -pylab, to simplify things for users. Will also remove the pylab
1714 profile, since now all of matplotlib configuration is directly
1719 profile, since now all of matplotlib configuration is directly
1715 handled here. This also reduces startup time.
1720 handled here. This also reduces startup time.
1716
1721
1717 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
1722 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
1718 shell wasn't being correctly called. Also in IPShellWX.
1723 shell wasn't being correctly called. Also in IPShellWX.
1719
1724
1720 * IPython/iplib.py (InteractiveShell.__init__): Added option to
1725 * IPython/iplib.py (InteractiveShell.__init__): Added option to
1721 fine-tune banner.
1726 fine-tune banner.
1722
1727
1723 * IPython/numutils.py (spike): Deprecate these spike functions,
1728 * IPython/numutils.py (spike): Deprecate these spike functions,
1724 delete (long deprecated) gnuplot_exec handler.
1729 delete (long deprecated) gnuplot_exec handler.
1725
1730
1726 2004-08-26 Fernando Perez <fperez@colorado.edu>
1731 2004-08-26 Fernando Perez <fperez@colorado.edu>
1727
1732
1728 * ipython.1: Update for threading options, plus some others which
1733 * ipython.1: Update for threading options, plus some others which
1729 were missing.
1734 were missing.
1730
1735
1731 * IPython/ipmaker.py (__call__): Added -wthread option for
1736 * IPython/ipmaker.py (__call__): Added -wthread option for
1732 wxpython thread handling. Make sure threading options are only
1737 wxpython thread handling. Make sure threading options are only
1733 valid at the command line.
1738 valid at the command line.
1734
1739
1735 * scripts/ipython: moved shell selection into a factory function
1740 * scripts/ipython: moved shell selection into a factory function
1736 in Shell.py, to keep the starter script to a minimum.
1741 in Shell.py, to keep the starter script to a minimum.
1737
1742
1738 2004-08-25 Fernando Perez <fperez@colorado.edu>
1743 2004-08-25 Fernando Perez <fperez@colorado.edu>
1739
1744
1740 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
1745 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
1741 John. Along with some recent changes he made to matplotlib, the
1746 John. Along with some recent changes he made to matplotlib, the
1742 next versions of both systems should work very well together.
1747 next versions of both systems should work very well together.
1743
1748
1744 2004-08-24 Fernando Perez <fperez@colorado.edu>
1749 2004-08-24 Fernando Perez <fperez@colorado.edu>
1745
1750
1746 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
1751 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
1747 tried to switch the profiling to using hotshot, but I'm getting
1752 tried to switch the profiling to using hotshot, but I'm getting
1748 strange errors from prof.runctx() there. I may be misreading the
1753 strange errors from prof.runctx() there. I may be misreading the
1749 docs, but it looks weird. For now the profiling code will
1754 docs, but it looks weird. For now the profiling code will
1750 continue to use the standard profiler.
1755 continue to use the standard profiler.
1751
1756
1752 2004-08-23 Fernando Perez <fperez@colorado.edu>
1757 2004-08-23 Fernando Perez <fperez@colorado.edu>
1753
1758
1754 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
1759 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
1755 threaded shell, by John Hunter. It's not quite ready yet, but
1760 threaded shell, by John Hunter. It's not quite ready yet, but
1756 close.
1761 close.
1757
1762
1758 2004-08-22 Fernando Perez <fperez@colorado.edu>
1763 2004-08-22 Fernando Perez <fperez@colorado.edu>
1759
1764
1760 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
1765 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
1761 in Magic and ultraTB.
1766 in Magic and ultraTB.
1762
1767
1763 * ipython.1: document threading options in manpage.
1768 * ipython.1: document threading options in manpage.
1764
1769
1765 * scripts/ipython: Changed name of -thread option to -gthread,
1770 * scripts/ipython: Changed name of -thread option to -gthread,
1766 since this is GTK specific. I want to leave the door open for a
1771 since this is GTK specific. I want to leave the door open for a
1767 -wthread option for WX, which will most likely be necessary. This
1772 -wthread option for WX, which will most likely be necessary. This
1768 change affects usage and ipmaker as well.
1773 change affects usage and ipmaker as well.
1769
1774
1770 * IPython/Shell.py (matplotlib_shell): Add a factory function to
1775 * IPython/Shell.py (matplotlib_shell): Add a factory function to
1771 handle the matplotlib shell issues. Code by John Hunter
1776 handle the matplotlib shell issues. Code by John Hunter
1772 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1777 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1773 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
1778 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
1774 broken (and disabled for end users) for now, but it puts the
1779 broken (and disabled for end users) for now, but it puts the
1775 infrastructure in place.
1780 infrastructure in place.
1776
1781
1777 2004-08-21 Fernando Perez <fperez@colorado.edu>
1782 2004-08-21 Fernando Perez <fperez@colorado.edu>
1778
1783
1779 * ipythonrc-pylab: Add matplotlib support.
1784 * ipythonrc-pylab: Add matplotlib support.
1780
1785
1781 * matplotlib_config.py: new files for matplotlib support, part of
1786 * matplotlib_config.py: new files for matplotlib support, part of
1782 the pylab profile.
1787 the pylab profile.
1783
1788
1784 * IPython/usage.py (__doc__): documented the threading options.
1789 * IPython/usage.py (__doc__): documented the threading options.
1785
1790
1786 2004-08-20 Fernando Perez <fperez@colorado.edu>
1791 2004-08-20 Fernando Perez <fperez@colorado.edu>
1787
1792
1788 * ipython: Modified the main calling routine to handle the -thread
1793 * ipython: Modified the main calling routine to handle the -thread
1789 and -mpthread options. This needs to be done as a top-level hack,
1794 and -mpthread options. This needs to be done as a top-level hack,
1790 because it determines which class to instantiate for IPython
1795 because it determines which class to instantiate for IPython
1791 itself.
1796 itself.
1792
1797
1793 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
1798 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
1794 classes to support multithreaded GTK operation without blocking,
1799 classes to support multithreaded GTK operation without blocking,
1795 and matplotlib with all backends. This is a lot of still very
1800 and matplotlib with all backends. This is a lot of still very
1796 experimental code, and threads are tricky. So it may still have a
1801 experimental code, and threads are tricky. So it may still have a
1797 few rough edges... This code owes a lot to
1802 few rough edges... This code owes a lot to
1798 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
1803 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
1799 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
1804 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
1800 to John Hunter for all the matplotlib work.
1805 to John Hunter for all the matplotlib work.
1801
1806
1802 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
1807 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
1803 options for gtk thread and matplotlib support.
1808 options for gtk thread and matplotlib support.
1804
1809
1805 2004-08-16 Fernando Perez <fperez@colorado.edu>
1810 2004-08-16 Fernando Perez <fperez@colorado.edu>
1806
1811
1807 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
1812 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
1808 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
1813 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
1809 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
1814 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
1810
1815
1811 2004-08-11 Fernando Perez <fperez@colorado.edu>
1816 2004-08-11 Fernando Perez <fperez@colorado.edu>
1812
1817
1813 * setup.py (isfile): Fix build so documentation gets updated for
1818 * setup.py (isfile): Fix build so documentation gets updated for
1814 rpms (it was only done for .tgz builds).
1819 rpms (it was only done for .tgz builds).
1815
1820
1816 2004-08-10 Fernando Perez <fperez@colorado.edu>
1821 2004-08-10 Fernando Perez <fperez@colorado.edu>
1817
1822
1818 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
1823 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
1819
1824
1820 * iplib.py : Silence syntax error exceptions in tab-completion.
1825 * iplib.py : Silence syntax error exceptions in tab-completion.
1821
1826
1822 2004-08-05 Fernando Perez <fperez@colorado.edu>
1827 2004-08-05 Fernando Perez <fperez@colorado.edu>
1823
1828
1824 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
1829 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
1825 'color off' mark for continuation prompts. This was causing long
1830 'color off' mark for continuation prompts. This was causing long
1826 continuation lines to mis-wrap.
1831 continuation lines to mis-wrap.
1827
1832
1828 2004-08-01 Fernando Perez <fperez@colorado.edu>
1833 2004-08-01 Fernando Perez <fperez@colorado.edu>
1829
1834
1830 * IPython/ipmaker.py (make_IPython): Allow the shell class used
1835 * IPython/ipmaker.py (make_IPython): Allow the shell class used
1831 for building ipython to be a parameter. All this is necessary
1836 for building ipython to be a parameter. All this is necessary
1832 right now to have a multithreaded version, but this insane
1837 right now to have a multithreaded version, but this insane
1833 non-design will be cleaned up soon. For now, it's a hack that
1838 non-design will be cleaned up soon. For now, it's a hack that
1834 works.
1839 works.
1835
1840
1836 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
1841 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
1837 args in various places. No bugs so far, but it's a dangerous
1842 args in various places. No bugs so far, but it's a dangerous
1838 practice.
1843 practice.
1839
1844
1840 2004-07-31 Fernando Perez <fperez@colorado.edu>
1845 2004-07-31 Fernando Perez <fperez@colorado.edu>
1841
1846
1842 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
1847 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
1843 fix completion of files with dots in their names under most
1848 fix completion of files with dots in their names under most
1844 profiles (pysh was OK because the completion order is different).
1849 profiles (pysh was OK because the completion order is different).
1845
1850
1846 2004-07-27 Fernando Perez <fperez@colorado.edu>
1851 2004-07-27 Fernando Perez <fperez@colorado.edu>
1847
1852
1848 * IPython/iplib.py (InteractiveShell.__init__): build dict of
1853 * IPython/iplib.py (InteractiveShell.__init__): build dict of
1849 keywords manually, b/c the one in keyword.py was removed in python
1854 keywords manually, b/c the one in keyword.py was removed in python
1850 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
1855 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
1851 This is NOT a bug under python 2.3 and earlier.
1856 This is NOT a bug under python 2.3 and earlier.
1852
1857
1853 2004-07-26 Fernando Perez <fperez@colorado.edu>
1858 2004-07-26 Fernando Perez <fperez@colorado.edu>
1854
1859
1855 * IPython/ultraTB.py (VerboseTB.text): Add another
1860 * IPython/ultraTB.py (VerboseTB.text): Add another
1856 linecache.checkcache() call to try to prevent inspect.py from
1861 linecache.checkcache() call to try to prevent inspect.py from
1857 crashing under python 2.3. I think this fixes
1862 crashing under python 2.3. I think this fixes
1858 http://www.scipy.net/roundup/ipython/issue17.
1863 http://www.scipy.net/roundup/ipython/issue17.
1859
1864
1860 2004-07-26 *** Released version 0.6.2
1865 2004-07-26 *** Released version 0.6.2
1861
1866
1862 2004-07-26 Fernando Perez <fperez@colorado.edu>
1867 2004-07-26 Fernando Perez <fperez@colorado.edu>
1863
1868
1864 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
1869 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
1865 fail for any number.
1870 fail for any number.
1866 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
1871 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
1867 empty bookmarks.
1872 empty bookmarks.
1868
1873
1869 2004-07-26 *** Released version 0.6.1
1874 2004-07-26 *** Released version 0.6.1
1870
1875
1871 2004-07-26 Fernando Perez <fperez@colorado.edu>
1876 2004-07-26 Fernando Perez <fperez@colorado.edu>
1872
1877
1873 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
1878 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
1874
1879
1875 * IPython/iplib.py (protect_filename): Applied Ville's patch for
1880 * IPython/iplib.py (protect_filename): Applied Ville's patch for
1876 escaping '()[]{}' in filenames.
1881 escaping '()[]{}' in filenames.
1877
1882
1878 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
1883 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
1879 Python 2.2 users who lack a proper shlex.split.
1884 Python 2.2 users who lack a proper shlex.split.
1880
1885
1881 2004-07-19 Fernando Perez <fperez@colorado.edu>
1886 2004-07-19 Fernando Perez <fperez@colorado.edu>
1882
1887
1883 * IPython/iplib.py (InteractiveShell.init_readline): Add support
1888 * IPython/iplib.py (InteractiveShell.init_readline): Add support
1884 for reading readline's init file. I follow the normal chain:
1889 for reading readline's init file. I follow the normal chain:
1885 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
1890 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
1886 report by Mike Heeter. This closes
1891 report by Mike Heeter. This closes
1887 http://www.scipy.net/roundup/ipython/issue16.
1892 http://www.scipy.net/roundup/ipython/issue16.
1888
1893
1889 2004-07-18 Fernando Perez <fperez@colorado.edu>
1894 2004-07-18 Fernando Perez <fperez@colorado.edu>
1890
1895
1891 * IPython/iplib.py (__init__): Add better handling of '\' under
1896 * IPython/iplib.py (__init__): Add better handling of '\' under
1892 Win32 for filenames. After a patch by Ville.
1897 Win32 for filenames. After a patch by Ville.
1893
1898
1894 2004-07-17 Fernando Perez <fperez@colorado.edu>
1899 2004-07-17 Fernando Perez <fperez@colorado.edu>
1895
1900
1896 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
1901 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
1897 autocalling would be triggered for 'foo is bar' if foo is
1902 autocalling would be triggered for 'foo is bar' if foo is
1898 callable. I also cleaned up the autocall detection code to use a
1903 callable. I also cleaned up the autocall detection code to use a
1899 regexp, which is faster. Bug reported by Alexander Schmolck.
1904 regexp, which is faster. Bug reported by Alexander Schmolck.
1900
1905
1901 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
1906 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
1902 '?' in them would confuse the help system. Reported by Alex
1907 '?' in them would confuse the help system. Reported by Alex
1903 Schmolck.
1908 Schmolck.
1904
1909
1905 2004-07-16 Fernando Perez <fperez@colorado.edu>
1910 2004-07-16 Fernando Perez <fperez@colorado.edu>
1906
1911
1907 * IPython/GnuplotInteractive.py (__all__): added plot2.
1912 * IPython/GnuplotInteractive.py (__all__): added plot2.
1908
1913
1909 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
1914 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
1910 plotting dictionaries, lists or tuples of 1d arrays.
1915 plotting dictionaries, lists or tuples of 1d arrays.
1911
1916
1912 * IPython/Magic.py (Magic.magic_hist): small clenaups and
1917 * IPython/Magic.py (Magic.magic_hist): small clenaups and
1913 optimizations.
1918 optimizations.
1914
1919
1915 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
1920 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
1916 the information which was there from Janko's original IPP code:
1921 the information which was there from Janko's original IPP code:
1917
1922
1918 03.05.99 20:53 porto.ifm.uni-kiel.de
1923 03.05.99 20:53 porto.ifm.uni-kiel.de
1919 --Started changelog.
1924 --Started changelog.
1920 --make clear do what it say it does
1925 --make clear do what it say it does
1921 --added pretty output of lines from inputcache
1926 --added pretty output of lines from inputcache
1922 --Made Logger a mixin class, simplifies handling of switches
1927 --Made Logger a mixin class, simplifies handling of switches
1923 --Added own completer class. .string<TAB> expands to last history
1928 --Added own completer class. .string<TAB> expands to last history
1924 line which starts with string. The new expansion is also present
1929 line which starts with string. The new expansion is also present
1925 with Ctrl-r from the readline library. But this shows, who this
1930 with Ctrl-r from the readline library. But this shows, who this
1926 can be done for other cases.
1931 can be done for other cases.
1927 --Added convention that all shell functions should accept a
1932 --Added convention that all shell functions should accept a
1928 parameter_string This opens the door for different behaviour for
1933 parameter_string This opens the door for different behaviour for
1929 each function. @cd is a good example of this.
1934 each function. @cd is a good example of this.
1930
1935
1931 04.05.99 12:12 porto.ifm.uni-kiel.de
1936 04.05.99 12:12 porto.ifm.uni-kiel.de
1932 --added logfile rotation
1937 --added logfile rotation
1933 --added new mainloop method which freezes first the namespace
1938 --added new mainloop method which freezes first the namespace
1934
1939
1935 07.05.99 21:24 porto.ifm.uni-kiel.de
1940 07.05.99 21:24 porto.ifm.uni-kiel.de
1936 --added the docreader classes. Now there is a help system.
1941 --added the docreader classes. Now there is a help system.
1937 -This is only a first try. Currently it's not easy to put new
1942 -This is only a first try. Currently it's not easy to put new
1938 stuff in the indices. But this is the way to go. Info would be
1943 stuff in the indices. But this is the way to go. Info would be
1939 better, but HTML is every where and not everybody has an info
1944 better, but HTML is every where and not everybody has an info
1940 system installed and it's not so easy to change html-docs to info.
1945 system installed and it's not so easy to change html-docs to info.
1941 --added global logfile option
1946 --added global logfile option
1942 --there is now a hook for object inspection method pinfo needs to
1947 --there is now a hook for object inspection method pinfo needs to
1943 be provided for this. Can be reached by two '??'.
1948 be provided for this. Can be reached by two '??'.
1944
1949
1945 08.05.99 20:51 porto.ifm.uni-kiel.de
1950 08.05.99 20:51 porto.ifm.uni-kiel.de
1946 --added a README
1951 --added a README
1947 --bug in rc file. Something has changed so functions in the rc
1952 --bug in rc file. Something has changed so functions in the rc
1948 file need to reference the shell and not self. Not clear if it's a
1953 file need to reference the shell and not self. Not clear if it's a
1949 bug or feature.
1954 bug or feature.
1950 --changed rc file for new behavior
1955 --changed rc file for new behavior
1951
1956
1952 2004-07-15 Fernando Perez <fperez@colorado.edu>
1957 2004-07-15 Fernando Perez <fperez@colorado.edu>
1953
1958
1954 * IPython/Logger.py (Logger.log): fixed recent bug where the input
1959 * IPython/Logger.py (Logger.log): fixed recent bug where the input
1955 cache was falling out of sync in bizarre manners when multi-line
1960 cache was falling out of sync in bizarre manners when multi-line
1956 input was present. Minor optimizations and cleanup.
1961 input was present. Minor optimizations and cleanup.
1957
1962
1958 (Logger): Remove old Changelog info for cleanup. This is the
1963 (Logger): Remove old Changelog info for cleanup. This is the
1959 information which was there from Janko's original code:
1964 information which was there from Janko's original code:
1960
1965
1961 Changes to Logger: - made the default log filename a parameter
1966 Changes to Logger: - made the default log filename a parameter
1962
1967
1963 - put a check for lines beginning with !@? in log(). Needed
1968 - put a check for lines beginning with !@? in log(). Needed
1964 (even if the handlers properly log their lines) for mid-session
1969 (even if the handlers properly log their lines) for mid-session
1965 logging activation to work properly. Without this, lines logged
1970 logging activation to work properly. Without this, lines logged
1966 in mid session, which get read from the cache, would end up
1971 in mid session, which get read from the cache, would end up
1967 'bare' (with !@? in the open) in the log. Now they are caught
1972 'bare' (with !@? in the open) in the log. Now they are caught
1968 and prepended with a #.
1973 and prepended with a #.
1969
1974
1970 * IPython/iplib.py (InteractiveShell.init_readline): added check
1975 * IPython/iplib.py (InteractiveShell.init_readline): added check
1971 in case MagicCompleter fails to be defined, so we don't crash.
1976 in case MagicCompleter fails to be defined, so we don't crash.
1972
1977
1973 2004-07-13 Fernando Perez <fperez@colorado.edu>
1978 2004-07-13 Fernando Perez <fperez@colorado.edu>
1974
1979
1975 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
1980 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
1976 of EPS if the requested filename ends in '.eps'.
1981 of EPS if the requested filename ends in '.eps'.
1977
1982
1978 2004-07-04 Fernando Perez <fperez@colorado.edu>
1983 2004-07-04 Fernando Perez <fperez@colorado.edu>
1979
1984
1980 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
1985 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
1981 escaping of quotes when calling the shell.
1986 escaping of quotes when calling the shell.
1982
1987
1983 2004-07-02 Fernando Perez <fperez@colorado.edu>
1988 2004-07-02 Fernando Perez <fperez@colorado.edu>
1984
1989
1985 * IPython/Prompts.py (CachedOutput.update): Fix problem with
1990 * IPython/Prompts.py (CachedOutput.update): Fix problem with
1986 gettext not working because we were clobbering '_'. Fixes
1991 gettext not working because we were clobbering '_'. Fixes
1987 http://www.scipy.net/roundup/ipython/issue6.
1992 http://www.scipy.net/roundup/ipython/issue6.
1988
1993
1989 2004-07-01 Fernando Perez <fperez@colorado.edu>
1994 2004-07-01 Fernando Perez <fperez@colorado.edu>
1990
1995
1991 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
1996 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
1992 into @cd. Patch by Ville.
1997 into @cd. Patch by Ville.
1993
1998
1994 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1999 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1995 new function to store things after ipmaker runs. Patch by Ville.
2000 new function to store things after ipmaker runs. Patch by Ville.
1996 Eventually this will go away once ipmaker is removed and the class
2001 Eventually this will go away once ipmaker is removed and the class
1997 gets cleaned up, but for now it's ok. Key functionality here is
2002 gets cleaned up, but for now it's ok. Key functionality here is
1998 the addition of the persistent storage mechanism, a dict for
2003 the addition of the persistent storage mechanism, a dict for
1999 keeping data across sessions (for now just bookmarks, but more can
2004 keeping data across sessions (for now just bookmarks, but more can
2000 be implemented later).
2005 be implemented later).
2001
2006
2002 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2007 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2003 persistent across sections. Patch by Ville, I modified it
2008 persistent across sections. Patch by Ville, I modified it
2004 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2009 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2005 added a '-l' option to list all bookmarks.
2010 added a '-l' option to list all bookmarks.
2006
2011
2007 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2012 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2008 center for cleanup. Registered with atexit.register(). I moved
2013 center for cleanup. Registered with atexit.register(). I moved
2009 here the old exit_cleanup(). After a patch by Ville.
2014 here the old exit_cleanup(). After a patch by Ville.
2010
2015
2011 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2016 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2012 characters in the hacked shlex_split for python 2.2.
2017 characters in the hacked shlex_split for python 2.2.
2013
2018
2014 * IPython/iplib.py (file_matches): more fixes to filenames with
2019 * IPython/iplib.py (file_matches): more fixes to filenames with
2015 whitespace in them. It's not perfect, but limitations in python's
2020 whitespace in them. It's not perfect, but limitations in python's
2016 readline make it impossible to go further.
2021 readline make it impossible to go further.
2017
2022
2018 2004-06-29 Fernando Perez <fperez@colorado.edu>
2023 2004-06-29 Fernando Perez <fperez@colorado.edu>
2019
2024
2020 * IPython/iplib.py (file_matches): escape whitespace correctly in
2025 * IPython/iplib.py (file_matches): escape whitespace correctly in
2021 filename completions. Bug reported by Ville.
2026 filename completions. Bug reported by Ville.
2022
2027
2023 2004-06-28 Fernando Perez <fperez@colorado.edu>
2028 2004-06-28 Fernando Perez <fperez@colorado.edu>
2024
2029
2025 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2030 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2026 the history file will be called 'history-PROFNAME' (or just
2031 the history file will be called 'history-PROFNAME' (or just
2027 'history' if no profile is loaded). I was getting annoyed at
2032 'history' if no profile is loaded). I was getting annoyed at
2028 getting my Numerical work history clobbered by pysh sessions.
2033 getting my Numerical work history clobbered by pysh sessions.
2029
2034
2030 * IPython/iplib.py (InteractiveShell.__init__): Internal
2035 * IPython/iplib.py (InteractiveShell.__init__): Internal
2031 getoutputerror() function so that we can honor the system_verbose
2036 getoutputerror() function so that we can honor the system_verbose
2032 flag for _all_ system calls. I also added escaping of #
2037 flag for _all_ system calls. I also added escaping of #
2033 characters here to avoid confusing Itpl.
2038 characters here to avoid confusing Itpl.
2034
2039
2035 * IPython/Magic.py (shlex_split): removed call to shell in
2040 * IPython/Magic.py (shlex_split): removed call to shell in
2036 parse_options and replaced it with shlex.split(). The annoying
2041 parse_options and replaced it with shlex.split(). The annoying
2037 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2042 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2038 to backport it from 2.3, with several frail hacks (the shlex
2043 to backport it from 2.3, with several frail hacks (the shlex
2039 module is rather limited in 2.2). Thanks to a suggestion by Ville
2044 module is rather limited in 2.2). Thanks to a suggestion by Ville
2040 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2045 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2041 problem.
2046 problem.
2042
2047
2043 (Magic.magic_system_verbose): new toggle to print the actual
2048 (Magic.magic_system_verbose): new toggle to print the actual
2044 system calls made by ipython. Mainly for debugging purposes.
2049 system calls made by ipython. Mainly for debugging purposes.
2045
2050
2046 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2051 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2047 doesn't support persistence. Reported (and fix suggested) by
2052 doesn't support persistence. Reported (and fix suggested) by
2048 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2053 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2049
2054
2050 2004-06-26 Fernando Perez <fperez@colorado.edu>
2055 2004-06-26 Fernando Perez <fperez@colorado.edu>
2051
2056
2052 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2057 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2053 continue prompts.
2058 continue prompts.
2054
2059
2055 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2060 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2056 function (basically a big docstring) and a few more things here to
2061 function (basically a big docstring) and a few more things here to
2057 speedup startup. pysh.py is now very lightweight. We want because
2062 speedup startup. pysh.py is now very lightweight. We want because
2058 it gets execfile'd, while InterpreterExec gets imported, so
2063 it gets execfile'd, while InterpreterExec gets imported, so
2059 byte-compilation saves time.
2064 byte-compilation saves time.
2060
2065
2061 2004-06-25 Fernando Perez <fperez@colorado.edu>
2066 2004-06-25 Fernando Perez <fperez@colorado.edu>
2062
2067
2063 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2068 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2064 -NUM', which was recently broken.
2069 -NUM', which was recently broken.
2065
2070
2066 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2071 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2067 in multi-line input (but not !!, which doesn't make sense there).
2072 in multi-line input (but not !!, which doesn't make sense there).
2068
2073
2069 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2074 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2070 It's just too useful, and people can turn it off in the less
2075 It's just too useful, and people can turn it off in the less
2071 common cases where it's a problem.
2076 common cases where it's a problem.
2072
2077
2073 2004-06-24 Fernando Perez <fperez@colorado.edu>
2078 2004-06-24 Fernando Perez <fperez@colorado.edu>
2074
2079
2075 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2080 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2076 special syntaxes (like alias calling) is now allied in multi-line
2081 special syntaxes (like alias calling) is now allied in multi-line
2077 input. This is still _very_ experimental, but it's necessary for
2082 input. This is still _very_ experimental, but it's necessary for
2078 efficient shell usage combining python looping syntax with system
2083 efficient shell usage combining python looping syntax with system
2079 calls. For now it's restricted to aliases, I don't think it
2084 calls. For now it's restricted to aliases, I don't think it
2080 really even makes sense to have this for magics.
2085 really even makes sense to have this for magics.
2081
2086
2082 2004-06-23 Fernando Perez <fperez@colorado.edu>
2087 2004-06-23 Fernando Perez <fperez@colorado.edu>
2083
2088
2084 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2089 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2085 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2090 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2086
2091
2087 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2092 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2088 extensions under Windows (after code sent by Gary Bishop). The
2093 extensions under Windows (after code sent by Gary Bishop). The
2089 extensions considered 'executable' are stored in IPython's rc
2094 extensions considered 'executable' are stored in IPython's rc
2090 structure as win_exec_ext.
2095 structure as win_exec_ext.
2091
2096
2092 * IPython/genutils.py (shell): new function, like system() but
2097 * IPython/genutils.py (shell): new function, like system() but
2093 without return value. Very useful for interactive shell work.
2098 without return value. Very useful for interactive shell work.
2094
2099
2095 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2100 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2096 delete aliases.
2101 delete aliases.
2097
2102
2098 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2103 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2099 sure that the alias table doesn't contain python keywords.
2104 sure that the alias table doesn't contain python keywords.
2100
2105
2101 2004-06-21 Fernando Perez <fperez@colorado.edu>
2106 2004-06-21 Fernando Perez <fperez@colorado.edu>
2102
2107
2103 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2108 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2104 non-existent items are found in $PATH. Reported by Thorsten.
2109 non-existent items are found in $PATH. Reported by Thorsten.
2105
2110
2106 2004-06-20 Fernando Perez <fperez@colorado.edu>
2111 2004-06-20 Fernando Perez <fperez@colorado.edu>
2107
2112
2108 * IPython/iplib.py (complete): modified the completer so that the
2113 * IPython/iplib.py (complete): modified the completer so that the
2109 order of priorities can be easily changed at runtime.
2114 order of priorities can be easily changed at runtime.
2110
2115
2111 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2116 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2112 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2117 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2113
2118
2114 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2119 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2115 expand Python variables prepended with $ in all system calls. The
2120 expand Python variables prepended with $ in all system calls. The
2116 same was done to InteractiveShell.handle_shell_escape. Now all
2121 same was done to InteractiveShell.handle_shell_escape. Now all
2117 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2122 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2118 expansion of python variables and expressions according to the
2123 expansion of python variables and expressions according to the
2119 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2124 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2120
2125
2121 Though PEP-215 has been rejected, a similar (but simpler) one
2126 Though PEP-215 has been rejected, a similar (but simpler) one
2122 seems like it will go into Python 2.4, PEP-292 -
2127 seems like it will go into Python 2.4, PEP-292 -
2123 http://www.python.org/peps/pep-0292.html.
2128 http://www.python.org/peps/pep-0292.html.
2124
2129
2125 I'll keep the full syntax of PEP-215, since IPython has since the
2130 I'll keep the full syntax of PEP-215, since IPython has since the
2126 start used Ka-Ping Yee's reference implementation discussed there
2131 start used Ka-Ping Yee's reference implementation discussed there
2127 (Itpl), and I actually like the powerful semantics it offers.
2132 (Itpl), and I actually like the powerful semantics it offers.
2128
2133
2129 In order to access normal shell variables, the $ has to be escaped
2134 In order to access normal shell variables, the $ has to be escaped
2130 via an extra $. For example:
2135 via an extra $. For example:
2131
2136
2132 In [7]: PATH='a python variable'
2137 In [7]: PATH='a python variable'
2133
2138
2134 In [8]: !echo $PATH
2139 In [8]: !echo $PATH
2135 a python variable
2140 a python variable
2136
2141
2137 In [9]: !echo $$PATH
2142 In [9]: !echo $$PATH
2138 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2143 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2139
2144
2140 (Magic.parse_options): escape $ so the shell doesn't evaluate
2145 (Magic.parse_options): escape $ so the shell doesn't evaluate
2141 things prematurely.
2146 things prematurely.
2142
2147
2143 * IPython/iplib.py (InteractiveShell.call_alias): added the
2148 * IPython/iplib.py (InteractiveShell.call_alias): added the
2144 ability for aliases to expand python variables via $.
2149 ability for aliases to expand python variables via $.
2145
2150
2146 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2151 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2147 system, now there's a @rehash/@rehashx pair of magics. These work
2152 system, now there's a @rehash/@rehashx pair of magics. These work
2148 like the csh rehash command, and can be invoked at any time. They
2153 like the csh rehash command, and can be invoked at any time. They
2149 build a table of aliases to everything in the user's $PATH
2154 build a table of aliases to everything in the user's $PATH
2150 (@rehash uses everything, @rehashx is slower but only adds
2155 (@rehash uses everything, @rehashx is slower but only adds
2151 executable files). With this, the pysh.py-based shell profile can
2156 executable files). With this, the pysh.py-based shell profile can
2152 now simply call rehash upon startup, and full access to all
2157 now simply call rehash upon startup, and full access to all
2153 programs in the user's path is obtained.
2158 programs in the user's path is obtained.
2154
2159
2155 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2160 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2156 functionality is now fully in place. I removed the old dynamic
2161 functionality is now fully in place. I removed the old dynamic
2157 code generation based approach, in favor of a much lighter one
2162 code generation based approach, in favor of a much lighter one
2158 based on a simple dict. The advantage is that this allows me to
2163 based on a simple dict. The advantage is that this allows me to
2159 now have thousands of aliases with negligible cost (unthinkable
2164 now have thousands of aliases with negligible cost (unthinkable
2160 with the old system).
2165 with the old system).
2161
2166
2162 2004-06-19 Fernando Perez <fperez@colorado.edu>
2167 2004-06-19 Fernando Perez <fperez@colorado.edu>
2163
2168
2164 * IPython/iplib.py (__init__): extended MagicCompleter class to
2169 * IPython/iplib.py (__init__): extended MagicCompleter class to
2165 also complete (last in priority) on user aliases.
2170 also complete (last in priority) on user aliases.
2166
2171
2167 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2172 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2168 call to eval.
2173 call to eval.
2169 (ItplNS.__init__): Added a new class which functions like Itpl,
2174 (ItplNS.__init__): Added a new class which functions like Itpl,
2170 but allows configuring the namespace for the evaluation to occur
2175 but allows configuring the namespace for the evaluation to occur
2171 in.
2176 in.
2172
2177
2173 2004-06-18 Fernando Perez <fperez@colorado.edu>
2178 2004-06-18 Fernando Perez <fperez@colorado.edu>
2174
2179
2175 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2180 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2176 better message when 'exit' or 'quit' are typed (a common newbie
2181 better message when 'exit' or 'quit' are typed (a common newbie
2177 confusion).
2182 confusion).
2178
2183
2179 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2184 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2180 check for Windows users.
2185 check for Windows users.
2181
2186
2182 * IPython/iplib.py (InteractiveShell.user_setup): removed
2187 * IPython/iplib.py (InteractiveShell.user_setup): removed
2183 disabling of colors for Windows. I'll test at runtime and issue a
2188 disabling of colors for Windows. I'll test at runtime and issue a
2184 warning if Gary's readline isn't found, as to nudge users to
2189 warning if Gary's readline isn't found, as to nudge users to
2185 download it.
2190 download it.
2186
2191
2187 2004-06-16 Fernando Perez <fperez@colorado.edu>
2192 2004-06-16 Fernando Perez <fperez@colorado.edu>
2188
2193
2189 * IPython/genutils.py (Stream.__init__): changed to print errors
2194 * IPython/genutils.py (Stream.__init__): changed to print errors
2190 to sys.stderr. I had a circular dependency here. Now it's
2195 to sys.stderr. I had a circular dependency here. Now it's
2191 possible to run ipython as IDLE's shell (consider this pre-alpha,
2196 possible to run ipython as IDLE's shell (consider this pre-alpha,
2192 since true stdout things end up in the starting terminal instead
2197 since true stdout things end up in the starting terminal instead
2193 of IDLE's out).
2198 of IDLE's out).
2194
2199
2195 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2200 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2196 users who haven't # updated their prompt_in2 definitions. Remove
2201 users who haven't # updated their prompt_in2 definitions. Remove
2197 eventually.
2202 eventually.
2198 (multiple_replace): added credit to original ASPN recipe.
2203 (multiple_replace): added credit to original ASPN recipe.
2199
2204
2200 2004-06-15 Fernando Perez <fperez@colorado.edu>
2205 2004-06-15 Fernando Perez <fperez@colorado.edu>
2201
2206
2202 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2207 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2203 list of auto-defined aliases.
2208 list of auto-defined aliases.
2204
2209
2205 2004-06-13 Fernando Perez <fperez@colorado.edu>
2210 2004-06-13 Fernando Perez <fperez@colorado.edu>
2206
2211
2207 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2212 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2208 install was really requested (so setup.py can be used for other
2213 install was really requested (so setup.py can be used for other
2209 things under Windows).
2214 things under Windows).
2210
2215
2211 2004-06-10 Fernando Perez <fperez@colorado.edu>
2216 2004-06-10 Fernando Perez <fperez@colorado.edu>
2212
2217
2213 * IPython/Logger.py (Logger.create_log): Manually remove any old
2218 * IPython/Logger.py (Logger.create_log): Manually remove any old
2214 backup, since os.remove may fail under Windows. Fixes bug
2219 backup, since os.remove may fail under Windows. Fixes bug
2215 reported by Thorsten.
2220 reported by Thorsten.
2216
2221
2217 2004-06-09 Fernando Perez <fperez@colorado.edu>
2222 2004-06-09 Fernando Perez <fperez@colorado.edu>
2218
2223
2219 * examples/example-embed.py: fixed all references to %n (replaced
2224 * examples/example-embed.py: fixed all references to %n (replaced
2220 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2225 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2221 for all examples and the manual as well.
2226 for all examples and the manual as well.
2222
2227
2223 2004-06-08 Fernando Perez <fperez@colorado.edu>
2228 2004-06-08 Fernando Perez <fperez@colorado.edu>
2224
2229
2225 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2230 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2226 alignment and color management. All 3 prompt subsystems now
2231 alignment and color management. All 3 prompt subsystems now
2227 inherit from BasePrompt.
2232 inherit from BasePrompt.
2228
2233
2229 * tools/release: updates for windows installer build and tag rpms
2234 * tools/release: updates for windows installer build and tag rpms
2230 with python version (since paths are fixed).
2235 with python version (since paths are fixed).
2231
2236
2232 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2237 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2233 which will become eventually obsolete. Also fixed the default
2238 which will become eventually obsolete. Also fixed the default
2234 prompt_in2 to use \D, so at least new users start with the correct
2239 prompt_in2 to use \D, so at least new users start with the correct
2235 defaults.
2240 defaults.
2236 WARNING: Users with existing ipythonrc files will need to apply
2241 WARNING: Users with existing ipythonrc files will need to apply
2237 this fix manually!
2242 this fix manually!
2238
2243
2239 * setup.py: make windows installer (.exe). This is finally the
2244 * setup.py: make windows installer (.exe). This is finally the
2240 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2245 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2241 which I hadn't included because it required Python 2.3 (or recent
2246 which I hadn't included because it required Python 2.3 (or recent
2242 distutils).
2247 distutils).
2243
2248
2244 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2249 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2245 usage of new '\D' escape.
2250 usage of new '\D' escape.
2246
2251
2247 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2252 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2248 lacks os.getuid())
2253 lacks os.getuid())
2249 (CachedOutput.set_colors): Added the ability to turn coloring
2254 (CachedOutput.set_colors): Added the ability to turn coloring
2250 on/off with @colors even for manually defined prompt colors. It
2255 on/off with @colors even for manually defined prompt colors. It
2251 uses a nasty global, but it works safely and via the generic color
2256 uses a nasty global, but it works safely and via the generic color
2252 handling mechanism.
2257 handling mechanism.
2253 (Prompt2.__init__): Introduced new escape '\D' for continuation
2258 (Prompt2.__init__): Introduced new escape '\D' for continuation
2254 prompts. It represents the counter ('\#') as dots.
2259 prompts. It represents the counter ('\#') as dots.
2255 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2260 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2256 need to update their ipythonrc files and replace '%n' with '\D' in
2261 need to update their ipythonrc files and replace '%n' with '\D' in
2257 their prompt_in2 settings everywhere. Sorry, but there's
2262 their prompt_in2 settings everywhere. Sorry, but there's
2258 otherwise no clean way to get all prompts to properly align. The
2263 otherwise no clean way to get all prompts to properly align. The
2259 ipythonrc shipped with IPython has been updated.
2264 ipythonrc shipped with IPython has been updated.
2260
2265
2261 2004-06-07 Fernando Perez <fperez@colorado.edu>
2266 2004-06-07 Fernando Perez <fperez@colorado.edu>
2262
2267
2263 * setup.py (isfile): Pass local_icons option to latex2html, so the
2268 * setup.py (isfile): Pass local_icons option to latex2html, so the
2264 resulting HTML file is self-contained. Thanks to
2269 resulting HTML file is self-contained. Thanks to
2265 dryice-AT-liu.com.cn for the tip.
2270 dryice-AT-liu.com.cn for the tip.
2266
2271
2267 * pysh.py: I created a new profile 'shell', which implements a
2272 * pysh.py: I created a new profile 'shell', which implements a
2268 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2273 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2269 system shell, nor will it become one anytime soon. It's mainly
2274 system shell, nor will it become one anytime soon. It's mainly
2270 meant to illustrate the use of the new flexible bash-like prompts.
2275 meant to illustrate the use of the new flexible bash-like prompts.
2271 I guess it could be used by hardy souls for true shell management,
2276 I guess it could be used by hardy souls for true shell management,
2272 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2277 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2273 profile. This uses the InterpreterExec extension provided by
2278 profile. This uses the InterpreterExec extension provided by
2274 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2279 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2275
2280
2276 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2281 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2277 auto-align itself with the length of the previous input prompt
2282 auto-align itself with the length of the previous input prompt
2278 (taking into account the invisible color escapes).
2283 (taking into account the invisible color escapes).
2279 (CachedOutput.__init__): Large restructuring of this class. Now
2284 (CachedOutput.__init__): Large restructuring of this class. Now
2280 all three prompts (primary1, primary2, output) are proper objects,
2285 all three prompts (primary1, primary2, output) are proper objects,
2281 managed by the 'parent' CachedOutput class. The code is still a
2286 managed by the 'parent' CachedOutput class. The code is still a
2282 bit hackish (all prompts share state via a pointer to the cache),
2287 bit hackish (all prompts share state via a pointer to the cache),
2283 but it's overall far cleaner than before.
2288 but it's overall far cleaner than before.
2284
2289
2285 * IPython/genutils.py (getoutputerror): modified to add verbose,
2290 * IPython/genutils.py (getoutputerror): modified to add verbose,
2286 debug and header options. This makes the interface of all getout*
2291 debug and header options. This makes the interface of all getout*
2287 functions uniform.
2292 functions uniform.
2288 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2293 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2289
2294
2290 * IPython/Magic.py (Magic.default_option): added a function to
2295 * IPython/Magic.py (Magic.default_option): added a function to
2291 allow registering default options for any magic command. This
2296 allow registering default options for any magic command. This
2292 makes it easy to have profiles which customize the magics globally
2297 makes it easy to have profiles which customize the magics globally
2293 for a certain use. The values set through this function are
2298 for a certain use. The values set through this function are
2294 picked up by the parse_options() method, which all magics should
2299 picked up by the parse_options() method, which all magics should
2295 use to parse their options.
2300 use to parse their options.
2296
2301
2297 * IPython/genutils.py (warn): modified the warnings framework to
2302 * IPython/genutils.py (warn): modified the warnings framework to
2298 use the Term I/O class. I'm trying to slowly unify all of
2303 use the Term I/O class. I'm trying to slowly unify all of
2299 IPython's I/O operations to pass through Term.
2304 IPython's I/O operations to pass through Term.
2300
2305
2301 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2306 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2302 the secondary prompt to correctly match the length of the primary
2307 the secondary prompt to correctly match the length of the primary
2303 one for any prompt. Now multi-line code will properly line up
2308 one for any prompt. Now multi-line code will properly line up
2304 even for path dependent prompts, such as the new ones available
2309 even for path dependent prompts, such as the new ones available
2305 via the prompt_specials.
2310 via the prompt_specials.
2306
2311
2307 2004-06-06 Fernando Perez <fperez@colorado.edu>
2312 2004-06-06 Fernando Perez <fperez@colorado.edu>
2308
2313
2309 * IPython/Prompts.py (prompt_specials): Added the ability to have
2314 * IPython/Prompts.py (prompt_specials): Added the ability to have
2310 bash-like special sequences in the prompts, which get
2315 bash-like special sequences in the prompts, which get
2311 automatically expanded. Things like hostname, current working
2316 automatically expanded. Things like hostname, current working
2312 directory and username are implemented already, but it's easy to
2317 directory and username are implemented already, but it's easy to
2313 add more in the future. Thanks to a patch by W.J. van der Laan
2318 add more in the future. Thanks to a patch by W.J. van der Laan
2314 <gnufnork-AT-hetdigitalegat.nl>
2319 <gnufnork-AT-hetdigitalegat.nl>
2315 (prompt_specials): Added color support for prompt strings, so
2320 (prompt_specials): Added color support for prompt strings, so
2316 users can define arbitrary color setups for their prompts.
2321 users can define arbitrary color setups for their prompts.
2317
2322
2318 2004-06-05 Fernando Perez <fperez@colorado.edu>
2323 2004-06-05 Fernando Perez <fperez@colorado.edu>
2319
2324
2320 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2325 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2321 code to load Gary Bishop's readline and configure it
2326 code to load Gary Bishop's readline and configure it
2322 automatically. Thanks to Gary for help on this.
2327 automatically. Thanks to Gary for help on this.
2323
2328
2324 2004-06-01 Fernando Perez <fperez@colorado.edu>
2329 2004-06-01 Fernando Perez <fperez@colorado.edu>
2325
2330
2326 * IPython/Logger.py (Logger.create_log): fix bug for logging
2331 * IPython/Logger.py (Logger.create_log): fix bug for logging
2327 with no filename (previous fix was incomplete).
2332 with no filename (previous fix was incomplete).
2328
2333
2329 2004-05-25 Fernando Perez <fperez@colorado.edu>
2334 2004-05-25 Fernando Perez <fperez@colorado.edu>
2330
2335
2331 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2336 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2332 parens would get passed to the shell.
2337 parens would get passed to the shell.
2333
2338
2334 2004-05-20 Fernando Perez <fperez@colorado.edu>
2339 2004-05-20 Fernando Perez <fperez@colorado.edu>
2335
2340
2336 * IPython/Magic.py (Magic.magic_prun): changed default profile
2341 * IPython/Magic.py (Magic.magic_prun): changed default profile
2337 sort order to 'time' (the more common profiling need).
2342 sort order to 'time' (the more common profiling need).
2338
2343
2339 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2344 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2340 so that source code shown is guaranteed in sync with the file on
2345 so that source code shown is guaranteed in sync with the file on
2341 disk (also changed in psource). Similar fix to the one for
2346 disk (also changed in psource). Similar fix to the one for
2342 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2347 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2343 <yann.ledu-AT-noos.fr>.
2348 <yann.ledu-AT-noos.fr>.
2344
2349
2345 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2350 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2346 with a single option would not be correctly parsed. Closes
2351 with a single option would not be correctly parsed. Closes
2347 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2352 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2348 introduced in 0.6.0 (on 2004-05-06).
2353 introduced in 0.6.0 (on 2004-05-06).
2349
2354
2350 2004-05-13 *** Released version 0.6.0
2355 2004-05-13 *** Released version 0.6.0
2351
2356
2352 2004-05-13 Fernando Perez <fperez@colorado.edu>
2357 2004-05-13 Fernando Perez <fperez@colorado.edu>
2353
2358
2354 * debian/: Added debian/ directory to CVS, so that debian support
2359 * debian/: Added debian/ directory to CVS, so that debian support
2355 is publicly accessible. The debian package is maintained by Jack
2360 is publicly accessible. The debian package is maintained by Jack
2356 Moffit <jack-AT-xiph.org>.
2361 Moffit <jack-AT-xiph.org>.
2357
2362
2358 * Documentation: included the notes about an ipython-based system
2363 * Documentation: included the notes about an ipython-based system
2359 shell (the hypothetical 'pysh') into the new_design.pdf document,
2364 shell (the hypothetical 'pysh') into the new_design.pdf document,
2360 so that these ideas get distributed to users along with the
2365 so that these ideas get distributed to users along with the
2361 official documentation.
2366 official documentation.
2362
2367
2363 2004-05-10 Fernando Perez <fperez@colorado.edu>
2368 2004-05-10 Fernando Perez <fperez@colorado.edu>
2364
2369
2365 * IPython/Logger.py (Logger.create_log): fix recently introduced
2370 * IPython/Logger.py (Logger.create_log): fix recently introduced
2366 bug (misindented line) where logstart would fail when not given an
2371 bug (misindented line) where logstart would fail when not given an
2367 explicit filename.
2372 explicit filename.
2368
2373
2369 2004-05-09 Fernando Perez <fperez@colorado.edu>
2374 2004-05-09 Fernando Perez <fperez@colorado.edu>
2370
2375
2371 * IPython/Magic.py (Magic.parse_options): skip system call when
2376 * IPython/Magic.py (Magic.parse_options): skip system call when
2372 there are no options to look for. Faster, cleaner for the common
2377 there are no options to look for. Faster, cleaner for the common
2373 case.
2378 case.
2374
2379
2375 * Documentation: many updates to the manual: describing Windows
2380 * Documentation: many updates to the manual: describing Windows
2376 support better, Gnuplot updates, credits, misc small stuff. Also
2381 support better, Gnuplot updates, credits, misc small stuff. Also
2377 updated the new_design doc a bit.
2382 updated the new_design doc a bit.
2378
2383
2379 2004-05-06 *** Released version 0.6.0.rc1
2384 2004-05-06 *** Released version 0.6.0.rc1
2380
2385
2381 2004-05-06 Fernando Perez <fperez@colorado.edu>
2386 2004-05-06 Fernando Perez <fperez@colorado.edu>
2382
2387
2383 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2388 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2384 operations to use the vastly more efficient list/''.join() method.
2389 operations to use the vastly more efficient list/''.join() method.
2385 (FormattedTB.text): Fix
2390 (FormattedTB.text): Fix
2386 http://www.scipy.net/roundup/ipython/issue12 - exception source
2391 http://www.scipy.net/roundup/ipython/issue12 - exception source
2387 extract not updated after reload. Thanks to Mike Salib
2392 extract not updated after reload. Thanks to Mike Salib
2388 <msalib-AT-mit.edu> for pinning the source of the problem.
2393 <msalib-AT-mit.edu> for pinning the source of the problem.
2389 Fortunately, the solution works inside ipython and doesn't require
2394 Fortunately, the solution works inside ipython and doesn't require
2390 any changes to python proper.
2395 any changes to python proper.
2391
2396
2392 * IPython/Magic.py (Magic.parse_options): Improved to process the
2397 * IPython/Magic.py (Magic.parse_options): Improved to process the
2393 argument list as a true shell would (by actually using the
2398 argument list as a true shell would (by actually using the
2394 underlying system shell). This way, all @magics automatically get
2399 underlying system shell). This way, all @magics automatically get
2395 shell expansion for variables. Thanks to a comment by Alex
2400 shell expansion for variables. Thanks to a comment by Alex
2396 Schmolck.
2401 Schmolck.
2397
2402
2398 2004-04-04 Fernando Perez <fperez@colorado.edu>
2403 2004-04-04 Fernando Perez <fperez@colorado.edu>
2399
2404
2400 * IPython/iplib.py (InteractiveShell.interact): Added a special
2405 * IPython/iplib.py (InteractiveShell.interact): Added a special
2401 trap for a debugger quit exception, which is basically impossible
2406 trap for a debugger quit exception, which is basically impossible
2402 to handle by normal mechanisms, given what pdb does to the stack.
2407 to handle by normal mechanisms, given what pdb does to the stack.
2403 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2408 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2404
2409
2405 2004-04-03 Fernando Perez <fperez@colorado.edu>
2410 2004-04-03 Fernando Perez <fperez@colorado.edu>
2406
2411
2407 * IPython/genutils.py (Term): Standardized the names of the Term
2412 * IPython/genutils.py (Term): Standardized the names of the Term
2408 class streams to cin/cout/cerr, following C++ naming conventions
2413 class streams to cin/cout/cerr, following C++ naming conventions
2409 (I can't use in/out/err because 'in' is not a valid attribute
2414 (I can't use in/out/err because 'in' is not a valid attribute
2410 name).
2415 name).
2411
2416
2412 * IPython/iplib.py (InteractiveShell.interact): don't increment
2417 * IPython/iplib.py (InteractiveShell.interact): don't increment
2413 the prompt if there's no user input. By Daniel 'Dang' Griffith
2418 the prompt if there's no user input. By Daniel 'Dang' Griffith
2414 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2419 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2415 Francois Pinard.
2420 Francois Pinard.
2416
2421
2417 2004-04-02 Fernando Perez <fperez@colorado.edu>
2422 2004-04-02 Fernando Perez <fperez@colorado.edu>
2418
2423
2419 * IPython/genutils.py (Stream.__init__): Modified to survive at
2424 * IPython/genutils.py (Stream.__init__): Modified to survive at
2420 least importing in contexts where stdin/out/err aren't true file
2425 least importing in contexts where stdin/out/err aren't true file
2421 objects, such as PyCrust (they lack fileno() and mode). However,
2426 objects, such as PyCrust (they lack fileno() and mode). However,
2422 the recovery facilities which rely on these things existing will
2427 the recovery facilities which rely on these things existing will
2423 not work.
2428 not work.
2424
2429
2425 2004-04-01 Fernando Perez <fperez@colorado.edu>
2430 2004-04-01 Fernando Perez <fperez@colorado.edu>
2426
2431
2427 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2432 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2428 use the new getoutputerror() function, so it properly
2433 use the new getoutputerror() function, so it properly
2429 distinguishes stdout/err.
2434 distinguishes stdout/err.
2430
2435
2431 * IPython/genutils.py (getoutputerror): added a function to
2436 * IPython/genutils.py (getoutputerror): added a function to
2432 capture separately the standard output and error of a command.
2437 capture separately the standard output and error of a command.
2433 After a comment from dang on the mailing lists. This code is
2438 After a comment from dang on the mailing lists. This code is
2434 basically a modified version of commands.getstatusoutput(), from
2439 basically a modified version of commands.getstatusoutput(), from
2435 the standard library.
2440 the standard library.
2436
2441
2437 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2442 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2438 '!!' as a special syntax (shorthand) to access @sx.
2443 '!!' as a special syntax (shorthand) to access @sx.
2439
2444
2440 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2445 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2441 command and return its output as a list split on '\n'.
2446 command and return its output as a list split on '\n'.
2442
2447
2443 2004-03-31 Fernando Perez <fperez@colorado.edu>
2448 2004-03-31 Fernando Perez <fperez@colorado.edu>
2444
2449
2445 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2450 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2446 method to dictionaries used as FakeModule instances if they lack
2451 method to dictionaries used as FakeModule instances if they lack
2447 it. At least pydoc in python2.3 breaks for runtime-defined
2452 it. At least pydoc in python2.3 breaks for runtime-defined
2448 functions without this hack. At some point I need to _really_
2453 functions without this hack. At some point I need to _really_
2449 understand what FakeModule is doing, because it's a gross hack.
2454 understand what FakeModule is doing, because it's a gross hack.
2450 But it solves Arnd's problem for now...
2455 But it solves Arnd's problem for now...
2451
2456
2452 2004-02-27 Fernando Perez <fperez@colorado.edu>
2457 2004-02-27 Fernando Perez <fperez@colorado.edu>
2453
2458
2454 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2459 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2455 mode would behave erratically. Also increased the number of
2460 mode would behave erratically. Also increased the number of
2456 possible logs in rotate mod to 999. Thanks to Rod Holland
2461 possible logs in rotate mod to 999. Thanks to Rod Holland
2457 <rhh@StructureLABS.com> for the report and fixes.
2462 <rhh@StructureLABS.com> for the report and fixes.
2458
2463
2459 2004-02-26 Fernando Perez <fperez@colorado.edu>
2464 2004-02-26 Fernando Perez <fperez@colorado.edu>
2460
2465
2461 * IPython/genutils.py (page): Check that the curses module really
2466 * IPython/genutils.py (page): Check that the curses module really
2462 has the initscr attribute before trying to use it. For some
2467 has the initscr attribute before trying to use it. For some
2463 reason, the Solaris curses module is missing this. I think this
2468 reason, the Solaris curses module is missing this. I think this
2464 should be considered a Solaris python bug, but I'm not sure.
2469 should be considered a Solaris python bug, but I'm not sure.
2465
2470
2466 2004-01-17 Fernando Perez <fperez@colorado.edu>
2471 2004-01-17 Fernando Perez <fperez@colorado.edu>
2467
2472
2468 * IPython/genutils.py (Stream.__init__): Changes to try to make
2473 * IPython/genutils.py (Stream.__init__): Changes to try to make
2469 ipython robust against stdin/out/err being closed by the user.
2474 ipython robust against stdin/out/err being closed by the user.
2470 This is 'user error' (and blocks a normal python session, at least
2475 This is 'user error' (and blocks a normal python session, at least
2471 the stdout case). However, Ipython should be able to survive such
2476 the stdout case). However, Ipython should be able to survive such
2472 instances of abuse as gracefully as possible. To simplify the
2477 instances of abuse as gracefully as possible. To simplify the
2473 coding and maintain compatibility with Gary Bishop's Term
2478 coding and maintain compatibility with Gary Bishop's Term
2474 contributions, I've made use of classmethods for this. I think
2479 contributions, I've made use of classmethods for this. I think
2475 this introduces a dependency on python 2.2.
2480 this introduces a dependency on python 2.2.
2476
2481
2477 2004-01-13 Fernando Perez <fperez@colorado.edu>
2482 2004-01-13 Fernando Perez <fperez@colorado.edu>
2478
2483
2479 * IPython/numutils.py (exp_safe): simplified the code a bit and
2484 * IPython/numutils.py (exp_safe): simplified the code a bit and
2480 removed the need for importing the kinds module altogether.
2485 removed the need for importing the kinds module altogether.
2481
2486
2482 2004-01-06 Fernando Perez <fperez@colorado.edu>
2487 2004-01-06 Fernando Perez <fperez@colorado.edu>
2483
2488
2484 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2489 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2485 a magic function instead, after some community feedback. No
2490 a magic function instead, after some community feedback. No
2486 special syntax will exist for it, but its name is deliberately
2491 special syntax will exist for it, but its name is deliberately
2487 very short.
2492 very short.
2488
2493
2489 2003-12-20 Fernando Perez <fperez@colorado.edu>
2494 2003-12-20 Fernando Perez <fperez@colorado.edu>
2490
2495
2491 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2496 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2492 new functionality, to automagically assign the result of a shell
2497 new functionality, to automagically assign the result of a shell
2493 command to a variable. I'll solicit some community feedback on
2498 command to a variable. I'll solicit some community feedback on
2494 this before making it permanent.
2499 this before making it permanent.
2495
2500
2496 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2501 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2497 requested about callables for which inspect couldn't obtain a
2502 requested about callables for which inspect couldn't obtain a
2498 proper argspec. Thanks to a crash report sent by Etienne
2503 proper argspec. Thanks to a crash report sent by Etienne
2499 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2504 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2500
2505
2501 2003-12-09 Fernando Perez <fperez@colorado.edu>
2506 2003-12-09 Fernando Perez <fperez@colorado.edu>
2502
2507
2503 * IPython/genutils.py (page): patch for the pager to work across
2508 * IPython/genutils.py (page): patch for the pager to work across
2504 various versions of Windows. By Gary Bishop.
2509 various versions of Windows. By Gary Bishop.
2505
2510
2506 2003-12-04 Fernando Perez <fperez@colorado.edu>
2511 2003-12-04 Fernando Perez <fperez@colorado.edu>
2507
2512
2508 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2513 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2509 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2514 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2510 While I tested this and it looks ok, there may still be corner
2515 While I tested this and it looks ok, there may still be corner
2511 cases I've missed.
2516 cases I've missed.
2512
2517
2513 2003-12-01 Fernando Perez <fperez@colorado.edu>
2518 2003-12-01 Fernando Perez <fperez@colorado.edu>
2514
2519
2515 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2520 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2516 where a line like 'p,q=1,2' would fail because the automagic
2521 where a line like 'p,q=1,2' would fail because the automagic
2517 system would be triggered for @p.
2522 system would be triggered for @p.
2518
2523
2519 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2524 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2520 cleanups, code unmodified.
2525 cleanups, code unmodified.
2521
2526
2522 * IPython/genutils.py (Term): added a class for IPython to handle
2527 * IPython/genutils.py (Term): added a class for IPython to handle
2523 output. In most cases it will just be a proxy for stdout/err, but
2528 output. In most cases it will just be a proxy for stdout/err, but
2524 having this allows modifications to be made for some platforms,
2529 having this allows modifications to be made for some platforms,
2525 such as handling color escapes under Windows. All of this code
2530 such as handling color escapes under Windows. All of this code
2526 was contributed by Gary Bishop, with minor modifications by me.
2531 was contributed by Gary Bishop, with minor modifications by me.
2527 The actual changes affect many files.
2532 The actual changes affect many files.
2528
2533
2529 2003-11-30 Fernando Perez <fperez@colorado.edu>
2534 2003-11-30 Fernando Perez <fperez@colorado.edu>
2530
2535
2531 * IPython/iplib.py (file_matches): new completion code, courtesy
2536 * IPython/iplib.py (file_matches): new completion code, courtesy
2532 of Jeff Collins. This enables filename completion again under
2537 of Jeff Collins. This enables filename completion again under
2533 python 2.3, which disabled it at the C level.
2538 python 2.3, which disabled it at the C level.
2534
2539
2535 2003-11-11 Fernando Perez <fperez@colorado.edu>
2540 2003-11-11 Fernando Perez <fperez@colorado.edu>
2536
2541
2537 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2542 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2538 for Numeric.array(map(...)), but often convenient.
2543 for Numeric.array(map(...)), but often convenient.
2539
2544
2540 2003-11-05 Fernando Perez <fperez@colorado.edu>
2545 2003-11-05 Fernando Perez <fperez@colorado.edu>
2541
2546
2542 * IPython/numutils.py (frange): Changed a call from int() to
2547 * IPython/numutils.py (frange): Changed a call from int() to
2543 int(round()) to prevent a problem reported with arange() in the
2548 int(round()) to prevent a problem reported with arange() in the
2544 numpy list.
2549 numpy list.
2545
2550
2546 2003-10-06 Fernando Perez <fperez@colorado.edu>
2551 2003-10-06 Fernando Perez <fperez@colorado.edu>
2547
2552
2548 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2553 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2549 prevent crashes if sys lacks an argv attribute (it happens with
2554 prevent crashes if sys lacks an argv attribute (it happens with
2550 embedded interpreters which build a bare-bones sys module).
2555 embedded interpreters which build a bare-bones sys module).
2551 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2556 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2552
2557
2553 2003-09-24 Fernando Perez <fperez@colorado.edu>
2558 2003-09-24 Fernando Perez <fperez@colorado.edu>
2554
2559
2555 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2560 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2556 to protect against poorly written user objects where __getattr__
2561 to protect against poorly written user objects where __getattr__
2557 raises exceptions other than AttributeError. Thanks to a bug
2562 raises exceptions other than AttributeError. Thanks to a bug
2558 report by Oliver Sander <osander-AT-gmx.de>.
2563 report by Oliver Sander <osander-AT-gmx.de>.
2559
2564
2560 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2565 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2561 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2566 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2562
2567
2563 2003-09-09 Fernando Perez <fperez@colorado.edu>
2568 2003-09-09 Fernando Perez <fperez@colorado.edu>
2564
2569
2565 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2570 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2566 unpacking a list whith a callable as first element would
2571 unpacking a list whith a callable as first element would
2567 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2572 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2568 Collins.
2573 Collins.
2569
2574
2570 2003-08-25 *** Released version 0.5.0
2575 2003-08-25 *** Released version 0.5.0
2571
2576
2572 2003-08-22 Fernando Perez <fperez@colorado.edu>
2577 2003-08-22 Fernando Perez <fperez@colorado.edu>
2573
2578
2574 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2579 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2575 improperly defined user exceptions. Thanks to feedback from Mark
2580 improperly defined user exceptions. Thanks to feedback from Mark
2576 Russell <mrussell-AT-verio.net>.
2581 Russell <mrussell-AT-verio.net>.
2577
2582
2578 2003-08-20 Fernando Perez <fperez@colorado.edu>
2583 2003-08-20 Fernando Perez <fperez@colorado.edu>
2579
2584
2580 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2585 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2581 printing so that it would print multi-line string forms starting
2586 printing so that it would print multi-line string forms starting
2582 with a new line. This way the formatting is better respected for
2587 with a new line. This way the formatting is better respected for
2583 objects which work hard to make nice string forms.
2588 objects which work hard to make nice string forms.
2584
2589
2585 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2590 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2586 autocall would overtake data access for objects with both
2591 autocall would overtake data access for objects with both
2587 __getitem__ and __call__.
2592 __getitem__ and __call__.
2588
2593
2589 2003-08-19 *** Released version 0.5.0-rc1
2594 2003-08-19 *** Released version 0.5.0-rc1
2590
2595
2591 2003-08-19 Fernando Perez <fperez@colorado.edu>
2596 2003-08-19 Fernando Perez <fperez@colorado.edu>
2592
2597
2593 * IPython/deep_reload.py (load_tail): single tiny change here
2598 * IPython/deep_reload.py (load_tail): single tiny change here
2594 seems to fix the long-standing bug of dreload() failing to work
2599 seems to fix the long-standing bug of dreload() failing to work
2595 for dotted names. But this module is pretty tricky, so I may have
2600 for dotted names. But this module is pretty tricky, so I may have
2596 missed some subtlety. Needs more testing!.
2601 missed some subtlety. Needs more testing!.
2597
2602
2598 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
2603 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
2599 exceptions which have badly implemented __str__ methods.
2604 exceptions which have badly implemented __str__ methods.
2600 (VerboseTB.text): harden against inspect.getinnerframes crashing,
2605 (VerboseTB.text): harden against inspect.getinnerframes crashing,
2601 which I've been getting reports about from Python 2.3 users. I
2606 which I've been getting reports about from Python 2.3 users. I
2602 wish I had a simple test case to reproduce the problem, so I could
2607 wish I had a simple test case to reproduce the problem, so I could
2603 either write a cleaner workaround or file a bug report if
2608 either write a cleaner workaround or file a bug report if
2604 necessary.
2609 necessary.
2605
2610
2606 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
2611 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
2607 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
2612 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
2608 a bug report by Tjabo Kloppenburg.
2613 a bug report by Tjabo Kloppenburg.
2609
2614
2610 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
2615 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
2611 crashes. Wrapped the pdb call in a blanket try/except, since pdb
2616 crashes. Wrapped the pdb call in a blanket try/except, since pdb
2612 seems rather unstable. Thanks to a bug report by Tjabo
2617 seems rather unstable. Thanks to a bug report by Tjabo
2613 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
2618 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
2614
2619
2615 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
2620 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
2616 this out soon because of the critical fixes in the inner loop for
2621 this out soon because of the critical fixes in the inner loop for
2617 generators.
2622 generators.
2618
2623
2619 * IPython/Magic.py (Magic.getargspec): removed. This (and
2624 * IPython/Magic.py (Magic.getargspec): removed. This (and
2620 _get_def) have been obsoleted by OInspect for a long time, I
2625 _get_def) have been obsoleted by OInspect for a long time, I
2621 hadn't noticed that they were dead code.
2626 hadn't noticed that they were dead code.
2622 (Magic._ofind): restored _ofind functionality for a few literals
2627 (Magic._ofind): restored _ofind functionality for a few literals
2623 (those in ["''",'""','[]','{}','()']). But it won't work anymore
2628 (those in ["''",'""','[]','{}','()']). But it won't work anymore
2624 for things like "hello".capitalize?, since that would require a
2629 for things like "hello".capitalize?, since that would require a
2625 potentially dangerous eval() again.
2630 potentially dangerous eval() again.
2626
2631
2627 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
2632 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
2628 logic a bit more to clean up the escapes handling and minimize the
2633 logic a bit more to clean up the escapes handling and minimize the
2629 use of _ofind to only necessary cases. The interactive 'feel' of
2634 use of _ofind to only necessary cases. The interactive 'feel' of
2630 IPython should have improved quite a bit with the changes in
2635 IPython should have improved quite a bit with the changes in
2631 _prefilter and _ofind (besides being far safer than before).
2636 _prefilter and _ofind (besides being far safer than before).
2632
2637
2633 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
2638 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
2634 obscure, never reported). Edit would fail to find the object to
2639 obscure, never reported). Edit would fail to find the object to
2635 edit under some circumstances.
2640 edit under some circumstances.
2636 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
2641 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
2637 which were causing double-calling of generators. Those eval calls
2642 which were causing double-calling of generators. Those eval calls
2638 were _very_ dangerous, since code with side effects could be
2643 were _very_ dangerous, since code with side effects could be
2639 triggered. As they say, 'eval is evil'... These were the
2644 triggered. As they say, 'eval is evil'... These were the
2640 nastiest evals in IPython. Besides, _ofind is now far simpler,
2645 nastiest evals in IPython. Besides, _ofind is now far simpler,
2641 and it should also be quite a bit faster. Its use of inspect is
2646 and it should also be quite a bit faster. Its use of inspect is
2642 also safer, so perhaps some of the inspect-related crashes I've
2647 also safer, so perhaps some of the inspect-related crashes I've
2643 seen lately with Python 2.3 might be taken care of. That will
2648 seen lately with Python 2.3 might be taken care of. That will
2644 need more testing.
2649 need more testing.
2645
2650
2646 2003-08-17 Fernando Perez <fperez@colorado.edu>
2651 2003-08-17 Fernando Perez <fperez@colorado.edu>
2647
2652
2648 * IPython/iplib.py (InteractiveShell._prefilter): significant
2653 * IPython/iplib.py (InteractiveShell._prefilter): significant
2649 simplifications to the logic for handling user escapes. Faster
2654 simplifications to the logic for handling user escapes. Faster
2650 and simpler code.
2655 and simpler code.
2651
2656
2652 2003-08-14 Fernando Perez <fperez@colorado.edu>
2657 2003-08-14 Fernando Perez <fperez@colorado.edu>
2653
2658
2654 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
2659 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
2655 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
2660 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
2656 but it should be quite a bit faster. And the recursive version
2661 but it should be quite a bit faster. And the recursive version
2657 generated O(log N) intermediate storage for all rank>1 arrays,
2662 generated O(log N) intermediate storage for all rank>1 arrays,
2658 even if they were contiguous.
2663 even if they were contiguous.
2659 (l1norm): Added this function.
2664 (l1norm): Added this function.
2660 (norm): Added this function for arbitrary norms (including
2665 (norm): Added this function for arbitrary norms (including
2661 l-infinity). l1 and l2 are still special cases for convenience
2666 l-infinity). l1 and l2 are still special cases for convenience
2662 and speed.
2667 and speed.
2663
2668
2664 2003-08-03 Fernando Perez <fperez@colorado.edu>
2669 2003-08-03 Fernando Perez <fperez@colorado.edu>
2665
2670
2666 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
2671 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
2667 exceptions, which now raise PendingDeprecationWarnings in Python
2672 exceptions, which now raise PendingDeprecationWarnings in Python
2668 2.3. There were some in Magic and some in Gnuplot2.
2673 2.3. There were some in Magic and some in Gnuplot2.
2669
2674
2670 2003-06-30 Fernando Perez <fperez@colorado.edu>
2675 2003-06-30 Fernando Perez <fperez@colorado.edu>
2671
2676
2672 * IPython/genutils.py (page): modified to call curses only for
2677 * IPython/genutils.py (page): modified to call curses only for
2673 terminals where TERM=='xterm'. After problems under many other
2678 terminals where TERM=='xterm'. After problems under many other
2674 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
2679 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
2675
2680
2676 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
2681 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
2677 would be triggered when readline was absent. This was just an old
2682 would be triggered when readline was absent. This was just an old
2678 debugging statement I'd forgotten to take out.
2683 debugging statement I'd forgotten to take out.
2679
2684
2680 2003-06-20 Fernando Perez <fperez@colorado.edu>
2685 2003-06-20 Fernando Perez <fperez@colorado.edu>
2681
2686
2682 * IPython/genutils.py (clock): modified to return only user time
2687 * IPython/genutils.py (clock): modified to return only user time
2683 (not counting system time), after a discussion on scipy. While
2688 (not counting system time), after a discussion on scipy. While
2684 system time may be a useful quantity occasionally, it may much
2689 system time may be a useful quantity occasionally, it may much
2685 more easily be skewed by occasional swapping or other similar
2690 more easily be skewed by occasional swapping or other similar
2686 activity.
2691 activity.
2687
2692
2688 2003-06-05 Fernando Perez <fperez@colorado.edu>
2693 2003-06-05 Fernando Perez <fperez@colorado.edu>
2689
2694
2690 * IPython/numutils.py (identity): new function, for building
2695 * IPython/numutils.py (identity): new function, for building
2691 arbitrary rank Kronecker deltas (mostly backwards compatible with
2696 arbitrary rank Kronecker deltas (mostly backwards compatible with
2692 Numeric.identity)
2697 Numeric.identity)
2693
2698
2694 2003-06-03 Fernando Perez <fperez@colorado.edu>
2699 2003-06-03 Fernando Perez <fperez@colorado.edu>
2695
2700
2696 * IPython/iplib.py (InteractiveShell.handle_magic): protect
2701 * IPython/iplib.py (InteractiveShell.handle_magic): protect
2697 arguments passed to magics with spaces, to allow trailing '\' to
2702 arguments passed to magics with spaces, to allow trailing '\' to
2698 work normally (mainly for Windows users).
2703 work normally (mainly for Windows users).
2699
2704
2700 2003-05-29 Fernando Perez <fperez@colorado.edu>
2705 2003-05-29 Fernando Perez <fperez@colorado.edu>
2701
2706
2702 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
2707 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
2703 instead of pydoc.help. This fixes a bizarre behavior where
2708 instead of pydoc.help. This fixes a bizarre behavior where
2704 printing '%s' % locals() would trigger the help system. Now
2709 printing '%s' % locals() would trigger the help system. Now
2705 ipython behaves like normal python does.
2710 ipython behaves like normal python does.
2706
2711
2707 Note that if one does 'from pydoc import help', the bizarre
2712 Note that if one does 'from pydoc import help', the bizarre
2708 behavior returns, but this will also happen in normal python, so
2713 behavior returns, but this will also happen in normal python, so
2709 it's not an ipython bug anymore (it has to do with how pydoc.help
2714 it's not an ipython bug anymore (it has to do with how pydoc.help
2710 is implemented).
2715 is implemented).
2711
2716
2712 2003-05-22 Fernando Perez <fperez@colorado.edu>
2717 2003-05-22 Fernando Perez <fperez@colorado.edu>
2713
2718
2714 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
2719 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
2715 return [] instead of None when nothing matches, also match to end
2720 return [] instead of None when nothing matches, also match to end
2716 of line. Patch by Gary Bishop.
2721 of line. Patch by Gary Bishop.
2717
2722
2718 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
2723 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
2719 protection as before, for files passed on the command line. This
2724 protection as before, for files passed on the command line. This
2720 prevents the CrashHandler from kicking in if user files call into
2725 prevents the CrashHandler from kicking in if user files call into
2721 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
2726 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
2722 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
2727 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
2723
2728
2724 2003-05-20 *** Released version 0.4.0
2729 2003-05-20 *** Released version 0.4.0
2725
2730
2726 2003-05-20 Fernando Perez <fperez@colorado.edu>
2731 2003-05-20 Fernando Perez <fperez@colorado.edu>
2727
2732
2728 * setup.py: added support for manpages. It's a bit hackish b/c of
2733 * setup.py: added support for manpages. It's a bit hackish b/c of
2729 a bug in the way the bdist_rpm distutils target handles gzipped
2734 a bug in the way the bdist_rpm distutils target handles gzipped
2730 manpages, but it works. After a patch by Jack.
2735 manpages, but it works. After a patch by Jack.
2731
2736
2732 2003-05-19 Fernando Perez <fperez@colorado.edu>
2737 2003-05-19 Fernando Perez <fperez@colorado.edu>
2733
2738
2734 * IPython/numutils.py: added a mockup of the kinds module, since
2739 * IPython/numutils.py: added a mockup of the kinds module, since
2735 it was recently removed from Numeric. This way, numutils will
2740 it was recently removed from Numeric. This way, numutils will
2736 work for all users even if they are missing kinds.
2741 work for all users even if they are missing kinds.
2737
2742
2738 * IPython/Magic.py (Magic._ofind): Harden against an inspect
2743 * IPython/Magic.py (Magic._ofind): Harden against an inspect
2739 failure, which can occur with SWIG-wrapped extensions. After a
2744 failure, which can occur with SWIG-wrapped extensions. After a
2740 crash report from Prabhu.
2745 crash report from Prabhu.
2741
2746
2742 2003-05-16 Fernando Perez <fperez@colorado.edu>
2747 2003-05-16 Fernando Perez <fperez@colorado.edu>
2743
2748
2744 * IPython/iplib.py (InteractiveShell.excepthook): New method to
2749 * IPython/iplib.py (InteractiveShell.excepthook): New method to
2745 protect ipython from user code which may call directly
2750 protect ipython from user code which may call directly
2746 sys.excepthook (this looks like an ipython crash to the user, even
2751 sys.excepthook (this looks like an ipython crash to the user, even
2747 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2752 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2748 This is especially important to help users of WxWindows, but may
2753 This is especially important to help users of WxWindows, but may
2749 also be useful in other cases.
2754 also be useful in other cases.
2750
2755
2751 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
2756 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
2752 an optional tb_offset to be specified, and to preserve exception
2757 an optional tb_offset to be specified, and to preserve exception
2753 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2758 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2754
2759
2755 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
2760 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
2756
2761
2757 2003-05-15 Fernando Perez <fperez@colorado.edu>
2762 2003-05-15 Fernando Perez <fperez@colorado.edu>
2758
2763
2759 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
2764 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
2760 installing for a new user under Windows.
2765 installing for a new user under Windows.
2761
2766
2762 2003-05-12 Fernando Perez <fperez@colorado.edu>
2767 2003-05-12 Fernando Perez <fperez@colorado.edu>
2763
2768
2764 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
2769 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
2765 handler for Emacs comint-based lines. Currently it doesn't do
2770 handler for Emacs comint-based lines. Currently it doesn't do
2766 much (but importantly, it doesn't update the history cache). In
2771 much (but importantly, it doesn't update the history cache). In
2767 the future it may be expanded if Alex needs more functionality
2772 the future it may be expanded if Alex needs more functionality
2768 there.
2773 there.
2769
2774
2770 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
2775 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
2771 info to crash reports.
2776 info to crash reports.
2772
2777
2773 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
2778 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
2774 just like Python's -c. Also fixed crash with invalid -color
2779 just like Python's -c. Also fixed crash with invalid -color
2775 option value at startup. Thanks to Will French
2780 option value at startup. Thanks to Will French
2776 <wfrench-AT-bestweb.net> for the bug report.
2781 <wfrench-AT-bestweb.net> for the bug report.
2777
2782
2778 2003-05-09 Fernando Perez <fperez@colorado.edu>
2783 2003-05-09 Fernando Perez <fperez@colorado.edu>
2779
2784
2780 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
2785 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
2781 to EvalDict (it's a mapping, after all) and simplified its code
2786 to EvalDict (it's a mapping, after all) and simplified its code
2782 quite a bit, after a nice discussion on c.l.py where Gustavo
2787 quite a bit, after a nice discussion on c.l.py where Gustavo
2783 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
2788 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
2784
2789
2785 2003-04-30 Fernando Perez <fperez@colorado.edu>
2790 2003-04-30 Fernando Perez <fperez@colorado.edu>
2786
2791
2787 * IPython/genutils.py (timings_out): modified it to reduce its
2792 * IPython/genutils.py (timings_out): modified it to reduce its
2788 overhead in the common reps==1 case.
2793 overhead in the common reps==1 case.
2789
2794
2790 2003-04-29 Fernando Perez <fperez@colorado.edu>
2795 2003-04-29 Fernando Perez <fperez@colorado.edu>
2791
2796
2792 * IPython/genutils.py (timings_out): Modified to use the resource
2797 * IPython/genutils.py (timings_out): Modified to use the resource
2793 module, which avoids the wraparound problems of time.clock().
2798 module, which avoids the wraparound problems of time.clock().
2794
2799
2795 2003-04-17 *** Released version 0.2.15pre4
2800 2003-04-17 *** Released version 0.2.15pre4
2796
2801
2797 2003-04-17 Fernando Perez <fperez@colorado.edu>
2802 2003-04-17 Fernando Perez <fperez@colorado.edu>
2798
2803
2799 * setup.py (scriptfiles): Split windows-specific stuff over to a
2804 * setup.py (scriptfiles): Split windows-specific stuff over to a
2800 separate file, in an attempt to have a Windows GUI installer.
2805 separate file, in an attempt to have a Windows GUI installer.
2801 That didn't work, but part of the groundwork is done.
2806 That didn't work, but part of the groundwork is done.
2802
2807
2803 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
2808 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
2804 indent/unindent with 4 spaces. Particularly useful in combination
2809 indent/unindent with 4 spaces. Particularly useful in combination
2805 with the new auto-indent option.
2810 with the new auto-indent option.
2806
2811
2807 2003-04-16 Fernando Perez <fperez@colorado.edu>
2812 2003-04-16 Fernando Perez <fperez@colorado.edu>
2808
2813
2809 * IPython/Magic.py: various replacements of self.rc for
2814 * IPython/Magic.py: various replacements of self.rc for
2810 self.shell.rc. A lot more remains to be done to fully disentangle
2815 self.shell.rc. A lot more remains to be done to fully disentangle
2811 this class from the main Shell class.
2816 this class from the main Shell class.
2812
2817
2813 * IPython/GnuplotRuntime.py: added checks for mouse support so
2818 * IPython/GnuplotRuntime.py: added checks for mouse support so
2814 that we don't try to enable it if the current gnuplot doesn't
2819 that we don't try to enable it if the current gnuplot doesn't
2815 really support it. Also added checks so that we don't try to
2820 really support it. Also added checks so that we don't try to
2816 enable persist under Windows (where Gnuplot doesn't recognize the
2821 enable persist under Windows (where Gnuplot doesn't recognize the
2817 option).
2822 option).
2818
2823
2819 * IPython/iplib.py (InteractiveShell.interact): Added optional
2824 * IPython/iplib.py (InteractiveShell.interact): Added optional
2820 auto-indenting code, after a patch by King C. Shu
2825 auto-indenting code, after a patch by King C. Shu
2821 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
2826 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
2822 get along well with pasting indented code. If I ever figure out
2827 get along well with pasting indented code. If I ever figure out
2823 how to make that part go well, it will become on by default.
2828 how to make that part go well, it will become on by default.
2824
2829
2825 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
2830 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
2826 crash ipython if there was an unmatched '%' in the user's prompt
2831 crash ipython if there was an unmatched '%' in the user's prompt
2827 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
2832 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
2828
2833
2829 * IPython/iplib.py (InteractiveShell.interact): removed the
2834 * IPython/iplib.py (InteractiveShell.interact): removed the
2830 ability to ask the user whether he wants to crash or not at the
2835 ability to ask the user whether he wants to crash or not at the
2831 'last line' exception handler. Calling functions at that point
2836 'last line' exception handler. Calling functions at that point
2832 changes the stack, and the error reports would have incorrect
2837 changes the stack, and the error reports would have incorrect
2833 tracebacks.
2838 tracebacks.
2834
2839
2835 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
2840 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
2836 pass through a peger a pretty-printed form of any object. After a
2841 pass through a peger a pretty-printed form of any object. After a
2837 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
2842 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
2838
2843
2839 2003-04-14 Fernando Perez <fperez@colorado.edu>
2844 2003-04-14 Fernando Perez <fperez@colorado.edu>
2840
2845
2841 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
2846 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
2842 all files in ~ would be modified at first install (instead of
2847 all files in ~ would be modified at first install (instead of
2843 ~/.ipython). This could be potentially disastrous, as the
2848 ~/.ipython). This could be potentially disastrous, as the
2844 modification (make line-endings native) could damage binary files.
2849 modification (make line-endings native) could damage binary files.
2845
2850
2846 2003-04-10 Fernando Perez <fperez@colorado.edu>
2851 2003-04-10 Fernando Perez <fperez@colorado.edu>
2847
2852
2848 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
2853 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
2849 handle only lines which are invalid python. This now means that
2854 handle only lines which are invalid python. This now means that
2850 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
2855 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
2851 for the bug report.
2856 for the bug report.
2852
2857
2853 2003-04-01 Fernando Perez <fperez@colorado.edu>
2858 2003-04-01 Fernando Perez <fperez@colorado.edu>
2854
2859
2855 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
2860 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
2856 where failing to set sys.last_traceback would crash pdb.pm().
2861 where failing to set sys.last_traceback would crash pdb.pm().
2857 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
2862 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
2858 report.
2863 report.
2859
2864
2860 2003-03-25 Fernando Perez <fperez@colorado.edu>
2865 2003-03-25 Fernando Perez <fperez@colorado.edu>
2861
2866
2862 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
2867 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
2863 before printing it (it had a lot of spurious blank lines at the
2868 before printing it (it had a lot of spurious blank lines at the
2864 end).
2869 end).
2865
2870
2866 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
2871 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
2867 output would be sent 21 times! Obviously people don't use this
2872 output would be sent 21 times! Obviously people don't use this
2868 too often, or I would have heard about it.
2873 too often, or I would have heard about it.
2869
2874
2870 2003-03-24 Fernando Perez <fperez@colorado.edu>
2875 2003-03-24 Fernando Perez <fperez@colorado.edu>
2871
2876
2872 * setup.py (scriptfiles): renamed the data_files parameter from
2877 * setup.py (scriptfiles): renamed the data_files parameter from
2873 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
2878 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
2874 for the patch.
2879 for the patch.
2875
2880
2876 2003-03-20 Fernando Perez <fperez@colorado.edu>
2881 2003-03-20 Fernando Perez <fperez@colorado.edu>
2877
2882
2878 * IPython/genutils.py (error): added error() and fatal()
2883 * IPython/genutils.py (error): added error() and fatal()
2879 functions.
2884 functions.
2880
2885
2881 2003-03-18 *** Released version 0.2.15pre3
2886 2003-03-18 *** Released version 0.2.15pre3
2882
2887
2883 2003-03-18 Fernando Perez <fperez@colorado.edu>
2888 2003-03-18 Fernando Perez <fperez@colorado.edu>
2884
2889
2885 * setupext/install_data_ext.py
2890 * setupext/install_data_ext.py
2886 (install_data_ext.initialize_options): Class contributed by Jack
2891 (install_data_ext.initialize_options): Class contributed by Jack
2887 Moffit for fixing the old distutils hack. He is sending this to
2892 Moffit for fixing the old distutils hack. He is sending this to
2888 the distutils folks so in the future we may not need it as a
2893 the distutils folks so in the future we may not need it as a
2889 private fix.
2894 private fix.
2890
2895
2891 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
2896 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
2892 changes for Debian packaging. See his patch for full details.
2897 changes for Debian packaging. See his patch for full details.
2893 The old distutils hack of making the ipythonrc* files carry a
2898 The old distutils hack of making the ipythonrc* files carry a
2894 bogus .py extension is gone, at last. Examples were moved to a
2899 bogus .py extension is gone, at last. Examples were moved to a
2895 separate subdir under doc/, and the separate executable scripts
2900 separate subdir under doc/, and the separate executable scripts
2896 now live in their own directory. Overall a great cleanup. The
2901 now live in their own directory. Overall a great cleanup. The
2897 manual was updated to use the new files, and setup.py has been
2902 manual was updated to use the new files, and setup.py has been
2898 fixed for this setup.
2903 fixed for this setup.
2899
2904
2900 * IPython/PyColorize.py (Parser.usage): made non-executable and
2905 * IPython/PyColorize.py (Parser.usage): made non-executable and
2901 created a pycolor wrapper around it to be included as a script.
2906 created a pycolor wrapper around it to be included as a script.
2902
2907
2903 2003-03-12 *** Released version 0.2.15pre2
2908 2003-03-12 *** Released version 0.2.15pre2
2904
2909
2905 2003-03-12 Fernando Perez <fperez@colorado.edu>
2910 2003-03-12 Fernando Perez <fperez@colorado.edu>
2906
2911
2907 * IPython/ColorANSI.py (make_color_table): Finally fixed the
2912 * IPython/ColorANSI.py (make_color_table): Finally fixed the
2908 long-standing problem with garbage characters in some terminals.
2913 long-standing problem with garbage characters in some terminals.
2909 The issue was really that the \001 and \002 escapes must _only_ be
2914 The issue was really that the \001 and \002 escapes must _only_ be
2910 passed to input prompts (which call readline), but _never_ to
2915 passed to input prompts (which call readline), but _never_ to
2911 normal text to be printed on screen. I changed ColorANSI to have
2916 normal text to be printed on screen. I changed ColorANSI to have
2912 two classes: TermColors and InputTermColors, each with the
2917 two classes: TermColors and InputTermColors, each with the
2913 appropriate escapes for input prompts or normal text. The code in
2918 appropriate escapes for input prompts or normal text. The code in
2914 Prompts.py got slightly more complicated, but this very old and
2919 Prompts.py got slightly more complicated, but this very old and
2915 annoying bug is finally fixed.
2920 annoying bug is finally fixed.
2916
2921
2917 All the credit for nailing down the real origin of this problem
2922 All the credit for nailing down the real origin of this problem
2918 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
2923 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
2919 *Many* thanks to him for spending quite a bit of effort on this.
2924 *Many* thanks to him for spending quite a bit of effort on this.
2920
2925
2921 2003-03-05 *** Released version 0.2.15pre1
2926 2003-03-05 *** Released version 0.2.15pre1
2922
2927
2923 2003-03-03 Fernando Perez <fperez@colorado.edu>
2928 2003-03-03 Fernando Perez <fperez@colorado.edu>
2924
2929
2925 * IPython/FakeModule.py: Moved the former _FakeModule to a
2930 * IPython/FakeModule.py: Moved the former _FakeModule to a
2926 separate file, because it's also needed by Magic (to fix a similar
2931 separate file, because it's also needed by Magic (to fix a similar
2927 pickle-related issue in @run).
2932 pickle-related issue in @run).
2928
2933
2929 2003-03-02 Fernando Perez <fperez@colorado.edu>
2934 2003-03-02 Fernando Perez <fperez@colorado.edu>
2930
2935
2931 * IPython/Magic.py (Magic.magic_autocall): new magic to control
2936 * IPython/Magic.py (Magic.magic_autocall): new magic to control
2932 the autocall option at runtime.
2937 the autocall option at runtime.
2933 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
2938 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
2934 across Magic.py to start separating Magic from InteractiveShell.
2939 across Magic.py to start separating Magic from InteractiveShell.
2935 (Magic._ofind): Fixed to return proper namespace for dotted
2940 (Magic._ofind): Fixed to return proper namespace for dotted
2936 names. Before, a dotted name would always return 'not currently
2941 names. Before, a dotted name would always return 'not currently
2937 defined', because it would find the 'parent'. s.x would be found,
2942 defined', because it would find the 'parent'. s.x would be found,
2938 but since 'x' isn't defined by itself, it would get confused.
2943 but since 'x' isn't defined by itself, it would get confused.
2939 (Magic.magic_run): Fixed pickling problems reported by Ralf
2944 (Magic.magic_run): Fixed pickling problems reported by Ralf
2940 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
2945 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
2941 that I'd used when Mike Heeter reported similar issues at the
2946 that I'd used when Mike Heeter reported similar issues at the
2942 top-level, but now for @run. It boils down to injecting the
2947 top-level, but now for @run. It boils down to injecting the
2943 namespace where code is being executed with something that looks
2948 namespace where code is being executed with something that looks
2944 enough like a module to fool pickle.dump(). Since a pickle stores
2949 enough like a module to fool pickle.dump(). Since a pickle stores
2945 a named reference to the importing module, we need this for
2950 a named reference to the importing module, we need this for
2946 pickles to save something sensible.
2951 pickles to save something sensible.
2947
2952
2948 * IPython/ipmaker.py (make_IPython): added an autocall option.
2953 * IPython/ipmaker.py (make_IPython): added an autocall option.
2949
2954
2950 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
2955 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
2951 the auto-eval code. Now autocalling is an option, and the code is
2956 the auto-eval code. Now autocalling is an option, and the code is
2952 also vastly safer. There is no more eval() involved at all.
2957 also vastly safer. There is no more eval() involved at all.
2953
2958
2954 2003-03-01 Fernando Perez <fperez@colorado.edu>
2959 2003-03-01 Fernando Perez <fperez@colorado.edu>
2955
2960
2956 * IPython/Magic.py (Magic._ofind): Changed interface to return a
2961 * IPython/Magic.py (Magic._ofind): Changed interface to return a
2957 dict with named keys instead of a tuple.
2962 dict with named keys instead of a tuple.
2958
2963
2959 * IPython: Started using CVS for IPython as of 0.2.15pre1.
2964 * IPython: Started using CVS for IPython as of 0.2.15pre1.
2960
2965
2961 * setup.py (make_shortcut): Fixed message about directories
2966 * setup.py (make_shortcut): Fixed message about directories
2962 created during Windows installation (the directories were ok, just
2967 created during Windows installation (the directories were ok, just
2963 the printed message was misleading). Thanks to Chris Liechti
2968 the printed message was misleading). Thanks to Chris Liechti
2964 <cliechti-AT-gmx.net> for the heads up.
2969 <cliechti-AT-gmx.net> for the heads up.
2965
2970
2966 2003-02-21 Fernando Perez <fperez@colorado.edu>
2971 2003-02-21 Fernando Perez <fperez@colorado.edu>
2967
2972
2968 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
2973 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
2969 of ValueError exception when checking for auto-execution. This
2974 of ValueError exception when checking for auto-execution. This
2970 one is raised by things like Numeric arrays arr.flat when the
2975 one is raised by things like Numeric arrays arr.flat when the
2971 array is non-contiguous.
2976 array is non-contiguous.
2972
2977
2973 2003-01-31 Fernando Perez <fperez@colorado.edu>
2978 2003-01-31 Fernando Perez <fperez@colorado.edu>
2974
2979
2975 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
2980 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
2976 not return any value at all (even though the command would get
2981 not return any value at all (even though the command would get
2977 executed).
2982 executed).
2978 (xsys): Flush stdout right after printing the command to ensure
2983 (xsys): Flush stdout right after printing the command to ensure
2979 proper ordering of commands and command output in the total
2984 proper ordering of commands and command output in the total
2980 output.
2985 output.
2981 (SystemExec/xsys/bq): Switched the names of xsys/bq and
2986 (SystemExec/xsys/bq): Switched the names of xsys/bq and
2982 system/getoutput as defaults. The old ones are kept for
2987 system/getoutput as defaults. The old ones are kept for
2983 compatibility reasons, so no code which uses this library needs
2988 compatibility reasons, so no code which uses this library needs
2984 changing.
2989 changing.
2985
2990
2986 2003-01-27 *** Released version 0.2.14
2991 2003-01-27 *** Released version 0.2.14
2987
2992
2988 2003-01-25 Fernando Perez <fperez@colorado.edu>
2993 2003-01-25 Fernando Perez <fperez@colorado.edu>
2989
2994
2990 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
2995 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
2991 functions defined in previous edit sessions could not be re-edited
2996 functions defined in previous edit sessions could not be re-edited
2992 (because the temp files were immediately removed). Now temp files
2997 (because the temp files were immediately removed). Now temp files
2993 are removed only at IPython's exit.
2998 are removed only at IPython's exit.
2994 (Magic.magic_run): Improved @run to perform shell-like expansions
2999 (Magic.magic_run): Improved @run to perform shell-like expansions
2995 on its arguments (~users and $VARS). With this, @run becomes more
3000 on its arguments (~users and $VARS). With this, @run becomes more
2996 like a normal command-line.
3001 like a normal command-line.
2997
3002
2998 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3003 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
2999 bugs related to embedding and cleaned up that code. A fairly
3004 bugs related to embedding and cleaned up that code. A fairly
3000 important one was the impossibility to access the global namespace
3005 important one was the impossibility to access the global namespace
3001 through the embedded IPython (only local variables were visible).
3006 through the embedded IPython (only local variables were visible).
3002
3007
3003 2003-01-14 Fernando Perez <fperez@colorado.edu>
3008 2003-01-14 Fernando Perez <fperez@colorado.edu>
3004
3009
3005 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3010 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3006 auto-calling to be a bit more conservative. Now it doesn't get
3011 auto-calling to be a bit more conservative. Now it doesn't get
3007 triggered if any of '!=()<>' are in the rest of the input line, to
3012 triggered if any of '!=()<>' are in the rest of the input line, to
3008 allow comparing callables. Thanks to Alex for the heads up.
3013 allow comparing callables. Thanks to Alex for the heads up.
3009
3014
3010 2003-01-07 Fernando Perez <fperez@colorado.edu>
3015 2003-01-07 Fernando Perez <fperez@colorado.edu>
3011
3016
3012 * IPython/genutils.py (page): fixed estimation of the number of
3017 * IPython/genutils.py (page): fixed estimation of the number of
3013 lines in a string to be paged to simply count newlines. This
3018 lines in a string to be paged to simply count newlines. This
3014 prevents over-guessing due to embedded escape sequences. A better
3019 prevents over-guessing due to embedded escape sequences. A better
3015 long-term solution would involve stripping out the control chars
3020 long-term solution would involve stripping out the control chars
3016 for the count, but it's potentially so expensive I just don't
3021 for the count, but it's potentially so expensive I just don't
3017 think it's worth doing.
3022 think it's worth doing.
3018
3023
3019 2002-12-19 *** Released version 0.2.14pre50
3024 2002-12-19 *** Released version 0.2.14pre50
3020
3025
3021 2002-12-19 Fernando Perez <fperez@colorado.edu>
3026 2002-12-19 Fernando Perez <fperez@colorado.edu>
3022
3027
3023 * tools/release (version): Changed release scripts to inform
3028 * tools/release (version): Changed release scripts to inform
3024 Andrea and build a NEWS file with a list of recent changes.
3029 Andrea and build a NEWS file with a list of recent changes.
3025
3030
3026 * IPython/ColorANSI.py (__all__): changed terminal detection
3031 * IPython/ColorANSI.py (__all__): changed terminal detection
3027 code. Seems to work better for xterms without breaking
3032 code. Seems to work better for xterms without breaking
3028 konsole. Will need more testing to determine if WinXP and Mac OSX
3033 konsole. Will need more testing to determine if WinXP and Mac OSX
3029 also work ok.
3034 also work ok.
3030
3035
3031 2002-12-18 *** Released version 0.2.14pre49
3036 2002-12-18 *** Released version 0.2.14pre49
3032
3037
3033 2002-12-18 Fernando Perez <fperez@colorado.edu>
3038 2002-12-18 Fernando Perez <fperez@colorado.edu>
3034
3039
3035 * Docs: added new info about Mac OSX, from Andrea.
3040 * Docs: added new info about Mac OSX, from Andrea.
3036
3041
3037 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3042 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3038 allow direct plotting of python strings whose format is the same
3043 allow direct plotting of python strings whose format is the same
3039 of gnuplot data files.
3044 of gnuplot data files.
3040
3045
3041 2002-12-16 Fernando Perez <fperez@colorado.edu>
3046 2002-12-16 Fernando Perez <fperez@colorado.edu>
3042
3047
3043 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3048 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3044 value of exit question to be acknowledged.
3049 value of exit question to be acknowledged.
3045
3050
3046 2002-12-03 Fernando Perez <fperez@colorado.edu>
3051 2002-12-03 Fernando Perez <fperez@colorado.edu>
3047
3052
3048 * IPython/ipmaker.py: removed generators, which had been added
3053 * IPython/ipmaker.py: removed generators, which had been added
3049 by mistake in an earlier debugging run. This was causing trouble
3054 by mistake in an earlier debugging run. This was causing trouble
3050 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3055 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3051 for pointing this out.
3056 for pointing this out.
3052
3057
3053 2002-11-17 Fernando Perez <fperez@colorado.edu>
3058 2002-11-17 Fernando Perez <fperez@colorado.edu>
3054
3059
3055 * Manual: updated the Gnuplot section.
3060 * Manual: updated the Gnuplot section.
3056
3061
3057 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3062 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3058 a much better split of what goes in Runtime and what goes in
3063 a much better split of what goes in Runtime and what goes in
3059 Interactive.
3064 Interactive.
3060
3065
3061 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3066 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3062 being imported from iplib.
3067 being imported from iplib.
3063
3068
3064 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3069 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3065 for command-passing. Now the global Gnuplot instance is called
3070 for command-passing. Now the global Gnuplot instance is called
3066 'gp' instead of 'g', which was really a far too fragile and
3071 'gp' instead of 'g', which was really a far too fragile and
3067 common name.
3072 common name.
3068
3073
3069 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3074 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3070 bounding boxes generated by Gnuplot for square plots.
3075 bounding boxes generated by Gnuplot for square plots.
3071
3076
3072 * IPython/genutils.py (popkey): new function added. I should
3077 * IPython/genutils.py (popkey): new function added. I should
3073 suggest this on c.l.py as a dict method, it seems useful.
3078 suggest this on c.l.py as a dict method, it seems useful.
3074
3079
3075 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3080 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3076 to transparently handle PostScript generation. MUCH better than
3081 to transparently handle PostScript generation. MUCH better than
3077 the previous plot_eps/replot_eps (which I removed now). The code
3082 the previous plot_eps/replot_eps (which I removed now). The code
3078 is also fairly clean and well documented now (including
3083 is also fairly clean and well documented now (including
3079 docstrings).
3084 docstrings).
3080
3085
3081 2002-11-13 Fernando Perez <fperez@colorado.edu>
3086 2002-11-13 Fernando Perez <fperez@colorado.edu>
3082
3087
3083 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3088 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3084 (inconsistent with options).
3089 (inconsistent with options).
3085
3090
3086 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3091 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3087 manually disabled, I don't know why. Fixed it.
3092 manually disabled, I don't know why. Fixed it.
3088 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3093 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3089 eps output.
3094 eps output.
3090
3095
3091 2002-11-12 Fernando Perez <fperez@colorado.edu>
3096 2002-11-12 Fernando Perez <fperez@colorado.edu>
3092
3097
3093 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3098 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3094 don't propagate up to caller. Fixes crash reported by François
3099 don't propagate up to caller. Fixes crash reported by François
3095 Pinard.
3100 Pinard.
3096
3101
3097 2002-11-09 Fernando Perez <fperez@colorado.edu>
3102 2002-11-09 Fernando Perez <fperez@colorado.edu>
3098
3103
3099 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3104 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3100 history file for new users.
3105 history file for new users.
3101 (make_IPython): fixed bug where initial install would leave the
3106 (make_IPython): fixed bug where initial install would leave the
3102 user running in the .ipython dir.
3107 user running in the .ipython dir.
3103 (make_IPython): fixed bug where config dir .ipython would be
3108 (make_IPython): fixed bug where config dir .ipython would be
3104 created regardless of the given -ipythondir option. Thanks to Cory
3109 created regardless of the given -ipythondir option. Thanks to Cory
3105 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3110 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3106
3111
3107 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3112 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3108 type confirmations. Will need to use it in all of IPython's code
3113 type confirmations. Will need to use it in all of IPython's code
3109 consistently.
3114 consistently.
3110
3115
3111 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3116 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3112 context to print 31 lines instead of the default 5. This will make
3117 context to print 31 lines instead of the default 5. This will make
3113 the crash reports extremely detailed in case the problem is in
3118 the crash reports extremely detailed in case the problem is in
3114 libraries I don't have access to.
3119 libraries I don't have access to.
3115
3120
3116 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3121 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3117 line of defense' code to still crash, but giving users fair
3122 line of defense' code to still crash, but giving users fair
3118 warning. I don't want internal errors to go unreported: if there's
3123 warning. I don't want internal errors to go unreported: if there's
3119 an internal problem, IPython should crash and generate a full
3124 an internal problem, IPython should crash and generate a full
3120 report.
3125 report.
3121
3126
3122 2002-11-08 Fernando Perez <fperez@colorado.edu>
3127 2002-11-08 Fernando Perez <fperez@colorado.edu>
3123
3128
3124 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3129 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3125 otherwise uncaught exceptions which can appear if people set
3130 otherwise uncaught exceptions which can appear if people set
3126 sys.stdout to something badly broken. Thanks to a crash report
3131 sys.stdout to something badly broken. Thanks to a crash report
3127 from henni-AT-mail.brainbot.com.
3132 from henni-AT-mail.brainbot.com.
3128
3133
3129 2002-11-04 Fernando Perez <fperez@colorado.edu>
3134 2002-11-04 Fernando Perez <fperez@colorado.edu>
3130
3135
3131 * IPython/iplib.py (InteractiveShell.interact): added
3136 * IPython/iplib.py (InteractiveShell.interact): added
3132 __IPYTHON__active to the builtins. It's a flag which goes on when
3137 __IPYTHON__active to the builtins. It's a flag which goes on when
3133 the interaction starts and goes off again when it stops. This
3138 the interaction starts and goes off again when it stops. This
3134 allows embedding code to detect being inside IPython. Before this
3139 allows embedding code to detect being inside IPython. Before this
3135 was done via __IPYTHON__, but that only shows that an IPython
3140 was done via __IPYTHON__, but that only shows that an IPython
3136 instance has been created.
3141 instance has been created.
3137
3142
3138 * IPython/Magic.py (Magic.magic_env): I realized that in a
3143 * IPython/Magic.py (Magic.magic_env): I realized that in a
3139 UserDict, instance.data holds the data as a normal dict. So I
3144 UserDict, instance.data holds the data as a normal dict. So I
3140 modified @env to return os.environ.data instead of rebuilding a
3145 modified @env to return os.environ.data instead of rebuilding a
3141 dict by hand.
3146 dict by hand.
3142
3147
3143 2002-11-02 Fernando Perez <fperez@colorado.edu>
3148 2002-11-02 Fernando Perez <fperez@colorado.edu>
3144
3149
3145 * IPython/genutils.py (warn): changed so that level 1 prints no
3150 * IPython/genutils.py (warn): changed so that level 1 prints no
3146 header. Level 2 is now the default (with 'WARNING' header, as
3151 header. Level 2 is now the default (with 'WARNING' header, as
3147 before). I think I tracked all places where changes were needed in
3152 before). I think I tracked all places where changes were needed in
3148 IPython, but outside code using the old level numbering may have
3153 IPython, but outside code using the old level numbering may have
3149 broken.
3154 broken.
3150
3155
3151 * IPython/iplib.py (InteractiveShell.runcode): added this to
3156 * IPython/iplib.py (InteractiveShell.runcode): added this to
3152 handle the tracebacks in SystemExit traps correctly. The previous
3157 handle the tracebacks in SystemExit traps correctly. The previous
3153 code (through interact) was printing more of the stack than
3158 code (through interact) was printing more of the stack than
3154 necessary, showing IPython internal code to the user.
3159 necessary, showing IPython internal code to the user.
3155
3160
3156 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3161 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3157 default. Now that the default at the confirmation prompt is yes,
3162 default. Now that the default at the confirmation prompt is yes,
3158 it's not so intrusive. François' argument that ipython sessions
3163 it's not so intrusive. François' argument that ipython sessions
3159 tend to be complex enough not to lose them from an accidental C-d,
3164 tend to be complex enough not to lose them from an accidental C-d,
3160 is a valid one.
3165 is a valid one.
3161
3166
3162 * IPython/iplib.py (InteractiveShell.interact): added a
3167 * IPython/iplib.py (InteractiveShell.interact): added a
3163 showtraceback() call to the SystemExit trap, and modified the exit
3168 showtraceback() call to the SystemExit trap, and modified the exit
3164 confirmation to have yes as the default.
3169 confirmation to have yes as the default.
3165
3170
3166 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3171 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3167 this file. It's been gone from the code for a long time, this was
3172 this file. It's been gone from the code for a long time, this was
3168 simply leftover junk.
3173 simply leftover junk.
3169
3174
3170 2002-11-01 Fernando Perez <fperez@colorado.edu>
3175 2002-11-01 Fernando Perez <fperez@colorado.edu>
3171
3176
3172 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3177 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3173 added. If set, IPython now traps EOF and asks for
3178 added. If set, IPython now traps EOF and asks for
3174 confirmation. After a request by François Pinard.
3179 confirmation. After a request by François Pinard.
3175
3180
3176 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3181 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3177 of @abort, and with a new (better) mechanism for handling the
3182 of @abort, and with a new (better) mechanism for handling the
3178 exceptions.
3183 exceptions.
3179
3184
3180 2002-10-27 Fernando Perez <fperez@colorado.edu>
3185 2002-10-27 Fernando Perez <fperez@colorado.edu>
3181
3186
3182 * IPython/usage.py (__doc__): updated the --help information and
3187 * IPython/usage.py (__doc__): updated the --help information and
3183 the ipythonrc file to indicate that -log generates
3188 the ipythonrc file to indicate that -log generates
3184 ./ipython.log. Also fixed the corresponding info in @logstart.
3189 ./ipython.log. Also fixed the corresponding info in @logstart.
3185 This and several other fixes in the manuals thanks to reports by
3190 This and several other fixes in the manuals thanks to reports by
3186 François Pinard <pinard-AT-iro.umontreal.ca>.
3191 François Pinard <pinard-AT-iro.umontreal.ca>.
3187
3192
3188 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3193 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3189 refer to @logstart (instead of @log, which doesn't exist).
3194 refer to @logstart (instead of @log, which doesn't exist).
3190
3195
3191 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3196 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3192 AttributeError crash. Thanks to Christopher Armstrong
3197 AttributeError crash. Thanks to Christopher Armstrong
3193 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3198 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3194 introduced recently (in 0.2.14pre37) with the fix to the eval
3199 introduced recently (in 0.2.14pre37) with the fix to the eval
3195 problem mentioned below.
3200 problem mentioned below.
3196
3201
3197 2002-10-17 Fernando Perez <fperez@colorado.edu>
3202 2002-10-17 Fernando Perez <fperez@colorado.edu>
3198
3203
3199 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3204 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3200 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3205 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3201
3206
3202 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3207 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3203 this function to fix a problem reported by Alex Schmolck. He saw
3208 this function to fix a problem reported by Alex Schmolck. He saw
3204 it with list comprehensions and generators, which were getting
3209 it with list comprehensions and generators, which were getting
3205 called twice. The real problem was an 'eval' call in testing for
3210 called twice. The real problem was an 'eval' call in testing for
3206 automagic which was evaluating the input line silently.
3211 automagic which was evaluating the input line silently.
3207
3212
3208 This is a potentially very nasty bug, if the input has side
3213 This is a potentially very nasty bug, if the input has side
3209 effects which must not be repeated. The code is much cleaner now,
3214 effects which must not be repeated. The code is much cleaner now,
3210 without any blanket 'except' left and with a regexp test for
3215 without any blanket 'except' left and with a regexp test for
3211 actual function names.
3216 actual function names.
3212
3217
3213 But an eval remains, which I'm not fully comfortable with. I just
3218 But an eval remains, which I'm not fully comfortable with. I just
3214 don't know how to find out if an expression could be a callable in
3219 don't know how to find out if an expression could be a callable in
3215 the user's namespace without doing an eval on the string. However
3220 the user's namespace without doing an eval on the string. However
3216 that string is now much more strictly checked so that no code
3221 that string is now much more strictly checked so that no code
3217 slips by, so the eval should only happen for things that can
3222 slips by, so the eval should only happen for things that can
3218 really be only function/method names.
3223 really be only function/method names.
3219
3224
3220 2002-10-15 Fernando Perez <fperez@colorado.edu>
3225 2002-10-15 Fernando Perez <fperez@colorado.edu>
3221
3226
3222 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3227 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3223 OSX information to main manual, removed README_Mac_OSX file from
3228 OSX information to main manual, removed README_Mac_OSX file from
3224 distribution. Also updated credits for recent additions.
3229 distribution. Also updated credits for recent additions.
3225
3230
3226 2002-10-10 Fernando Perez <fperez@colorado.edu>
3231 2002-10-10 Fernando Perez <fperez@colorado.edu>
3227
3232
3228 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3233 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3229 terminal-related issues. Many thanks to Andrea Riciputi
3234 terminal-related issues. Many thanks to Andrea Riciputi
3230 <andrea.riciputi-AT-libero.it> for writing it.
3235 <andrea.riciputi-AT-libero.it> for writing it.
3231
3236
3232 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3237 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3233 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3238 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3234
3239
3235 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3240 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3236 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3241 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3237 <syver-en-AT-online.no> who both submitted patches for this problem.
3242 <syver-en-AT-online.no> who both submitted patches for this problem.
3238
3243
3239 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3244 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3240 global embedding to make sure that things don't overwrite user
3245 global embedding to make sure that things don't overwrite user
3241 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3246 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3242
3247
3243 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3248 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3244 compatibility. Thanks to Hayden Callow
3249 compatibility. Thanks to Hayden Callow
3245 <h.callow-AT-elec.canterbury.ac.nz>
3250 <h.callow-AT-elec.canterbury.ac.nz>
3246
3251
3247 2002-10-04 Fernando Perez <fperez@colorado.edu>
3252 2002-10-04 Fernando Perez <fperez@colorado.edu>
3248
3253
3249 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3254 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3250 Gnuplot.File objects.
3255 Gnuplot.File objects.
3251
3256
3252 2002-07-23 Fernando Perez <fperez@colorado.edu>
3257 2002-07-23 Fernando Perez <fperez@colorado.edu>
3253
3258
3254 * IPython/genutils.py (timing): Added timings() and timing() for
3259 * IPython/genutils.py (timing): Added timings() and timing() for
3255 quick access to the most commonly needed data, the execution
3260 quick access to the most commonly needed data, the execution
3256 times. Old timing() renamed to timings_out().
3261 times. Old timing() renamed to timings_out().
3257
3262
3258 2002-07-18 Fernando Perez <fperez@colorado.edu>
3263 2002-07-18 Fernando Perez <fperez@colorado.edu>
3259
3264
3260 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3265 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3261 bug with nested instances disrupting the parent's tab completion.
3266 bug with nested instances disrupting the parent's tab completion.
3262
3267
3263 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3268 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3264 all_completions code to begin the emacs integration.
3269 all_completions code to begin the emacs integration.
3265
3270
3266 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3271 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3267 argument to allow titling individual arrays when plotting.
3272 argument to allow titling individual arrays when plotting.
3268
3273
3269 2002-07-15 Fernando Perez <fperez@colorado.edu>
3274 2002-07-15 Fernando Perez <fperez@colorado.edu>
3270
3275
3271 * setup.py (make_shortcut): changed to retrieve the value of
3276 * setup.py (make_shortcut): changed to retrieve the value of
3272 'Program Files' directory from the registry (this value changes in
3277 'Program Files' directory from the registry (this value changes in
3273 non-english versions of Windows). Thanks to Thomas Fanslau
3278 non-english versions of Windows). Thanks to Thomas Fanslau
3274 <tfanslau-AT-gmx.de> for the report.
3279 <tfanslau-AT-gmx.de> for the report.
3275
3280
3276 2002-07-10 Fernando Perez <fperez@colorado.edu>
3281 2002-07-10 Fernando Perez <fperez@colorado.edu>
3277
3282
3278 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3283 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3279 a bug in pdb, which crashes if a line with only whitespace is
3284 a bug in pdb, which crashes if a line with only whitespace is
3280 entered. Bug report submitted to sourceforge.
3285 entered. Bug report submitted to sourceforge.
3281
3286
3282 2002-07-09 Fernando Perez <fperez@colorado.edu>
3287 2002-07-09 Fernando Perez <fperez@colorado.edu>
3283
3288
3284 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3289 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3285 reporting exceptions (it's a bug in inspect.py, I just set a
3290 reporting exceptions (it's a bug in inspect.py, I just set a
3286 workaround).
3291 workaround).
3287
3292
3288 2002-07-08 Fernando Perez <fperez@colorado.edu>
3293 2002-07-08 Fernando Perez <fperez@colorado.edu>
3289
3294
3290 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3295 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3291 __IPYTHON__ in __builtins__ to show up in user_ns.
3296 __IPYTHON__ in __builtins__ to show up in user_ns.
3292
3297
3293 2002-07-03 Fernando Perez <fperez@colorado.edu>
3298 2002-07-03 Fernando Perez <fperez@colorado.edu>
3294
3299
3295 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3300 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3296 name from @gp_set_instance to @gp_set_default.
3301 name from @gp_set_instance to @gp_set_default.
3297
3302
3298 * IPython/ipmaker.py (make_IPython): default editor value set to
3303 * IPython/ipmaker.py (make_IPython): default editor value set to
3299 '0' (a string), to match the rc file. Otherwise will crash when
3304 '0' (a string), to match the rc file. Otherwise will crash when
3300 .strip() is called on it.
3305 .strip() is called on it.
3301
3306
3302
3307
3303 2002-06-28 Fernando Perez <fperez@colorado.edu>
3308 2002-06-28 Fernando Perez <fperez@colorado.edu>
3304
3309
3305 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3310 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3306 of files in current directory when a file is executed via
3311 of files in current directory when a file is executed via
3307 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3312 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3308
3313
3309 * setup.py (manfiles): fix for rpm builds, submitted by RA
3314 * setup.py (manfiles): fix for rpm builds, submitted by RA
3310 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3315 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3311
3316
3312 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3317 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3313 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3318 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3314 string!). A. Schmolck caught this one.
3319 string!). A. Schmolck caught this one.
3315
3320
3316 2002-06-27 Fernando Perez <fperez@colorado.edu>
3321 2002-06-27 Fernando Perez <fperez@colorado.edu>
3317
3322
3318 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3323 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3319 defined files at the cmd line. __name__ wasn't being set to
3324 defined files at the cmd line. __name__ wasn't being set to
3320 __main__.
3325 __main__.
3321
3326
3322 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3327 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3323 regular lists and tuples besides Numeric arrays.
3328 regular lists and tuples besides Numeric arrays.
3324
3329
3325 * IPython/Prompts.py (CachedOutput.__call__): Added output
3330 * IPython/Prompts.py (CachedOutput.__call__): Added output
3326 supression for input ending with ';'. Similar to Mathematica and
3331 supression for input ending with ';'. Similar to Mathematica and
3327 Matlab. The _* vars and Out[] list are still updated, just like
3332 Matlab. The _* vars and Out[] list are still updated, just like
3328 Mathematica behaves.
3333 Mathematica behaves.
3329
3334
3330 2002-06-25 Fernando Perez <fperez@colorado.edu>
3335 2002-06-25 Fernando Perez <fperez@colorado.edu>
3331
3336
3332 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3337 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3333 .ini extensions for profiels under Windows.
3338 .ini extensions for profiels under Windows.
3334
3339
3335 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3340 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3336 string form. Fix contributed by Alexander Schmolck
3341 string form. Fix contributed by Alexander Schmolck
3337 <a.schmolck-AT-gmx.net>
3342 <a.schmolck-AT-gmx.net>
3338
3343
3339 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3344 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3340 pre-configured Gnuplot instance.
3345 pre-configured Gnuplot instance.
3341
3346
3342 2002-06-21 Fernando Perez <fperez@colorado.edu>
3347 2002-06-21 Fernando Perez <fperez@colorado.edu>
3343
3348
3344 * IPython/numutils.py (exp_safe): new function, works around the
3349 * IPython/numutils.py (exp_safe): new function, works around the
3345 underflow problems in Numeric.
3350 underflow problems in Numeric.
3346 (log2): New fn. Safe log in base 2: returns exact integer answer
3351 (log2): New fn. Safe log in base 2: returns exact integer answer
3347 for exact integer powers of 2.
3352 for exact integer powers of 2.
3348
3353
3349 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3354 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3350 properly.
3355 properly.
3351
3356
3352 2002-06-20 Fernando Perez <fperez@colorado.edu>
3357 2002-06-20 Fernando Perez <fperez@colorado.edu>
3353
3358
3354 * IPython/genutils.py (timing): new function like
3359 * IPython/genutils.py (timing): new function like
3355 Mathematica's. Similar to time_test, but returns more info.
3360 Mathematica's. Similar to time_test, but returns more info.
3356
3361
3357 2002-06-18 Fernando Perez <fperez@colorado.edu>
3362 2002-06-18 Fernando Perez <fperez@colorado.edu>
3358
3363
3359 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3364 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3360 according to Mike Heeter's suggestions.
3365 according to Mike Heeter's suggestions.
3361
3366
3362 2002-06-16 Fernando Perez <fperez@colorado.edu>
3367 2002-06-16 Fernando Perez <fperez@colorado.edu>
3363
3368
3364 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3369 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3365 system. GnuplotMagic is gone as a user-directory option. New files
3370 system. GnuplotMagic is gone as a user-directory option. New files
3366 make it easier to use all the gnuplot stuff both from external
3371 make it easier to use all the gnuplot stuff both from external
3367 programs as well as from IPython. Had to rewrite part of
3372 programs as well as from IPython. Had to rewrite part of
3368 hardcopy() b/c of a strange bug: often the ps files simply don't
3373 hardcopy() b/c of a strange bug: often the ps files simply don't
3369 get created, and require a repeat of the command (often several
3374 get created, and require a repeat of the command (often several
3370 times).
3375 times).
3371
3376
3372 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3377 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3373 resolve output channel at call time, so that if sys.stderr has
3378 resolve output channel at call time, so that if sys.stderr has
3374 been redirected by user this gets honored.
3379 been redirected by user this gets honored.
3375
3380
3376 2002-06-13 Fernando Perez <fperez@colorado.edu>
3381 2002-06-13 Fernando Perez <fperez@colorado.edu>
3377
3382
3378 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3383 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3379 IPShell. Kept a copy with the old names to avoid breaking people's
3384 IPShell. Kept a copy with the old names to avoid breaking people's
3380 embedded code.
3385 embedded code.
3381
3386
3382 * IPython/ipython: simplified it to the bare minimum after
3387 * IPython/ipython: simplified it to the bare minimum after
3383 Holger's suggestions. Added info about how to use it in
3388 Holger's suggestions. Added info about how to use it in
3384 PYTHONSTARTUP.
3389 PYTHONSTARTUP.
3385
3390
3386 * IPython/Shell.py (IPythonShell): changed the options passing
3391 * IPython/Shell.py (IPythonShell): changed the options passing
3387 from a string with funky %s replacements to a straight list. Maybe
3392 from a string with funky %s replacements to a straight list. Maybe
3388 a bit more typing, but it follows sys.argv conventions, so there's
3393 a bit more typing, but it follows sys.argv conventions, so there's
3389 less special-casing to remember.
3394 less special-casing to remember.
3390
3395
3391 2002-06-12 Fernando Perez <fperez@colorado.edu>
3396 2002-06-12 Fernando Perez <fperez@colorado.edu>
3392
3397
3393 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3398 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3394 command. Thanks to a suggestion by Mike Heeter.
3399 command. Thanks to a suggestion by Mike Heeter.
3395 (Magic.magic_pfile): added behavior to look at filenames if given
3400 (Magic.magic_pfile): added behavior to look at filenames if given
3396 arg is not a defined object.
3401 arg is not a defined object.
3397 (Magic.magic_save): New @save function to save code snippets. Also
3402 (Magic.magic_save): New @save function to save code snippets. Also
3398 a Mike Heeter idea.
3403 a Mike Heeter idea.
3399
3404
3400 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3405 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3401 plot() and replot(). Much more convenient now, especially for
3406 plot() and replot(). Much more convenient now, especially for
3402 interactive use.
3407 interactive use.
3403
3408
3404 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3409 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3405 filenames.
3410 filenames.
3406
3411
3407 2002-06-02 Fernando Perez <fperez@colorado.edu>
3412 2002-06-02 Fernando Perez <fperez@colorado.edu>
3408
3413
3409 * IPython/Struct.py (Struct.__init__): modified to admit
3414 * IPython/Struct.py (Struct.__init__): modified to admit
3410 initialization via another struct.
3415 initialization via another struct.
3411
3416
3412 * IPython/genutils.py (SystemExec.__init__): New stateful
3417 * IPython/genutils.py (SystemExec.__init__): New stateful
3413 interface to xsys and bq. Useful for writing system scripts.
3418 interface to xsys and bq. Useful for writing system scripts.
3414
3419
3415 2002-05-30 Fernando Perez <fperez@colorado.edu>
3420 2002-05-30 Fernando Perez <fperez@colorado.edu>
3416
3421
3417 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3422 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3418 documents. This will make the user download smaller (it's getting
3423 documents. This will make the user download smaller (it's getting
3419 too big).
3424 too big).
3420
3425
3421 2002-05-29 Fernando Perez <fperez@colorado.edu>
3426 2002-05-29 Fernando Perez <fperez@colorado.edu>
3422
3427
3423 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3428 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3424 fix problems with shelve and pickle. Seems to work, but I don't
3429 fix problems with shelve and pickle. Seems to work, but I don't
3425 know if corner cases break it. Thanks to Mike Heeter
3430 know if corner cases break it. Thanks to Mike Heeter
3426 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3431 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3427
3432
3428 2002-05-24 Fernando Perez <fperez@colorado.edu>
3433 2002-05-24 Fernando Perez <fperez@colorado.edu>
3429
3434
3430 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3435 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3431 macros having broken.
3436 macros having broken.
3432
3437
3433 2002-05-21 Fernando Perez <fperez@colorado.edu>
3438 2002-05-21 Fernando Perez <fperez@colorado.edu>
3434
3439
3435 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3440 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3436 introduced logging bug: all history before logging started was
3441 introduced logging bug: all history before logging started was
3437 being written one character per line! This came from the redesign
3442 being written one character per line! This came from the redesign
3438 of the input history as a special list which slices to strings,
3443 of the input history as a special list which slices to strings,
3439 not to lists.
3444 not to lists.
3440
3445
3441 2002-05-20 Fernando Perez <fperez@colorado.edu>
3446 2002-05-20 Fernando Perez <fperez@colorado.edu>
3442
3447
3443 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3448 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3444 be an attribute of all classes in this module. The design of these
3449 be an attribute of all classes in this module. The design of these
3445 classes needs some serious overhauling.
3450 classes needs some serious overhauling.
3446
3451
3447 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3452 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3448 which was ignoring '_' in option names.
3453 which was ignoring '_' in option names.
3449
3454
3450 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3455 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3451 'Verbose_novars' to 'Context' and made it the new default. It's a
3456 'Verbose_novars' to 'Context' and made it the new default. It's a
3452 bit more readable and also safer than verbose.
3457 bit more readable and also safer than verbose.
3453
3458
3454 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3459 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3455 triple-quoted strings.
3460 triple-quoted strings.
3456
3461
3457 * IPython/OInspect.py (__all__): new module exposing the object
3462 * IPython/OInspect.py (__all__): new module exposing the object
3458 introspection facilities. Now the corresponding magics are dummy
3463 introspection facilities. Now the corresponding magics are dummy
3459 wrappers around this. Having this module will make it much easier
3464 wrappers around this. Having this module will make it much easier
3460 to put these functions into our modified pdb.
3465 to put these functions into our modified pdb.
3461 This new object inspector system uses the new colorizing module,
3466 This new object inspector system uses the new colorizing module,
3462 so source code and other things are nicely syntax highlighted.
3467 so source code and other things are nicely syntax highlighted.
3463
3468
3464 2002-05-18 Fernando Perez <fperez@colorado.edu>
3469 2002-05-18 Fernando Perez <fperez@colorado.edu>
3465
3470
3466 * IPython/ColorANSI.py: Split the coloring tools into a separate
3471 * IPython/ColorANSI.py: Split the coloring tools into a separate
3467 module so I can use them in other code easier (they were part of
3472 module so I can use them in other code easier (they were part of
3468 ultraTB).
3473 ultraTB).
3469
3474
3470 2002-05-17 Fernando Perez <fperez@colorado.edu>
3475 2002-05-17 Fernando Perez <fperez@colorado.edu>
3471
3476
3472 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3477 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3473 fixed it to set the global 'g' also to the called instance, as
3478 fixed it to set the global 'g' also to the called instance, as
3474 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3479 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3475 user's 'g' variables).
3480 user's 'g' variables).
3476
3481
3477 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3482 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3478 global variables (aliases to _ih,_oh) so that users which expect
3483 global variables (aliases to _ih,_oh) so that users which expect
3479 In[5] or Out[7] to work aren't unpleasantly surprised.
3484 In[5] or Out[7] to work aren't unpleasantly surprised.
3480 (InputList.__getslice__): new class to allow executing slices of
3485 (InputList.__getslice__): new class to allow executing slices of
3481 input history directly. Very simple class, complements the use of
3486 input history directly. Very simple class, complements the use of
3482 macros.
3487 macros.
3483
3488
3484 2002-05-16 Fernando Perez <fperez@colorado.edu>
3489 2002-05-16 Fernando Perez <fperez@colorado.edu>
3485
3490
3486 * setup.py (docdirbase): make doc directory be just doc/IPython
3491 * setup.py (docdirbase): make doc directory be just doc/IPython
3487 without version numbers, it will reduce clutter for users.
3492 without version numbers, it will reduce clutter for users.
3488
3493
3489 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3494 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3490 execfile call to prevent possible memory leak. See for details:
3495 execfile call to prevent possible memory leak. See for details:
3491 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3496 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3492
3497
3493 2002-05-15 Fernando Perez <fperez@colorado.edu>
3498 2002-05-15 Fernando Perez <fperez@colorado.edu>
3494
3499
3495 * IPython/Magic.py (Magic.magic_psource): made the object
3500 * IPython/Magic.py (Magic.magic_psource): made the object
3496 introspection names be more standard: pdoc, pdef, pfile and
3501 introspection names be more standard: pdoc, pdef, pfile and
3497 psource. They all print/page their output, and it makes
3502 psource. They all print/page their output, and it makes
3498 remembering them easier. Kept old names for compatibility as
3503 remembering them easier. Kept old names for compatibility as
3499 aliases.
3504 aliases.
3500
3505
3501 2002-05-14 Fernando Perez <fperez@colorado.edu>
3506 2002-05-14 Fernando Perez <fperez@colorado.edu>
3502
3507
3503 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3508 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3504 what the mouse problem was. The trick is to use gnuplot with temp
3509 what the mouse problem was. The trick is to use gnuplot with temp
3505 files and NOT with pipes (for data communication), because having
3510 files and NOT with pipes (for data communication), because having
3506 both pipes and the mouse on is bad news.
3511 both pipes and the mouse on is bad news.
3507
3512
3508 2002-05-13 Fernando Perez <fperez@colorado.edu>
3513 2002-05-13 Fernando Perez <fperez@colorado.edu>
3509
3514
3510 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3515 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3511 bug. Information would be reported about builtins even when
3516 bug. Information would be reported about builtins even when
3512 user-defined functions overrode them.
3517 user-defined functions overrode them.
3513
3518
3514 2002-05-11 Fernando Perez <fperez@colorado.edu>
3519 2002-05-11 Fernando Perez <fperez@colorado.edu>
3515
3520
3516 * IPython/__init__.py (__all__): removed FlexCompleter from
3521 * IPython/__init__.py (__all__): removed FlexCompleter from
3517 __all__ so that things don't fail in platforms without readline.
3522 __all__ so that things don't fail in platforms without readline.
3518
3523
3519 2002-05-10 Fernando Perez <fperez@colorado.edu>
3524 2002-05-10 Fernando Perez <fperez@colorado.edu>
3520
3525
3521 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3526 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3522 it requires Numeric, effectively making Numeric a dependency for
3527 it requires Numeric, effectively making Numeric a dependency for
3523 IPython.
3528 IPython.
3524
3529
3525 * Released 0.2.13
3530 * Released 0.2.13
3526
3531
3527 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3532 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3528 profiler interface. Now all the major options from the profiler
3533 profiler interface. Now all the major options from the profiler
3529 module are directly supported in IPython, both for single
3534 module are directly supported in IPython, both for single
3530 expressions (@prun) and for full programs (@run -p).
3535 expressions (@prun) and for full programs (@run -p).
3531
3536
3532 2002-05-09 Fernando Perez <fperez@colorado.edu>
3537 2002-05-09 Fernando Perez <fperez@colorado.edu>
3533
3538
3534 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3539 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3535 magic properly formatted for screen.
3540 magic properly formatted for screen.
3536
3541
3537 * setup.py (make_shortcut): Changed things to put pdf version in
3542 * setup.py (make_shortcut): Changed things to put pdf version in
3538 doc/ instead of doc/manual (had to change lyxport a bit).
3543 doc/ instead of doc/manual (had to change lyxport a bit).
3539
3544
3540 * IPython/Magic.py (Profile.string_stats): made profile runs go
3545 * IPython/Magic.py (Profile.string_stats): made profile runs go
3541 through pager (they are long and a pager allows searching, saving,
3546 through pager (they are long and a pager allows searching, saving,
3542 etc.)
3547 etc.)
3543
3548
3544 2002-05-08 Fernando Perez <fperez@colorado.edu>
3549 2002-05-08 Fernando Perez <fperez@colorado.edu>
3545
3550
3546 * Released 0.2.12
3551 * Released 0.2.12
3547
3552
3548 2002-05-06 Fernando Perez <fperez@colorado.edu>
3553 2002-05-06 Fernando Perez <fperez@colorado.edu>
3549
3554
3550 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3555 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3551 introduced); 'hist n1 n2' was broken.
3556 introduced); 'hist n1 n2' was broken.
3552 (Magic.magic_pdb): added optional on/off arguments to @pdb
3557 (Magic.magic_pdb): added optional on/off arguments to @pdb
3553 (Magic.magic_run): added option -i to @run, which executes code in
3558 (Magic.magic_run): added option -i to @run, which executes code in
3554 the IPython namespace instead of a clean one. Also added @irun as
3559 the IPython namespace instead of a clean one. Also added @irun as
3555 an alias to @run -i.
3560 an alias to @run -i.
3556
3561
3557 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3562 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3558 fixed (it didn't really do anything, the namespaces were wrong).
3563 fixed (it didn't really do anything, the namespaces were wrong).
3559
3564
3560 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3565 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3561
3566
3562 * IPython/__init__.py (__all__): Fixed package namespace, now
3567 * IPython/__init__.py (__all__): Fixed package namespace, now
3563 'import IPython' does give access to IPython.<all> as
3568 'import IPython' does give access to IPython.<all> as
3564 expected. Also renamed __release__ to Release.
3569 expected. Also renamed __release__ to Release.
3565
3570
3566 * IPython/Debugger.py (__license__): created new Pdb class which
3571 * IPython/Debugger.py (__license__): created new Pdb class which
3567 functions like a drop-in for the normal pdb.Pdb but does NOT
3572 functions like a drop-in for the normal pdb.Pdb but does NOT
3568 import readline by default. This way it doesn't muck up IPython's
3573 import readline by default. This way it doesn't muck up IPython's
3569 readline handling, and now tab-completion finally works in the
3574 readline handling, and now tab-completion finally works in the
3570 debugger -- sort of. It completes things globally visible, but the
3575 debugger -- sort of. It completes things globally visible, but the
3571 completer doesn't track the stack as pdb walks it. That's a bit
3576 completer doesn't track the stack as pdb walks it. That's a bit
3572 tricky, and I'll have to implement it later.
3577 tricky, and I'll have to implement it later.
3573
3578
3574 2002-05-05 Fernando Perez <fperez@colorado.edu>
3579 2002-05-05 Fernando Perez <fperez@colorado.edu>
3575
3580
3576 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3581 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3577 magic docstrings when printed via ? (explicit \'s were being
3582 magic docstrings when printed via ? (explicit \'s were being
3578 printed).
3583 printed).
3579
3584
3580 * IPython/ipmaker.py (make_IPython): fixed namespace
3585 * IPython/ipmaker.py (make_IPython): fixed namespace
3581 identification bug. Now variables loaded via logs or command-line
3586 identification bug. Now variables loaded via logs or command-line
3582 files are recognized in the interactive namespace by @who.
3587 files are recognized in the interactive namespace by @who.
3583
3588
3584 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3589 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3585 log replay system stemming from the string form of Structs.
3590 log replay system stemming from the string form of Structs.
3586
3591
3587 * IPython/Magic.py (Macro.__init__): improved macros to properly
3592 * IPython/Magic.py (Macro.__init__): improved macros to properly
3588 handle magic commands in them.
3593 handle magic commands in them.
3589 (Magic.magic_logstart): usernames are now expanded so 'logstart
3594 (Magic.magic_logstart): usernames are now expanded so 'logstart
3590 ~/mylog' now works.
3595 ~/mylog' now works.
3591
3596
3592 * IPython/iplib.py (complete): fixed bug where paths starting with
3597 * IPython/iplib.py (complete): fixed bug where paths starting with
3593 '/' would be completed as magic names.
3598 '/' would be completed as magic names.
3594
3599
3595 2002-05-04 Fernando Perez <fperez@colorado.edu>
3600 2002-05-04 Fernando Perez <fperez@colorado.edu>
3596
3601
3597 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
3602 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
3598 allow running full programs under the profiler's control.
3603 allow running full programs under the profiler's control.
3599
3604
3600 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
3605 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
3601 mode to report exceptions verbosely but without formatting
3606 mode to report exceptions verbosely but without formatting
3602 variables. This addresses the issue of ipython 'freezing' (it's
3607 variables. This addresses the issue of ipython 'freezing' (it's
3603 not frozen, but caught in an expensive formatting loop) when huge
3608 not frozen, but caught in an expensive formatting loop) when huge
3604 variables are in the context of an exception.
3609 variables are in the context of an exception.
3605 (VerboseTB.text): Added '--->' markers at line where exception was
3610 (VerboseTB.text): Added '--->' markers at line where exception was
3606 triggered. Much clearer to read, especially in NoColor modes.
3611 triggered. Much clearer to read, especially in NoColor modes.
3607
3612
3608 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
3613 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
3609 implemented in reverse when changing to the new parse_options().
3614 implemented in reverse when changing to the new parse_options().
3610
3615
3611 2002-05-03 Fernando Perez <fperez@colorado.edu>
3616 2002-05-03 Fernando Perez <fperez@colorado.edu>
3612
3617
3613 * IPython/Magic.py (Magic.parse_options): new function so that
3618 * IPython/Magic.py (Magic.parse_options): new function so that
3614 magics can parse options easier.
3619 magics can parse options easier.
3615 (Magic.magic_prun): new function similar to profile.run(),
3620 (Magic.magic_prun): new function similar to profile.run(),
3616 suggested by Chris Hart.
3621 suggested by Chris Hart.
3617 (Magic.magic_cd): fixed behavior so that it only changes if
3622 (Magic.magic_cd): fixed behavior so that it only changes if
3618 directory actually is in history.
3623 directory actually is in history.
3619
3624
3620 * IPython/usage.py (__doc__): added information about potential
3625 * IPython/usage.py (__doc__): added information about potential
3621 slowness of Verbose exception mode when there are huge data
3626 slowness of Verbose exception mode when there are huge data
3622 structures to be formatted (thanks to Archie Paulson).
3627 structures to be formatted (thanks to Archie Paulson).
3623
3628
3624 * IPython/ipmaker.py (make_IPython): Changed default logging
3629 * IPython/ipmaker.py (make_IPython): Changed default logging
3625 (when simply called with -log) to use curr_dir/ipython.log in
3630 (when simply called with -log) to use curr_dir/ipython.log in
3626 rotate mode. Fixed crash which was occuring with -log before
3631 rotate mode. Fixed crash which was occuring with -log before
3627 (thanks to Jim Boyle).
3632 (thanks to Jim Boyle).
3628
3633
3629 2002-05-01 Fernando Perez <fperez@colorado.edu>
3634 2002-05-01 Fernando Perez <fperez@colorado.edu>
3630
3635
3631 * Released 0.2.11 for these fixes (mainly the ultraTB one which
3636 * Released 0.2.11 for these fixes (mainly the ultraTB one which
3632 was nasty -- though somewhat of a corner case).
3637 was nasty -- though somewhat of a corner case).
3633
3638
3634 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
3639 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
3635 text (was a bug).
3640 text (was a bug).
3636
3641
3637 2002-04-30 Fernando Perez <fperez@colorado.edu>
3642 2002-04-30 Fernando Perez <fperez@colorado.edu>
3638
3643
3639 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
3644 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
3640 a print after ^D or ^C from the user so that the In[] prompt
3645 a print after ^D or ^C from the user so that the In[] prompt
3641 doesn't over-run the gnuplot one.
3646 doesn't over-run the gnuplot one.
3642
3647
3643 2002-04-29 Fernando Perez <fperez@colorado.edu>
3648 2002-04-29 Fernando Perez <fperez@colorado.edu>
3644
3649
3645 * Released 0.2.10
3650 * Released 0.2.10
3646
3651
3647 * IPython/__release__.py (version): get date dynamically.
3652 * IPython/__release__.py (version): get date dynamically.
3648
3653
3649 * Misc. documentation updates thanks to Arnd's comments. Also ran
3654 * Misc. documentation updates thanks to Arnd's comments. Also ran
3650 a full spellcheck on the manual (hadn't been done in a while).
3655 a full spellcheck on the manual (hadn't been done in a while).
3651
3656
3652 2002-04-27 Fernando Perez <fperez@colorado.edu>
3657 2002-04-27 Fernando Perez <fperez@colorado.edu>
3653
3658
3654 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
3659 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
3655 starting a log in mid-session would reset the input history list.
3660 starting a log in mid-session would reset the input history list.
3656
3661
3657 2002-04-26 Fernando Perez <fperez@colorado.edu>
3662 2002-04-26 Fernando Perez <fperez@colorado.edu>
3658
3663
3659 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
3664 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
3660 all files were being included in an update. Now anything in
3665 all files were being included in an update. Now anything in
3661 UserConfig that matches [A-Za-z]*.py will go (this excludes
3666 UserConfig that matches [A-Za-z]*.py will go (this excludes
3662 __init__.py)
3667 __init__.py)
3663
3668
3664 2002-04-25 Fernando Perez <fperez@colorado.edu>
3669 2002-04-25 Fernando Perez <fperez@colorado.edu>
3665
3670
3666 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
3671 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
3667 to __builtins__ so that any form of embedded or imported code can
3672 to __builtins__ so that any form of embedded or imported code can
3668 test for being inside IPython.
3673 test for being inside IPython.
3669
3674
3670 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
3675 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
3671 changed to GnuplotMagic because it's now an importable module,
3676 changed to GnuplotMagic because it's now an importable module,
3672 this makes the name follow that of the standard Gnuplot module.
3677 this makes the name follow that of the standard Gnuplot module.
3673 GnuplotMagic can now be loaded at any time in mid-session.
3678 GnuplotMagic can now be loaded at any time in mid-session.
3674
3679
3675 2002-04-24 Fernando Perez <fperez@colorado.edu>
3680 2002-04-24 Fernando Perez <fperez@colorado.edu>
3676
3681
3677 * IPython/numutils.py: removed SIUnits. It doesn't properly set
3682 * IPython/numutils.py: removed SIUnits. It doesn't properly set
3678 the globals (IPython has its own namespace) and the
3683 the globals (IPython has its own namespace) and the
3679 PhysicalQuantity stuff is much better anyway.
3684 PhysicalQuantity stuff is much better anyway.
3680
3685
3681 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
3686 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
3682 embedding example to standard user directory for
3687 embedding example to standard user directory for
3683 distribution. Also put it in the manual.
3688 distribution. Also put it in the manual.
3684
3689
3685 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
3690 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
3686 instance as first argument (so it doesn't rely on some obscure
3691 instance as first argument (so it doesn't rely on some obscure
3687 hidden global).
3692 hidden global).
3688
3693
3689 * IPython/UserConfig/ipythonrc.py: put () back in accepted
3694 * IPython/UserConfig/ipythonrc.py: put () back in accepted
3690 delimiters. While it prevents ().TAB from working, it allows
3695 delimiters. While it prevents ().TAB from working, it allows
3691 completions in open (... expressions. This is by far a more common
3696 completions in open (... expressions. This is by far a more common
3692 case.
3697 case.
3693
3698
3694 2002-04-23 Fernando Perez <fperez@colorado.edu>
3699 2002-04-23 Fernando Perez <fperez@colorado.edu>
3695
3700
3696 * IPython/Extensions/InterpreterPasteInput.py: new
3701 * IPython/Extensions/InterpreterPasteInput.py: new
3697 syntax-processing module for pasting lines with >>> or ... at the
3702 syntax-processing module for pasting lines with >>> or ... at the
3698 start.
3703 start.
3699
3704
3700 * IPython/Extensions/PhysicalQ_Interactive.py
3705 * IPython/Extensions/PhysicalQ_Interactive.py
3701 (PhysicalQuantityInteractive.__int__): fixed to work with either
3706 (PhysicalQuantityInteractive.__int__): fixed to work with either
3702 Numeric or math.
3707 Numeric or math.
3703
3708
3704 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
3709 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
3705 provided profiles. Now we have:
3710 provided profiles. Now we have:
3706 -math -> math module as * and cmath with its own namespace.
3711 -math -> math module as * and cmath with its own namespace.
3707 -numeric -> Numeric as *, plus gnuplot & grace
3712 -numeric -> Numeric as *, plus gnuplot & grace
3708 -physics -> same as before
3713 -physics -> same as before
3709
3714
3710 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
3715 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
3711 user-defined magics wouldn't be found by @magic if they were
3716 user-defined magics wouldn't be found by @magic if they were
3712 defined as class methods. Also cleaned up the namespace search
3717 defined as class methods. Also cleaned up the namespace search
3713 logic and the string building (to use %s instead of many repeated
3718 logic and the string building (to use %s instead of many repeated
3714 string adds).
3719 string adds).
3715
3720
3716 * IPython/UserConfig/example-magic.py (magic_foo): updated example
3721 * IPython/UserConfig/example-magic.py (magic_foo): updated example
3717 of user-defined magics to operate with class methods (cleaner, in
3722 of user-defined magics to operate with class methods (cleaner, in
3718 line with the gnuplot code).
3723 line with the gnuplot code).
3719
3724
3720 2002-04-22 Fernando Perez <fperez@colorado.edu>
3725 2002-04-22 Fernando Perez <fperez@colorado.edu>
3721
3726
3722 * setup.py: updated dependency list so that manual is updated when
3727 * setup.py: updated dependency list so that manual is updated when
3723 all included files change.
3728 all included files change.
3724
3729
3725 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
3730 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
3726 the delimiter removal option (the fix is ugly right now).
3731 the delimiter removal option (the fix is ugly right now).
3727
3732
3728 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
3733 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
3729 all of the math profile (quicker loading, no conflict between
3734 all of the math profile (quicker loading, no conflict between
3730 g-9.8 and g-gnuplot).
3735 g-9.8 and g-gnuplot).
3731
3736
3732 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
3737 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
3733 name of post-mortem files to IPython_crash_report.txt.
3738 name of post-mortem files to IPython_crash_report.txt.
3734
3739
3735 * Cleanup/update of the docs. Added all the new readline info and
3740 * Cleanup/update of the docs. Added all the new readline info and
3736 formatted all lists as 'real lists'.
3741 formatted all lists as 'real lists'.
3737
3742
3738 * IPython/ipmaker.py (make_IPython): removed now-obsolete
3743 * IPython/ipmaker.py (make_IPython): removed now-obsolete
3739 tab-completion options, since the full readline parse_and_bind is
3744 tab-completion options, since the full readline parse_and_bind is
3740 now accessible.
3745 now accessible.
3741
3746
3742 * IPython/iplib.py (InteractiveShell.init_readline): Changed
3747 * IPython/iplib.py (InteractiveShell.init_readline): Changed
3743 handling of readline options. Now users can specify any string to
3748 handling of readline options. Now users can specify any string to
3744 be passed to parse_and_bind(), as well as the delimiters to be
3749 be passed to parse_and_bind(), as well as the delimiters to be
3745 removed.
3750 removed.
3746 (InteractiveShell.__init__): Added __name__ to the global
3751 (InteractiveShell.__init__): Added __name__ to the global
3747 namespace so that things like Itpl which rely on its existence
3752 namespace so that things like Itpl which rely on its existence
3748 don't crash.
3753 don't crash.
3749 (InteractiveShell._prefilter): Defined the default with a _ so
3754 (InteractiveShell._prefilter): Defined the default with a _ so
3750 that prefilter() is easier to override, while the default one
3755 that prefilter() is easier to override, while the default one
3751 remains available.
3756 remains available.
3752
3757
3753 2002-04-18 Fernando Perez <fperez@colorado.edu>
3758 2002-04-18 Fernando Perez <fperez@colorado.edu>
3754
3759
3755 * Added information about pdb in the docs.
3760 * Added information about pdb in the docs.
3756
3761
3757 2002-04-17 Fernando Perez <fperez@colorado.edu>
3762 2002-04-17 Fernando Perez <fperez@colorado.edu>
3758
3763
3759 * IPython/ipmaker.py (make_IPython): added rc_override option to
3764 * IPython/ipmaker.py (make_IPython): added rc_override option to
3760 allow passing config options at creation time which may override
3765 allow passing config options at creation time which may override
3761 anything set in the config files or command line. This is
3766 anything set in the config files or command line. This is
3762 particularly useful for configuring embedded instances.
3767 particularly useful for configuring embedded instances.
3763
3768
3764 2002-04-15 Fernando Perez <fperez@colorado.edu>
3769 2002-04-15 Fernando Perez <fperez@colorado.edu>
3765
3770
3766 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
3771 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
3767 crash embedded instances because of the input cache falling out of
3772 crash embedded instances because of the input cache falling out of
3768 sync with the output counter.
3773 sync with the output counter.
3769
3774
3770 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
3775 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
3771 mode which calls pdb after an uncaught exception in IPython itself.
3776 mode which calls pdb after an uncaught exception in IPython itself.
3772
3777
3773 2002-04-14 Fernando Perez <fperez@colorado.edu>
3778 2002-04-14 Fernando Perez <fperez@colorado.edu>
3774
3779
3775 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
3780 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
3776 readline, fix it back after each call.
3781 readline, fix it back after each call.
3777
3782
3778 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
3783 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
3779 method to force all access via __call__(), which guarantees that
3784 method to force all access via __call__(), which guarantees that
3780 traceback references are properly deleted.
3785 traceback references are properly deleted.
3781
3786
3782 * IPython/Prompts.py (CachedOutput._display): minor fixes to
3787 * IPython/Prompts.py (CachedOutput._display): minor fixes to
3783 improve printing when pprint is in use.
3788 improve printing when pprint is in use.
3784
3789
3785 2002-04-13 Fernando Perez <fperez@colorado.edu>
3790 2002-04-13 Fernando Perez <fperez@colorado.edu>
3786
3791
3787 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
3792 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
3788 exceptions aren't caught anymore. If the user triggers one, he
3793 exceptions aren't caught anymore. If the user triggers one, he
3789 should know why he's doing it and it should go all the way up,
3794 should know why he's doing it and it should go all the way up,
3790 just like any other exception. So now @abort will fully kill the
3795 just like any other exception. So now @abort will fully kill the
3791 embedded interpreter and the embedding code (unless that happens
3796 embedded interpreter and the embedding code (unless that happens
3792 to catch SystemExit).
3797 to catch SystemExit).
3793
3798
3794 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
3799 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
3795 and a debugger() method to invoke the interactive pdb debugger
3800 and a debugger() method to invoke the interactive pdb debugger
3796 after printing exception information. Also added the corresponding
3801 after printing exception information. Also added the corresponding
3797 -pdb option and @pdb magic to control this feature, and updated
3802 -pdb option and @pdb magic to control this feature, and updated
3798 the docs. After a suggestion from Christopher Hart
3803 the docs. After a suggestion from Christopher Hart
3799 (hart-AT-caltech.edu).
3804 (hart-AT-caltech.edu).
3800
3805
3801 2002-04-12 Fernando Perez <fperez@colorado.edu>
3806 2002-04-12 Fernando Perez <fperez@colorado.edu>
3802
3807
3803 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
3808 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
3804 the exception handlers defined by the user (not the CrashHandler)
3809 the exception handlers defined by the user (not the CrashHandler)
3805 so that user exceptions don't trigger an ipython bug report.
3810 so that user exceptions don't trigger an ipython bug report.
3806
3811
3807 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
3812 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
3808 configurable (it should have always been so).
3813 configurable (it should have always been so).
3809
3814
3810 2002-03-26 Fernando Perez <fperez@colorado.edu>
3815 2002-03-26 Fernando Perez <fperez@colorado.edu>
3811
3816
3812 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
3817 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
3813 and there to fix embedding namespace issues. This should all be
3818 and there to fix embedding namespace issues. This should all be
3814 done in a more elegant way.
3819 done in a more elegant way.
3815
3820
3816 2002-03-25 Fernando Perez <fperez@colorado.edu>
3821 2002-03-25 Fernando Perez <fperez@colorado.edu>
3817
3822
3818 * IPython/genutils.py (get_home_dir): Try to make it work under
3823 * IPython/genutils.py (get_home_dir): Try to make it work under
3819 win9x also.
3824 win9x also.
3820
3825
3821 2002-03-20 Fernando Perez <fperez@colorado.edu>
3826 2002-03-20 Fernando Perez <fperez@colorado.edu>
3822
3827
3823 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
3828 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
3824 sys.displayhook untouched upon __init__.
3829 sys.displayhook untouched upon __init__.
3825
3830
3826 2002-03-19 Fernando Perez <fperez@colorado.edu>
3831 2002-03-19 Fernando Perez <fperez@colorado.edu>
3827
3832
3828 * Released 0.2.9 (for embedding bug, basically).
3833 * Released 0.2.9 (for embedding bug, basically).
3829
3834
3830 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
3835 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
3831 exceptions so that enclosing shell's state can be restored.
3836 exceptions so that enclosing shell's state can be restored.
3832
3837
3833 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
3838 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
3834 naming conventions in the .ipython/ dir.
3839 naming conventions in the .ipython/ dir.
3835
3840
3836 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
3841 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
3837 from delimiters list so filenames with - in them get expanded.
3842 from delimiters list so filenames with - in them get expanded.
3838
3843
3839 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
3844 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
3840 sys.displayhook not being properly restored after an embedded call.
3845 sys.displayhook not being properly restored after an embedded call.
3841
3846
3842 2002-03-18 Fernando Perez <fperez@colorado.edu>
3847 2002-03-18 Fernando Perez <fperez@colorado.edu>
3843
3848
3844 * Released 0.2.8
3849 * Released 0.2.8
3845
3850
3846 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
3851 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
3847 some files weren't being included in a -upgrade.
3852 some files weren't being included in a -upgrade.
3848 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
3853 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
3849 on' so that the first tab completes.
3854 on' so that the first tab completes.
3850 (InteractiveShell.handle_magic): fixed bug with spaces around
3855 (InteractiveShell.handle_magic): fixed bug with spaces around
3851 quotes breaking many magic commands.
3856 quotes breaking many magic commands.
3852
3857
3853 * setup.py: added note about ignoring the syntax error messages at
3858 * setup.py: added note about ignoring the syntax error messages at
3854 installation.
3859 installation.
3855
3860
3856 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
3861 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
3857 streamlining the gnuplot interface, now there's only one magic @gp.
3862 streamlining the gnuplot interface, now there's only one magic @gp.
3858
3863
3859 2002-03-17 Fernando Perez <fperez@colorado.edu>
3864 2002-03-17 Fernando Perez <fperez@colorado.edu>
3860
3865
3861 * IPython/UserConfig/magic_gnuplot.py: new name for the
3866 * IPython/UserConfig/magic_gnuplot.py: new name for the
3862 example-magic_pm.py file. Much enhanced system, now with a shell
3867 example-magic_pm.py file. Much enhanced system, now with a shell
3863 for communicating directly with gnuplot, one command at a time.
3868 for communicating directly with gnuplot, one command at a time.
3864
3869
3865 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
3870 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
3866 setting __name__=='__main__'.
3871 setting __name__=='__main__'.
3867
3872
3868 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
3873 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
3869 mini-shell for accessing gnuplot from inside ipython. Should
3874 mini-shell for accessing gnuplot from inside ipython. Should
3870 extend it later for grace access too. Inspired by Arnd's
3875 extend it later for grace access too. Inspired by Arnd's
3871 suggestion.
3876 suggestion.
3872
3877
3873 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
3878 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
3874 calling magic functions with () in their arguments. Thanks to Arnd
3879 calling magic functions with () in their arguments. Thanks to Arnd
3875 Baecker for pointing this to me.
3880 Baecker for pointing this to me.
3876
3881
3877 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
3882 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
3878 infinitely for integer or complex arrays (only worked with floats).
3883 infinitely for integer or complex arrays (only worked with floats).
3879
3884
3880 2002-03-16 Fernando Perez <fperez@colorado.edu>
3885 2002-03-16 Fernando Perez <fperez@colorado.edu>
3881
3886
3882 * setup.py: Merged setup and setup_windows into a single script
3887 * setup.py: Merged setup and setup_windows into a single script
3883 which properly handles things for windows users.
3888 which properly handles things for windows users.
3884
3889
3885 2002-03-15 Fernando Perez <fperez@colorado.edu>
3890 2002-03-15 Fernando Perez <fperez@colorado.edu>
3886
3891
3887 * Big change to the manual: now the magics are all automatically
3892 * Big change to the manual: now the magics are all automatically
3888 documented. This information is generated from their docstrings
3893 documented. This information is generated from their docstrings
3889 and put in a latex file included by the manual lyx file. This way
3894 and put in a latex file included by the manual lyx file. This way
3890 we get always up to date information for the magics. The manual
3895 we get always up to date information for the magics. The manual
3891 now also has proper version information, also auto-synced.
3896 now also has proper version information, also auto-synced.
3892
3897
3893 For this to work, an undocumented --magic_docstrings option was added.
3898 For this to work, an undocumented --magic_docstrings option was added.
3894
3899
3895 2002-03-13 Fernando Perez <fperez@colorado.edu>
3900 2002-03-13 Fernando Perez <fperez@colorado.edu>
3896
3901
3897 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
3902 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
3898 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
3903 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
3899
3904
3900 2002-03-12 Fernando Perez <fperez@colorado.edu>
3905 2002-03-12 Fernando Perez <fperez@colorado.edu>
3901
3906
3902 * IPython/ultraTB.py (TermColors): changed color escapes again to
3907 * IPython/ultraTB.py (TermColors): changed color escapes again to
3903 fix the (old, reintroduced) line-wrapping bug. Basically, if
3908 fix the (old, reintroduced) line-wrapping bug. Basically, if
3904 \001..\002 aren't given in the color escapes, lines get wrapped
3909 \001..\002 aren't given in the color escapes, lines get wrapped
3905 weirdly. But giving those screws up old xterms and emacs terms. So
3910 weirdly. But giving those screws up old xterms and emacs terms. So
3906 I added some logic for emacs terms to be ok, but I can't identify old
3911 I added some logic for emacs terms to be ok, but I can't identify old
3907 xterms separately ($TERM=='xterm' for many terminals, like konsole).
3912 xterms separately ($TERM=='xterm' for many terminals, like konsole).
3908
3913
3909 2002-03-10 Fernando Perez <fperez@colorado.edu>
3914 2002-03-10 Fernando Perez <fperez@colorado.edu>
3910
3915
3911 * IPython/usage.py (__doc__): Various documentation cleanups and
3916 * IPython/usage.py (__doc__): Various documentation cleanups and
3912 updates, both in usage docstrings and in the manual.
3917 updates, both in usage docstrings and in the manual.
3913
3918
3914 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
3919 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
3915 handling of caching. Set minimum acceptabe value for having a
3920 handling of caching. Set minimum acceptabe value for having a
3916 cache at 20 values.
3921 cache at 20 values.
3917
3922
3918 * IPython/iplib.py (InteractiveShell.user_setup): moved the
3923 * IPython/iplib.py (InteractiveShell.user_setup): moved the
3919 install_first_time function to a method, renamed it and added an
3924 install_first_time function to a method, renamed it and added an
3920 'upgrade' mode. Now people can update their config directory with
3925 'upgrade' mode. Now people can update their config directory with
3921 a simple command line switch (-upgrade, also new).
3926 a simple command line switch (-upgrade, also new).
3922
3927
3923 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
3928 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
3924 @file (convenient for automagic users under Python >= 2.2).
3929 @file (convenient for automagic users under Python >= 2.2).
3925 Removed @files (it seemed more like a plural than an abbrev. of
3930 Removed @files (it seemed more like a plural than an abbrev. of
3926 'file show').
3931 'file show').
3927
3932
3928 * IPython/iplib.py (install_first_time): Fixed crash if there were
3933 * IPython/iplib.py (install_first_time): Fixed crash if there were
3929 backup files ('~') in .ipython/ install directory.
3934 backup files ('~') in .ipython/ install directory.
3930
3935
3931 * IPython/ipmaker.py (make_IPython): fixes for new prompt
3936 * IPython/ipmaker.py (make_IPython): fixes for new prompt
3932 system. Things look fine, but these changes are fairly
3937 system. Things look fine, but these changes are fairly
3933 intrusive. Test them for a few days.
3938 intrusive. Test them for a few days.
3934
3939
3935 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
3940 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
3936 the prompts system. Now all in/out prompt strings are user
3941 the prompts system. Now all in/out prompt strings are user
3937 controllable. This is particularly useful for embedding, as one
3942 controllable. This is particularly useful for embedding, as one
3938 can tag embedded instances with particular prompts.
3943 can tag embedded instances with particular prompts.
3939
3944
3940 Also removed global use of sys.ps1/2, which now allows nested
3945 Also removed global use of sys.ps1/2, which now allows nested
3941 embeddings without any problems. Added command-line options for
3946 embeddings without any problems. Added command-line options for
3942 the prompt strings.
3947 the prompt strings.
3943
3948
3944 2002-03-08 Fernando Perez <fperez@colorado.edu>
3949 2002-03-08 Fernando Perez <fperez@colorado.edu>
3945
3950
3946 * IPython/UserConfig/example-embed-short.py (ipshell): added
3951 * IPython/UserConfig/example-embed-short.py (ipshell): added
3947 example file with the bare minimum code for embedding.
3952 example file with the bare minimum code for embedding.
3948
3953
3949 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
3954 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
3950 functionality for the embeddable shell to be activated/deactivated
3955 functionality for the embeddable shell to be activated/deactivated
3951 either globally or at each call.
3956 either globally or at each call.
3952
3957
3953 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
3958 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
3954 rewriting the prompt with '--->' for auto-inputs with proper
3959 rewriting the prompt with '--->' for auto-inputs with proper
3955 coloring. Now the previous UGLY hack in handle_auto() is gone, and
3960 coloring. Now the previous UGLY hack in handle_auto() is gone, and
3956 this is handled by the prompts class itself, as it should.
3961 this is handled by the prompts class itself, as it should.
3957
3962
3958 2002-03-05 Fernando Perez <fperez@colorado.edu>
3963 2002-03-05 Fernando Perez <fperez@colorado.edu>
3959
3964
3960 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
3965 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
3961 @logstart to avoid name clashes with the math log function.
3966 @logstart to avoid name clashes with the math log function.
3962
3967
3963 * Big updates to X/Emacs section of the manual.
3968 * Big updates to X/Emacs section of the manual.
3964
3969
3965 * Removed ipython_emacs. Milan explained to me how to pass
3970 * Removed ipython_emacs. Milan explained to me how to pass
3966 arguments to ipython through Emacs. Some day I'm going to end up
3971 arguments to ipython through Emacs. Some day I'm going to end up
3967 learning some lisp...
3972 learning some lisp...
3968
3973
3969 2002-03-04 Fernando Perez <fperez@colorado.edu>
3974 2002-03-04 Fernando Perez <fperez@colorado.edu>
3970
3975
3971 * IPython/ipython_emacs: Created script to be used as the
3976 * IPython/ipython_emacs: Created script to be used as the
3972 py-python-command Emacs variable so we can pass IPython
3977 py-python-command Emacs variable so we can pass IPython
3973 parameters. I can't figure out how to tell Emacs directly to pass
3978 parameters. I can't figure out how to tell Emacs directly to pass
3974 parameters to IPython, so a dummy shell script will do it.
3979 parameters to IPython, so a dummy shell script will do it.
3975
3980
3976 Other enhancements made for things to work better under Emacs'
3981 Other enhancements made for things to work better under Emacs'
3977 various types of terminals. Many thanks to Milan Zamazal
3982 various types of terminals. Many thanks to Milan Zamazal
3978 <pdm-AT-zamazal.org> for all the suggestions and pointers.
3983 <pdm-AT-zamazal.org> for all the suggestions and pointers.
3979
3984
3980 2002-03-01 Fernando Perez <fperez@colorado.edu>
3985 2002-03-01 Fernando Perez <fperez@colorado.edu>
3981
3986
3982 * IPython/ipmaker.py (make_IPython): added a --readline! option so
3987 * IPython/ipmaker.py (make_IPython): added a --readline! option so
3983 that loading of readline is now optional. This gives better
3988 that loading of readline is now optional. This gives better
3984 control to emacs users.
3989 control to emacs users.
3985
3990
3986 * IPython/ultraTB.py (__date__): Modified color escape sequences
3991 * IPython/ultraTB.py (__date__): Modified color escape sequences
3987 and now things work fine under xterm and in Emacs' term buffers
3992 and now things work fine under xterm and in Emacs' term buffers
3988 (though not shell ones). Well, in emacs you get colors, but all
3993 (though not shell ones). Well, in emacs you get colors, but all
3989 seem to be 'light' colors (no difference between dark and light
3994 seem to be 'light' colors (no difference between dark and light
3990 ones). But the garbage chars are gone, and also in xterms. It
3995 ones). But the garbage chars are gone, and also in xterms. It
3991 seems that now I'm using 'cleaner' ansi sequences.
3996 seems that now I'm using 'cleaner' ansi sequences.
3992
3997
3993 2002-02-21 Fernando Perez <fperez@colorado.edu>
3998 2002-02-21 Fernando Perez <fperez@colorado.edu>
3994
3999
3995 * Released 0.2.7 (mainly to publish the scoping fix).
4000 * Released 0.2.7 (mainly to publish the scoping fix).
3996
4001
3997 * IPython/Logger.py (Logger.logstate): added. A corresponding
4002 * IPython/Logger.py (Logger.logstate): added. A corresponding
3998 @logstate magic was created.
4003 @logstate magic was created.
3999
4004
4000 * IPython/Magic.py: fixed nested scoping problem under Python
4005 * IPython/Magic.py: fixed nested scoping problem under Python
4001 2.1.x (automagic wasn't working).
4006 2.1.x (automagic wasn't working).
4002
4007
4003 2002-02-20 Fernando Perez <fperez@colorado.edu>
4008 2002-02-20 Fernando Perez <fperez@colorado.edu>
4004
4009
4005 * Released 0.2.6.
4010 * Released 0.2.6.
4006
4011
4007 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4012 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4008 option so that logs can come out without any headers at all.
4013 option so that logs can come out without any headers at all.
4009
4014
4010 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4015 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4011 SciPy.
4016 SciPy.
4012
4017
4013 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4018 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4014 that embedded IPython calls don't require vars() to be explicitly
4019 that embedded IPython calls don't require vars() to be explicitly
4015 passed. Now they are extracted from the caller's frame (code
4020 passed. Now they are extracted from the caller's frame (code
4016 snatched from Eric Jones' weave). Added better documentation to
4021 snatched from Eric Jones' weave). Added better documentation to
4017 the section on embedding and the example file.
4022 the section on embedding and the example file.
4018
4023
4019 * IPython/genutils.py (page): Changed so that under emacs, it just
4024 * IPython/genutils.py (page): Changed so that under emacs, it just
4020 prints the string. You can then page up and down in the emacs
4025 prints the string. You can then page up and down in the emacs
4021 buffer itself. This is how the builtin help() works.
4026 buffer itself. This is how the builtin help() works.
4022
4027
4023 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4028 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4024 macro scoping: macros need to be executed in the user's namespace
4029 macro scoping: macros need to be executed in the user's namespace
4025 to work as if they had been typed by the user.
4030 to work as if they had been typed by the user.
4026
4031
4027 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4032 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4028 execute automatically (no need to type 'exec...'). They then
4033 execute automatically (no need to type 'exec...'). They then
4029 behave like 'true macros'. The printing system was also modified
4034 behave like 'true macros'. The printing system was also modified
4030 for this to work.
4035 for this to work.
4031
4036
4032 2002-02-19 Fernando Perez <fperez@colorado.edu>
4037 2002-02-19 Fernando Perez <fperez@colorado.edu>
4033
4038
4034 * IPython/genutils.py (page_file): new function for paging files
4039 * IPython/genutils.py (page_file): new function for paging files
4035 in an OS-independent way. Also necessary for file viewing to work
4040 in an OS-independent way. Also necessary for file viewing to work
4036 well inside Emacs buffers.
4041 well inside Emacs buffers.
4037 (page): Added checks for being in an emacs buffer.
4042 (page): Added checks for being in an emacs buffer.
4038 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4043 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4039 same bug in iplib.
4044 same bug in iplib.
4040
4045
4041 2002-02-18 Fernando Perez <fperez@colorado.edu>
4046 2002-02-18 Fernando Perez <fperez@colorado.edu>
4042
4047
4043 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4048 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4044 of readline so that IPython can work inside an Emacs buffer.
4049 of readline so that IPython can work inside an Emacs buffer.
4045
4050
4046 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4051 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4047 method signatures (they weren't really bugs, but it looks cleaner
4052 method signatures (they weren't really bugs, but it looks cleaner
4048 and keeps PyChecker happy).
4053 and keeps PyChecker happy).
4049
4054
4050 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4055 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4051 for implementing various user-defined hooks. Currently only
4056 for implementing various user-defined hooks. Currently only
4052 display is done.
4057 display is done.
4053
4058
4054 * IPython/Prompts.py (CachedOutput._display): changed display
4059 * IPython/Prompts.py (CachedOutput._display): changed display
4055 functions so that they can be dynamically changed by users easily.
4060 functions so that they can be dynamically changed by users easily.
4056
4061
4057 * IPython/Extensions/numeric_formats.py (num_display): added an
4062 * IPython/Extensions/numeric_formats.py (num_display): added an
4058 extension for printing NumPy arrays in flexible manners. It
4063 extension for printing NumPy arrays in flexible manners. It
4059 doesn't do anything yet, but all the structure is in
4064 doesn't do anything yet, but all the structure is in
4060 place. Ultimately the plan is to implement output format control
4065 place. Ultimately the plan is to implement output format control
4061 like in Octave.
4066 like in Octave.
4062
4067
4063 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4068 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4064 methods are found at run-time by all the automatic machinery.
4069 methods are found at run-time by all the automatic machinery.
4065
4070
4066 2002-02-17 Fernando Perez <fperez@colorado.edu>
4071 2002-02-17 Fernando Perez <fperez@colorado.edu>
4067
4072
4068 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4073 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4069 whole file a little.
4074 whole file a little.
4070
4075
4071 * ToDo: closed this document. Now there's a new_design.lyx
4076 * ToDo: closed this document. Now there's a new_design.lyx
4072 document for all new ideas. Added making a pdf of it for the
4077 document for all new ideas. Added making a pdf of it for the
4073 end-user distro.
4078 end-user distro.
4074
4079
4075 * IPython/Logger.py (Logger.switch_log): Created this to replace
4080 * IPython/Logger.py (Logger.switch_log): Created this to replace
4076 logon() and logoff(). It also fixes a nasty crash reported by
4081 logon() and logoff(). It also fixes a nasty crash reported by
4077 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4082 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4078
4083
4079 * IPython/iplib.py (complete): got auto-completion to work with
4084 * IPython/iplib.py (complete): got auto-completion to work with
4080 automagic (I had wanted this for a long time).
4085 automagic (I had wanted this for a long time).
4081
4086
4082 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4087 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4083 to @file, since file() is now a builtin and clashes with automagic
4088 to @file, since file() is now a builtin and clashes with automagic
4084 for @file.
4089 for @file.
4085
4090
4086 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4091 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4087 of this was previously in iplib, which had grown to more than 2000
4092 of this was previously in iplib, which had grown to more than 2000
4088 lines, way too long. No new functionality, but it makes managing
4093 lines, way too long. No new functionality, but it makes managing
4089 the code a bit easier.
4094 the code a bit easier.
4090
4095
4091 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4096 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4092 information to crash reports.
4097 information to crash reports.
4093
4098
4094 2002-02-12 Fernando Perez <fperez@colorado.edu>
4099 2002-02-12 Fernando Perez <fperez@colorado.edu>
4095
4100
4096 * Released 0.2.5.
4101 * Released 0.2.5.
4097
4102
4098 2002-02-11 Fernando Perez <fperez@colorado.edu>
4103 2002-02-11 Fernando Perez <fperez@colorado.edu>
4099
4104
4100 * Wrote a relatively complete Windows installer. It puts
4105 * Wrote a relatively complete Windows installer. It puts
4101 everything in place, creates Start Menu entries and fixes the
4106 everything in place, creates Start Menu entries and fixes the
4102 color issues. Nothing fancy, but it works.
4107 color issues. Nothing fancy, but it works.
4103
4108
4104 2002-02-10 Fernando Perez <fperez@colorado.edu>
4109 2002-02-10 Fernando Perez <fperez@colorado.edu>
4105
4110
4106 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4111 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4107 os.path.expanduser() call so that we can type @run ~/myfile.py and
4112 os.path.expanduser() call so that we can type @run ~/myfile.py and
4108 have thigs work as expected.
4113 have thigs work as expected.
4109
4114
4110 * IPython/genutils.py (page): fixed exception handling so things
4115 * IPython/genutils.py (page): fixed exception handling so things
4111 work both in Unix and Windows correctly. Quitting a pager triggers
4116 work both in Unix and Windows correctly. Quitting a pager triggers
4112 an IOError/broken pipe in Unix, and in windows not finding a pager
4117 an IOError/broken pipe in Unix, and in windows not finding a pager
4113 is also an IOError, so I had to actually look at the return value
4118 is also an IOError, so I had to actually look at the return value
4114 of the exception, not just the exception itself. Should be ok now.
4119 of the exception, not just the exception itself. Should be ok now.
4115
4120
4116 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4121 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4117 modified to allow case-insensitive color scheme changes.
4122 modified to allow case-insensitive color scheme changes.
4118
4123
4119 2002-02-09 Fernando Perez <fperez@colorado.edu>
4124 2002-02-09 Fernando Perez <fperez@colorado.edu>
4120
4125
4121 * IPython/genutils.py (native_line_ends): new function to leave
4126 * IPython/genutils.py (native_line_ends): new function to leave
4122 user config files with os-native line-endings.
4127 user config files with os-native line-endings.
4123
4128
4124 * README and manual updates.
4129 * README and manual updates.
4125
4130
4126 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4131 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4127 instead of StringType to catch Unicode strings.
4132 instead of StringType to catch Unicode strings.
4128
4133
4129 * IPython/genutils.py (filefind): fixed bug for paths with
4134 * IPython/genutils.py (filefind): fixed bug for paths with
4130 embedded spaces (very common in Windows).
4135 embedded spaces (very common in Windows).
4131
4136
4132 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4137 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4133 files under Windows, so that they get automatically associated
4138 files under Windows, so that they get automatically associated
4134 with a text editor. Windows makes it a pain to handle
4139 with a text editor. Windows makes it a pain to handle
4135 extension-less files.
4140 extension-less files.
4136
4141
4137 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4142 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4138 warning about readline only occur for Posix. In Windows there's no
4143 warning about readline only occur for Posix. In Windows there's no
4139 way to get readline, so why bother with the warning.
4144 way to get readline, so why bother with the warning.
4140
4145
4141 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4146 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4142 for __str__ instead of dir(self), since dir() changed in 2.2.
4147 for __str__ instead of dir(self), since dir() changed in 2.2.
4143
4148
4144 * Ported to Windows! Tested on XP, I suspect it should work fine
4149 * Ported to Windows! Tested on XP, I suspect it should work fine
4145 on NT/2000, but I don't think it will work on 98 et al. That
4150 on NT/2000, but I don't think it will work on 98 et al. That
4146 series of Windows is such a piece of junk anyway that I won't try
4151 series of Windows is such a piece of junk anyway that I won't try
4147 porting it there. The XP port was straightforward, showed a few
4152 porting it there. The XP port was straightforward, showed a few
4148 bugs here and there (fixed all), in particular some string
4153 bugs here and there (fixed all), in particular some string
4149 handling stuff which required considering Unicode strings (which
4154 handling stuff which required considering Unicode strings (which
4150 Windows uses). This is good, but hasn't been too tested :) No
4155 Windows uses). This is good, but hasn't been too tested :) No
4151 fancy installer yet, I'll put a note in the manual so people at
4156 fancy installer yet, I'll put a note in the manual so people at
4152 least make manually a shortcut.
4157 least make manually a shortcut.
4153
4158
4154 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4159 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4155 into a single one, "colors". This now controls both prompt and
4160 into a single one, "colors". This now controls both prompt and
4156 exception color schemes, and can be changed both at startup
4161 exception color schemes, and can be changed both at startup
4157 (either via command-line switches or via ipythonrc files) and at
4162 (either via command-line switches or via ipythonrc files) and at
4158 runtime, with @colors.
4163 runtime, with @colors.
4159 (Magic.magic_run): renamed @prun to @run and removed the old
4164 (Magic.magic_run): renamed @prun to @run and removed the old
4160 @run. The two were too similar to warrant keeping both.
4165 @run. The two were too similar to warrant keeping both.
4161
4166
4162 2002-02-03 Fernando Perez <fperez@colorado.edu>
4167 2002-02-03 Fernando Perez <fperez@colorado.edu>
4163
4168
4164 * IPython/iplib.py (install_first_time): Added comment on how to
4169 * IPython/iplib.py (install_first_time): Added comment on how to
4165 configure the color options for first-time users. Put a <return>
4170 configure the color options for first-time users. Put a <return>
4166 request at the end so that small-terminal users get a chance to
4171 request at the end so that small-terminal users get a chance to
4167 read the startup info.
4172 read the startup info.
4168
4173
4169 2002-01-23 Fernando Perez <fperez@colorado.edu>
4174 2002-01-23 Fernando Perez <fperez@colorado.edu>
4170
4175
4171 * IPython/iplib.py (CachedOutput.update): Changed output memory
4176 * IPython/iplib.py (CachedOutput.update): Changed output memory
4172 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4177 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4173 input history we still use _i. Did this b/c these variable are
4178 input history we still use _i. Did this b/c these variable are
4174 very commonly used in interactive work, so the less we need to
4179 very commonly used in interactive work, so the less we need to
4175 type the better off we are.
4180 type the better off we are.
4176 (Magic.magic_prun): updated @prun to better handle the namespaces
4181 (Magic.magic_prun): updated @prun to better handle the namespaces
4177 the file will run in, including a fix for __name__ not being set
4182 the file will run in, including a fix for __name__ not being set
4178 before.
4183 before.
4179
4184
4180 2002-01-20 Fernando Perez <fperez@colorado.edu>
4185 2002-01-20 Fernando Perez <fperez@colorado.edu>
4181
4186
4182 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4187 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4183 extra garbage for Python 2.2. Need to look more carefully into
4188 extra garbage for Python 2.2. Need to look more carefully into
4184 this later.
4189 this later.
4185
4190
4186 2002-01-19 Fernando Perez <fperez@colorado.edu>
4191 2002-01-19 Fernando Perez <fperez@colorado.edu>
4187
4192
4188 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4193 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4189 display SyntaxError exceptions properly formatted when they occur
4194 display SyntaxError exceptions properly formatted when they occur
4190 (they can be triggered by imported code).
4195 (they can be triggered by imported code).
4191
4196
4192 2002-01-18 Fernando Perez <fperez@colorado.edu>
4197 2002-01-18 Fernando Perez <fperez@colorado.edu>
4193
4198
4194 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4199 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4195 SyntaxError exceptions are reported nicely formatted, instead of
4200 SyntaxError exceptions are reported nicely formatted, instead of
4196 spitting out only offset information as before.
4201 spitting out only offset information as before.
4197 (Magic.magic_prun): Added the @prun function for executing
4202 (Magic.magic_prun): Added the @prun function for executing
4198 programs with command line args inside IPython.
4203 programs with command line args inside IPython.
4199
4204
4200 2002-01-16 Fernando Perez <fperez@colorado.edu>
4205 2002-01-16 Fernando Perez <fperez@colorado.edu>
4201
4206
4202 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4207 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4203 to *not* include the last item given in a range. This brings their
4208 to *not* include the last item given in a range. This brings their
4204 behavior in line with Python's slicing:
4209 behavior in line with Python's slicing:
4205 a[n1:n2] -> a[n1]...a[n2-1]
4210 a[n1:n2] -> a[n1]...a[n2-1]
4206 It may be a bit less convenient, but I prefer to stick to Python's
4211 It may be a bit less convenient, but I prefer to stick to Python's
4207 conventions *everywhere*, so users never have to wonder.
4212 conventions *everywhere*, so users never have to wonder.
4208 (Magic.magic_macro): Added @macro function to ease the creation of
4213 (Magic.magic_macro): Added @macro function to ease the creation of
4209 macros.
4214 macros.
4210
4215
4211 2002-01-05 Fernando Perez <fperez@colorado.edu>
4216 2002-01-05 Fernando Perez <fperez@colorado.edu>
4212
4217
4213 * Released 0.2.4.
4218 * Released 0.2.4.
4214
4219
4215 * IPython/iplib.py (Magic.magic_pdef):
4220 * IPython/iplib.py (Magic.magic_pdef):
4216 (InteractiveShell.safe_execfile): report magic lines and error
4221 (InteractiveShell.safe_execfile): report magic lines and error
4217 lines without line numbers so one can easily copy/paste them for
4222 lines without line numbers so one can easily copy/paste them for
4218 re-execution.
4223 re-execution.
4219
4224
4220 * Updated manual with recent changes.
4225 * Updated manual with recent changes.
4221
4226
4222 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4227 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4223 docstring printing when class? is called. Very handy for knowing
4228 docstring printing when class? is called. Very handy for knowing
4224 how to create class instances (as long as __init__ is well
4229 how to create class instances (as long as __init__ is well
4225 documented, of course :)
4230 documented, of course :)
4226 (Magic.magic_doc): print both class and constructor docstrings.
4231 (Magic.magic_doc): print both class and constructor docstrings.
4227 (Magic.magic_pdef): give constructor info if passed a class and
4232 (Magic.magic_pdef): give constructor info if passed a class and
4228 __call__ info for callable object instances.
4233 __call__ info for callable object instances.
4229
4234
4230 2002-01-04 Fernando Perez <fperez@colorado.edu>
4235 2002-01-04 Fernando Perez <fperez@colorado.edu>
4231
4236
4232 * Made deep_reload() off by default. It doesn't always work
4237 * Made deep_reload() off by default. It doesn't always work
4233 exactly as intended, so it's probably safer to have it off. It's
4238 exactly as intended, so it's probably safer to have it off. It's
4234 still available as dreload() anyway, so nothing is lost.
4239 still available as dreload() anyway, so nothing is lost.
4235
4240
4236 2002-01-02 Fernando Perez <fperez@colorado.edu>
4241 2002-01-02 Fernando Perez <fperez@colorado.edu>
4237
4242
4238 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4243 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4239 so I wanted an updated release).
4244 so I wanted an updated release).
4240
4245
4241 2001-12-27 Fernando Perez <fperez@colorado.edu>
4246 2001-12-27 Fernando Perez <fperez@colorado.edu>
4242
4247
4243 * IPython/iplib.py (InteractiveShell.interact): Added the original
4248 * IPython/iplib.py (InteractiveShell.interact): Added the original
4244 code from 'code.py' for this module in order to change the
4249 code from 'code.py' for this module in order to change the
4245 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4250 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4246 the history cache would break when the user hit Ctrl-C, and
4251 the history cache would break when the user hit Ctrl-C, and
4247 interact() offers no way to add any hooks to it.
4252 interact() offers no way to add any hooks to it.
4248
4253
4249 2001-12-23 Fernando Perez <fperez@colorado.edu>
4254 2001-12-23 Fernando Perez <fperez@colorado.edu>
4250
4255
4251 * setup.py: added check for 'MANIFEST' before trying to remove
4256 * setup.py: added check for 'MANIFEST' before trying to remove
4252 it. Thanks to Sean Reifschneider.
4257 it. Thanks to Sean Reifschneider.
4253
4258
4254 2001-12-22 Fernando Perez <fperez@colorado.edu>
4259 2001-12-22 Fernando Perez <fperez@colorado.edu>
4255
4260
4256 * Released 0.2.2.
4261 * Released 0.2.2.
4257
4262
4258 * Finished (reasonably) writing the manual. Later will add the
4263 * Finished (reasonably) writing the manual. Later will add the
4259 python-standard navigation stylesheets, but for the time being
4264 python-standard navigation stylesheets, but for the time being
4260 it's fairly complete. Distribution will include html and pdf
4265 it's fairly complete. Distribution will include html and pdf
4261 versions.
4266 versions.
4262
4267
4263 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4268 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4264 (MayaVi author).
4269 (MayaVi author).
4265
4270
4266 2001-12-21 Fernando Perez <fperez@colorado.edu>
4271 2001-12-21 Fernando Perez <fperez@colorado.edu>
4267
4272
4268 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4273 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4269 good public release, I think (with the manual and the distutils
4274 good public release, I think (with the manual and the distutils
4270 installer). The manual can use some work, but that can go
4275 installer). The manual can use some work, but that can go
4271 slowly. Otherwise I think it's quite nice for end users. Next
4276 slowly. Otherwise I think it's quite nice for end users. Next
4272 summer, rewrite the guts of it...
4277 summer, rewrite the guts of it...
4273
4278
4274 * Changed format of ipythonrc files to use whitespace as the
4279 * Changed format of ipythonrc files to use whitespace as the
4275 separator instead of an explicit '='. Cleaner.
4280 separator instead of an explicit '='. Cleaner.
4276
4281
4277 2001-12-20 Fernando Perez <fperez@colorado.edu>
4282 2001-12-20 Fernando Perez <fperez@colorado.edu>
4278
4283
4279 * Started a manual in LyX. For now it's just a quick merge of the
4284 * Started a manual in LyX. For now it's just a quick merge of the
4280 various internal docstrings and READMEs. Later it may grow into a
4285 various internal docstrings and READMEs. Later it may grow into a
4281 nice, full-blown manual.
4286 nice, full-blown manual.
4282
4287
4283 * Set up a distutils based installer. Installation should now be
4288 * Set up a distutils based installer. Installation should now be
4284 trivially simple for end-users.
4289 trivially simple for end-users.
4285
4290
4286 2001-12-11 Fernando Perez <fperez@colorado.edu>
4291 2001-12-11 Fernando Perez <fperez@colorado.edu>
4287
4292
4288 * Released 0.2.0. First public release, announced it at
4293 * Released 0.2.0. First public release, announced it at
4289 comp.lang.python. From now on, just bugfixes...
4294 comp.lang.python. From now on, just bugfixes...
4290
4295
4291 * Went through all the files, set copyright/license notices and
4296 * Went through all the files, set copyright/license notices and
4292 cleaned up things. Ready for release.
4297 cleaned up things. Ready for release.
4293
4298
4294 2001-12-10 Fernando Perez <fperez@colorado.edu>
4299 2001-12-10 Fernando Perez <fperez@colorado.edu>
4295
4300
4296 * Changed the first-time installer not to use tarfiles. It's more
4301 * Changed the first-time installer not to use tarfiles. It's more
4297 robust now and less unix-dependent. Also makes it easier for
4302 robust now and less unix-dependent. Also makes it easier for
4298 people to later upgrade versions.
4303 people to later upgrade versions.
4299
4304
4300 * Changed @exit to @abort to reflect the fact that it's pretty
4305 * Changed @exit to @abort to reflect the fact that it's pretty
4301 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4306 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4302 becomes significant only when IPyhton is embedded: in that case,
4307 becomes significant only when IPyhton is embedded: in that case,
4303 C-D closes IPython only, but @abort kills the enclosing program
4308 C-D closes IPython only, but @abort kills the enclosing program
4304 too (unless it had called IPython inside a try catching
4309 too (unless it had called IPython inside a try catching
4305 SystemExit).
4310 SystemExit).
4306
4311
4307 * Created Shell module which exposes the actuall IPython Shell
4312 * Created Shell module which exposes the actuall IPython Shell
4308 classes, currently the normal and the embeddable one. This at
4313 classes, currently the normal and the embeddable one. This at
4309 least offers a stable interface we won't need to change when
4314 least offers a stable interface we won't need to change when
4310 (later) the internals are rewritten. That rewrite will be confined
4315 (later) the internals are rewritten. That rewrite will be confined
4311 to iplib and ipmaker, but the Shell interface should remain as is.
4316 to iplib and ipmaker, but the Shell interface should remain as is.
4312
4317
4313 * Added embed module which offers an embeddable IPShell object,
4318 * Added embed module which offers an embeddable IPShell object,
4314 useful to fire up IPython *inside* a running program. Great for
4319 useful to fire up IPython *inside* a running program. Great for
4315 debugging or dynamical data analysis.
4320 debugging or dynamical data analysis.
4316
4321
4317 2001-12-08 Fernando Perez <fperez@colorado.edu>
4322 2001-12-08 Fernando Perez <fperez@colorado.edu>
4318
4323
4319 * Fixed small bug preventing seeing info from methods of defined
4324 * Fixed small bug preventing seeing info from methods of defined
4320 objects (incorrect namespace in _ofind()).
4325 objects (incorrect namespace in _ofind()).
4321
4326
4322 * Documentation cleanup. Moved the main usage docstrings to a
4327 * Documentation cleanup. Moved the main usage docstrings to a
4323 separate file, usage.py (cleaner to maintain, and hopefully in the
4328 separate file, usage.py (cleaner to maintain, and hopefully in the
4324 future some perlpod-like way of producing interactive, man and
4329 future some perlpod-like way of producing interactive, man and
4325 html docs out of it will be found).
4330 html docs out of it will be found).
4326
4331
4327 * Added @profile to see your profile at any time.
4332 * Added @profile to see your profile at any time.
4328
4333
4329 * Added @p as an alias for 'print'. It's especially convenient if
4334 * Added @p as an alias for 'print'. It's especially convenient if
4330 using automagic ('p x' prints x).
4335 using automagic ('p x' prints x).
4331
4336
4332 * Small cleanups and fixes after a pychecker run.
4337 * Small cleanups and fixes after a pychecker run.
4333
4338
4334 * Changed the @cd command to handle @cd - and @cd -<n> for
4339 * Changed the @cd command to handle @cd - and @cd -<n> for
4335 visiting any directory in _dh.
4340 visiting any directory in _dh.
4336
4341
4337 * Introduced _dh, a history of visited directories. @dhist prints
4342 * Introduced _dh, a history of visited directories. @dhist prints
4338 it out with numbers.
4343 it out with numbers.
4339
4344
4340 2001-12-07 Fernando Perez <fperez@colorado.edu>
4345 2001-12-07 Fernando Perez <fperez@colorado.edu>
4341
4346
4342 * Released 0.1.22
4347 * Released 0.1.22
4343
4348
4344 * Made initialization a bit more robust against invalid color
4349 * Made initialization a bit more robust against invalid color
4345 options in user input (exit, not traceback-crash).
4350 options in user input (exit, not traceback-crash).
4346
4351
4347 * Changed the bug crash reporter to write the report only in the
4352 * Changed the bug crash reporter to write the report only in the
4348 user's .ipython directory. That way IPython won't litter people's
4353 user's .ipython directory. That way IPython won't litter people's
4349 hard disks with crash files all over the place. Also print on
4354 hard disks with crash files all over the place. Also print on
4350 screen the necessary mail command.
4355 screen the necessary mail command.
4351
4356
4352 * With the new ultraTB, implemented LightBG color scheme for light
4357 * With the new ultraTB, implemented LightBG color scheme for light
4353 background terminals. A lot of people like white backgrounds, so I
4358 background terminals. A lot of people like white backgrounds, so I
4354 guess we should at least give them something readable.
4359 guess we should at least give them something readable.
4355
4360
4356 2001-12-06 Fernando Perez <fperez@colorado.edu>
4361 2001-12-06 Fernando Perez <fperez@colorado.edu>
4357
4362
4358 * Modified the structure of ultraTB. Now there's a proper class
4363 * Modified the structure of ultraTB. Now there's a proper class
4359 for tables of color schemes which allow adding schemes easily and
4364 for tables of color schemes which allow adding schemes easily and
4360 switching the active scheme without creating a new instance every
4365 switching the active scheme without creating a new instance every
4361 time (which was ridiculous). The syntax for creating new schemes
4366 time (which was ridiculous). The syntax for creating new schemes
4362 is also cleaner. I think ultraTB is finally done, with a clean
4367 is also cleaner. I think ultraTB is finally done, with a clean
4363 class structure. Names are also much cleaner (now there's proper
4368 class structure. Names are also much cleaner (now there's proper
4364 color tables, no need for every variable to also have 'color' in
4369 color tables, no need for every variable to also have 'color' in
4365 its name).
4370 its name).
4366
4371
4367 * Broke down genutils into separate files. Now genutils only
4372 * Broke down genutils into separate files. Now genutils only
4368 contains utility functions, and classes have been moved to their
4373 contains utility functions, and classes have been moved to their
4369 own files (they had enough independent functionality to warrant
4374 own files (they had enough independent functionality to warrant
4370 it): ConfigLoader, OutputTrap, Struct.
4375 it): ConfigLoader, OutputTrap, Struct.
4371
4376
4372 2001-12-05 Fernando Perez <fperez@colorado.edu>
4377 2001-12-05 Fernando Perez <fperez@colorado.edu>
4373
4378
4374 * IPython turns 21! Released version 0.1.21, as a candidate for
4379 * IPython turns 21! Released version 0.1.21, as a candidate for
4375 public consumption. If all goes well, release in a few days.
4380 public consumption. If all goes well, release in a few days.
4376
4381
4377 * Fixed path bug (files in Extensions/ directory wouldn't be found
4382 * Fixed path bug (files in Extensions/ directory wouldn't be found
4378 unless IPython/ was explicitly in sys.path).
4383 unless IPython/ was explicitly in sys.path).
4379
4384
4380 * Extended the FlexCompleter class as MagicCompleter to allow
4385 * Extended the FlexCompleter class as MagicCompleter to allow
4381 completion of @-starting lines.
4386 completion of @-starting lines.
4382
4387
4383 * Created __release__.py file as a central repository for release
4388 * Created __release__.py file as a central repository for release
4384 info that other files can read from.
4389 info that other files can read from.
4385
4390
4386 * Fixed small bug in logging: when logging was turned on in
4391 * Fixed small bug in logging: when logging was turned on in
4387 mid-session, old lines with special meanings (!@?) were being
4392 mid-session, old lines with special meanings (!@?) were being
4388 logged without the prepended comment, which is necessary since
4393 logged without the prepended comment, which is necessary since
4389 they are not truly valid python syntax. This should make session
4394 they are not truly valid python syntax. This should make session
4390 restores produce less errors.
4395 restores produce less errors.
4391
4396
4392 * The namespace cleanup forced me to make a FlexCompleter class
4397 * The namespace cleanup forced me to make a FlexCompleter class
4393 which is nothing but a ripoff of rlcompleter, but with selectable
4398 which is nothing but a ripoff of rlcompleter, but with selectable
4394 namespace (rlcompleter only works in __main__.__dict__). I'll try
4399 namespace (rlcompleter only works in __main__.__dict__). I'll try
4395 to submit a note to the authors to see if this change can be
4400 to submit a note to the authors to see if this change can be
4396 incorporated in future rlcompleter releases (Dec.6: done)
4401 incorporated in future rlcompleter releases (Dec.6: done)
4397
4402
4398 * More fixes to namespace handling. It was a mess! Now all
4403 * More fixes to namespace handling. It was a mess! Now all
4399 explicit references to __main__.__dict__ are gone (except when
4404 explicit references to __main__.__dict__ are gone (except when
4400 really needed) and everything is handled through the namespace
4405 really needed) and everything is handled through the namespace
4401 dicts in the IPython instance. We seem to be getting somewhere
4406 dicts in the IPython instance. We seem to be getting somewhere
4402 with this, finally...
4407 with this, finally...
4403
4408
4404 * Small documentation updates.
4409 * Small documentation updates.
4405
4410
4406 * Created the Extensions directory under IPython (with an
4411 * Created the Extensions directory under IPython (with an
4407 __init__.py). Put the PhysicalQ stuff there. This directory should
4412 __init__.py). Put the PhysicalQ stuff there. This directory should
4408 be used for all special-purpose extensions.
4413 be used for all special-purpose extensions.
4409
4414
4410 * File renaming:
4415 * File renaming:
4411 ipythonlib --> ipmaker
4416 ipythonlib --> ipmaker
4412 ipplib --> iplib
4417 ipplib --> iplib
4413 This makes a bit more sense in terms of what these files actually do.
4418 This makes a bit more sense in terms of what these files actually do.
4414
4419
4415 * Moved all the classes and functions in ipythonlib to ipplib, so
4420 * Moved all the classes and functions in ipythonlib to ipplib, so
4416 now ipythonlib only has make_IPython(). This will ease up its
4421 now ipythonlib only has make_IPython(). This will ease up its
4417 splitting in smaller functional chunks later.
4422 splitting in smaller functional chunks later.
4418
4423
4419 * Cleaned up (done, I think) output of @whos. Better column
4424 * Cleaned up (done, I think) output of @whos. Better column
4420 formatting, and now shows str(var) for as much as it can, which is
4425 formatting, and now shows str(var) for as much as it can, which is
4421 typically what one gets with a 'print var'.
4426 typically what one gets with a 'print var'.
4422
4427
4423 2001-12-04 Fernando Perez <fperez@colorado.edu>
4428 2001-12-04 Fernando Perez <fperez@colorado.edu>
4424
4429
4425 * Fixed namespace problems. Now builtin/IPyhton/user names get
4430 * Fixed namespace problems. Now builtin/IPyhton/user names get
4426 properly reported in their namespace. Internal namespace handling
4431 properly reported in their namespace. Internal namespace handling
4427 is finally getting decent (not perfect yet, but much better than
4432 is finally getting decent (not perfect yet, but much better than
4428 the ad-hoc mess we had).
4433 the ad-hoc mess we had).
4429
4434
4430 * Removed -exit option. If people just want to run a python
4435 * Removed -exit option. If people just want to run a python
4431 script, that's what the normal interpreter is for. Less
4436 script, that's what the normal interpreter is for. Less
4432 unnecessary options, less chances for bugs.
4437 unnecessary options, less chances for bugs.
4433
4438
4434 * Added a crash handler which generates a complete post-mortem if
4439 * Added a crash handler which generates a complete post-mortem if
4435 IPython crashes. This will help a lot in tracking bugs down the
4440 IPython crashes. This will help a lot in tracking bugs down the
4436 road.
4441 road.
4437
4442
4438 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4443 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4439 which were boud to functions being reassigned would bypass the
4444 which were boud to functions being reassigned would bypass the
4440 logger, breaking the sync of _il with the prompt counter. This
4445 logger, breaking the sync of _il with the prompt counter. This
4441 would then crash IPython later when a new line was logged.
4446 would then crash IPython later when a new line was logged.
4442
4447
4443 2001-12-02 Fernando Perez <fperez@colorado.edu>
4448 2001-12-02 Fernando Perez <fperez@colorado.edu>
4444
4449
4445 * Made IPython a package. This means people don't have to clutter
4450 * Made IPython a package. This means people don't have to clutter
4446 their sys.path with yet another directory. Changed the INSTALL
4451 their sys.path with yet another directory. Changed the INSTALL
4447 file accordingly.
4452 file accordingly.
4448
4453
4449 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4454 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4450 sorts its output (so @who shows it sorted) and @whos formats the
4455 sorts its output (so @who shows it sorted) and @whos formats the
4451 table according to the width of the first column. Nicer, easier to
4456 table according to the width of the first column. Nicer, easier to
4452 read. Todo: write a generic table_format() which takes a list of
4457 read. Todo: write a generic table_format() which takes a list of
4453 lists and prints it nicely formatted, with optional row/column
4458 lists and prints it nicely formatted, with optional row/column
4454 separators and proper padding and justification.
4459 separators and proper padding and justification.
4455
4460
4456 * Released 0.1.20
4461 * Released 0.1.20
4457
4462
4458 * Fixed bug in @log which would reverse the inputcache list (a
4463 * Fixed bug in @log which would reverse the inputcache list (a
4459 copy operation was missing).
4464 copy operation was missing).
4460
4465
4461 * Code cleanup. @config was changed to use page(). Better, since
4466 * Code cleanup. @config was changed to use page(). Better, since
4462 its output is always quite long.
4467 its output is always quite long.
4463
4468
4464 * Itpl is back as a dependency. I was having too many problems
4469 * Itpl is back as a dependency. I was having too many problems
4465 getting the parametric aliases to work reliably, and it's just
4470 getting the parametric aliases to work reliably, and it's just
4466 easier to code weird string operations with it than playing %()s
4471 easier to code weird string operations with it than playing %()s
4467 games. It's only ~6k, so I don't think it's too big a deal.
4472 games. It's only ~6k, so I don't think it's too big a deal.
4468
4473
4469 * Found (and fixed) a very nasty bug with history. !lines weren't
4474 * Found (and fixed) a very nasty bug with history. !lines weren't
4470 getting cached, and the out of sync caches would crash
4475 getting cached, and the out of sync caches would crash
4471 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4476 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4472 division of labor a bit better. Bug fixed, cleaner structure.
4477 division of labor a bit better. Bug fixed, cleaner structure.
4473
4478
4474 2001-12-01 Fernando Perez <fperez@colorado.edu>
4479 2001-12-01 Fernando Perez <fperez@colorado.edu>
4475
4480
4476 * Released 0.1.19
4481 * Released 0.1.19
4477
4482
4478 * Added option -n to @hist to prevent line number printing. Much
4483 * Added option -n to @hist to prevent line number printing. Much
4479 easier to copy/paste code this way.
4484 easier to copy/paste code this way.
4480
4485
4481 * Created global _il to hold the input list. Allows easy
4486 * Created global _il to hold the input list. Allows easy
4482 re-execution of blocks of code by slicing it (inspired by Janko's
4487 re-execution of blocks of code by slicing it (inspired by Janko's
4483 comment on 'macros').
4488 comment on 'macros').
4484
4489
4485 * Small fixes and doc updates.
4490 * Small fixes and doc updates.
4486
4491
4487 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4492 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4488 much too fragile with automagic. Handles properly multi-line
4493 much too fragile with automagic. Handles properly multi-line
4489 statements and takes parameters.
4494 statements and takes parameters.
4490
4495
4491 2001-11-30 Fernando Perez <fperez@colorado.edu>
4496 2001-11-30 Fernando Perez <fperez@colorado.edu>
4492
4497
4493 * Version 0.1.18 released.
4498 * Version 0.1.18 released.
4494
4499
4495 * Fixed nasty namespace bug in initial module imports.
4500 * Fixed nasty namespace bug in initial module imports.
4496
4501
4497 * Added copyright/license notes to all code files (except
4502 * Added copyright/license notes to all code files (except
4498 DPyGetOpt). For the time being, LGPL. That could change.
4503 DPyGetOpt). For the time being, LGPL. That could change.
4499
4504
4500 * Rewrote a much nicer README, updated INSTALL, cleaned up
4505 * Rewrote a much nicer README, updated INSTALL, cleaned up
4501 ipythonrc-* samples.
4506 ipythonrc-* samples.
4502
4507
4503 * Overall code/documentation cleanup. Basically ready for
4508 * Overall code/documentation cleanup. Basically ready for
4504 release. Only remaining thing: licence decision (LGPL?).
4509 release. Only remaining thing: licence decision (LGPL?).
4505
4510
4506 * Converted load_config to a class, ConfigLoader. Now recursion
4511 * Converted load_config to a class, ConfigLoader. Now recursion
4507 control is better organized. Doesn't include the same file twice.
4512 control is better organized. Doesn't include the same file twice.
4508
4513
4509 2001-11-29 Fernando Perez <fperez@colorado.edu>
4514 2001-11-29 Fernando Perez <fperez@colorado.edu>
4510
4515
4511 * Got input history working. Changed output history variables from
4516 * Got input history working. Changed output history variables from
4512 _p to _o so that _i is for input and _o for output. Just cleaner
4517 _p to _o so that _i is for input and _o for output. Just cleaner
4513 convention.
4518 convention.
4514
4519
4515 * Implemented parametric aliases. This pretty much allows the
4520 * Implemented parametric aliases. This pretty much allows the
4516 alias system to offer full-blown shell convenience, I think.
4521 alias system to offer full-blown shell convenience, I think.
4517
4522
4518 * Version 0.1.17 released, 0.1.18 opened.
4523 * Version 0.1.17 released, 0.1.18 opened.
4519
4524
4520 * dot_ipython/ipythonrc (alias): added documentation.
4525 * dot_ipython/ipythonrc (alias): added documentation.
4521 (xcolor): Fixed small bug (xcolors -> xcolor)
4526 (xcolor): Fixed small bug (xcolors -> xcolor)
4522
4527
4523 * Changed the alias system. Now alias is a magic command to define
4528 * Changed the alias system. Now alias is a magic command to define
4524 aliases just like the shell. Rationale: the builtin magics should
4529 aliases just like the shell. Rationale: the builtin magics should
4525 be there for things deeply connected to IPython's
4530 be there for things deeply connected to IPython's
4526 architecture. And this is a much lighter system for what I think
4531 architecture. And this is a much lighter system for what I think
4527 is the really important feature: allowing users to define quickly
4532 is the really important feature: allowing users to define quickly
4528 magics that will do shell things for them, so they can customize
4533 magics that will do shell things for them, so they can customize
4529 IPython easily to match their work habits. If someone is really
4534 IPython easily to match their work habits. If someone is really
4530 desperate to have another name for a builtin alias, they can
4535 desperate to have another name for a builtin alias, they can
4531 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4536 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4532 works.
4537 works.
4533
4538
4534 2001-11-28 Fernando Perez <fperez@colorado.edu>
4539 2001-11-28 Fernando Perez <fperez@colorado.edu>
4535
4540
4536 * Changed @file so that it opens the source file at the proper
4541 * Changed @file so that it opens the source file at the proper
4537 line. Since it uses less, if your EDITOR environment is
4542 line. Since it uses less, if your EDITOR environment is
4538 configured, typing v will immediately open your editor of choice
4543 configured, typing v will immediately open your editor of choice
4539 right at the line where the object is defined. Not as quick as
4544 right at the line where the object is defined. Not as quick as
4540 having a direct @edit command, but for all intents and purposes it
4545 having a direct @edit command, but for all intents and purposes it
4541 works. And I don't have to worry about writing @edit to deal with
4546 works. And I don't have to worry about writing @edit to deal with
4542 all the editors, less does that.
4547 all the editors, less does that.
4543
4548
4544 * Version 0.1.16 released, 0.1.17 opened.
4549 * Version 0.1.16 released, 0.1.17 opened.
4545
4550
4546 * Fixed some nasty bugs in the page/page_dumb combo that could
4551 * Fixed some nasty bugs in the page/page_dumb combo that could
4547 crash IPython.
4552 crash IPython.
4548
4553
4549 2001-11-27 Fernando Perez <fperez@colorado.edu>
4554 2001-11-27 Fernando Perez <fperez@colorado.edu>
4550
4555
4551 * Version 0.1.15 released, 0.1.16 opened.
4556 * Version 0.1.15 released, 0.1.16 opened.
4552
4557
4553 * Finally got ? and ?? to work for undefined things: now it's
4558 * Finally got ? and ?? to work for undefined things: now it's
4554 possible to type {}.get? and get information about the get method
4559 possible to type {}.get? and get information about the get method
4555 of dicts, or os.path? even if only os is defined (so technically
4560 of dicts, or os.path? even if only os is defined (so technically
4556 os.path isn't). Works at any level. For example, after import os,
4561 os.path isn't). Works at any level. For example, after import os,
4557 os?, os.path?, os.path.abspath? all work. This is great, took some
4562 os?, os.path?, os.path.abspath? all work. This is great, took some
4558 work in _ofind.
4563 work in _ofind.
4559
4564
4560 * Fixed more bugs with logging. The sanest way to do it was to add
4565 * Fixed more bugs with logging. The sanest way to do it was to add
4561 to @log a 'mode' parameter. Killed two in one shot (this mode
4566 to @log a 'mode' parameter. Killed two in one shot (this mode
4562 option was a request of Janko's). I think it's finally clean
4567 option was a request of Janko's). I think it's finally clean
4563 (famous last words).
4568 (famous last words).
4564
4569
4565 * Added a page_dumb() pager which does a decent job of paging on
4570 * Added a page_dumb() pager which does a decent job of paging on
4566 screen, if better things (like less) aren't available. One less
4571 screen, if better things (like less) aren't available. One less
4567 unix dependency (someday maybe somebody will port this to
4572 unix dependency (someday maybe somebody will port this to
4568 windows).
4573 windows).
4569
4574
4570 * Fixed problem in magic_log: would lock of logging out if log
4575 * Fixed problem in magic_log: would lock of logging out if log
4571 creation failed (because it would still think it had succeeded).
4576 creation failed (because it would still think it had succeeded).
4572
4577
4573 * Improved the page() function using curses to auto-detect screen
4578 * Improved the page() function using curses to auto-detect screen
4574 size. Now it can make a much better decision on whether to print
4579 size. Now it can make a much better decision on whether to print
4575 or page a string. Option screen_length was modified: a value 0
4580 or page a string. Option screen_length was modified: a value 0
4576 means auto-detect, and that's the default now.
4581 means auto-detect, and that's the default now.
4577
4582
4578 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4583 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4579 go out. I'll test it for a few days, then talk to Janko about
4584 go out. I'll test it for a few days, then talk to Janko about
4580 licences and announce it.
4585 licences and announce it.
4581
4586
4582 * Fixed the length of the auto-generated ---> prompt which appears
4587 * Fixed the length of the auto-generated ---> prompt which appears
4583 for auto-parens and auto-quotes. Getting this right isn't trivial,
4588 for auto-parens and auto-quotes. Getting this right isn't trivial,
4584 with all the color escapes, different prompt types and optional
4589 with all the color escapes, different prompt types and optional
4585 separators. But it seems to be working in all the combinations.
4590 separators. But it seems to be working in all the combinations.
4586
4591
4587 2001-11-26 Fernando Perez <fperez@colorado.edu>
4592 2001-11-26 Fernando Perez <fperez@colorado.edu>
4588
4593
4589 * Wrote a regexp filter to get option types from the option names
4594 * Wrote a regexp filter to get option types from the option names
4590 string. This eliminates the need to manually keep two duplicate
4595 string. This eliminates the need to manually keep two duplicate
4591 lists.
4596 lists.
4592
4597
4593 * Removed the unneeded check_option_names. Now options are handled
4598 * Removed the unneeded check_option_names. Now options are handled
4594 in a much saner manner and it's easy to visually check that things
4599 in a much saner manner and it's easy to visually check that things
4595 are ok.
4600 are ok.
4596
4601
4597 * Updated version numbers on all files I modified to carry a
4602 * Updated version numbers on all files I modified to carry a
4598 notice so Janko and Nathan have clear version markers.
4603 notice so Janko and Nathan have clear version markers.
4599
4604
4600 * Updated docstring for ultraTB with my changes. I should send
4605 * Updated docstring for ultraTB with my changes. I should send
4601 this to Nathan.
4606 this to Nathan.
4602
4607
4603 * Lots of small fixes. Ran everything through pychecker again.
4608 * Lots of small fixes. Ran everything through pychecker again.
4604
4609
4605 * Made loading of deep_reload an cmd line option. If it's not too
4610 * Made loading of deep_reload an cmd line option. If it's not too
4606 kosher, now people can just disable it. With -nodeep_reload it's
4611 kosher, now people can just disable it. With -nodeep_reload it's
4607 still available as dreload(), it just won't overwrite reload().
4612 still available as dreload(), it just won't overwrite reload().
4608
4613
4609 * Moved many options to the no| form (-opt and -noopt
4614 * Moved many options to the no| form (-opt and -noopt
4610 accepted). Cleaner.
4615 accepted). Cleaner.
4611
4616
4612 * Changed magic_log so that if called with no parameters, it uses
4617 * Changed magic_log so that if called with no parameters, it uses
4613 'rotate' mode. That way auto-generated logs aren't automatically
4618 'rotate' mode. That way auto-generated logs aren't automatically
4614 over-written. For normal logs, now a backup is made if it exists
4619 over-written. For normal logs, now a backup is made if it exists
4615 (only 1 level of backups). A new 'backup' mode was added to the
4620 (only 1 level of backups). A new 'backup' mode was added to the
4616 Logger class to support this. This was a request by Janko.
4621 Logger class to support this. This was a request by Janko.
4617
4622
4618 * Added @logoff/@logon to stop/restart an active log.
4623 * Added @logoff/@logon to stop/restart an active log.
4619
4624
4620 * Fixed a lot of bugs in log saving/replay. It was pretty
4625 * Fixed a lot of bugs in log saving/replay. It was pretty
4621 broken. Now special lines (!@,/) appear properly in the command
4626 broken. Now special lines (!@,/) appear properly in the command
4622 history after a log replay.
4627 history after a log replay.
4623
4628
4624 * Tried and failed to implement full session saving via pickle. My
4629 * Tried and failed to implement full session saving via pickle. My
4625 idea was to pickle __main__.__dict__, but modules can't be
4630 idea was to pickle __main__.__dict__, but modules can't be
4626 pickled. This would be a better alternative to replaying logs, but
4631 pickled. This would be a better alternative to replaying logs, but
4627 seems quite tricky to get to work. Changed -session to be called
4632 seems quite tricky to get to work. Changed -session to be called
4628 -logplay, which more accurately reflects what it does. And if we
4633 -logplay, which more accurately reflects what it does. And if we
4629 ever get real session saving working, -session is now available.
4634 ever get real session saving working, -session is now available.
4630
4635
4631 * Implemented color schemes for prompts also. As for tracebacks,
4636 * Implemented color schemes for prompts also. As for tracebacks,
4632 currently only NoColor and Linux are supported. But now the
4637 currently only NoColor and Linux are supported. But now the
4633 infrastructure is in place, based on a generic ColorScheme
4638 infrastructure is in place, based on a generic ColorScheme
4634 class. So writing and activating new schemes both for the prompts
4639 class. So writing and activating new schemes both for the prompts
4635 and the tracebacks should be straightforward.
4640 and the tracebacks should be straightforward.
4636
4641
4637 * Version 0.1.13 released, 0.1.14 opened.
4642 * Version 0.1.13 released, 0.1.14 opened.
4638
4643
4639 * Changed handling of options for output cache. Now counter is
4644 * Changed handling of options for output cache. Now counter is
4640 hardwired starting at 1 and one specifies the maximum number of
4645 hardwired starting at 1 and one specifies the maximum number of
4641 entries *in the outcache* (not the max prompt counter). This is
4646 entries *in the outcache* (not the max prompt counter). This is
4642 much better, since many statements won't increase the cache
4647 much better, since many statements won't increase the cache
4643 count. It also eliminated some confusing options, now there's only
4648 count. It also eliminated some confusing options, now there's only
4644 one: cache_size.
4649 one: cache_size.
4645
4650
4646 * Added 'alias' magic function and magic_alias option in the
4651 * Added 'alias' magic function and magic_alias option in the
4647 ipythonrc file. Now the user can easily define whatever names he
4652 ipythonrc file. Now the user can easily define whatever names he
4648 wants for the magic functions without having to play weird
4653 wants for the magic functions without having to play weird
4649 namespace games. This gives IPython a real shell-like feel.
4654 namespace games. This gives IPython a real shell-like feel.
4650
4655
4651 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
4656 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
4652 @ or not).
4657 @ or not).
4653
4658
4654 This was one of the last remaining 'visible' bugs (that I know
4659 This was one of the last remaining 'visible' bugs (that I know
4655 of). I think if I can clean up the session loading so it works
4660 of). I think if I can clean up the session loading so it works
4656 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
4661 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
4657 about licensing).
4662 about licensing).
4658
4663
4659 2001-11-25 Fernando Perez <fperez@colorado.edu>
4664 2001-11-25 Fernando Perez <fperez@colorado.edu>
4660
4665
4661 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
4666 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
4662 there's a cleaner distinction between what ? and ?? show.
4667 there's a cleaner distinction between what ? and ?? show.
4663
4668
4664 * Added screen_length option. Now the user can define his own
4669 * Added screen_length option. Now the user can define his own
4665 screen size for page() operations.
4670 screen size for page() operations.
4666
4671
4667 * Implemented magic shell-like functions with automatic code
4672 * Implemented magic shell-like functions with automatic code
4668 generation. Now adding another function is just a matter of adding
4673 generation. Now adding another function is just a matter of adding
4669 an entry to a dict, and the function is dynamically generated at
4674 an entry to a dict, and the function is dynamically generated at
4670 run-time. Python has some really cool features!
4675 run-time. Python has some really cool features!
4671
4676
4672 * Renamed many options to cleanup conventions a little. Now all
4677 * Renamed many options to cleanup conventions a little. Now all
4673 are lowercase, and only underscores where needed. Also in the code
4678 are lowercase, and only underscores where needed. Also in the code
4674 option name tables are clearer.
4679 option name tables are clearer.
4675
4680
4676 * Changed prompts a little. Now input is 'In [n]:' instead of
4681 * Changed prompts a little. Now input is 'In [n]:' instead of
4677 'In[n]:='. This allows it the numbers to be aligned with the
4682 'In[n]:='. This allows it the numbers to be aligned with the
4678 Out[n] numbers, and removes usage of ':=' which doesn't exist in
4683 Out[n] numbers, and removes usage of ':=' which doesn't exist in
4679 Python (it was a Mathematica thing). The '...' continuation prompt
4684 Python (it was a Mathematica thing). The '...' continuation prompt
4680 was also changed a little to align better.
4685 was also changed a little to align better.
4681
4686
4682 * Fixed bug when flushing output cache. Not all _p<n> variables
4687 * Fixed bug when flushing output cache. Not all _p<n> variables
4683 exist, so their deletion needs to be wrapped in a try:
4688 exist, so their deletion needs to be wrapped in a try:
4684
4689
4685 * Figured out how to properly use inspect.formatargspec() (it
4690 * Figured out how to properly use inspect.formatargspec() (it
4686 requires the args preceded by *). So I removed all the code from
4691 requires the args preceded by *). So I removed all the code from
4687 _get_pdef in Magic, which was just replicating that.
4692 _get_pdef in Magic, which was just replicating that.
4688
4693
4689 * Added test to prefilter to allow redefining magic function names
4694 * Added test to prefilter to allow redefining magic function names
4690 as variables. This is ok, since the @ form is always available,
4695 as variables. This is ok, since the @ form is always available,
4691 but whe should allow the user to define a variable called 'ls' if
4696 but whe should allow the user to define a variable called 'ls' if
4692 he needs it.
4697 he needs it.
4693
4698
4694 * Moved the ToDo information from README into a separate ToDo.
4699 * Moved the ToDo information from README into a separate ToDo.
4695
4700
4696 * General code cleanup and small bugfixes. I think it's close to a
4701 * General code cleanup and small bugfixes. I think it's close to a
4697 state where it can be released, obviously with a big 'beta'
4702 state where it can be released, obviously with a big 'beta'
4698 warning on it.
4703 warning on it.
4699
4704
4700 * Got the magic function split to work. Now all magics are defined
4705 * Got the magic function split to work. Now all magics are defined
4701 in a separate class. It just organizes things a bit, and now
4706 in a separate class. It just organizes things a bit, and now
4702 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
4707 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
4703 was too long).
4708 was too long).
4704
4709
4705 * Changed @clear to @reset to avoid potential confusions with
4710 * Changed @clear to @reset to avoid potential confusions with
4706 the shell command clear. Also renamed @cl to @clear, which does
4711 the shell command clear. Also renamed @cl to @clear, which does
4707 exactly what people expect it to from their shell experience.
4712 exactly what people expect it to from their shell experience.
4708
4713
4709 Added a check to the @reset command (since it's so
4714 Added a check to the @reset command (since it's so
4710 destructive, it's probably a good idea to ask for confirmation).
4715 destructive, it's probably a good idea to ask for confirmation).
4711 But now reset only works for full namespace resetting. Since the
4716 But now reset only works for full namespace resetting. Since the
4712 del keyword is already there for deleting a few specific
4717 del keyword is already there for deleting a few specific
4713 variables, I don't see the point of having a redundant magic
4718 variables, I don't see the point of having a redundant magic
4714 function for the same task.
4719 function for the same task.
4715
4720
4716 2001-11-24 Fernando Perez <fperez@colorado.edu>
4721 2001-11-24 Fernando Perez <fperez@colorado.edu>
4717
4722
4718 * Updated the builtin docs (esp. the ? ones).
4723 * Updated the builtin docs (esp. the ? ones).
4719
4724
4720 * Ran all the code through pychecker. Not terribly impressed with
4725 * Ran all the code through pychecker. Not terribly impressed with
4721 it: lots of spurious warnings and didn't really find anything of
4726 it: lots of spurious warnings and didn't really find anything of
4722 substance (just a few modules being imported and not used).
4727 substance (just a few modules being imported and not used).
4723
4728
4724 * Implemented the new ultraTB functionality into IPython. New
4729 * Implemented the new ultraTB functionality into IPython. New
4725 option: xcolors. This chooses color scheme. xmode now only selects
4730 option: xcolors. This chooses color scheme. xmode now only selects
4726 between Plain and Verbose. Better orthogonality.
4731 between Plain and Verbose. Better orthogonality.
4727
4732
4728 * Large rewrite of ultraTB. Much cleaner now, with a separation of
4733 * Large rewrite of ultraTB. Much cleaner now, with a separation of
4729 mode and color scheme for the exception handlers. Now it's
4734 mode and color scheme for the exception handlers. Now it's
4730 possible to have the verbose traceback with no coloring.
4735 possible to have the verbose traceback with no coloring.
4731
4736
4732 2001-11-23 Fernando Perez <fperez@colorado.edu>
4737 2001-11-23 Fernando Perez <fperez@colorado.edu>
4733
4738
4734 * Version 0.1.12 released, 0.1.13 opened.
4739 * Version 0.1.12 released, 0.1.13 opened.
4735
4740
4736 * Removed option to set auto-quote and auto-paren escapes by
4741 * Removed option to set auto-quote and auto-paren escapes by
4737 user. The chances of breaking valid syntax are just too high. If
4742 user. The chances of breaking valid syntax are just too high. If
4738 someone *really* wants, they can always dig into the code.
4743 someone *really* wants, they can always dig into the code.
4739
4744
4740 * Made prompt separators configurable.
4745 * Made prompt separators configurable.
4741
4746
4742 2001-11-22 Fernando Perez <fperez@colorado.edu>
4747 2001-11-22 Fernando Perez <fperez@colorado.edu>
4743
4748
4744 * Small bugfixes in many places.
4749 * Small bugfixes in many places.
4745
4750
4746 * Removed the MyCompleter class from ipplib. It seemed redundant
4751 * Removed the MyCompleter class from ipplib. It seemed redundant
4747 with the C-p,C-n history search functionality. Less code to
4752 with the C-p,C-n history search functionality. Less code to
4748 maintain.
4753 maintain.
4749
4754
4750 * Moved all the original ipython.py code into ipythonlib.py. Right
4755 * Moved all the original ipython.py code into ipythonlib.py. Right
4751 now it's just one big dump into a function called make_IPython, so
4756 now it's just one big dump into a function called make_IPython, so
4752 no real modularity has been gained. But at least it makes the
4757 no real modularity has been gained. But at least it makes the
4753 wrapper script tiny, and since ipythonlib is a module, it gets
4758 wrapper script tiny, and since ipythonlib is a module, it gets
4754 compiled and startup is much faster.
4759 compiled and startup is much faster.
4755
4760
4756 This is a reasobably 'deep' change, so we should test it for a
4761 This is a reasobably 'deep' change, so we should test it for a
4757 while without messing too much more with the code.
4762 while without messing too much more with the code.
4758
4763
4759 2001-11-21 Fernando Perez <fperez@colorado.edu>
4764 2001-11-21 Fernando Perez <fperez@colorado.edu>
4760
4765
4761 * Version 0.1.11 released, 0.1.12 opened for further work.
4766 * Version 0.1.11 released, 0.1.12 opened for further work.
4762
4767
4763 * Removed dependency on Itpl. It was only needed in one place. It
4768 * Removed dependency on Itpl. It was only needed in one place. It
4764 would be nice if this became part of python, though. It makes life
4769 would be nice if this became part of python, though. It makes life
4765 *a lot* easier in some cases.
4770 *a lot* easier in some cases.
4766
4771
4767 * Simplified the prefilter code a bit. Now all handlers are
4772 * Simplified the prefilter code a bit. Now all handlers are
4768 expected to explicitly return a value (at least a blank string).
4773 expected to explicitly return a value (at least a blank string).
4769
4774
4770 * Heavy edits in ipplib. Removed the help system altogether. Now
4775 * Heavy edits in ipplib. Removed the help system altogether. Now
4771 obj?/?? is used for inspecting objects, a magic @doc prints
4776 obj?/?? is used for inspecting objects, a magic @doc prints
4772 docstrings, and full-blown Python help is accessed via the 'help'
4777 docstrings, and full-blown Python help is accessed via the 'help'
4773 keyword. This cleans up a lot of code (less to maintain) and does
4778 keyword. This cleans up a lot of code (less to maintain) and does
4774 the job. Since 'help' is now a standard Python component, might as
4779 the job. Since 'help' is now a standard Python component, might as
4775 well use it and remove duplicate functionality.
4780 well use it and remove duplicate functionality.
4776
4781
4777 Also removed the option to use ipplib as a standalone program. By
4782 Also removed the option to use ipplib as a standalone program. By
4778 now it's too dependent on other parts of IPython to function alone.
4783 now it's too dependent on other parts of IPython to function alone.
4779
4784
4780 * Fixed bug in genutils.pager. It would crash if the pager was
4785 * Fixed bug in genutils.pager. It would crash if the pager was
4781 exited immediately after opening (broken pipe).
4786 exited immediately after opening (broken pipe).
4782
4787
4783 * Trimmed down the VerboseTB reporting a little. The header is
4788 * Trimmed down the VerboseTB reporting a little. The header is
4784 much shorter now and the repeated exception arguments at the end
4789 much shorter now and the repeated exception arguments at the end
4785 have been removed. For interactive use the old header seemed a bit
4790 have been removed. For interactive use the old header seemed a bit
4786 excessive.
4791 excessive.
4787
4792
4788 * Fixed small bug in output of @whos for variables with multi-word
4793 * Fixed small bug in output of @whos for variables with multi-word
4789 types (only first word was displayed).
4794 types (only first word was displayed).
4790
4795
4791 2001-11-17 Fernando Perez <fperez@colorado.edu>
4796 2001-11-17 Fernando Perez <fperez@colorado.edu>
4792
4797
4793 * Version 0.1.10 released, 0.1.11 opened for further work.
4798 * Version 0.1.10 released, 0.1.11 opened for further work.
4794
4799
4795 * Modified dirs and friends. dirs now *returns* the stack (not
4800 * Modified dirs and friends. dirs now *returns* the stack (not
4796 prints), so one can manipulate it as a variable. Convenient to
4801 prints), so one can manipulate it as a variable. Convenient to
4797 travel along many directories.
4802 travel along many directories.
4798
4803
4799 * Fixed bug in magic_pdef: would only work with functions with
4804 * Fixed bug in magic_pdef: would only work with functions with
4800 arguments with default values.
4805 arguments with default values.
4801
4806
4802 2001-11-14 Fernando Perez <fperez@colorado.edu>
4807 2001-11-14 Fernando Perez <fperez@colorado.edu>
4803
4808
4804 * Added the PhysicsInput stuff to dot_ipython so it ships as an
4809 * Added the PhysicsInput stuff to dot_ipython so it ships as an
4805 example with IPython. Various other minor fixes and cleanups.
4810 example with IPython. Various other minor fixes and cleanups.
4806
4811
4807 * Version 0.1.9 released, 0.1.10 opened for further work.
4812 * Version 0.1.9 released, 0.1.10 opened for further work.
4808
4813
4809 * Added sys.path to the list of directories searched in the
4814 * Added sys.path to the list of directories searched in the
4810 execfile= option. It used to be the current directory and the
4815 execfile= option. It used to be the current directory and the
4811 user's IPYTHONDIR only.
4816 user's IPYTHONDIR only.
4812
4817
4813 2001-11-13 Fernando Perez <fperez@colorado.edu>
4818 2001-11-13 Fernando Perez <fperez@colorado.edu>
4814
4819
4815 * Reinstated the raw_input/prefilter separation that Janko had
4820 * Reinstated the raw_input/prefilter separation that Janko had
4816 initially. This gives a more convenient setup for extending the
4821 initially. This gives a more convenient setup for extending the
4817 pre-processor from the outside: raw_input always gets a string,
4822 pre-processor from the outside: raw_input always gets a string,
4818 and prefilter has to process it. We can then redefine prefilter
4823 and prefilter has to process it. We can then redefine prefilter
4819 from the outside and implement extensions for special
4824 from the outside and implement extensions for special
4820 purposes.
4825 purposes.
4821
4826
4822 Today I got one for inputting PhysicalQuantity objects
4827 Today I got one for inputting PhysicalQuantity objects
4823 (from Scientific) without needing any function calls at
4828 (from Scientific) without needing any function calls at
4824 all. Extremely convenient, and it's all done as a user-level
4829 all. Extremely convenient, and it's all done as a user-level
4825 extension (no IPython code was touched). Now instead of:
4830 extension (no IPython code was touched). Now instead of:
4826 a = PhysicalQuantity(4.2,'m/s**2')
4831 a = PhysicalQuantity(4.2,'m/s**2')
4827 one can simply say
4832 one can simply say
4828 a = 4.2 m/s**2
4833 a = 4.2 m/s**2
4829 or even
4834 or even
4830 a = 4.2 m/s^2
4835 a = 4.2 m/s^2
4831
4836
4832 I use this, but it's also a proof of concept: IPython really is
4837 I use this, but it's also a proof of concept: IPython really is
4833 fully user-extensible, even at the level of the parsing of the
4838 fully user-extensible, even at the level of the parsing of the
4834 command line. It's not trivial, but it's perfectly doable.
4839 command line. It's not trivial, but it's perfectly doable.
4835
4840
4836 * Added 'add_flip' method to inclusion conflict resolver. Fixes
4841 * Added 'add_flip' method to inclusion conflict resolver. Fixes
4837 the problem of modules being loaded in the inverse order in which
4842 the problem of modules being loaded in the inverse order in which
4838 they were defined in
4843 they were defined in
4839
4844
4840 * Version 0.1.8 released, 0.1.9 opened for further work.
4845 * Version 0.1.8 released, 0.1.9 opened for further work.
4841
4846
4842 * Added magics pdef, source and file. They respectively show the
4847 * Added magics pdef, source and file. They respectively show the
4843 definition line ('prototype' in C), source code and full python
4848 definition line ('prototype' in C), source code and full python
4844 file for any callable object. The object inspector oinfo uses
4849 file for any callable object. The object inspector oinfo uses
4845 these to show the same information.
4850 these to show the same information.
4846
4851
4847 * Version 0.1.7 released, 0.1.8 opened for further work.
4852 * Version 0.1.7 released, 0.1.8 opened for further work.
4848
4853
4849 * Separated all the magic functions into a class called Magic. The
4854 * Separated all the magic functions into a class called Magic. The
4850 InteractiveShell class was becoming too big for Xemacs to handle
4855 InteractiveShell class was becoming too big for Xemacs to handle
4851 (de-indenting a line would lock it up for 10 seconds while it
4856 (de-indenting a line would lock it up for 10 seconds while it
4852 backtracked on the whole class!)
4857 backtracked on the whole class!)
4853
4858
4854 FIXME: didn't work. It can be done, but right now namespaces are
4859 FIXME: didn't work. It can be done, but right now namespaces are
4855 all messed up. Do it later (reverted it for now, so at least
4860 all messed up. Do it later (reverted it for now, so at least
4856 everything works as before).
4861 everything works as before).
4857
4862
4858 * Got the object introspection system (magic_oinfo) working! I
4863 * Got the object introspection system (magic_oinfo) working! I
4859 think this is pretty much ready for release to Janko, so he can
4864 think this is pretty much ready for release to Janko, so he can
4860 test it for a while and then announce it. Pretty much 100% of what
4865 test it for a while and then announce it. Pretty much 100% of what
4861 I wanted for the 'phase 1' release is ready. Happy, tired.
4866 I wanted for the 'phase 1' release is ready. Happy, tired.
4862
4867
4863 2001-11-12 Fernando Perez <fperez@colorado.edu>
4868 2001-11-12 Fernando Perez <fperez@colorado.edu>
4864
4869
4865 * Version 0.1.6 released, 0.1.7 opened for further work.
4870 * Version 0.1.6 released, 0.1.7 opened for further work.
4866
4871
4867 * Fixed bug in printing: it used to test for truth before
4872 * Fixed bug in printing: it used to test for truth before
4868 printing, so 0 wouldn't print. Now checks for None.
4873 printing, so 0 wouldn't print. Now checks for None.
4869
4874
4870 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
4875 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
4871 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
4876 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
4872 reaches by hand into the outputcache. Think of a better way to do
4877 reaches by hand into the outputcache. Think of a better way to do
4873 this later.
4878 this later.
4874
4879
4875 * Various small fixes thanks to Nathan's comments.
4880 * Various small fixes thanks to Nathan's comments.
4876
4881
4877 * Changed magic_pprint to magic_Pprint. This way it doesn't
4882 * Changed magic_pprint to magic_Pprint. This way it doesn't
4878 collide with pprint() and the name is consistent with the command
4883 collide with pprint() and the name is consistent with the command
4879 line option.
4884 line option.
4880
4885
4881 * Changed prompt counter behavior to be fully like
4886 * Changed prompt counter behavior to be fully like
4882 Mathematica's. That is, even input that doesn't return a result
4887 Mathematica's. That is, even input that doesn't return a result
4883 raises the prompt counter. The old behavior was kind of confusing
4888 raises the prompt counter. The old behavior was kind of confusing
4884 (getting the same prompt number several times if the operation
4889 (getting the same prompt number several times if the operation
4885 didn't return a result).
4890 didn't return a result).
4886
4891
4887 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
4892 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
4888
4893
4889 * Fixed -Classic mode (wasn't working anymore).
4894 * Fixed -Classic mode (wasn't working anymore).
4890
4895
4891 * Added colored prompts using Nathan's new code. Colors are
4896 * Added colored prompts using Nathan's new code. Colors are
4892 currently hardwired, they can be user-configurable. For
4897 currently hardwired, they can be user-configurable. For
4893 developers, they can be chosen in file ipythonlib.py, at the
4898 developers, they can be chosen in file ipythonlib.py, at the
4894 beginning of the CachedOutput class def.
4899 beginning of the CachedOutput class def.
4895
4900
4896 2001-11-11 Fernando Perez <fperez@colorado.edu>
4901 2001-11-11 Fernando Perez <fperez@colorado.edu>
4897
4902
4898 * Version 0.1.5 released, 0.1.6 opened for further work.
4903 * Version 0.1.5 released, 0.1.6 opened for further work.
4899
4904
4900 * Changed magic_env to *return* the environment as a dict (not to
4905 * Changed magic_env to *return* the environment as a dict (not to
4901 print it). This way it prints, but it can also be processed.
4906 print it). This way it prints, but it can also be processed.
4902
4907
4903 * Added Verbose exception reporting to interactive
4908 * Added Verbose exception reporting to interactive
4904 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
4909 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
4905 traceback. Had to make some changes to the ultraTB file. This is
4910 traceback. Had to make some changes to the ultraTB file. This is
4906 probably the last 'big' thing in my mental todo list. This ties
4911 probably the last 'big' thing in my mental todo list. This ties
4907 in with the next entry:
4912 in with the next entry:
4908
4913
4909 * Changed -Xi and -Xf to a single -xmode option. Now all the user
4914 * Changed -Xi and -Xf to a single -xmode option. Now all the user
4910 has to specify is Plain, Color or Verbose for all exception
4915 has to specify is Plain, Color or Verbose for all exception
4911 handling.
4916 handling.
4912
4917
4913 * Removed ShellServices option. All this can really be done via
4918 * Removed ShellServices option. All this can really be done via
4914 the magic system. It's easier to extend, cleaner and has automatic
4919 the magic system. It's easier to extend, cleaner and has automatic
4915 namespace protection and documentation.
4920 namespace protection and documentation.
4916
4921
4917 2001-11-09 Fernando Perez <fperez@colorado.edu>
4922 2001-11-09 Fernando Perez <fperez@colorado.edu>
4918
4923
4919 * Fixed bug in output cache flushing (missing parameter to
4924 * Fixed bug in output cache flushing (missing parameter to
4920 __init__). Other small bugs fixed (found using pychecker).
4925 __init__). Other small bugs fixed (found using pychecker).
4921
4926
4922 * Version 0.1.4 opened for bugfixing.
4927 * Version 0.1.4 opened for bugfixing.
4923
4928
4924 2001-11-07 Fernando Perez <fperez@colorado.edu>
4929 2001-11-07 Fernando Perez <fperez@colorado.edu>
4925
4930
4926 * Version 0.1.3 released, mainly because of the raw_input bug.
4931 * Version 0.1.3 released, mainly because of the raw_input bug.
4927
4932
4928 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
4933 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
4929 and when testing for whether things were callable, a call could
4934 and when testing for whether things were callable, a call could
4930 actually be made to certain functions. They would get called again
4935 actually be made to certain functions. They would get called again
4931 once 'really' executed, with a resulting double call. A disaster
4936 once 'really' executed, with a resulting double call. A disaster
4932 in many cases (list.reverse() would never work!).
4937 in many cases (list.reverse() would never work!).
4933
4938
4934 * Removed prefilter() function, moved its code to raw_input (which
4939 * Removed prefilter() function, moved its code to raw_input (which
4935 after all was just a near-empty caller for prefilter). This saves
4940 after all was just a near-empty caller for prefilter). This saves
4936 a function call on every prompt, and simplifies the class a tiny bit.
4941 a function call on every prompt, and simplifies the class a tiny bit.
4937
4942
4938 * Fix _ip to __ip name in magic example file.
4943 * Fix _ip to __ip name in magic example file.
4939
4944
4940 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
4945 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
4941 work with non-gnu versions of tar.
4946 work with non-gnu versions of tar.
4942
4947
4943 2001-11-06 Fernando Perez <fperez@colorado.edu>
4948 2001-11-06 Fernando Perez <fperez@colorado.edu>
4944
4949
4945 * Version 0.1.2. Just to keep track of the recent changes.
4950 * Version 0.1.2. Just to keep track of the recent changes.
4946
4951
4947 * Fixed nasty bug in output prompt routine. It used to check 'if
4952 * Fixed nasty bug in output prompt routine. It used to check 'if
4948 arg != None...'. Problem is, this fails if arg implements a
4953 arg != None...'. Problem is, this fails if arg implements a
4949 special comparison (__cmp__) which disallows comparing to
4954 special comparison (__cmp__) which disallows comparing to
4950 None. Found it when trying to use the PhysicalQuantity module from
4955 None. Found it when trying to use the PhysicalQuantity module from
4951 ScientificPython.
4956 ScientificPython.
4952
4957
4953 2001-11-05 Fernando Perez <fperez@colorado.edu>
4958 2001-11-05 Fernando Perez <fperez@colorado.edu>
4954
4959
4955 * Also added dirs. Now the pushd/popd/dirs family functions
4960 * Also added dirs. Now the pushd/popd/dirs family functions
4956 basically like the shell, with the added convenience of going home
4961 basically like the shell, with the added convenience of going home
4957 when called with no args.
4962 when called with no args.
4958
4963
4959 * pushd/popd slightly modified to mimic shell behavior more
4964 * pushd/popd slightly modified to mimic shell behavior more
4960 closely.
4965 closely.
4961
4966
4962 * Added env,pushd,popd from ShellServices as magic functions. I
4967 * Added env,pushd,popd from ShellServices as magic functions. I
4963 think the cleanest will be to port all desired functions from
4968 think the cleanest will be to port all desired functions from
4964 ShellServices as magics and remove ShellServices altogether. This
4969 ShellServices as magics and remove ShellServices altogether. This
4965 will provide a single, clean way of adding functionality
4970 will provide a single, clean way of adding functionality
4966 (shell-type or otherwise) to IP.
4971 (shell-type or otherwise) to IP.
4967
4972
4968 2001-11-04 Fernando Perez <fperez@colorado.edu>
4973 2001-11-04 Fernando Perez <fperez@colorado.edu>
4969
4974
4970 * Added .ipython/ directory to sys.path. This way users can keep
4975 * Added .ipython/ directory to sys.path. This way users can keep
4971 customizations there and access them via import.
4976 customizations there and access them via import.
4972
4977
4973 2001-11-03 Fernando Perez <fperez@colorado.edu>
4978 2001-11-03 Fernando Perez <fperez@colorado.edu>
4974
4979
4975 * Opened version 0.1.1 for new changes.
4980 * Opened version 0.1.1 for new changes.
4976
4981
4977 * Changed version number to 0.1.0: first 'public' release, sent to
4982 * Changed version number to 0.1.0: first 'public' release, sent to
4978 Nathan and Janko.
4983 Nathan and Janko.
4979
4984
4980 * Lots of small fixes and tweaks.
4985 * Lots of small fixes and tweaks.
4981
4986
4982 * Minor changes to whos format. Now strings are shown, snipped if
4987 * Minor changes to whos format. Now strings are shown, snipped if
4983 too long.
4988 too long.
4984
4989
4985 * Changed ShellServices to work on __main__ so they show up in @who
4990 * Changed ShellServices to work on __main__ so they show up in @who
4986
4991
4987 * Help also works with ? at the end of a line:
4992 * Help also works with ? at the end of a line:
4988 ?sin and sin?
4993 ?sin and sin?
4989 both produce the same effect. This is nice, as often I use the
4994 both produce the same effect. This is nice, as often I use the
4990 tab-complete to find the name of a method, but I used to then have
4995 tab-complete to find the name of a method, but I used to then have
4991 to go to the beginning of the line to put a ? if I wanted more
4996 to go to the beginning of the line to put a ? if I wanted more
4992 info. Now I can just add the ? and hit return. Convenient.
4997 info. Now I can just add the ? and hit return. Convenient.
4993
4998
4994 2001-11-02 Fernando Perez <fperez@colorado.edu>
4999 2001-11-02 Fernando Perez <fperez@colorado.edu>
4995
5000
4996 * Python version check (>=2.1) added.
5001 * Python version check (>=2.1) added.
4997
5002
4998 * Added LazyPython documentation. At this point the docs are quite
5003 * Added LazyPython documentation. At this point the docs are quite
4999 a mess. A cleanup is in order.
5004 a mess. A cleanup is in order.
5000
5005
5001 * Auto-installer created. For some bizarre reason, the zipfiles
5006 * Auto-installer created. For some bizarre reason, the zipfiles
5002 module isn't working on my system. So I made a tar version
5007 module isn't working on my system. So I made a tar version
5003 (hopefully the command line options in various systems won't kill
5008 (hopefully the command line options in various systems won't kill
5004 me).
5009 me).
5005
5010
5006 * Fixes to Struct in genutils. Now all dictionary-like methods are
5011 * Fixes to Struct in genutils. Now all dictionary-like methods are
5007 protected (reasonably).
5012 protected (reasonably).
5008
5013
5009 * Added pager function to genutils and changed ? to print usage
5014 * Added pager function to genutils and changed ? to print usage
5010 note through it (it was too long).
5015 note through it (it was too long).
5011
5016
5012 * Added the LazyPython functionality. Works great! I changed the
5017 * Added the LazyPython functionality. Works great! I changed the
5013 auto-quote escape to ';', it's on home row and next to '. But
5018 auto-quote escape to ';', it's on home row and next to '. But
5014 both auto-quote and auto-paren (still /) escapes are command-line
5019 both auto-quote and auto-paren (still /) escapes are command-line
5015 parameters.
5020 parameters.
5016
5021
5017
5022
5018 2001-11-01 Fernando Perez <fperez@colorado.edu>
5023 2001-11-01 Fernando Perez <fperez@colorado.edu>
5019
5024
5020 * Version changed to 0.0.7. Fairly large change: configuration now
5025 * Version changed to 0.0.7. Fairly large change: configuration now
5021 is all stored in a directory, by default .ipython. There, all
5026 is all stored in a directory, by default .ipython. There, all
5022 config files have normal looking names (not .names)
5027 config files have normal looking names (not .names)
5023
5028
5024 * Version 0.0.6 Released first to Lucas and Archie as a test
5029 * Version 0.0.6 Released first to Lucas and Archie as a test
5025 run. Since it's the first 'semi-public' release, change version to
5030 run. Since it's the first 'semi-public' release, change version to
5026 > 0.0.6 for any changes now.
5031 > 0.0.6 for any changes now.
5027
5032
5028 * Stuff I had put in the ipplib.py changelog:
5033 * Stuff I had put in the ipplib.py changelog:
5029
5034
5030 Changes to InteractiveShell:
5035 Changes to InteractiveShell:
5031
5036
5032 - Made the usage message a parameter.
5037 - Made the usage message a parameter.
5033
5038
5034 - Require the name of the shell variable to be given. It's a bit
5039 - Require the name of the shell variable to be given. It's a bit
5035 of a hack, but allows the name 'shell' not to be hardwire in the
5040 of a hack, but allows the name 'shell' not to be hardwire in the
5036 magic (@) handler, which is problematic b/c it requires
5041 magic (@) handler, which is problematic b/c it requires
5037 polluting the global namespace with 'shell'. This in turn is
5042 polluting the global namespace with 'shell'. This in turn is
5038 fragile: if a user redefines a variable called shell, things
5043 fragile: if a user redefines a variable called shell, things
5039 break.
5044 break.
5040
5045
5041 - magic @: all functions available through @ need to be defined
5046 - magic @: all functions available through @ need to be defined
5042 as magic_<name>, even though they can be called simply as
5047 as magic_<name>, even though they can be called simply as
5043 @<name>. This allows the special command @magic to gather
5048 @<name>. This allows the special command @magic to gather
5044 information automatically about all existing magic functions,
5049 information automatically about all existing magic functions,
5045 even if they are run-time user extensions, by parsing the shell
5050 even if they are run-time user extensions, by parsing the shell
5046 instance __dict__ looking for special magic_ names.
5051 instance __dict__ looking for special magic_ names.
5047
5052
5048 - mainloop: added *two* local namespace parameters. This allows
5053 - mainloop: added *two* local namespace parameters. This allows
5049 the class to differentiate between parameters which were there
5054 the class to differentiate between parameters which were there
5050 before and after command line initialization was processed. This
5055 before and after command line initialization was processed. This
5051 way, later @who can show things loaded at startup by the
5056 way, later @who can show things loaded at startup by the
5052 user. This trick was necessary to make session saving/reloading
5057 user. This trick was necessary to make session saving/reloading
5053 really work: ideally after saving/exiting/reloading a session,
5058 really work: ideally after saving/exiting/reloading a session,
5054 *everythin* should look the same, including the output of @who. I
5059 *everythin* should look the same, including the output of @who. I
5055 was only able to make this work with this double namespace
5060 was only able to make this work with this double namespace
5056 trick.
5061 trick.
5057
5062
5058 - added a header to the logfile which allows (almost) full
5063 - added a header to the logfile which allows (almost) full
5059 session restoring.
5064 session restoring.
5060
5065
5061 - prepend lines beginning with @ or !, with a and log
5066 - prepend lines beginning with @ or !, with a and log
5062 them. Why? !lines: may be useful to know what you did @lines:
5067 them. Why? !lines: may be useful to know what you did @lines:
5063 they may affect session state. So when restoring a session, at
5068 they may affect session state. So when restoring a session, at
5064 least inform the user of their presence. I couldn't quite get
5069 least inform the user of their presence. I couldn't quite get
5065 them to properly re-execute, but at least the user is warned.
5070 them to properly re-execute, but at least the user is warned.
5066
5071
5067 * Started ChangeLog.
5072 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now