##// END OF EJS Templates
generate_output_prompt hook
vivainio -
Show More
@@ -1,585 +1,588
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """
2 """
3 Classes for handling input/output prompts.
3 Classes for handling input/output prompts.
4
4
5 $Id: Prompts.py 1303 2006-05-17 03:39:29Z fperez $"""
5 $Id: Prompts.py 1366 2006-06-15 19:45:50Z vivainio $"""
6
6
7 #*****************************************************************************
7 #*****************************************************************************
8 # Copyright (C) 2001-2006 Fernando Perez <fperez@colorado.edu>
8 # Copyright (C) 2001-2006 Fernando Perez <fperez@colorado.edu>
9 #
9 #
10 # Distributed under the terms of the BSD License. The full license is in
10 # Distributed under the terms of the BSD License. The full license is in
11 # the file COPYING, distributed as part of this software.
11 # the file COPYING, distributed as part of this software.
12 #*****************************************************************************
12 #*****************************************************************************
13
13
14 from IPython import Release
14 from IPython import Release
15 __author__ = '%s <%s>' % Release.authors['Fernando']
15 __author__ = '%s <%s>' % Release.authors['Fernando']
16 __license__ = Release.license
16 __license__ = Release.license
17 __version__ = Release.version
17 __version__ = Release.version
18
18
19 #****************************************************************************
19 #****************************************************************************
20 # Required modules
20 # Required modules
21 import __builtin__
21 import __builtin__
22 import os
22 import os
23 import socket
23 import socket
24 import sys
24 import sys
25 import time
25 import time
26
26
27 # IPython's own
27 # IPython's own
28 from IPython import ColorANSI
28 from IPython import ColorANSI
29 from IPython.Itpl import ItplNS
29 from IPython.Itpl import ItplNS
30 from IPython.ipstruct import Struct
30 from IPython.ipstruct import Struct
31 from IPython.macro import Macro
31 from IPython.macro import Macro
32 from IPython.genutils import *
32 from IPython.genutils import *
33
33
34 #****************************************************************************
34 #****************************************************************************
35 #Color schemes for Prompts.
35 #Color schemes for Prompts.
36
36
37 PromptColors = ColorANSI.ColorSchemeTable()
37 PromptColors = ColorANSI.ColorSchemeTable()
38 InputColors = ColorANSI.InputTermColors # just a shorthand
38 InputColors = ColorANSI.InputTermColors # just a shorthand
39 Colors = ColorANSI.TermColors # just a shorthand
39 Colors = ColorANSI.TermColors # just a shorthand
40
40
41 PromptColors.add_scheme(ColorANSI.ColorScheme(
41 PromptColors.add_scheme(ColorANSI.ColorScheme(
42 'NoColor',
42 'NoColor',
43 in_prompt = InputColors.NoColor, # Input prompt
43 in_prompt = InputColors.NoColor, # Input prompt
44 in_number = InputColors.NoColor, # Input prompt number
44 in_number = InputColors.NoColor, # Input prompt number
45 in_prompt2 = InputColors.NoColor, # Continuation prompt
45 in_prompt2 = InputColors.NoColor, # Continuation prompt
46 in_normal = InputColors.NoColor, # color off (usu. Colors.Normal)
46 in_normal = InputColors.NoColor, # color off (usu. Colors.Normal)
47
47
48 out_prompt = Colors.NoColor, # Output prompt
48 out_prompt = Colors.NoColor, # Output prompt
49 out_number = Colors.NoColor, # Output prompt number
49 out_number = Colors.NoColor, # Output prompt number
50
50
51 normal = Colors.NoColor # color off (usu. Colors.Normal)
51 normal = Colors.NoColor # color off (usu. Colors.Normal)
52 ))
52 ))
53
53
54 # make some schemes as instances so we can copy them for modification easily:
54 # make some schemes as instances so we can copy them for modification easily:
55 __PColLinux = ColorANSI.ColorScheme(
55 __PColLinux = ColorANSI.ColorScheme(
56 'Linux',
56 'Linux',
57 in_prompt = InputColors.Green,
57 in_prompt = InputColors.Green,
58 in_number = InputColors.LightGreen,
58 in_number = InputColors.LightGreen,
59 in_prompt2 = InputColors.Green,
59 in_prompt2 = InputColors.Green,
60 in_normal = InputColors.Normal, # color off (usu. Colors.Normal)
60 in_normal = InputColors.Normal, # color off (usu. Colors.Normal)
61
61
62 out_prompt = Colors.Red,
62 out_prompt = Colors.Red,
63 out_number = Colors.LightRed,
63 out_number = Colors.LightRed,
64
64
65 normal = Colors.Normal
65 normal = Colors.Normal
66 )
66 )
67 # Don't forget to enter it into the table!
67 # Don't forget to enter it into the table!
68 PromptColors.add_scheme(__PColLinux)
68 PromptColors.add_scheme(__PColLinux)
69
69
70 # Slightly modified Linux for light backgrounds
70 # Slightly modified Linux for light backgrounds
71 __PColLightBG = __PColLinux.copy('LightBG')
71 __PColLightBG = __PColLinux.copy('LightBG')
72
72
73 __PColLightBG.colors.update(
73 __PColLightBG.colors.update(
74 in_prompt = InputColors.Blue,
74 in_prompt = InputColors.Blue,
75 in_number = InputColors.LightBlue,
75 in_number = InputColors.LightBlue,
76 in_prompt2 = InputColors.Blue
76 in_prompt2 = InputColors.Blue
77 )
77 )
78 PromptColors.add_scheme(__PColLightBG)
78 PromptColors.add_scheme(__PColLightBG)
79
79
80 del Colors,InputColors
80 del Colors,InputColors
81
81
82 #-----------------------------------------------------------------------------
82 #-----------------------------------------------------------------------------
83 def multiple_replace(dict, text):
83 def multiple_replace(dict, text):
84 """ Replace in 'text' all occurences of any key in the given
84 """ Replace in 'text' all occurences of any key in the given
85 dictionary by its corresponding value. Returns the new string."""
85 dictionary by its corresponding value. Returns the new string."""
86
86
87 # Function by Xavier Defrang, originally found at:
87 # Function by Xavier Defrang, originally found at:
88 # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/81330
88 # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/81330
89
89
90 # Create a regular expression from the dictionary keys
90 # Create a regular expression from the dictionary keys
91 regex = re.compile("(%s)" % "|".join(map(re.escape, dict.keys())))
91 regex = re.compile("(%s)" % "|".join(map(re.escape, dict.keys())))
92 # For each match, look-up corresponding value in dictionary
92 # For each match, look-up corresponding value in dictionary
93 return regex.sub(lambda mo: dict[mo.string[mo.start():mo.end()]], text)
93 return regex.sub(lambda mo: dict[mo.string[mo.start():mo.end()]], text)
94
94
95 #-----------------------------------------------------------------------------
95 #-----------------------------------------------------------------------------
96 # Special characters that can be used in prompt templates, mainly bash-like
96 # Special characters that can be used in prompt templates, mainly bash-like
97
97
98 # If $HOME isn't defined (Windows), make it an absurd string so that it can
98 # If $HOME isn't defined (Windows), make it an absurd string so that it can
99 # never be expanded out into '~'. Basically anything which can never be a
99 # never be expanded out into '~'. Basically anything which can never be a
100 # reasonable directory name will do, we just want the $HOME -> '~' operation
100 # reasonable directory name will do, we just want the $HOME -> '~' operation
101 # to become a no-op. We pre-compute $HOME here so it's not done on every
101 # to become a no-op. We pre-compute $HOME here so it's not done on every
102 # prompt call.
102 # prompt call.
103
103
104 # FIXME:
104 # FIXME:
105
105
106 # - This should be turned into a class which does proper namespace management,
106 # - This should be turned into a class which does proper namespace management,
107 # since the prompt specials need to be evaluated in a certain namespace.
107 # since the prompt specials need to be evaluated in a certain namespace.
108 # Currently it's just globals, which need to be managed manually by code
108 # Currently it's just globals, which need to be managed manually by code
109 # below.
109 # below.
110
110
111 # - I also need to split up the color schemes from the prompt specials
111 # - I also need to split up the color schemes from the prompt specials
112 # somehow. I don't have a clean design for that quite yet.
112 # somehow. I don't have a clean design for that quite yet.
113
113
114 HOME = os.environ.get("HOME","//////:::::ZZZZZ,,,~~~")
114 HOME = os.environ.get("HOME","//////:::::ZZZZZ,,,~~~")
115
115
116 # We precompute a few more strings here for the prompt_specials, which are
116 # We precompute a few more strings here for the prompt_specials, which are
117 # fixed once ipython starts. This reduces the runtime overhead of computing
117 # fixed once ipython starts. This reduces the runtime overhead of computing
118 # prompt strings.
118 # prompt strings.
119 USER = os.environ.get("USER")
119 USER = os.environ.get("USER")
120 HOSTNAME = socket.gethostname()
120 HOSTNAME = socket.gethostname()
121 HOSTNAME_SHORT = HOSTNAME.split(".")[0]
121 HOSTNAME_SHORT = HOSTNAME.split(".")[0]
122 ROOT_SYMBOL = "$#"[os.name=='nt' or os.getuid()==0]
122 ROOT_SYMBOL = "$#"[os.name=='nt' or os.getuid()==0]
123
123
124 prompt_specials_color = {
124 prompt_specials_color = {
125 # Prompt/history count
125 # Prompt/history count
126 '%n' : '${self.col_num}' '${self.cache.prompt_count}' '${self.col_p}',
126 '%n' : '${self.col_num}' '${self.cache.prompt_count}' '${self.col_p}',
127 '\\#': '${self.col_num}' '${self.cache.prompt_count}' '${self.col_p}',
127 '\\#': '${self.col_num}' '${self.cache.prompt_count}' '${self.col_p}',
128 # Prompt/history count, with the actual digits replaced by dots. Used
128 # Prompt/history count, with the actual digits replaced by dots. Used
129 # mainly in continuation prompts (prompt_in2)
129 # mainly in continuation prompts (prompt_in2)
130 '\\D': '${"."*len(str(self.cache.prompt_count))}',
130 '\\D': '${"."*len(str(self.cache.prompt_count))}',
131 # Current working directory
131 # Current working directory
132 '\\w': '${os.getcwd()}',
132 '\\w': '${os.getcwd()}',
133 # Current time
133 # Current time
134 '\\t' : '${time.strftime("%H:%M:%S")}',
134 '\\t' : '${time.strftime("%H:%M:%S")}',
135 # Basename of current working directory.
135 # Basename of current working directory.
136 # (use os.sep to make this portable across OSes)
136 # (use os.sep to make this portable across OSes)
137 '\\W' : '${os.getcwd().split("%s")[-1]}' % os.sep,
137 '\\W' : '${os.getcwd().split("%s")[-1]}' % os.sep,
138 # These X<N> are an extension to the normal bash prompts. They return
138 # These X<N> are an extension to the normal bash prompts. They return
139 # N terms of the path, after replacing $HOME with '~'
139 # N terms of the path, after replacing $HOME with '~'
140 '\\X0': '${os.getcwd().replace("%s","~")}' % HOME,
140 '\\X0': '${os.getcwd().replace("%s","~")}' % HOME,
141 '\\X1': '${self.cwd_filt(1)}',
141 '\\X1': '${self.cwd_filt(1)}',
142 '\\X2': '${self.cwd_filt(2)}',
142 '\\X2': '${self.cwd_filt(2)}',
143 '\\X3': '${self.cwd_filt(3)}',
143 '\\X3': '${self.cwd_filt(3)}',
144 '\\X4': '${self.cwd_filt(4)}',
144 '\\X4': '${self.cwd_filt(4)}',
145 '\\X5': '${self.cwd_filt(5)}',
145 '\\X5': '${self.cwd_filt(5)}',
146 # Y<N> are similar to X<N>, but they show '~' if it's the directory
146 # Y<N> are similar to X<N>, but they show '~' if it's the directory
147 # N+1 in the list. Somewhat like %cN in tcsh.
147 # N+1 in the list. Somewhat like %cN in tcsh.
148 '\\Y0': '${self.cwd_filt2(0)}',
148 '\\Y0': '${self.cwd_filt2(0)}',
149 '\\Y1': '${self.cwd_filt2(1)}',
149 '\\Y1': '${self.cwd_filt2(1)}',
150 '\\Y2': '${self.cwd_filt2(2)}',
150 '\\Y2': '${self.cwd_filt2(2)}',
151 '\\Y3': '${self.cwd_filt2(3)}',
151 '\\Y3': '${self.cwd_filt2(3)}',
152 '\\Y4': '${self.cwd_filt2(4)}',
152 '\\Y4': '${self.cwd_filt2(4)}',
153 '\\Y5': '${self.cwd_filt2(5)}',
153 '\\Y5': '${self.cwd_filt2(5)}',
154 # Hostname up to first .
154 # Hostname up to first .
155 '\\h': HOSTNAME_SHORT,
155 '\\h': HOSTNAME_SHORT,
156 # Full hostname
156 # Full hostname
157 '\\H': HOSTNAME,
157 '\\H': HOSTNAME,
158 # Username of current user
158 # Username of current user
159 '\\u': USER,
159 '\\u': USER,
160 # Escaped '\'
160 # Escaped '\'
161 '\\\\': '\\',
161 '\\\\': '\\',
162 # Newline
162 # Newline
163 '\\n': '\n',
163 '\\n': '\n',
164 # Carriage return
164 # Carriage return
165 '\\r': '\r',
165 '\\r': '\r',
166 # Release version
166 # Release version
167 '\\v': __version__,
167 '\\v': __version__,
168 # Root symbol ($ or #)
168 # Root symbol ($ or #)
169 '\\$': ROOT_SYMBOL,
169 '\\$': ROOT_SYMBOL,
170 }
170 }
171
171
172 # A copy of the prompt_specials dictionary but with all color escapes removed,
172 # A copy of the prompt_specials dictionary but with all color escapes removed,
173 # so we can correctly compute the prompt length for the auto_rewrite method.
173 # so we can correctly compute the prompt length for the auto_rewrite method.
174 prompt_specials_nocolor = prompt_specials_color.copy()
174 prompt_specials_nocolor = prompt_specials_color.copy()
175 prompt_specials_nocolor['%n'] = '${self.cache.prompt_count}'
175 prompt_specials_nocolor['%n'] = '${self.cache.prompt_count}'
176 prompt_specials_nocolor['\\#'] = '${self.cache.prompt_count}'
176 prompt_specials_nocolor['\\#'] = '${self.cache.prompt_count}'
177
177
178 # Add in all the InputTermColors color escapes as valid prompt characters.
178 # Add in all the InputTermColors color escapes as valid prompt characters.
179 # They all get added as \\C_COLORNAME, so that we don't have any conflicts
179 # They all get added as \\C_COLORNAME, so that we don't have any conflicts
180 # with a color name which may begin with a letter used by any other of the
180 # with a color name which may begin with a letter used by any other of the
181 # allowed specials. This of course means that \\C will never be allowed for
181 # allowed specials. This of course means that \\C will never be allowed for
182 # anything else.
182 # anything else.
183 input_colors = ColorANSI.InputTermColors
183 input_colors = ColorANSI.InputTermColors
184 for _color in dir(input_colors):
184 for _color in dir(input_colors):
185 if _color[0] != '_':
185 if _color[0] != '_':
186 c_name = '\\C_'+_color
186 c_name = '\\C_'+_color
187 prompt_specials_color[c_name] = getattr(input_colors,_color)
187 prompt_specials_color[c_name] = getattr(input_colors,_color)
188 prompt_specials_nocolor[c_name] = ''
188 prompt_specials_nocolor[c_name] = ''
189
189
190 # we default to no color for safety. Note that prompt_specials is a global
190 # we default to no color for safety. Note that prompt_specials is a global
191 # variable used by all prompt objects.
191 # variable used by all prompt objects.
192 prompt_specials = prompt_specials_nocolor
192 prompt_specials = prompt_specials_nocolor
193
193
194 #-----------------------------------------------------------------------------
194 #-----------------------------------------------------------------------------
195 def str_safe(arg):
195 def str_safe(arg):
196 """Convert to a string, without ever raising an exception.
196 """Convert to a string, without ever raising an exception.
197
197
198 If str(arg) fails, <ERROR: ... > is returned, where ... is the exception
198 If str(arg) fails, <ERROR: ... > is returned, where ... is the exception
199 error message."""
199 error message."""
200
200
201 try:
201 try:
202 out = str(arg)
202 out = str(arg)
203 except UnicodeError:
203 except UnicodeError:
204 try:
204 try:
205 out = arg.encode('utf_8','replace')
205 out = arg.encode('utf_8','replace')
206 except Exception,msg:
206 except Exception,msg:
207 # let's keep this little duplication here, so that the most common
207 # let's keep this little duplication here, so that the most common
208 # case doesn't suffer from a double try wrapping.
208 # case doesn't suffer from a double try wrapping.
209 out = '<ERROR: %s>' % msg
209 out = '<ERROR: %s>' % msg
210 except Exception,msg:
210 except Exception,msg:
211 out = '<ERROR: %s>' % msg
211 out = '<ERROR: %s>' % msg
212 return out
212 return out
213
213
214 class BasePrompt:
214 class BasePrompt:
215 """Interactive prompt similar to Mathematica's."""
215 """Interactive prompt similar to Mathematica's."""
216 def __init__(self,cache,sep,prompt,pad_left=False):
216 def __init__(self,cache,sep,prompt,pad_left=False):
217
217
218 # Hack: we access information about the primary prompt through the
218 # Hack: we access information about the primary prompt through the
219 # cache argument. We need this, because we want the secondary prompt
219 # cache argument. We need this, because we want the secondary prompt
220 # to be aligned with the primary one. Color table info is also shared
220 # to be aligned with the primary one. Color table info is also shared
221 # by all prompt classes through the cache. Nice OO spaghetti code!
221 # by all prompt classes through the cache. Nice OO spaghetti code!
222 self.cache = cache
222 self.cache = cache
223 self.sep = sep
223 self.sep = sep
224
224
225 # regexp to count the number of spaces at the end of a prompt
225 # regexp to count the number of spaces at the end of a prompt
226 # expression, useful for prompt auto-rewriting
226 # expression, useful for prompt auto-rewriting
227 self.rspace = re.compile(r'(\s*)$')
227 self.rspace = re.compile(r'(\s*)$')
228 # Flag to left-pad prompt strings to match the length of the primary
228 # Flag to left-pad prompt strings to match the length of the primary
229 # prompt
229 # prompt
230 self.pad_left = pad_left
230 self.pad_left = pad_left
231 # Set template to create each actual prompt (where numbers change)
231 # Set template to create each actual prompt (where numbers change)
232 self.p_template = prompt
232 self.p_template = prompt
233 self.set_p_str()
233 self.set_p_str()
234
234
235 def set_p_str(self):
235 def set_p_str(self):
236 """ Set the interpolating prompt strings.
236 """ Set the interpolating prompt strings.
237
237
238 This must be called every time the color settings change, because the
238 This must be called every time the color settings change, because the
239 prompt_specials global may have changed."""
239 prompt_specials global may have changed."""
240
240
241 import os,time # needed in locals for prompt string handling
241 import os,time # needed in locals for prompt string handling
242 loc = locals()
242 loc = locals()
243 self.p_str = ItplNS('%s%s%s' %
243 self.p_str = ItplNS('%s%s%s' %
244 ('${self.sep}${self.col_p}',
244 ('${self.sep}${self.col_p}',
245 multiple_replace(prompt_specials, self.p_template),
245 multiple_replace(prompt_specials, self.p_template),
246 '${self.col_norm}'),self.cache.user_ns,loc)
246 '${self.col_norm}'),self.cache.user_ns,loc)
247
247
248 self.p_str_nocolor = ItplNS(multiple_replace(prompt_specials_nocolor,
248 self.p_str_nocolor = ItplNS(multiple_replace(prompt_specials_nocolor,
249 self.p_template),
249 self.p_template),
250 self.cache.user_ns,loc)
250 self.cache.user_ns,loc)
251
251
252 def write(self,msg): # dbg
252 def write(self,msg): # dbg
253 sys.stdout.write(msg)
253 sys.stdout.write(msg)
254 return ''
254 return ''
255
255
256 def __str__(self):
256 def __str__(self):
257 """Return a string form of the prompt.
257 """Return a string form of the prompt.
258
258
259 This for is useful for continuation and output prompts, since it is
259 This for is useful for continuation and output prompts, since it is
260 left-padded to match lengths with the primary one (if the
260 left-padded to match lengths with the primary one (if the
261 self.pad_left attribute is set)."""
261 self.pad_left attribute is set)."""
262
262
263 out_str = str_safe(self.p_str)
263 out_str = str_safe(self.p_str)
264 if self.pad_left:
264 if self.pad_left:
265 # We must find the amount of padding required to match lengths,
265 # We must find the amount of padding required to match lengths,
266 # taking the color escapes (which are invisible on-screen) into
266 # taking the color escapes (which are invisible on-screen) into
267 # account.
267 # account.
268 esc_pad = len(out_str) - len(str_safe(self.p_str_nocolor))
268 esc_pad = len(out_str) - len(str_safe(self.p_str_nocolor))
269 format = '%%%ss' % (len(str(self.cache.last_prompt))+esc_pad)
269 format = '%%%ss' % (len(str(self.cache.last_prompt))+esc_pad)
270 return format % out_str
270 return format % out_str
271 else:
271 else:
272 return out_str
272 return out_str
273
273
274 # these path filters are put in as methods so that we can control the
274 # these path filters are put in as methods so that we can control the
275 # namespace where the prompt strings get evaluated
275 # namespace where the prompt strings get evaluated
276 def cwd_filt(self,depth):
276 def cwd_filt(self,depth):
277 """Return the last depth elements of the current working directory.
277 """Return the last depth elements of the current working directory.
278
278
279 $HOME is always replaced with '~'.
279 $HOME is always replaced with '~'.
280 If depth==0, the full path is returned."""
280 If depth==0, the full path is returned."""
281
281
282 cwd = os.getcwd().replace(HOME,"~")
282 cwd = os.getcwd().replace(HOME,"~")
283 out = os.sep.join(cwd.split(os.sep)[-depth:])
283 out = os.sep.join(cwd.split(os.sep)[-depth:])
284 if out:
284 if out:
285 return out
285 return out
286 else:
286 else:
287 return os.sep
287 return os.sep
288
288
289 def cwd_filt2(self,depth):
289 def cwd_filt2(self,depth):
290 """Return the last depth elements of the current working directory.
290 """Return the last depth elements of the current working directory.
291
291
292 $HOME is always replaced with '~'.
292 $HOME is always replaced with '~'.
293 If depth==0, the full path is returned."""
293 If depth==0, the full path is returned."""
294
294
295 cwd = os.getcwd().replace(HOME,"~").split(os.sep)
295 cwd = os.getcwd().replace(HOME,"~").split(os.sep)
296 if '~' in cwd and len(cwd) == depth+1:
296 if '~' in cwd and len(cwd) == depth+1:
297 depth += 1
297 depth += 1
298 out = os.sep.join(cwd[-depth:])
298 out = os.sep.join(cwd[-depth:])
299 if out:
299 if out:
300 return out
300 return out
301 else:
301 else:
302 return os.sep
302 return os.sep
303
303
304 class Prompt1(BasePrompt):
304 class Prompt1(BasePrompt):
305 """Input interactive prompt similar to Mathematica's."""
305 """Input interactive prompt similar to Mathematica's."""
306
306
307 def __init__(self,cache,sep='\n',prompt='In [\\#]: ',pad_left=True):
307 def __init__(self,cache,sep='\n',prompt='In [\\#]: ',pad_left=True):
308 BasePrompt.__init__(self,cache,sep,prompt,pad_left)
308 BasePrompt.__init__(self,cache,sep,prompt,pad_left)
309
309
310 def set_colors(self):
310 def set_colors(self):
311 self.set_p_str()
311 self.set_p_str()
312 Colors = self.cache.color_table.active_colors # shorthand
312 Colors = self.cache.color_table.active_colors # shorthand
313 self.col_p = Colors.in_prompt
313 self.col_p = Colors.in_prompt
314 self.col_num = Colors.in_number
314 self.col_num = Colors.in_number
315 self.col_norm = Colors.in_normal
315 self.col_norm = Colors.in_normal
316 # We need a non-input version of these escapes for the '--->'
316 # We need a non-input version of these escapes for the '--->'
317 # auto-call prompts used in the auto_rewrite() method.
317 # auto-call prompts used in the auto_rewrite() method.
318 self.col_p_ni = self.col_p.replace('\001','').replace('\002','')
318 self.col_p_ni = self.col_p.replace('\001','').replace('\002','')
319 self.col_norm_ni = Colors.normal
319 self.col_norm_ni = Colors.normal
320
320
321 def __str__(self):
321 def __str__(self):
322 self.cache.prompt_count += 1
322 self.cache.prompt_count += 1
323 self.cache.last_prompt = str_safe(self.p_str_nocolor).split('\n')[-1]
323 self.cache.last_prompt = str_safe(self.p_str_nocolor).split('\n')[-1]
324 return str_safe(self.p_str)
324 return str_safe(self.p_str)
325
325
326 def auto_rewrite(self):
326 def auto_rewrite(self):
327 """Print a string of the form '--->' which lines up with the previous
327 """Print a string of the form '--->' which lines up with the previous
328 input string. Useful for systems which re-write the user input when
328 input string. Useful for systems which re-write the user input when
329 handling automatically special syntaxes."""
329 handling automatically special syntaxes."""
330
330
331 curr = str(self.cache.last_prompt)
331 curr = str(self.cache.last_prompt)
332 nrspaces = len(self.rspace.search(curr).group())
332 nrspaces = len(self.rspace.search(curr).group())
333 return '%s%s>%s%s' % (self.col_p_ni,'-'*(len(curr)-nrspaces-1),
333 return '%s%s>%s%s' % (self.col_p_ni,'-'*(len(curr)-nrspaces-1),
334 ' '*nrspaces,self.col_norm_ni)
334 ' '*nrspaces,self.col_norm_ni)
335
335
336 class PromptOut(BasePrompt):
336 class PromptOut(BasePrompt):
337 """Output interactive prompt similar to Mathematica's."""
337 """Output interactive prompt similar to Mathematica's."""
338
338
339 def __init__(self,cache,sep='',prompt='Out[\\#]: ',pad_left=True):
339 def __init__(self,cache,sep='',prompt='Out[\\#]: ',pad_left=True):
340 BasePrompt.__init__(self,cache,sep,prompt,pad_left)
340 BasePrompt.__init__(self,cache,sep,prompt,pad_left)
341 if not self.p_template:
341 if not self.p_template:
342 self.__str__ = lambda: ''
342 self.__str__ = lambda: ''
343
343
344 def set_colors(self):
344 def set_colors(self):
345 self.set_p_str()
345 self.set_p_str()
346 Colors = self.cache.color_table.active_colors # shorthand
346 Colors = self.cache.color_table.active_colors # shorthand
347 self.col_p = Colors.out_prompt
347 self.col_p = Colors.out_prompt
348 self.col_num = Colors.out_number
348 self.col_num = Colors.out_number
349 self.col_norm = Colors.normal
349 self.col_norm = Colors.normal
350
350
351 class Prompt2(BasePrompt):
351 class Prompt2(BasePrompt):
352 """Interactive continuation prompt."""
352 """Interactive continuation prompt."""
353
353
354 def __init__(self,cache,prompt=' .\\D.: ',pad_left=True):
354 def __init__(self,cache,prompt=' .\\D.: ',pad_left=True):
355 self.cache = cache
355 self.cache = cache
356 self.p_template = prompt
356 self.p_template = prompt
357 self.pad_left = pad_left
357 self.pad_left = pad_left
358 self.set_p_str()
358 self.set_p_str()
359
359
360 def set_p_str(self):
360 def set_p_str(self):
361 import os,time # needed in locals for prompt string handling
361 import os,time # needed in locals for prompt string handling
362 loc = locals()
362 loc = locals()
363 self.p_str = ItplNS('%s%s%s' %
363 self.p_str = ItplNS('%s%s%s' %
364 ('${self.col_p2}',
364 ('${self.col_p2}',
365 multiple_replace(prompt_specials, self.p_template),
365 multiple_replace(prompt_specials, self.p_template),
366 '$self.col_norm'),
366 '$self.col_norm'),
367 self.cache.user_ns,loc)
367 self.cache.user_ns,loc)
368 self.p_str_nocolor = ItplNS(multiple_replace(prompt_specials_nocolor,
368 self.p_str_nocolor = ItplNS(multiple_replace(prompt_specials_nocolor,
369 self.p_template),
369 self.p_template),
370 self.cache.user_ns,loc)
370 self.cache.user_ns,loc)
371
371
372 def set_colors(self):
372 def set_colors(self):
373 self.set_p_str()
373 self.set_p_str()
374 Colors = self.cache.color_table.active_colors
374 Colors = self.cache.color_table.active_colors
375 self.col_p2 = Colors.in_prompt2
375 self.col_p2 = Colors.in_prompt2
376 self.col_norm = Colors.in_normal
376 self.col_norm = Colors.in_normal
377 # FIXME (2004-06-16) HACK: prevent crashes for users who haven't
377 # FIXME (2004-06-16) HACK: prevent crashes for users who haven't
378 # updated their prompt_in2 definitions. Remove eventually.
378 # updated their prompt_in2 definitions. Remove eventually.
379 self.col_p = Colors.out_prompt
379 self.col_p = Colors.out_prompt
380 self.col_num = Colors.out_number
380 self.col_num = Colors.out_number
381
381
382
382 #-----------------------------------------------------------------------------
383 #-----------------------------------------------------------------------------
383 class CachedOutput:
384 class CachedOutput:
384 """Class for printing output from calculations while keeping a cache of
385 """Class for printing output from calculations while keeping a cache of
385 reults. It dynamically creates global variables prefixed with _ which
386 reults. It dynamically creates global variables prefixed with _ which
386 contain these results.
387 contain these results.
387
388
388 Meant to be used as a sys.displayhook replacement, providing numbered
389 Meant to be used as a sys.displayhook replacement, providing numbered
389 prompts and cache services.
390 prompts and cache services.
390
391
391 Initialize with initial and final values for cache counter (this defines
392 Initialize with initial and final values for cache counter (this defines
392 the maximum size of the cache."""
393 the maximum size of the cache."""
393
394
394 def __init__(self,shell,cache_size,Pprint,
395 def __init__(self,shell,cache_size,Pprint,
395 colors='NoColor',input_sep='\n',
396 colors='NoColor',input_sep='\n',
396 output_sep='\n',output_sep2='',
397 output_sep='\n',output_sep2='',
397 ps1 = None, ps2 = None,ps_out = None,pad_left=True):
398 ps1 = None, ps2 = None,ps_out = None,pad_left=True):
398
399
399 cache_size_min = 3
400 cache_size_min = 3
400 if cache_size <= 0:
401 if cache_size <= 0:
401 self.do_full_cache = 0
402 self.do_full_cache = 0
402 cache_size = 0
403 cache_size = 0
403 elif cache_size < cache_size_min:
404 elif cache_size < cache_size_min:
404 self.do_full_cache = 0
405 self.do_full_cache = 0
405 cache_size = 0
406 cache_size = 0
406 warn('caching was disabled (min value for cache size is %s).' %
407 warn('caching was disabled (min value for cache size is %s).' %
407 cache_size_min,level=3)
408 cache_size_min,level=3)
408 else:
409 else:
409 self.do_full_cache = 1
410 self.do_full_cache = 1
410
411
411 self.cache_size = cache_size
412 self.cache_size = cache_size
412 self.input_sep = input_sep
413 self.input_sep = input_sep
413
414
414 # we need a reference to the user-level namespace
415 # we need a reference to the user-level namespace
415 self.shell = shell
416 self.shell = shell
416 self.user_ns = shell.user_ns
417 self.user_ns = shell.user_ns
417 # and to the user's input
418 # and to the user's input
418 self.input_hist = shell.input_hist
419 self.input_hist = shell.input_hist
419 # and to the user's logger, for logging output
420 # and to the user's logger, for logging output
420 self.logger = shell.logger
421 self.logger = shell.logger
421
422
422 # Set input prompt strings and colors
423 # Set input prompt strings and colors
423 if cache_size == 0:
424 if cache_size == 0:
424 if ps1.find('%n') > -1 or ps1.find('\\#') > -1: ps1 = '>>> '
425 if ps1.find('%n') > -1 or ps1.find('\\#') > -1: ps1 = '>>> '
425 if ps2.find('%n') > -1 or ps2.find('\\#') > -1: ps2 = '... '
426 if ps2.find('%n') > -1 or ps2.find('\\#') > -1: ps2 = '... '
426 self.ps1_str = self._set_prompt_str(ps1,'In [\\#]: ','>>> ')
427 self.ps1_str = self._set_prompt_str(ps1,'In [\\#]: ','>>> ')
427 self.ps2_str = self._set_prompt_str(ps2,' .\\D.: ','... ')
428 self.ps2_str = self._set_prompt_str(ps2,' .\\D.: ','... ')
428 self.ps_out_str = self._set_prompt_str(ps_out,'Out[\\#]: ','')
429 self.ps_out_str = self._set_prompt_str(ps_out,'Out[\\#]: ','')
429
430
430 self.color_table = PromptColors
431 self.color_table = PromptColors
431 self.prompt1 = Prompt1(self,sep=input_sep,prompt=self.ps1_str,
432 self.prompt1 = Prompt1(self,sep=input_sep,prompt=self.ps1_str,
432 pad_left=pad_left)
433 pad_left=pad_left)
433 self.prompt2 = Prompt2(self,prompt=self.ps2_str,pad_left=pad_left)
434 self.prompt2 = Prompt2(self,prompt=self.ps2_str,pad_left=pad_left)
434 self.prompt_out = PromptOut(self,sep='',prompt=self.ps_out_str,
435 self.prompt_out = PromptOut(self,sep='',prompt=self.ps_out_str,
435 pad_left=pad_left)
436 pad_left=pad_left)
436 self.set_colors(colors)
437 self.set_colors(colors)
437
438
438 # other more normal stuff
439 # other more normal stuff
439 # b/c each call to the In[] prompt raises it by 1, even the first.
440 # b/c each call to the In[] prompt raises it by 1, even the first.
440 self.prompt_count = 0
441 self.prompt_count = 0
441 # Store the last prompt string each time, we need it for aligning
442 # Store the last prompt string each time, we need it for aligning
442 # continuation and auto-rewrite prompts
443 # continuation and auto-rewrite prompts
443 self.last_prompt = ''
444 self.last_prompt = ''
444 self.Pprint = Pprint
445 self.Pprint = Pprint
445 self.output_sep = output_sep
446 self.output_sep = output_sep
446 self.output_sep2 = output_sep2
447 self.output_sep2 = output_sep2
447 self._,self.__,self.___ = '','',''
448 self._,self.__,self.___ = '','',''
448 self.pprint_types = map(type,[(),[],{}])
449 self.pprint_types = map(type,[(),[],{}])
449
450
450 # these are deliberately global:
451 # these are deliberately global:
451 to_user_ns = {'_':self._,'__':self.__,'___':self.___}
452 to_user_ns = {'_':self._,'__':self.__,'___':self.___}
452 self.user_ns.update(to_user_ns)
453 self.user_ns.update(to_user_ns)
453
454
454 def _set_prompt_str(self,p_str,cache_def,no_cache_def):
455 def _set_prompt_str(self,p_str,cache_def,no_cache_def):
455 if p_str is None:
456 if p_str is None:
456 if self.do_full_cache:
457 if self.do_full_cache:
457 return cache_def
458 return cache_def
458 else:
459 else:
459 return no_cache_def
460 return no_cache_def
460 else:
461 else:
461 return p_str
462 return p_str
462
463
463 def set_colors(self,colors):
464 def set_colors(self,colors):
464 """Set the active color scheme and configure colors for the three
465 """Set the active color scheme and configure colors for the three
465 prompt subsystems."""
466 prompt subsystems."""
466
467
467 # FIXME: the prompt_specials global should be gobbled inside this
468 # FIXME: the prompt_specials global should be gobbled inside this
468 # class instead. Do it when cleaning up the whole 3-prompt system.
469 # class instead. Do it when cleaning up the whole 3-prompt system.
469 global prompt_specials
470 global prompt_specials
470 if colors.lower()=='nocolor':
471 if colors.lower()=='nocolor':
471 prompt_specials = prompt_specials_nocolor
472 prompt_specials = prompt_specials_nocolor
472 else:
473 else:
473 prompt_specials = prompt_specials_color
474 prompt_specials = prompt_specials_color
474
475
475 self.color_table.set_active_scheme(colors)
476 self.color_table.set_active_scheme(colors)
476 self.prompt1.set_colors()
477 self.prompt1.set_colors()
477 self.prompt2.set_colors()
478 self.prompt2.set_colors()
478 self.prompt_out.set_colors()
479 self.prompt_out.set_colors()
479
480
480 def __call__(self,arg=None):
481 def __call__(self,arg=None):
481 """Printing with history cache management.
482 """Printing with history cache management.
482
483
483 This is invoked everytime the interpreter needs to print, and is
484 This is invoked everytime the interpreter needs to print, and is
484 activated by setting the variable sys.displayhook to it."""
485 activated by setting the variable sys.displayhook to it."""
485
486
486 # If something injected a '_' variable in __builtin__, delete
487 # If something injected a '_' variable in __builtin__, delete
487 # ipython's automatic one so we don't clobber that. gettext() in
488 # ipython's automatic one so we don't clobber that. gettext() in
488 # particular uses _, so we need to stay away from it.
489 # particular uses _, so we need to stay away from it.
489 if '_' in __builtin__.__dict__:
490 if '_' in __builtin__.__dict__:
490 try:
491 try:
491 del self.user_ns['_']
492 del self.user_ns['_']
492 except KeyError:
493 except KeyError:
493 pass
494 pass
494 if arg is not None:
495 if arg is not None:
495 cout_write = Term.cout.write # fast lookup
496 cout_write = Term.cout.write # fast lookup
496 # first handle the cache and counters
497 # first handle the cache and counters
497
498
498 # do not print output if input ends in ';'
499 # do not print output if input ends in ';'
499 if self.input_hist[self.prompt_count].endswith(';\n'):
500 if self.input_hist[self.prompt_count].endswith(';\n'):
500 return
501 return
501 # don't use print, puts an extra space
502 # don't use print, puts an extra space
502 cout_write(self.output_sep)
503 cout_write(self.output_sep)
504 outprompt = self.shell.hooks.generate_output_prompt()
503 if self.do_full_cache:
505 if self.do_full_cache:
504 cout_write(str(self.prompt_out))
506 cout_write(outprompt)
505
507
506 if isinstance(arg,Macro):
508 if isinstance(arg,Macro):
507 print 'Executing Macro...'
509 print 'Executing Macro...'
508 # in case the macro takes a long time to execute
510 # in case the macro takes a long time to execute
509 Term.cout.flush()
511 Term.cout.flush()
510 self.shell.runlines(arg.value)
512 self.shell.runlines(arg.value)
511 return None
513 return None
512
514
513 # and now call a possibly user-defined print mechanism
515 # and now call a possibly user-defined print mechanism
514 manipulated_val = self.display(arg)
516 manipulated_val = self.display(arg)
515
517
516 # user display hooks can change the variable to be stored in
518 # user display hooks can change the variable to be stored in
517 # output history
519 # output history
518
520
519 if manipulated_val is not None:
521 if manipulated_val is not None:
520 arg = manipulated_val
522 arg = manipulated_val
521
523
522 # avoid recursive reference when displaying _oh/Out
524 # avoid recursive reference when displaying _oh/Out
523 if arg is not self.user_ns['_oh']:
525 if arg is not self.user_ns['_oh']:
524 self.update(arg)
526 self.update(arg)
525
527
526 if self.logger.log_output:
528 if self.logger.log_output:
527 self.logger.log_write(repr(arg),'output')
529 self.logger.log_write(repr(arg),'output')
528 cout_write(self.output_sep2)
530 cout_write(self.output_sep2)
529 Term.cout.flush()
531 Term.cout.flush()
530
532
531 def _display(self,arg):
533 def _display(self,arg):
532 """Default printer method, uses pprint.
534 """Default printer method, uses pprint.
533
535
534 Do ip.set_hook("result_display", my_displayhook) for custom result
536 Do ip.set_hook("result_display", my_displayhook) for custom result
535 display, e.g. when your own objects need special formatting.
537 display, e.g. when your own objects need special formatting.
536 """
538 """
537
539
538 return self.shell.hooks.result_display(arg)
540 return self.shell.hooks.result_display(arg)
539
541
540 # Assign the default display method:
542 # Assign the default display method:
541 display = _display
543 display = _display
542
544
543 def update(self,arg):
545 def update(self,arg):
544 #print '***cache_count', self.cache_count # dbg
546 #print '***cache_count', self.cache_count # dbg
545 if len(self.user_ns['_oh']) >= self.cache_size and self.do_full_cache:
547 if len(self.user_ns['_oh']) >= self.cache_size and self.do_full_cache:
546 warn('Output cache limit (currently '+
548 warn('Output cache limit (currently '+
547 `self.cache_size`+' entries) hit.\n'
549 `self.cache_size`+' entries) hit.\n'
548 'Flushing cache and resetting history counter...\n'
550 'Flushing cache and resetting history counter...\n'
549 'The only history variables available will be _,__,___ and _1\n'
551 'The only history variables available will be _,__,___ and _1\n'
550 'with the current result.')
552 'with the current result.')
551
553
552 self.flush()
554 self.flush()
553 # Don't overwrite '_' and friends if '_' is in __builtin__ (otherwise
555 # Don't overwrite '_' and friends if '_' is in __builtin__ (otherwise
554 # we cause buggy behavior for things like gettext).
556 # we cause buggy behavior for things like gettext).
555 if '_' not in __builtin__.__dict__:
557 if '_' not in __builtin__.__dict__:
556 self.___ = self.__
558 self.___ = self.__
557 self.__ = self._
559 self.__ = self._
558 self._ = arg
560 self._ = arg
559 self.user_ns.update({'_':self._,'__':self.__,'___':self.___})
561 self.user_ns.update({'_':self._,'__':self.__,'___':self.___})
560
562
561 # hackish access to top-level namespace to create _1,_2... dynamically
563 # hackish access to top-level namespace to create _1,_2... dynamically
562 to_main = {}
564 to_main = {}
563 if self.do_full_cache:
565 if self.do_full_cache:
564 new_result = '_'+`self.prompt_count`
566 new_result = '_'+`self.prompt_count`
565 to_main[new_result] = arg
567 to_main[new_result] = arg
566 self.user_ns.update(to_main)
568 self.user_ns.update(to_main)
567 self.user_ns['_oh'][self.prompt_count] = arg
569 self.user_ns['_oh'][self.prompt_count] = arg
568
570
569 def flush(self):
571 def flush(self):
570 if not self.do_full_cache:
572 if not self.do_full_cache:
571 raise ValueError,"You shouldn't have reached the cache flush "\
573 raise ValueError,"You shouldn't have reached the cache flush "\
572 "if full caching is not enabled!"
574 "if full caching is not enabled!"
573 # delete auto-generated vars from global namespace
575 # delete auto-generated vars from global namespace
574
576
575 for n in range(1,self.prompt_count + 1):
577 for n in range(1,self.prompt_count + 1):
576 key = '_'+`n`
578 key = '_'+`n`
577 try:
579 try:
578 del self.user_ns[key]
580 del self.user_ns[key]
579 except: pass
581 except: pass
580 self.user_ns['_oh'].clear()
582 self.user_ns['_oh'].clear()
581
583
582 if '_' not in __builtin__.__dict__:
584 if '_' not in __builtin__.__dict__:
583 self.user_ns.update({'_':None,'__':None, '___':None})
585 self.user_ns.update({'_':None,'__':None, '___':None})
584 import gc
586 import gc
585 gc.collect() # xxx needed?
587 gc.collect() # xxx needed?
588
@@ -1,206 +1,210
1 """hooks for IPython.
1 """hooks for IPython.
2
2
3 In Python, it is possible to overwrite any method of any object if you really
3 In Python, it is possible to overwrite any method of any object if you really
4 want to. But IPython exposes a few 'hooks', methods which are _designed_ to
4 want to. But IPython exposes a few 'hooks', methods which are _designed_ to
5 be overwritten by users for customization purposes. This module defines the
5 be overwritten by users for customization purposes. This module defines the
6 default versions of all such hooks, which get used by IPython if not
6 default versions of all such hooks, which get used by IPython if not
7 overridden by the user.
7 overridden by the user.
8
8
9 hooks are simple functions, but they should be declared with 'self' as their
9 hooks are simple functions, but they should be declared with 'self' as their
10 first argument, because when activated they are registered into IPython as
10 first argument, because when activated they are registered into IPython as
11 instance methods. The self argument will be the IPython running instance
11 instance methods. The self argument will be the IPython running instance
12 itself, so hooks have full access to the entire IPython object.
12 itself, so hooks have full access to the entire IPython object.
13
13
14 If you wish to define a new hook and activate it, you need to put the
14 If you wish to define a new hook and activate it, you need to put the
15 necessary code into a python file which can be either imported or execfile()'d
15 necessary code into a python file which can be either imported or execfile()'d
16 from within your ipythonrc configuration.
16 from within your ipythonrc configuration.
17
17
18 For example, suppose that you have a module called 'myiphooks' in your
18 For example, suppose that you have a module called 'myiphooks' in your
19 PYTHONPATH, which contains the following definition:
19 PYTHONPATH, which contains the following definition:
20
20
21 import os
21 import os
22 import IPython.ipapi
22 import IPython.ipapi
23 ip = IPython.ipapi.get()
23 ip = IPython.ipapi.get()
24
24
25 def calljed(self,filename, linenum):
25 def calljed(self,filename, linenum):
26 "My editor hook calls the jed editor directly."
26 "My editor hook calls the jed editor directly."
27 print "Calling my own editor, jed ..."
27 print "Calling my own editor, jed ..."
28 os.system('jed +%d %s' % (linenum,filename))
28 os.system('jed +%d %s' % (linenum,filename))
29
29
30 ip.set_hook('editor', calljed)
30 ip.set_hook('editor', calljed)
31
31
32 You can then enable the functionality by doing 'import myiphooks'
32 You can then enable the functionality by doing 'import myiphooks'
33 somewhere in your configuration files or ipython command line.
33 somewhere in your configuration files or ipython command line.
34
34
35 $Id: hooks.py 1365 2006-06-15 19:11:26Z vivainio $"""
35 $Id: hooks.py 1366 2006-06-15 19:45:50Z vivainio $"""
36
36
37 #*****************************************************************************
37 #*****************************************************************************
38 # Copyright (C) 2005 Fernando Perez. <fperez@colorado.edu>
38 # Copyright (C) 2005 Fernando Perez. <fperez@colorado.edu>
39 #
39 #
40 # Distributed under the terms of the BSD License. The full license is in
40 # Distributed under the terms of the BSD License. The full license is in
41 # the file COPYING, distributed as part of this software.
41 # the file COPYING, distributed as part of this software.
42 #*****************************************************************************
42 #*****************************************************************************
43
43
44 from IPython import Release
44 from IPython import Release
45 from IPython import ipapi
45 from IPython import ipapi
46 __author__ = '%s <%s>' % Release.authors['Fernando']
46 __author__ = '%s <%s>' % Release.authors['Fernando']
47 __license__ = Release.license
47 __license__ = Release.license
48 __version__ = Release.version
48 __version__ = Release.version
49
49
50 import os,bisect
50 import os,bisect
51 from genutils import Term
51 from genutils import Term
52 from pprint import PrettyPrinter
52 from pprint import PrettyPrinter
53
53
54 # List here all the default hooks. For now it's just the editor functions
54 # List here all the default hooks. For now it's just the editor functions
55 # but over time we'll move here all the public API for user-accessible things.
55 # but over time we'll move here all the public API for user-accessible things.
56 __all__ = ['editor', 'fix_error_editor', 'result_display',
56 __all__ = ['editor', 'fix_error_editor', 'result_display',
57 'input_prefilter', 'shutdown_hook', 'late_startup_hook',
57 'input_prefilter', 'shutdown_hook', 'late_startup_hook',
58 'generate_prompt' ]
58 'generate_prompt', 'generate_output_prompt' ]
59
59
60 pformat = PrettyPrinter().pformat
60 pformat = PrettyPrinter().pformat
61
61
62 def editor(self,filename, linenum=None):
62 def editor(self,filename, linenum=None):
63 """Open the default editor at the given filename and linenumber.
63 """Open the default editor at the given filename and linenumber.
64
64
65 This is IPython's default editor hook, you can use it as an example to
65 This is IPython's default editor hook, you can use it as an example to
66 write your own modified one. To set your own editor function as the
66 write your own modified one. To set your own editor function as the
67 new editor hook, call ip.set_hook('editor',yourfunc)."""
67 new editor hook, call ip.set_hook('editor',yourfunc)."""
68
68
69 # IPython configures a default editor at startup by reading $EDITOR from
69 # IPython configures a default editor at startup by reading $EDITOR from
70 # the environment, and falling back on vi (unix) or notepad (win32).
70 # the environment, and falling back on vi (unix) or notepad (win32).
71 editor = self.rc.editor
71 editor = self.rc.editor
72
72
73 # marker for at which line to open the file (for existing objects)
73 # marker for at which line to open the file (for existing objects)
74 if linenum is None or editor=='notepad':
74 if linenum is None or editor=='notepad':
75 linemark = ''
75 linemark = ''
76 else:
76 else:
77 linemark = '+%d' % int(linenum)
77 linemark = '+%d' % int(linenum)
78
78
79 # Enclose in quotes if necessary and legal
79 # Enclose in quotes if necessary and legal
80 if ' ' in editor and os.path.isfile(editor) and editor[0] != '"':
80 if ' ' in editor and os.path.isfile(editor) and editor[0] != '"':
81 editor = '"%s"' % editor
81 editor = '"%s"' % editor
82
82
83 # Call the actual editor
83 # Call the actual editor
84 os.system('%s %s %s' % (editor,linemark,filename))
84 os.system('%s %s %s' % (editor,linemark,filename))
85
85
86 import tempfile
86 import tempfile
87 def fix_error_editor(self,filename,linenum,column,msg):
87 def fix_error_editor(self,filename,linenum,column,msg):
88 """Open the editor at the given filename, linenumber, column and
88 """Open the editor at the given filename, linenumber, column and
89 show an error message. This is used for correcting syntax errors.
89 show an error message. This is used for correcting syntax errors.
90 The current implementation only has special support for the VIM editor,
90 The current implementation only has special support for the VIM editor,
91 and falls back on the 'editor' hook if VIM is not used.
91 and falls back on the 'editor' hook if VIM is not used.
92
92
93 Call ip.set_hook('fix_error_editor',youfunc) to use your own function,
93 Call ip.set_hook('fix_error_editor',youfunc) to use your own function,
94 """
94 """
95 def vim_quickfix_file():
95 def vim_quickfix_file():
96 t = tempfile.NamedTemporaryFile()
96 t = tempfile.NamedTemporaryFile()
97 t.write('%s:%d:%d:%s\n' % (filename,linenum,column,msg))
97 t.write('%s:%d:%d:%s\n' % (filename,linenum,column,msg))
98 t.flush()
98 t.flush()
99 return t
99 return t
100 if os.path.basename(self.rc.editor) != 'vim':
100 if os.path.basename(self.rc.editor) != 'vim':
101 self.hooks.editor(filename,linenum)
101 self.hooks.editor(filename,linenum)
102 return
102 return
103 t = vim_quickfix_file()
103 t = vim_quickfix_file()
104 try:
104 try:
105 os.system('vim --cmd "set errorformat=%f:%l:%c:%m" -q ' + t.name)
105 os.system('vim --cmd "set errorformat=%f:%l:%c:%m" -q ' + t.name)
106 finally:
106 finally:
107 t.close()
107 t.close()
108
108
109
109
110 class CommandChainDispatcher:
110 class CommandChainDispatcher:
111 """ Dispatch calls to a chain of commands until some func can handle it
111 """ Dispatch calls to a chain of commands until some func can handle it
112
112
113 Usage: instantiate, execute "add" to add commands (with optional
113 Usage: instantiate, execute "add" to add commands (with optional
114 priority), execute normally via f() calling mechanism.
114 priority), execute normally via f() calling mechanism.
115
115
116 """
116 """
117 def __init__(self,commands=None):
117 def __init__(self,commands=None):
118 if commands is None:
118 if commands is None:
119 self.chain = []
119 self.chain = []
120 else:
120 else:
121 self.chain = commands
121 self.chain = commands
122
122
123
123
124 def __call__(self,*args, **kw):
124 def __call__(self,*args, **kw):
125 """ Command chain is called just like normal func.
125 """ Command chain is called just like normal func.
126
126
127 This will call all funcs in chain with the same args as were given to this
127 This will call all funcs in chain with the same args as were given to this
128 function, and return the result of first func that didn't raise
128 function, and return the result of first func that didn't raise
129 TryNext """
129 TryNext """
130
130
131 for prio,cmd in self.chain:
131 for prio,cmd in self.chain:
132 #print "prio",prio,"cmd",cmd #dbg
132 #print "prio",prio,"cmd",cmd #dbg
133 try:
133 try:
134 ret = cmd(*args, **kw)
134 ret = cmd(*args, **kw)
135 return ret
135 return ret
136 except ipapi.TryNext, exc:
136 except ipapi.TryNext, exc:
137 if exc.args or exc.kwargs:
137 if exc.args or exc.kwargs:
138 args = exc.args
138 args = exc.args
139 kw = exc.kwargs
139 kw = exc.kwargs
140
140
141 def __str__(self):
141 def __str__(self):
142 return str(self.chain)
142 return str(self.chain)
143
143
144 def add(self, func, priority=0):
144 def add(self, func, priority=0):
145 """ Add a func to the cmd chain with given priority """
145 """ Add a func to the cmd chain with given priority """
146 bisect.insort(self.chain,(priority,func))
146 bisect.insort(self.chain,(priority,func))
147
147
148 def result_display(self,arg):
148 def result_display(self,arg):
149 """ Default display hook.
149 """ Default display hook.
150
150
151 Called for displaying the result to the user.
151 Called for displaying the result to the user.
152 """
152 """
153
153
154 if self.rc.pprint:
154 if self.rc.pprint:
155 out = pformat(arg)
155 out = pformat(arg)
156 if '\n' in out:
156 if '\n' in out:
157 # So that multi-line strings line up with the left column of
157 # So that multi-line strings line up with the left column of
158 # the screen, instead of having the output prompt mess up
158 # the screen, instead of having the output prompt mess up
159 # their first line.
159 # their first line.
160 Term.cout.write('\n')
160 Term.cout.write('\n')
161 print >>Term.cout, out
161 print >>Term.cout, out
162 else:
162 else:
163 # By default, the interactive prompt uses repr() to display results,
163 # By default, the interactive prompt uses repr() to display results,
164 # so we should honor this. Users who'd rather use a different
164 # so we should honor this. Users who'd rather use a different
165 # mechanism can easily override this hook.
165 # mechanism can easily override this hook.
166 print >>Term.cout, repr(arg)
166 print >>Term.cout, repr(arg)
167 # the default display hook doesn't manipulate the value to put in history
167 # the default display hook doesn't manipulate the value to put in history
168 return None
168 return None
169
169
170 def input_prefilter(self,line):
170 def input_prefilter(self,line):
171 """ Default input prefilter
171 """ Default input prefilter
172
172
173 This returns the line as unchanged, so that the interpreter
173 This returns the line as unchanged, so that the interpreter
174 knows that nothing was done and proceeds with "classic" prefiltering
174 knows that nothing was done and proceeds with "classic" prefiltering
175 (%magics, !shell commands etc.).
175 (%magics, !shell commands etc.).
176
176
177 Note that leading whitespace is not passed to this hook. Prefilter
177 Note that leading whitespace is not passed to this hook. Prefilter
178 can't alter indentation.
178 can't alter indentation.
179
179
180 """
180 """
181 #print "attempt to rewrite",line #dbg
181 #print "attempt to rewrite",line #dbg
182 return line
182 return line
183
183
184 def shutdown_hook(self):
184 def shutdown_hook(self):
185 """ default shutdown hook
185 """ default shutdown hook
186
186
187 Typically, shotdown hooks should raise TryNext so all shutdown ops are done
187 Typically, shotdown hooks should raise TryNext so all shutdown ops are done
188 """
188 """
189
189
190 #print "default shutdown hook ok" # dbg
190 #print "default shutdown hook ok" # dbg
191 return
191 return
192
192
193 def late_startup_hook(self):
193 def late_startup_hook(self):
194 """ Executed after ipython has been constructed and configured
194 """ Executed after ipython has been constructed and configured
195
195
196 """
196 """
197 #print "default startup hook ok" # dbg
197 #print "default startup hook ok" # dbg
198
198
199 def generate_prompt(self, is_continuation):
199 def generate_prompt(self, is_continuation):
200 """ calculate and return a string with the prompt to display """
200 """ calculate and return a string with the prompt to display """
201 ip = self.api
201 ip = self.api
202 if is_continuation:
202 if is_continuation:
203 return str(ip.IP.outputcache.prompt2)
203 return str(ip.IP.outputcache.prompt2)
204 return str(ip.IP.outputcache.prompt1)
204 return str(ip.IP.outputcache.prompt1)
205
205
206 def generate_output_prompt(self):
207 ip = self.api
208 return str(ip.IP.outputcache.prompt_out)
209
206 No newline at end of file
210
@@ -1,5582 +1,5585
1 2006-06-15 Ville Vainio <vivainio@gmail.com>
1 2006-06-15 Ville Vainio <vivainio@gmail.com>
2
2
3 * iplib.py, hooks.py: Added new generate_prompt hook that can be
3 * iplib.py, hooks.py: Added new generate_prompt hook that can be
4 used to create prompts dynamically, instead of the "old" way of
4 used to create prompts dynamically, instead of the "old" way of
5 assigning "magic" strings to prompt_in1 and prompt_in2. The old
5 assigning "magic" strings to prompt_in1 and prompt_in2. The old
6 way still works (it's invoked by the default hook), of course.
6 way still works (it's invoked by the default hook), of course.
7
7
8 * Prompts.py: added generate_output_prompt hook for altering output
9 prompt
10
8 * Release.py: Changed version string to 0.7.3.svn.
11 * Release.py: Changed version string to 0.7.3.svn.
9
12
10 2006-06-15 Walter Doerwald <walter@livinglogic.de>
13 2006-06-15 Walter Doerwald <walter@livinglogic.de>
11
14
12 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
15 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
13 the call to fetch() always tries to fetch enough data for at least one
16 the call to fetch() always tries to fetch enough data for at least one
14 full screen. This makes it possible to simply call moveto(0,0,True) in
17 full screen. This makes it possible to simply call moveto(0,0,True) in
15 the constructor. Fix typos and removed the obsolete goto attribute.
18 the constructor. Fix typos and removed the obsolete goto attribute.
16
19
17 2006-06-12 Ville Vainio <vivainio@gmail.com>
20 2006-06-12 Ville Vainio <vivainio@gmail.com>
18
21
19 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
22 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
20 allowing $variable interpolation within multiline statements,
23 allowing $variable interpolation within multiline statements,
21 though so far only with "sh" profile for a testing period.
24 though so far only with "sh" profile for a testing period.
22 The patch also enables splitting long commands with \ but it
25 The patch also enables splitting long commands with \ but it
23 doesn't work properly yet.
26 doesn't work properly yet.
24
27
25 2006-06-12 Walter Doerwald <walter@livinglogic.de>
28 2006-06-12 Walter Doerwald <walter@livinglogic.de>
26
29
27 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
30 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
28 input history and the position of the cursor in the input history for
31 input history and the position of the cursor in the input history for
29 the find, findbackwards and goto command.
32 the find, findbackwards and goto command.
30
33
31 2006-06-10 Walter Doerwald <walter@livinglogic.de>
34 2006-06-10 Walter Doerwald <walter@livinglogic.de>
32
35
33 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
36 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
34 implements the basic functionality of browser commands that require
37 implements the basic functionality of browser commands that require
35 input. Reimplement the goto, find and findbackwards commands as
38 input. Reimplement the goto, find and findbackwards commands as
36 subclasses of _CommandInput. Add an input history and keymaps to those
39 subclasses of _CommandInput. Add an input history and keymaps to those
37 commands. Add "\r" as a keyboard shortcut for the enterdefault and
40 commands. Add "\r" as a keyboard shortcut for the enterdefault and
38 execute commands.
41 execute commands.
39
42
40 2006-06-07 Ville Vainio <vivainio@gmail.com>
43 2006-06-07 Ville Vainio <vivainio@gmail.com>
41
44
42 * iplib.py: ipython mybatch.ipy exits ipython immediately after
45 * iplib.py: ipython mybatch.ipy exits ipython immediately after
43 running the batch files instead of leaving the session open.
46 running the batch files instead of leaving the session open.
44
47
45 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
48 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
46
49
47 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
50 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
48 the original fix was incomplete. Patch submitted by W. Maier.
51 the original fix was incomplete. Patch submitted by W. Maier.
49
52
50 2006-06-07 Ville Vainio <vivainio@gmail.com>
53 2006-06-07 Ville Vainio <vivainio@gmail.com>
51
54
52 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
55 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
53 Confirmation prompts can be supressed by 'quiet' option.
56 Confirmation prompts can be supressed by 'quiet' option.
54 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
57 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
55
58
56 2006-06-06 *** Released version 0.7.2
59 2006-06-06 *** Released version 0.7.2
57
60
58 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
61 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
59
62
60 * IPython/Release.py (version): Made 0.7.2 final for release.
63 * IPython/Release.py (version): Made 0.7.2 final for release.
61 Repo tagged and release cut.
64 Repo tagged and release cut.
62
65
63 2006-06-05 Ville Vainio <vivainio@gmail.com>
66 2006-06-05 Ville Vainio <vivainio@gmail.com>
64
67
65 * Magic.py (magic_rehashx): Honor no_alias list earlier in
68 * Magic.py (magic_rehashx): Honor no_alias list earlier in
66 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
69 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
67
70
68 * upgrade_dir.py: try import 'path' module a bit harder
71 * upgrade_dir.py: try import 'path' module a bit harder
69 (for %upgrade)
72 (for %upgrade)
70
73
71 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
74 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
72
75
73 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
76 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
74 instead of looping 20 times.
77 instead of looping 20 times.
75
78
76 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
79 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
77 correctly at initialization time. Bug reported by Krishna Mohan
80 correctly at initialization time. Bug reported by Krishna Mohan
78 Gundu <gkmohan-AT-gmail.com> on the user list.
81 Gundu <gkmohan-AT-gmail.com> on the user list.
79
82
80 * IPython/Release.py (version): Mark 0.7.2 version to start
83 * IPython/Release.py (version): Mark 0.7.2 version to start
81 testing for release on 06/06.
84 testing for release on 06/06.
82
85
83 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
86 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
84
87
85 * scripts/irunner: thin script interface so users don't have to
88 * scripts/irunner: thin script interface so users don't have to
86 find the module and call it as an executable, since modules rarely
89 find the module and call it as an executable, since modules rarely
87 live in people's PATH.
90 live in people's PATH.
88
91
89 * IPython/irunner.py (InteractiveRunner.__init__): added
92 * IPython/irunner.py (InteractiveRunner.__init__): added
90 delaybeforesend attribute to control delays with newer versions of
93 delaybeforesend attribute to control delays with newer versions of
91 pexpect. Thanks to detailed help from pexpect's author, Noah
94 pexpect. Thanks to detailed help from pexpect's author, Noah
92 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
95 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
93 correctly (it works in NoColor mode).
96 correctly (it works in NoColor mode).
94
97
95 * IPython/iplib.py (handle_normal): fix nasty crash reported on
98 * IPython/iplib.py (handle_normal): fix nasty crash reported on
96 SAGE list, from improper log() calls.
99 SAGE list, from improper log() calls.
97
100
98 2006-05-31 Ville Vainio <vivainio@gmail.com>
101 2006-05-31 Ville Vainio <vivainio@gmail.com>
99
102
100 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
103 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
101 with args in parens to work correctly with dirs that have spaces.
104 with args in parens to work correctly with dirs that have spaces.
102
105
103 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
106 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
104
107
105 * IPython/Logger.py (Logger.logstart): add option to log raw input
108 * IPython/Logger.py (Logger.logstart): add option to log raw input
106 instead of the processed one. A -r flag was added to the
109 instead of the processed one. A -r flag was added to the
107 %logstart magic used for controlling logging.
110 %logstart magic used for controlling logging.
108
111
109 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
112 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
110
113
111 * IPython/iplib.py (InteractiveShell.__init__): add check for the
114 * IPython/iplib.py (InteractiveShell.__init__): add check for the
112 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
115 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
113 recognize the option. After a bug report by Will Maier. This
116 recognize the option. After a bug report by Will Maier. This
114 closes #64 (will do it after confirmation from W. Maier).
117 closes #64 (will do it after confirmation from W. Maier).
115
118
116 * IPython/irunner.py: New module to run scripts as if manually
119 * IPython/irunner.py: New module to run scripts as if manually
117 typed into an interactive environment, based on pexpect. After a
120 typed into an interactive environment, based on pexpect. After a
118 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
121 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
119 ipython-user list. Simple unittests in the tests/ directory.
122 ipython-user list. Simple unittests in the tests/ directory.
120
123
121 * tools/release: add Will Maier, OpenBSD port maintainer, to
124 * tools/release: add Will Maier, OpenBSD port maintainer, to
122 recepients list. We are now officially part of the OpenBSD ports:
125 recepients list. We are now officially part of the OpenBSD ports:
123 http://www.openbsd.org/ports.html ! Many thanks to Will for the
126 http://www.openbsd.org/ports.html ! Many thanks to Will for the
124 work.
127 work.
125
128
126 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
129 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
127
130
128 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
131 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
129 so that it doesn't break tkinter apps.
132 so that it doesn't break tkinter apps.
130
133
131 * IPython/iplib.py (_prefilter): fix bug where aliases would
134 * IPython/iplib.py (_prefilter): fix bug where aliases would
132 shadow variables when autocall was fully off. Reported by SAGE
135 shadow variables when autocall was fully off. Reported by SAGE
133 author William Stein.
136 author William Stein.
134
137
135 * IPython/OInspect.py (Inspector.__init__): add a flag to control
138 * IPython/OInspect.py (Inspector.__init__): add a flag to control
136 at what detail level strings are computed when foo? is requested.
139 at what detail level strings are computed when foo? is requested.
137 This allows users to ask for example that the string form of an
140 This allows users to ask for example that the string form of an
138 object is only computed when foo?? is called, or even never, by
141 object is only computed when foo?? is called, or even never, by
139 setting the object_info_string_level >= 2 in the configuration
142 setting the object_info_string_level >= 2 in the configuration
140 file. This new option has been added and documented. After a
143 file. This new option has been added and documented. After a
141 request by SAGE to be able to control the printing of very large
144 request by SAGE to be able to control the printing of very large
142 objects more easily.
145 objects more easily.
143
146
144 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
147 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
145
148
146 * IPython/ipmaker.py (make_IPython): remove the ipython call path
149 * IPython/ipmaker.py (make_IPython): remove the ipython call path
147 from sys.argv, to be 100% consistent with how Python itself works
150 from sys.argv, to be 100% consistent with how Python itself works
148 (as seen for example with python -i file.py). After a bug report
151 (as seen for example with python -i file.py). After a bug report
149 by Jeffrey Collins.
152 by Jeffrey Collins.
150
153
151 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
154 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
152 nasty bug which was preventing custom namespaces with -pylab,
155 nasty bug which was preventing custom namespaces with -pylab,
153 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
156 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
154 compatibility (long gone from mpl).
157 compatibility (long gone from mpl).
155
158
156 * IPython/ipapi.py (make_session): name change: create->make. We
159 * IPython/ipapi.py (make_session): name change: create->make. We
157 use make in other places (ipmaker,...), it's shorter and easier to
160 use make in other places (ipmaker,...), it's shorter and easier to
158 type and say, etc. I'm trying to clean things before 0.7.2 so
161 type and say, etc. I'm trying to clean things before 0.7.2 so
159 that I can keep things stable wrt to ipapi in the chainsaw branch.
162 that I can keep things stable wrt to ipapi in the chainsaw branch.
160
163
161 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
164 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
162 python-mode recognizes our debugger mode. Add support for
165 python-mode recognizes our debugger mode. Add support for
163 autoindent inside (X)emacs. After a patch sent in by Jin Liu
166 autoindent inside (X)emacs. After a patch sent in by Jin Liu
164 <m.liu.jin-AT-gmail.com> originally written by
167 <m.liu.jin-AT-gmail.com> originally written by
165 doxgen-AT-newsmth.net (with minor modifications for xemacs
168 doxgen-AT-newsmth.net (with minor modifications for xemacs
166 compatibility)
169 compatibility)
167
170
168 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
171 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
169 tracebacks when walking the stack so that the stack tracking system
172 tracebacks when walking the stack so that the stack tracking system
170 in emacs' python-mode can identify the frames correctly.
173 in emacs' python-mode can identify the frames correctly.
171
174
172 * IPython/ipmaker.py (make_IPython): make the internal (and
175 * IPython/ipmaker.py (make_IPython): make the internal (and
173 default config) autoedit_syntax value false by default. Too many
176 default config) autoedit_syntax value false by default. Too many
174 users have complained to me (both on and off-list) about problems
177 users have complained to me (both on and off-list) about problems
175 with this option being on by default, so I'm making it default to
178 with this option being on by default, so I'm making it default to
176 off. It can still be enabled by anyone via the usual mechanisms.
179 off. It can still be enabled by anyone via the usual mechanisms.
177
180
178 * IPython/completer.py (Completer.attr_matches): add support for
181 * IPython/completer.py (Completer.attr_matches): add support for
179 PyCrust-style _getAttributeNames magic method. Patch contributed
182 PyCrust-style _getAttributeNames magic method. Patch contributed
180 by <mscott-AT-goldenspud.com>. Closes #50.
183 by <mscott-AT-goldenspud.com>. Closes #50.
181
184
182 * IPython/iplib.py (InteractiveShell.__init__): remove the
185 * IPython/iplib.py (InteractiveShell.__init__): remove the
183 deletion of exit/quit from __builtin__, which can break
186 deletion of exit/quit from __builtin__, which can break
184 third-party tools like the Zope debugging console. The
187 third-party tools like the Zope debugging console. The
185 %exit/%quit magics remain. In general, it's probably a good idea
188 %exit/%quit magics remain. In general, it's probably a good idea
186 not to delete anything from __builtin__, since we never know what
189 not to delete anything from __builtin__, since we never know what
187 that will break. In any case, python now (for 2.5) will support
190 that will break. In any case, python now (for 2.5) will support
188 'real' exit/quit, so this issue is moot. Closes #55.
191 'real' exit/quit, so this issue is moot. Closes #55.
189
192
190 * IPython/genutils.py (with_obj): rename the 'with' function to
193 * IPython/genutils.py (with_obj): rename the 'with' function to
191 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
194 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
192 becomes a language keyword. Closes #53.
195 becomes a language keyword. Closes #53.
193
196
194 * IPython/FakeModule.py (FakeModule.__init__): add a proper
197 * IPython/FakeModule.py (FakeModule.__init__): add a proper
195 __file__ attribute to this so it fools more things into thinking
198 __file__ attribute to this so it fools more things into thinking
196 it is a real module. Closes #59.
199 it is a real module. Closes #59.
197
200
198 * IPython/Magic.py (magic_edit): add -n option to open the editor
201 * IPython/Magic.py (magic_edit): add -n option to open the editor
199 at a specific line number. After a patch by Stefan van der Walt.
202 at a specific line number. After a patch by Stefan van der Walt.
200
203
201 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
204 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
202
205
203 * IPython/iplib.py (edit_syntax_error): fix crash when for some
206 * IPython/iplib.py (edit_syntax_error): fix crash when for some
204 reason the file could not be opened. After automatic crash
207 reason the file could not be opened. After automatic crash
205 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
208 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
206 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
209 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
207 (_should_recompile): Don't fire editor if using %bg, since there
210 (_should_recompile): Don't fire editor if using %bg, since there
208 is no file in the first place. From the same report as above.
211 is no file in the first place. From the same report as above.
209 (raw_input): protect against faulty third-party prefilters. After
212 (raw_input): protect against faulty third-party prefilters. After
210 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
213 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
211 while running under SAGE.
214 while running under SAGE.
212
215
213 2006-05-23 Ville Vainio <vivainio@gmail.com>
216 2006-05-23 Ville Vainio <vivainio@gmail.com>
214
217
215 * ipapi.py: Stripped down ip.to_user_ns() to work only as
218 * ipapi.py: Stripped down ip.to_user_ns() to work only as
216 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
219 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
217 now returns None (again), unless dummy is specifically allowed by
220 now returns None (again), unless dummy is specifically allowed by
218 ipapi.get(allow_dummy=True).
221 ipapi.get(allow_dummy=True).
219
222
220 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
223 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
221
224
222 * IPython: remove all 2.2-compatibility objects and hacks from
225 * IPython: remove all 2.2-compatibility objects and hacks from
223 everywhere, since we only support 2.3 at this point. Docs
226 everywhere, since we only support 2.3 at this point. Docs
224 updated.
227 updated.
225
228
226 * IPython/ipapi.py (IPApi.__init__): Clean up of all getters.
229 * IPython/ipapi.py (IPApi.__init__): Clean up of all getters.
227 Anything requiring extra validation can be turned into a Python
230 Anything requiring extra validation can be turned into a Python
228 property in the future. I used a property for the db one b/c
231 property in the future. I used a property for the db one b/c
229 there was a nasty circularity problem with the initialization
232 there was a nasty circularity problem with the initialization
230 order, which right now I don't have time to clean up.
233 order, which right now I don't have time to clean up.
231
234
232 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
235 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
233 another locking bug reported by Jorgen. I'm not 100% sure though,
236 another locking bug reported by Jorgen. I'm not 100% sure though,
234 so more testing is needed...
237 so more testing is needed...
235
238
236 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
239 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
237
240
238 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
241 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
239 local variables from any routine in user code (typically executed
242 local variables from any routine in user code (typically executed
240 with %run) directly into the interactive namespace. Very useful
243 with %run) directly into the interactive namespace. Very useful
241 when doing complex debugging.
244 when doing complex debugging.
242 (IPythonNotRunning): Changed the default None object to a dummy
245 (IPythonNotRunning): Changed the default None object to a dummy
243 whose attributes can be queried as well as called without
246 whose attributes can be queried as well as called without
244 exploding, to ease writing code which works transparently both in
247 exploding, to ease writing code which works transparently both in
245 and out of ipython and uses some of this API.
248 and out of ipython and uses some of this API.
246
249
247 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
250 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
248
251
249 * IPython/hooks.py (result_display): Fix the fact that our display
252 * IPython/hooks.py (result_display): Fix the fact that our display
250 hook was using str() instead of repr(), as the default python
253 hook was using str() instead of repr(), as the default python
251 console does. This had gone unnoticed b/c it only happened if
254 console does. This had gone unnoticed b/c it only happened if
252 %Pprint was off, but the inconsistency was there.
255 %Pprint was off, but the inconsistency was there.
253
256
254 2006-05-15 Ville Vainio <vivainio@gmail.com>
257 2006-05-15 Ville Vainio <vivainio@gmail.com>
255
258
256 * Oinspect.py: Only show docstring for nonexisting/binary files
259 * Oinspect.py: Only show docstring for nonexisting/binary files
257 when doing object??, closing ticket #62
260 when doing object??, closing ticket #62
258
261
259 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
262 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
260
263
261 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
264 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
262 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
265 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
263 was being released in a routine which hadn't checked if it had
266 was being released in a routine which hadn't checked if it had
264 been the one to acquire it.
267 been the one to acquire it.
265
268
266 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
269 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
267
270
268 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
271 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
269
272
270 2006-04-11 Ville Vainio <vivainio@gmail.com>
273 2006-04-11 Ville Vainio <vivainio@gmail.com>
271
274
272 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
275 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
273 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
276 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
274 prefilters, allowing stuff like magics and aliases in the file.
277 prefilters, allowing stuff like magics and aliases in the file.
275
278
276 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
279 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
277 added. Supported now are "%clear in" and "%clear out" (clear input and
280 added. Supported now are "%clear in" and "%clear out" (clear input and
278 output history, respectively). Also fixed CachedOutput.flush to
281 output history, respectively). Also fixed CachedOutput.flush to
279 properly flush the output cache.
282 properly flush the output cache.
280
283
281 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
284 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
282 half-success (and fail explicitly).
285 half-success (and fail explicitly).
283
286
284 2006-03-28 Ville Vainio <vivainio@gmail.com>
287 2006-03-28 Ville Vainio <vivainio@gmail.com>
285
288
286 * iplib.py: Fix quoting of aliases so that only argless ones
289 * iplib.py: Fix quoting of aliases so that only argless ones
287 are quoted
290 are quoted
288
291
289 2006-03-28 Ville Vainio <vivainio@gmail.com>
292 2006-03-28 Ville Vainio <vivainio@gmail.com>
290
293
291 * iplib.py: Quote aliases with spaces in the name.
294 * iplib.py: Quote aliases with spaces in the name.
292 "c:\program files\blah\bin" is now legal alias target.
295 "c:\program files\blah\bin" is now legal alias target.
293
296
294 * ext_rehashdir.py: Space no longer allowed as arg
297 * ext_rehashdir.py: Space no longer allowed as arg
295 separator, since space is legal in path names.
298 separator, since space is legal in path names.
296
299
297 2006-03-16 Ville Vainio <vivainio@gmail.com>
300 2006-03-16 Ville Vainio <vivainio@gmail.com>
298
301
299 * upgrade_dir.py: Take path.py from Extensions, correcting
302 * upgrade_dir.py: Take path.py from Extensions, correcting
300 %upgrade magic
303 %upgrade magic
301
304
302 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
305 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
303
306
304 * hooks.py: Only enclose editor binary in quotes if legal and
307 * hooks.py: Only enclose editor binary in quotes if legal and
305 necessary (space in the name, and is an existing file). Fixes a bug
308 necessary (space in the name, and is an existing file). Fixes a bug
306 reported by Zachary Pincus.
309 reported by Zachary Pincus.
307
310
308 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
311 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
309
312
310 * Manual: thanks to a tip on proper color handling for Emacs, by
313 * Manual: thanks to a tip on proper color handling for Emacs, by
311 Eric J Haywiser <ejh1-AT-MIT.EDU>.
314 Eric J Haywiser <ejh1-AT-MIT.EDU>.
312
315
313 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
316 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
314 by applying the provided patch. Thanks to Liu Jin
317 by applying the provided patch. Thanks to Liu Jin
315 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
318 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
316 XEmacs/Linux, I'm trusting the submitter that it actually helps
319 XEmacs/Linux, I'm trusting the submitter that it actually helps
317 under win32/GNU Emacs. Will revisit if any problems are reported.
320 under win32/GNU Emacs. Will revisit if any problems are reported.
318
321
319 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
322 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
320
323
321 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
324 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
322 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
325 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
323
326
324 2006-03-12 Ville Vainio <vivainio@gmail.com>
327 2006-03-12 Ville Vainio <vivainio@gmail.com>
325
328
326 * Magic.py (magic_timeit): Added %timeit magic, contributed by
329 * Magic.py (magic_timeit): Added %timeit magic, contributed by
327 Torsten Marek.
330 Torsten Marek.
328
331
329 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
332 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
330
333
331 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
334 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
332 line ranges works again.
335 line ranges works again.
333
336
334 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
337 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
335
338
336 * IPython/iplib.py (showtraceback): add back sys.last_traceback
339 * IPython/iplib.py (showtraceback): add back sys.last_traceback
337 and friends, after a discussion with Zach Pincus on ipython-user.
340 and friends, after a discussion with Zach Pincus on ipython-user.
338 I'm not 100% sure, but after thinking aobut it quite a bit, it may
341 I'm not 100% sure, but after thinking aobut it quite a bit, it may
339 be OK. Testing with the multithreaded shells didn't reveal any
342 be OK. Testing with the multithreaded shells didn't reveal any
340 problems, but let's keep an eye out.
343 problems, but let's keep an eye out.
341
344
342 In the process, I fixed a few things which were calling
345 In the process, I fixed a few things which were calling
343 self.InteractiveTB() directly (like safe_execfile), which is a
346 self.InteractiveTB() directly (like safe_execfile), which is a
344 mistake: ALL exception reporting should be done by calling
347 mistake: ALL exception reporting should be done by calling
345 self.showtraceback(), which handles state and tab-completion and
348 self.showtraceback(), which handles state and tab-completion and
346 more.
349 more.
347
350
348 2006-03-01 Ville Vainio <vivainio@gmail.com>
351 2006-03-01 Ville Vainio <vivainio@gmail.com>
349
352
350 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
353 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
351 To use, do "from ipipe import *".
354 To use, do "from ipipe import *".
352
355
353 2006-02-24 Ville Vainio <vivainio@gmail.com>
356 2006-02-24 Ville Vainio <vivainio@gmail.com>
354
357
355 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
358 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
356 "cleanly" and safely than the older upgrade mechanism.
359 "cleanly" and safely than the older upgrade mechanism.
357
360
358 2006-02-21 Ville Vainio <vivainio@gmail.com>
361 2006-02-21 Ville Vainio <vivainio@gmail.com>
359
362
360 * Magic.py: %save works again.
363 * Magic.py: %save works again.
361
364
362 2006-02-15 Ville Vainio <vivainio@gmail.com>
365 2006-02-15 Ville Vainio <vivainio@gmail.com>
363
366
364 * Magic.py: %Pprint works again
367 * Magic.py: %Pprint works again
365
368
366 * Extensions/ipy_sane_defaults.py: Provide everything provided
369 * Extensions/ipy_sane_defaults.py: Provide everything provided
367 in default ipythonrc, to make it possible to have a completely empty
370 in default ipythonrc, to make it possible to have a completely empty
368 ipythonrc (and thus completely rc-file free configuration)
371 ipythonrc (and thus completely rc-file free configuration)
369
372
370
373
371 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
374 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
372
375
373 * IPython/hooks.py (editor): quote the call to the editor command,
376 * IPython/hooks.py (editor): quote the call to the editor command,
374 to allow commands with spaces in them. Problem noted by watching
377 to allow commands with spaces in them. Problem noted by watching
375 Ian Oswald's video about textpad under win32 at
378 Ian Oswald's video about textpad under win32 at
376 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
379 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
377
380
378 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
381 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
379 describing magics (we haven't used @ for a loong time).
382 describing magics (we haven't used @ for a loong time).
380
383
381 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
384 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
382 contributed by marienz to close
385 contributed by marienz to close
383 http://www.scipy.net/roundup/ipython/issue53.
386 http://www.scipy.net/roundup/ipython/issue53.
384
387
385 2006-02-10 Ville Vainio <vivainio@gmail.com>
388 2006-02-10 Ville Vainio <vivainio@gmail.com>
386
389
387 * genutils.py: getoutput now works in win32 too
390 * genutils.py: getoutput now works in win32 too
388
391
389 * completer.py: alias and magic completion only invoked
392 * completer.py: alias and magic completion only invoked
390 at the first "item" in the line, to avoid "cd %store"
393 at the first "item" in the line, to avoid "cd %store"
391 nonsense.
394 nonsense.
392
395
393 2006-02-09 Ville Vainio <vivainio@gmail.com>
396 2006-02-09 Ville Vainio <vivainio@gmail.com>
394
397
395 * test/*: Added a unit testing framework (finally).
398 * test/*: Added a unit testing framework (finally).
396 '%run runtests.py' to run test_*.
399 '%run runtests.py' to run test_*.
397
400
398 * ipapi.py: Exposed runlines and set_custom_exc
401 * ipapi.py: Exposed runlines and set_custom_exc
399
402
400 2006-02-07 Ville Vainio <vivainio@gmail.com>
403 2006-02-07 Ville Vainio <vivainio@gmail.com>
401
404
402 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
405 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
403 instead use "f(1 2)" as before.
406 instead use "f(1 2)" as before.
404
407
405 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
408 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
406
409
407 * IPython/demo.py (IPythonDemo): Add new classes to the demo
410 * IPython/demo.py (IPythonDemo): Add new classes to the demo
408 facilities, for demos processed by the IPython input filter
411 facilities, for demos processed by the IPython input filter
409 (IPythonDemo), and for running a script one-line-at-a-time as a
412 (IPythonDemo), and for running a script one-line-at-a-time as a
410 demo, both for pure Python (LineDemo) and for IPython-processed
413 demo, both for pure Python (LineDemo) and for IPython-processed
411 input (IPythonLineDemo). After a request by Dave Kohel, from the
414 input (IPythonLineDemo). After a request by Dave Kohel, from the
412 SAGE team.
415 SAGE team.
413 (Demo.edit): added and edit() method to the demo objects, to edit
416 (Demo.edit): added and edit() method to the demo objects, to edit
414 the in-memory copy of the last executed block.
417 the in-memory copy of the last executed block.
415
418
416 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
419 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
417 processing to %edit, %macro and %save. These commands can now be
420 processing to %edit, %macro and %save. These commands can now be
418 invoked on the unprocessed input as it was typed by the user
421 invoked on the unprocessed input as it was typed by the user
419 (without any prefilters applied). After requests by the SAGE team
422 (without any prefilters applied). After requests by the SAGE team
420 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
423 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
421
424
422 2006-02-01 Ville Vainio <vivainio@gmail.com>
425 2006-02-01 Ville Vainio <vivainio@gmail.com>
423
426
424 * setup.py, eggsetup.py: easy_install ipython==dev works
427 * setup.py, eggsetup.py: easy_install ipython==dev works
425 correctly now (on Linux)
428 correctly now (on Linux)
426
429
427 * ipy_user_conf,ipmaker: user config changes, removed spurious
430 * ipy_user_conf,ipmaker: user config changes, removed spurious
428 warnings
431 warnings
429
432
430 * iplib: if rc.banner is string, use it as is.
433 * iplib: if rc.banner is string, use it as is.
431
434
432 * Magic: %pycat accepts a string argument and pages it's contents.
435 * Magic: %pycat accepts a string argument and pages it's contents.
433
436
434
437
435 2006-01-30 Ville Vainio <vivainio@gmail.com>
438 2006-01-30 Ville Vainio <vivainio@gmail.com>
436
439
437 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
440 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
438 Now %store and bookmarks work through PickleShare, meaning that
441 Now %store and bookmarks work through PickleShare, meaning that
439 concurrent access is possible and all ipython sessions see the
442 concurrent access is possible and all ipython sessions see the
440 same database situation all the time, instead of snapshot of
443 same database situation all the time, instead of snapshot of
441 the situation when the session was started. Hence, %bookmark
444 the situation when the session was started. Hence, %bookmark
442 results are immediately accessible from othes sessions. The database
445 results are immediately accessible from othes sessions. The database
443 is also available for use by user extensions. See:
446 is also available for use by user extensions. See:
444 http://www.python.org/pypi/pickleshare
447 http://www.python.org/pypi/pickleshare
445
448
446 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
449 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
447
450
448 * aliases can now be %store'd
451 * aliases can now be %store'd
449
452
450 * path.py move to Extensions so that pickleshare does not need
453 * path.py move to Extensions so that pickleshare does not need
451 IPython-specific import. Extensions added to pythonpath right
454 IPython-specific import. Extensions added to pythonpath right
452 at __init__.
455 at __init__.
453
456
454 * iplib.py: ipalias deprecated/redundant; aliases are converted and
457 * iplib.py: ipalias deprecated/redundant; aliases are converted and
455 called with _ip.system and the pre-transformed command string.
458 called with _ip.system and the pre-transformed command string.
456
459
457 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
460 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
458
461
459 * IPython/iplib.py (interact): Fix that we were not catching
462 * IPython/iplib.py (interact): Fix that we were not catching
460 KeyboardInterrupt exceptions properly. I'm not quite sure why the
463 KeyboardInterrupt exceptions properly. I'm not quite sure why the
461 logic here had to change, but it's fixed now.
464 logic here had to change, but it's fixed now.
462
465
463 2006-01-29 Ville Vainio <vivainio@gmail.com>
466 2006-01-29 Ville Vainio <vivainio@gmail.com>
464
467
465 * iplib.py: Try to import pyreadline on Windows.
468 * iplib.py: Try to import pyreadline on Windows.
466
469
467 2006-01-27 Ville Vainio <vivainio@gmail.com>
470 2006-01-27 Ville Vainio <vivainio@gmail.com>
468
471
469 * iplib.py: Expose ipapi as _ip in builtin namespace.
472 * iplib.py: Expose ipapi as _ip in builtin namespace.
470 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
473 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
471 and ip_set_hook (-> _ip.set_hook) redundant. % and !
474 and ip_set_hook (-> _ip.set_hook) redundant. % and !
472 syntax now produce _ip.* variant of the commands.
475 syntax now produce _ip.* variant of the commands.
473
476
474 * "_ip.options().autoedit_syntax = 2" automatically throws
477 * "_ip.options().autoedit_syntax = 2" automatically throws
475 user to editor for syntax error correction without prompting.
478 user to editor for syntax error correction without prompting.
476
479
477 2006-01-27 Ville Vainio <vivainio@gmail.com>
480 2006-01-27 Ville Vainio <vivainio@gmail.com>
478
481
479 * ipmaker.py: Give "realistic" sys.argv for scripts (without
482 * ipmaker.py: Give "realistic" sys.argv for scripts (without
480 'ipython' at argv[0]) executed through command line.
483 'ipython' at argv[0]) executed through command line.
481 NOTE: this DEPRECATES calling ipython with multiple scripts
484 NOTE: this DEPRECATES calling ipython with multiple scripts
482 ("ipython a.py b.py c.py")
485 ("ipython a.py b.py c.py")
483
486
484 * iplib.py, hooks.py: Added configurable input prefilter,
487 * iplib.py, hooks.py: Added configurable input prefilter,
485 named 'input_prefilter'. See ext_rescapture.py for example
488 named 'input_prefilter'. See ext_rescapture.py for example
486 usage.
489 usage.
487
490
488 * ext_rescapture.py, Magic.py: Better system command output capture
491 * ext_rescapture.py, Magic.py: Better system command output capture
489 through 'var = !ls' (deprecates user-visible %sc). Same notation
492 through 'var = !ls' (deprecates user-visible %sc). Same notation
490 applies for magics, 'var = %alias' assigns alias list to var.
493 applies for magics, 'var = %alias' assigns alias list to var.
491
494
492 * ipapi.py: added meta() for accessing extension-usable data store.
495 * ipapi.py: added meta() for accessing extension-usable data store.
493
496
494 * iplib.py: added InteractiveShell.getapi(). New magics should be
497 * iplib.py: added InteractiveShell.getapi(). New magics should be
495 written doing self.getapi() instead of using the shell directly.
498 written doing self.getapi() instead of using the shell directly.
496
499
497 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
500 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
498 %store foo >> ~/myfoo.txt to store variables to files (in clean
501 %store foo >> ~/myfoo.txt to store variables to files (in clean
499 textual form, not a restorable pickle).
502 textual form, not a restorable pickle).
500
503
501 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
504 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
502
505
503 * usage.py, Magic.py: added %quickref
506 * usage.py, Magic.py: added %quickref
504
507
505 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
508 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
506
509
507 * GetoptErrors when invoking magics etc. with wrong args
510 * GetoptErrors when invoking magics etc. with wrong args
508 are now more helpful:
511 are now more helpful:
509 GetoptError: option -l not recognized (allowed: "qb" )
512 GetoptError: option -l not recognized (allowed: "qb" )
510
513
511 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
514 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
512
515
513 * IPython/demo.py (Demo.show): Flush stdout after each block, so
516 * IPython/demo.py (Demo.show): Flush stdout after each block, so
514 computationally intensive blocks don't appear to stall the demo.
517 computationally intensive blocks don't appear to stall the demo.
515
518
516 2006-01-24 Ville Vainio <vivainio@gmail.com>
519 2006-01-24 Ville Vainio <vivainio@gmail.com>
517
520
518 * iplib.py, hooks.py: 'result_display' hook can return a non-None
521 * iplib.py, hooks.py: 'result_display' hook can return a non-None
519 value to manipulate resulting history entry.
522 value to manipulate resulting history entry.
520
523
521 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
524 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
522 to instance methods of IPApi class, to make extending an embedded
525 to instance methods of IPApi class, to make extending an embedded
523 IPython feasible. See ext_rehashdir.py for example usage.
526 IPython feasible. See ext_rehashdir.py for example usage.
524
527
525 * Merged 1071-1076 from banches/0.7.1
528 * Merged 1071-1076 from banches/0.7.1
526
529
527
530
528 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
531 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
529
532
530 * tools/release (daystamp): Fix build tools to use the new
533 * tools/release (daystamp): Fix build tools to use the new
531 eggsetup.py script to build lightweight eggs.
534 eggsetup.py script to build lightweight eggs.
532
535
533 * Applied changesets 1062 and 1064 before 0.7.1 release.
536 * Applied changesets 1062 and 1064 before 0.7.1 release.
534
537
535 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
538 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
536 see the raw input history (without conversions like %ls ->
539 see the raw input history (without conversions like %ls ->
537 ipmagic("ls")). After a request from W. Stein, SAGE
540 ipmagic("ls")). After a request from W. Stein, SAGE
538 (http://modular.ucsd.edu/sage) developer. This information is
541 (http://modular.ucsd.edu/sage) developer. This information is
539 stored in the input_hist_raw attribute of the IPython instance, so
542 stored in the input_hist_raw attribute of the IPython instance, so
540 developers can access it if needed (it's an InputList instance).
543 developers can access it if needed (it's an InputList instance).
541
544
542 * Versionstring = 0.7.2.svn
545 * Versionstring = 0.7.2.svn
543
546
544 * eggsetup.py: A separate script for constructing eggs, creates
547 * eggsetup.py: A separate script for constructing eggs, creates
545 proper launch scripts even on Windows (an .exe file in
548 proper launch scripts even on Windows (an .exe file in
546 \python24\scripts).
549 \python24\scripts).
547
550
548 * ipapi.py: launch_new_instance, launch entry point needed for the
551 * ipapi.py: launch_new_instance, launch entry point needed for the
549 egg.
552 egg.
550
553
551 2006-01-23 Ville Vainio <vivainio@gmail.com>
554 2006-01-23 Ville Vainio <vivainio@gmail.com>
552
555
553 * Added %cpaste magic for pasting python code
556 * Added %cpaste magic for pasting python code
554
557
555 2006-01-22 Ville Vainio <vivainio@gmail.com>
558 2006-01-22 Ville Vainio <vivainio@gmail.com>
556
559
557 * Merge from branches/0.7.1 into trunk, revs 1052-1057
560 * Merge from branches/0.7.1 into trunk, revs 1052-1057
558
561
559 * Versionstring = 0.7.2.svn
562 * Versionstring = 0.7.2.svn
560
563
561 * eggsetup.py: A separate script for constructing eggs, creates
564 * eggsetup.py: A separate script for constructing eggs, creates
562 proper launch scripts even on Windows (an .exe file in
565 proper launch scripts even on Windows (an .exe file in
563 \python24\scripts).
566 \python24\scripts).
564
567
565 * ipapi.py: launch_new_instance, launch entry point needed for the
568 * ipapi.py: launch_new_instance, launch entry point needed for the
566 egg.
569 egg.
567
570
568 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
571 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
569
572
570 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
573 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
571 %pfile foo would print the file for foo even if it was a binary.
574 %pfile foo would print the file for foo even if it was a binary.
572 Now, extensions '.so' and '.dll' are skipped.
575 Now, extensions '.so' and '.dll' are skipped.
573
576
574 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
577 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
575 bug, where macros would fail in all threaded modes. I'm not 100%
578 bug, where macros would fail in all threaded modes. I'm not 100%
576 sure, so I'm going to put out an rc instead of making a release
579 sure, so I'm going to put out an rc instead of making a release
577 today, and wait for feedback for at least a few days.
580 today, and wait for feedback for at least a few days.
578
581
579 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
582 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
580 it...) the handling of pasting external code with autoindent on.
583 it...) the handling of pasting external code with autoindent on.
581 To get out of a multiline input, the rule will appear for most
584 To get out of a multiline input, the rule will appear for most
582 users unchanged: two blank lines or change the indent level
585 users unchanged: two blank lines or change the indent level
583 proposed by IPython. But there is a twist now: you can
586 proposed by IPython. But there is a twist now: you can
584 add/subtract only *one or two spaces*. If you add/subtract three
587 add/subtract only *one or two spaces*. If you add/subtract three
585 or more (unless you completely delete the line), IPython will
588 or more (unless you completely delete the line), IPython will
586 accept that line, and you'll need to enter a second one of pure
589 accept that line, and you'll need to enter a second one of pure
587 whitespace. I know it sounds complicated, but I can't find a
590 whitespace. I know it sounds complicated, but I can't find a
588 different solution that covers all the cases, with the right
591 different solution that covers all the cases, with the right
589 heuristics. Hopefully in actual use, nobody will really notice
592 heuristics. Hopefully in actual use, nobody will really notice
590 all these strange rules and things will 'just work'.
593 all these strange rules and things will 'just work'.
591
594
592 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
595 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
593
596
594 * IPython/iplib.py (interact): catch exceptions which can be
597 * IPython/iplib.py (interact): catch exceptions which can be
595 triggered asynchronously by signal handlers. Thanks to an
598 triggered asynchronously by signal handlers. Thanks to an
596 automatic crash report, submitted by Colin Kingsley
599 automatic crash report, submitted by Colin Kingsley
597 <tercel-AT-gentoo.org>.
600 <tercel-AT-gentoo.org>.
598
601
599 2006-01-20 Ville Vainio <vivainio@gmail.com>
602 2006-01-20 Ville Vainio <vivainio@gmail.com>
600
603
601 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
604 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
602 (%rehashdir, very useful, try it out) of how to extend ipython
605 (%rehashdir, very useful, try it out) of how to extend ipython
603 with new magics. Also added Extensions dir to pythonpath to make
606 with new magics. Also added Extensions dir to pythonpath to make
604 importing extensions easy.
607 importing extensions easy.
605
608
606 * %store now complains when trying to store interactively declared
609 * %store now complains when trying to store interactively declared
607 classes / instances of those classes.
610 classes / instances of those classes.
608
611
609 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
612 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
610 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
613 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
611 if they exist, and ipy_user_conf.py with some defaults is created for
614 if they exist, and ipy_user_conf.py with some defaults is created for
612 the user.
615 the user.
613
616
614 * Startup rehashing done by the config file, not InterpreterExec.
617 * Startup rehashing done by the config file, not InterpreterExec.
615 This means system commands are available even without selecting the
618 This means system commands are available even without selecting the
616 pysh profile. It's the sensible default after all.
619 pysh profile. It's the sensible default after all.
617
620
618 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
621 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
619
622
620 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
623 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
621 multiline code with autoindent on working. But I am really not
624 multiline code with autoindent on working. But I am really not
622 sure, so this needs more testing. Will commit a debug-enabled
625 sure, so this needs more testing. Will commit a debug-enabled
623 version for now, while I test it some more, so that Ville and
626 version for now, while I test it some more, so that Ville and
624 others may also catch any problems. Also made
627 others may also catch any problems. Also made
625 self.indent_current_str() a method, to ensure that there's no
628 self.indent_current_str() a method, to ensure that there's no
626 chance of the indent space count and the corresponding string
629 chance of the indent space count and the corresponding string
627 falling out of sync. All code needing the string should just call
630 falling out of sync. All code needing the string should just call
628 the method.
631 the method.
629
632
630 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
633 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
631
634
632 * IPython/Magic.py (magic_edit): fix check for when users don't
635 * IPython/Magic.py (magic_edit): fix check for when users don't
633 save their output files, the try/except was in the wrong section.
636 save their output files, the try/except was in the wrong section.
634
637
635 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
638 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
636
639
637 * IPython/Magic.py (magic_run): fix __file__ global missing from
640 * IPython/Magic.py (magic_run): fix __file__ global missing from
638 script's namespace when executed via %run. After a report by
641 script's namespace when executed via %run. After a report by
639 Vivian.
642 Vivian.
640
643
641 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
644 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
642 when using python 2.4. The parent constructor changed in 2.4, and
645 when using python 2.4. The parent constructor changed in 2.4, and
643 we need to track it directly (we can't call it, as it messes up
646 we need to track it directly (we can't call it, as it messes up
644 readline and tab-completion inside our pdb would stop working).
647 readline and tab-completion inside our pdb would stop working).
645 After a bug report by R. Bernstein <rocky-AT-panix.com>.
648 After a bug report by R. Bernstein <rocky-AT-panix.com>.
646
649
647 2006-01-16 Ville Vainio <vivainio@gmail.com>
650 2006-01-16 Ville Vainio <vivainio@gmail.com>
648
651
649 * Ipython/magic.py:Reverted back to old %edit functionality
652 * Ipython/magic.py:Reverted back to old %edit functionality
650 that returns file contents on exit.
653 that returns file contents on exit.
651
654
652 * IPython/path.py: Added Jason Orendorff's "path" module to
655 * IPython/path.py: Added Jason Orendorff's "path" module to
653 IPython tree, http://www.jorendorff.com/articles/python/path/.
656 IPython tree, http://www.jorendorff.com/articles/python/path/.
654 You can get path objects conveniently through %sc, and !!, e.g.:
657 You can get path objects conveniently through %sc, and !!, e.g.:
655 sc files=ls
658 sc files=ls
656 for p in files.paths: # or files.p
659 for p in files.paths: # or files.p
657 print p,p.mtime
660 print p,p.mtime
658
661
659 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
662 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
660 now work again without considering the exclusion regexp -
663 now work again without considering the exclusion regexp -
661 hence, things like ',foo my/path' turn to 'foo("my/path")'
664 hence, things like ',foo my/path' turn to 'foo("my/path")'
662 instead of syntax error.
665 instead of syntax error.
663
666
664
667
665 2006-01-14 Ville Vainio <vivainio@gmail.com>
668 2006-01-14 Ville Vainio <vivainio@gmail.com>
666
669
667 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
670 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
668 ipapi decorators for python 2.4 users, options() provides access to rc
671 ipapi decorators for python 2.4 users, options() provides access to rc
669 data.
672 data.
670
673
671 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
674 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
672 as path separators (even on Linux ;-). Space character after
675 as path separators (even on Linux ;-). Space character after
673 backslash (as yielded by tab completer) is still space;
676 backslash (as yielded by tab completer) is still space;
674 "%cd long\ name" works as expected.
677 "%cd long\ name" works as expected.
675
678
676 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
679 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
677 as "chain of command", with priority. API stays the same,
680 as "chain of command", with priority. API stays the same,
678 TryNext exception raised by a hook function signals that
681 TryNext exception raised by a hook function signals that
679 current hook failed and next hook should try handling it, as
682 current hook failed and next hook should try handling it, as
680 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
683 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
681 requested configurable display hook, which is now implemented.
684 requested configurable display hook, which is now implemented.
682
685
683 2006-01-13 Ville Vainio <vivainio@gmail.com>
686 2006-01-13 Ville Vainio <vivainio@gmail.com>
684
687
685 * IPython/platutils*.py: platform specific utility functions,
688 * IPython/platutils*.py: platform specific utility functions,
686 so far only set_term_title is implemented (change terminal
689 so far only set_term_title is implemented (change terminal
687 label in windowing systems). %cd now changes the title to
690 label in windowing systems). %cd now changes the title to
688 current dir.
691 current dir.
689
692
690 * IPython/Release.py: Added myself to "authors" list,
693 * IPython/Release.py: Added myself to "authors" list,
691 had to create new files.
694 had to create new files.
692
695
693 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
696 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
694 shell escape; not a known bug but had potential to be one in the
697 shell escape; not a known bug but had potential to be one in the
695 future.
698 future.
696
699
697 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
700 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
698 extension API for IPython! See the module for usage example. Fix
701 extension API for IPython! See the module for usage example. Fix
699 OInspect for docstring-less magic functions.
702 OInspect for docstring-less magic functions.
700
703
701
704
702 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
705 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
703
706
704 * IPython/iplib.py (raw_input): temporarily deactivate all
707 * IPython/iplib.py (raw_input): temporarily deactivate all
705 attempts at allowing pasting of code with autoindent on. It
708 attempts at allowing pasting of code with autoindent on. It
706 introduced bugs (reported by Prabhu) and I can't seem to find a
709 introduced bugs (reported by Prabhu) and I can't seem to find a
707 robust combination which works in all cases. Will have to revisit
710 robust combination which works in all cases. Will have to revisit
708 later.
711 later.
709
712
710 * IPython/genutils.py: remove isspace() function. We've dropped
713 * IPython/genutils.py: remove isspace() function. We've dropped
711 2.2 compatibility, so it's OK to use the string method.
714 2.2 compatibility, so it's OK to use the string method.
712
715
713 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
716 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
714
717
715 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
718 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
716 matching what NOT to autocall on, to include all python binary
719 matching what NOT to autocall on, to include all python binary
717 operators (including things like 'and', 'or', 'is' and 'in').
720 operators (including things like 'and', 'or', 'is' and 'in').
718 Prompted by a bug report on 'foo & bar', but I realized we had
721 Prompted by a bug report on 'foo & bar', but I realized we had
719 many more potential bug cases with other operators. The regexp is
722 many more potential bug cases with other operators. The regexp is
720 self.re_exclude_auto, it's fairly commented.
723 self.re_exclude_auto, it's fairly commented.
721
724
722 2006-01-12 Ville Vainio <vivainio@gmail.com>
725 2006-01-12 Ville Vainio <vivainio@gmail.com>
723
726
724 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
727 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
725 Prettified and hardened string/backslash quoting with ipsystem(),
728 Prettified and hardened string/backslash quoting with ipsystem(),
726 ipalias() and ipmagic(). Now even \ characters are passed to
729 ipalias() and ipmagic(). Now even \ characters are passed to
727 %magics, !shell escapes and aliases exactly as they are in the
730 %magics, !shell escapes and aliases exactly as they are in the
728 ipython command line. Should improve backslash experience,
731 ipython command line. Should improve backslash experience,
729 particularly in Windows (path delimiter for some commands that
732 particularly in Windows (path delimiter for some commands that
730 won't understand '/'), but Unix benefits as well (regexps). %cd
733 won't understand '/'), but Unix benefits as well (regexps). %cd
731 magic still doesn't support backslash path delimiters, though. Also
734 magic still doesn't support backslash path delimiters, though. Also
732 deleted all pretense of supporting multiline command strings in
735 deleted all pretense of supporting multiline command strings in
733 !system or %magic commands. Thanks to Jerry McRae for suggestions.
736 !system or %magic commands. Thanks to Jerry McRae for suggestions.
734
737
735 * doc/build_doc_instructions.txt added. Documentation on how to
738 * doc/build_doc_instructions.txt added. Documentation on how to
736 use doc/update_manual.py, added yesterday. Both files contributed
739 use doc/update_manual.py, added yesterday. Both files contributed
737 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
740 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
738 doc/*.sh for deprecation at a later date.
741 doc/*.sh for deprecation at a later date.
739
742
740 * /ipython.py Added ipython.py to root directory for
743 * /ipython.py Added ipython.py to root directory for
741 zero-installation (tar xzvf ipython.tgz; cd ipython; python
744 zero-installation (tar xzvf ipython.tgz; cd ipython; python
742 ipython.py) and development convenience (no need to kee doing
745 ipython.py) and development convenience (no need to kee doing
743 "setup.py install" between changes).
746 "setup.py install" between changes).
744
747
745 * Made ! and !! shell escapes work (again) in multiline expressions:
748 * Made ! and !! shell escapes work (again) in multiline expressions:
746 if 1:
749 if 1:
747 !ls
750 !ls
748 !!ls
751 !!ls
749
752
750 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
753 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
751
754
752 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
755 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
753 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
756 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
754 module in case-insensitive installation. Was causing crashes
757 module in case-insensitive installation. Was causing crashes
755 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
758 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
756
759
757 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
760 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
758 <marienz-AT-gentoo.org>, closes
761 <marienz-AT-gentoo.org>, closes
759 http://www.scipy.net/roundup/ipython/issue51.
762 http://www.scipy.net/roundup/ipython/issue51.
760
763
761 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
764 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
762
765
763 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
766 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
764 problem of excessive CPU usage under *nix and keyboard lag under
767 problem of excessive CPU usage under *nix and keyboard lag under
765 win32.
768 win32.
766
769
767 2006-01-10 *** Released version 0.7.0
770 2006-01-10 *** Released version 0.7.0
768
771
769 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
772 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
770
773
771 * IPython/Release.py (revision): tag version number to 0.7.0,
774 * IPython/Release.py (revision): tag version number to 0.7.0,
772 ready for release.
775 ready for release.
773
776
774 * IPython/Magic.py (magic_edit): Add print statement to %edit so
777 * IPython/Magic.py (magic_edit): Add print statement to %edit so
775 it informs the user of the name of the temp. file used. This can
778 it informs the user of the name of the temp. file used. This can
776 help if you decide later to reuse that same file, so you know
779 help if you decide later to reuse that same file, so you know
777 where to copy the info from.
780 where to copy the info from.
778
781
779 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
782 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
780
783
781 * setup_bdist_egg.py: little script to build an egg. Added
784 * setup_bdist_egg.py: little script to build an egg. Added
782 support in the release tools as well.
785 support in the release tools as well.
783
786
784 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
787 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
785
788
786 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
789 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
787 version selection (new -wxversion command line and ipythonrc
790 version selection (new -wxversion command line and ipythonrc
788 parameter). Patch contributed by Arnd Baecker
791 parameter). Patch contributed by Arnd Baecker
789 <arnd.baecker-AT-web.de>.
792 <arnd.baecker-AT-web.de>.
790
793
791 * IPython/iplib.py (embed_mainloop): fix tab-completion in
794 * IPython/iplib.py (embed_mainloop): fix tab-completion in
792 embedded instances, for variables defined at the interactive
795 embedded instances, for variables defined at the interactive
793 prompt of the embedded ipython. Reported by Arnd.
796 prompt of the embedded ipython. Reported by Arnd.
794
797
795 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
798 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
796 it can be used as a (stateful) toggle, or with a direct parameter.
799 it can be used as a (stateful) toggle, or with a direct parameter.
797
800
798 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
801 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
799 could be triggered in certain cases and cause the traceback
802 could be triggered in certain cases and cause the traceback
800 printer not to work.
803 printer not to work.
801
804
802 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
805 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
803
806
804 * IPython/iplib.py (_should_recompile): Small fix, closes
807 * IPython/iplib.py (_should_recompile): Small fix, closes
805 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
808 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
806
809
807 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
810 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
808
811
809 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
812 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
810 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
813 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
811 Moad for help with tracking it down.
814 Moad for help with tracking it down.
812
815
813 * IPython/iplib.py (handle_auto): fix autocall handling for
816 * IPython/iplib.py (handle_auto): fix autocall handling for
814 objects which support BOTH __getitem__ and __call__ (so that f [x]
817 objects which support BOTH __getitem__ and __call__ (so that f [x]
815 is left alone, instead of becoming f([x]) automatically).
818 is left alone, instead of becoming f([x]) automatically).
816
819
817 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
820 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
818 Ville's patch.
821 Ville's patch.
819
822
820 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
823 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
821
824
822 * IPython/iplib.py (handle_auto): changed autocall semantics to
825 * IPython/iplib.py (handle_auto): changed autocall semantics to
823 include 'smart' mode, where the autocall transformation is NOT
826 include 'smart' mode, where the autocall transformation is NOT
824 applied if there are no arguments on the line. This allows you to
827 applied if there are no arguments on the line. This allows you to
825 just type 'foo' if foo is a callable to see its internal form,
828 just type 'foo' if foo is a callable to see its internal form,
826 instead of having it called with no arguments (typically a
829 instead of having it called with no arguments (typically a
827 mistake). The old 'full' autocall still exists: for that, you
830 mistake). The old 'full' autocall still exists: for that, you
828 need to set the 'autocall' parameter to 2 in your ipythonrc file.
831 need to set the 'autocall' parameter to 2 in your ipythonrc file.
829
832
830 * IPython/completer.py (Completer.attr_matches): add
833 * IPython/completer.py (Completer.attr_matches): add
831 tab-completion support for Enthoughts' traits. After a report by
834 tab-completion support for Enthoughts' traits. After a report by
832 Arnd and a patch by Prabhu.
835 Arnd and a patch by Prabhu.
833
836
834 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
837 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
835
838
836 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
839 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
837 Schmolck's patch to fix inspect.getinnerframes().
840 Schmolck's patch to fix inspect.getinnerframes().
838
841
839 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
842 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
840 for embedded instances, regarding handling of namespaces and items
843 for embedded instances, regarding handling of namespaces and items
841 added to the __builtin__ one. Multiple embedded instances and
844 added to the __builtin__ one. Multiple embedded instances and
842 recursive embeddings should work better now (though I'm not sure
845 recursive embeddings should work better now (though I'm not sure
843 I've got all the corner cases fixed, that code is a bit of a brain
846 I've got all the corner cases fixed, that code is a bit of a brain
844 twister).
847 twister).
845
848
846 * IPython/Magic.py (magic_edit): added support to edit in-memory
849 * IPython/Magic.py (magic_edit): added support to edit in-memory
847 macros (automatically creates the necessary temp files). %edit
850 macros (automatically creates the necessary temp files). %edit
848 also doesn't return the file contents anymore, it's just noise.
851 also doesn't return the file contents anymore, it's just noise.
849
852
850 * IPython/completer.py (Completer.attr_matches): revert change to
853 * IPython/completer.py (Completer.attr_matches): revert change to
851 complete only on attributes listed in __all__. I realized it
854 complete only on attributes listed in __all__. I realized it
852 cripples the tab-completion system as a tool for exploring the
855 cripples the tab-completion system as a tool for exploring the
853 internals of unknown libraries (it renders any non-__all__
856 internals of unknown libraries (it renders any non-__all__
854 attribute off-limits). I got bit by this when trying to see
857 attribute off-limits). I got bit by this when trying to see
855 something inside the dis module.
858 something inside the dis module.
856
859
857 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
860 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
858
861
859 * IPython/iplib.py (InteractiveShell.__init__): add .meta
862 * IPython/iplib.py (InteractiveShell.__init__): add .meta
860 namespace for users and extension writers to hold data in. This
863 namespace for users and extension writers to hold data in. This
861 follows the discussion in
864 follows the discussion in
862 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
865 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
863
866
864 * IPython/completer.py (IPCompleter.complete): small patch to help
867 * IPython/completer.py (IPCompleter.complete): small patch to help
865 tab-completion under Emacs, after a suggestion by John Barnard
868 tab-completion under Emacs, after a suggestion by John Barnard
866 <barnarj-AT-ccf.org>.
869 <barnarj-AT-ccf.org>.
867
870
868 * IPython/Magic.py (Magic.extract_input_slices): added support for
871 * IPython/Magic.py (Magic.extract_input_slices): added support for
869 the slice notation in magics to use N-M to represent numbers N...M
872 the slice notation in magics to use N-M to represent numbers N...M
870 (closed endpoints). This is used by %macro and %save.
873 (closed endpoints). This is used by %macro and %save.
871
874
872 * IPython/completer.py (Completer.attr_matches): for modules which
875 * IPython/completer.py (Completer.attr_matches): for modules which
873 define __all__, complete only on those. After a patch by Jeffrey
876 define __all__, complete only on those. After a patch by Jeffrey
874 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
877 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
875 speed up this routine.
878 speed up this routine.
876
879
877 * IPython/Logger.py (Logger.log): fix a history handling bug. I
880 * IPython/Logger.py (Logger.log): fix a history handling bug. I
878 don't know if this is the end of it, but the behavior now is
881 don't know if this is the end of it, but the behavior now is
879 certainly much more correct. Note that coupled with macros,
882 certainly much more correct. Note that coupled with macros,
880 slightly surprising (at first) behavior may occur: a macro will in
883 slightly surprising (at first) behavior may occur: a macro will in
881 general expand to multiple lines of input, so upon exiting, the
884 general expand to multiple lines of input, so upon exiting, the
882 in/out counters will both be bumped by the corresponding amount
885 in/out counters will both be bumped by the corresponding amount
883 (as if the macro's contents had been typed interactively). Typing
886 (as if the macro's contents had been typed interactively). Typing
884 %hist will reveal the intermediate (silently processed) lines.
887 %hist will reveal the intermediate (silently processed) lines.
885
888
886 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
889 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
887 pickle to fail (%run was overwriting __main__ and not restoring
890 pickle to fail (%run was overwriting __main__ and not restoring
888 it, but pickle relies on __main__ to operate).
891 it, but pickle relies on __main__ to operate).
889
892
890 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
893 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
891 using properties, but forgot to make the main InteractiveShell
894 using properties, but forgot to make the main InteractiveShell
892 class a new-style class. Properties fail silently, and
895 class a new-style class. Properties fail silently, and
893 misteriously, with old-style class (getters work, but
896 misteriously, with old-style class (getters work, but
894 setters don't do anything).
897 setters don't do anything).
895
898
896 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
899 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
897
900
898 * IPython/Magic.py (magic_history): fix history reporting bug (I
901 * IPython/Magic.py (magic_history): fix history reporting bug (I
899 know some nasties are still there, I just can't seem to find a
902 know some nasties are still there, I just can't seem to find a
900 reproducible test case to track them down; the input history is
903 reproducible test case to track them down; the input history is
901 falling out of sync...)
904 falling out of sync...)
902
905
903 * IPython/iplib.py (handle_shell_escape): fix bug where both
906 * IPython/iplib.py (handle_shell_escape): fix bug where both
904 aliases and system accesses where broken for indented code (such
907 aliases and system accesses where broken for indented code (such
905 as loops).
908 as loops).
906
909
907 * IPython/genutils.py (shell): fix small but critical bug for
910 * IPython/genutils.py (shell): fix small but critical bug for
908 win32 system access.
911 win32 system access.
909
912
910 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
913 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
911
914
912 * IPython/iplib.py (showtraceback): remove use of the
915 * IPython/iplib.py (showtraceback): remove use of the
913 sys.last_{type/value/traceback} structures, which are non
916 sys.last_{type/value/traceback} structures, which are non
914 thread-safe.
917 thread-safe.
915 (_prefilter): change control flow to ensure that we NEVER
918 (_prefilter): change control flow to ensure that we NEVER
916 introspect objects when autocall is off. This will guarantee that
919 introspect objects when autocall is off. This will guarantee that
917 having an input line of the form 'x.y', where access to attribute
920 having an input line of the form 'x.y', where access to attribute
918 'y' has side effects, doesn't trigger the side effect TWICE. It
921 'y' has side effects, doesn't trigger the side effect TWICE. It
919 is important to note that, with autocall on, these side effects
922 is important to note that, with autocall on, these side effects
920 can still happen.
923 can still happen.
921 (ipsystem): new builtin, to complete the ip{magic/alias/system}
924 (ipsystem): new builtin, to complete the ip{magic/alias/system}
922 trio. IPython offers these three kinds of special calls which are
925 trio. IPython offers these three kinds of special calls which are
923 not python code, and it's a good thing to have their call method
926 not python code, and it's a good thing to have their call method
924 be accessible as pure python functions (not just special syntax at
927 be accessible as pure python functions (not just special syntax at
925 the command line). It gives us a better internal implementation
928 the command line). It gives us a better internal implementation
926 structure, as well as exposing these for user scripting more
929 structure, as well as exposing these for user scripting more
927 cleanly.
930 cleanly.
928
931
929 * IPython/macro.py (Macro.__init__): moved macros to a standalone
932 * IPython/macro.py (Macro.__init__): moved macros to a standalone
930 file. Now that they'll be more likely to be used with the
933 file. Now that they'll be more likely to be used with the
931 persistance system (%store), I want to make sure their module path
934 persistance system (%store), I want to make sure their module path
932 doesn't change in the future, so that we don't break things for
935 doesn't change in the future, so that we don't break things for
933 users' persisted data.
936 users' persisted data.
934
937
935 * IPython/iplib.py (autoindent_update): move indentation
938 * IPython/iplib.py (autoindent_update): move indentation
936 management into the _text_ processing loop, not the keyboard
939 management into the _text_ processing loop, not the keyboard
937 interactive one. This is necessary to correctly process non-typed
940 interactive one. This is necessary to correctly process non-typed
938 multiline input (such as macros).
941 multiline input (such as macros).
939
942
940 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
943 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
941 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
944 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
942 which was producing problems in the resulting manual.
945 which was producing problems in the resulting manual.
943 (magic_whos): improve reporting of instances (show their class,
946 (magic_whos): improve reporting of instances (show their class,
944 instead of simply printing 'instance' which isn't terribly
947 instead of simply printing 'instance' which isn't terribly
945 informative).
948 informative).
946
949
947 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
950 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
948 (minor mods) to support network shares under win32.
951 (minor mods) to support network shares under win32.
949
952
950 * IPython/winconsole.py (get_console_size): add new winconsole
953 * IPython/winconsole.py (get_console_size): add new winconsole
951 module and fixes to page_dumb() to improve its behavior under
954 module and fixes to page_dumb() to improve its behavior under
952 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
955 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
953
956
954 * IPython/Magic.py (Macro): simplified Macro class to just
957 * IPython/Magic.py (Macro): simplified Macro class to just
955 subclass list. We've had only 2.2 compatibility for a very long
958 subclass list. We've had only 2.2 compatibility for a very long
956 time, yet I was still avoiding subclassing the builtin types. No
959 time, yet I was still avoiding subclassing the builtin types. No
957 more (I'm also starting to use properties, though I won't shift to
960 more (I'm also starting to use properties, though I won't shift to
958 2.3-specific features quite yet).
961 2.3-specific features quite yet).
959 (magic_store): added Ville's patch for lightweight variable
962 (magic_store): added Ville's patch for lightweight variable
960 persistence, after a request on the user list by Matt Wilkie
963 persistence, after a request on the user list by Matt Wilkie
961 <maphew-AT-gmail.com>. The new %store magic's docstring has full
964 <maphew-AT-gmail.com>. The new %store magic's docstring has full
962 details.
965 details.
963
966
964 * IPython/iplib.py (InteractiveShell.post_config_initialization):
967 * IPython/iplib.py (InteractiveShell.post_config_initialization):
965 changed the default logfile name from 'ipython.log' to
968 changed the default logfile name from 'ipython.log' to
966 'ipython_log.py'. These logs are real python files, and now that
969 'ipython_log.py'. These logs are real python files, and now that
967 we have much better multiline support, people are more likely to
970 we have much better multiline support, people are more likely to
968 want to use them as such. Might as well name them correctly.
971 want to use them as such. Might as well name them correctly.
969
972
970 * IPython/Magic.py: substantial cleanup. While we can't stop
973 * IPython/Magic.py: substantial cleanup. While we can't stop
971 using magics as mixins, due to the existing customizations 'out
974 using magics as mixins, due to the existing customizations 'out
972 there' which rely on the mixin naming conventions, at least I
975 there' which rely on the mixin naming conventions, at least I
973 cleaned out all cross-class name usage. So once we are OK with
976 cleaned out all cross-class name usage. So once we are OK with
974 breaking compatibility, the two systems can be separated.
977 breaking compatibility, the two systems can be separated.
975
978
976 * IPython/Logger.py: major cleanup. This one is NOT a mixin
979 * IPython/Logger.py: major cleanup. This one is NOT a mixin
977 anymore, and the class is a fair bit less hideous as well. New
980 anymore, and the class is a fair bit less hideous as well. New
978 features were also introduced: timestamping of input, and logging
981 features were also introduced: timestamping of input, and logging
979 of output results. These are user-visible with the -t and -o
982 of output results. These are user-visible with the -t and -o
980 options to %logstart. Closes
983 options to %logstart. Closes
981 http://www.scipy.net/roundup/ipython/issue11 and a request by
984 http://www.scipy.net/roundup/ipython/issue11 and a request by
982 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
985 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
983
986
984 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
987 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
985
988
986 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
989 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
987 better hadnle backslashes in paths. See the thread 'More Windows
990 better hadnle backslashes in paths. See the thread 'More Windows
988 questions part 2 - \/ characters revisited' on the iypthon user
991 questions part 2 - \/ characters revisited' on the iypthon user
989 list:
992 list:
990 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
993 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
991
994
992 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
995 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
993
996
994 (InteractiveShell.__init__): change threaded shells to not use the
997 (InteractiveShell.__init__): change threaded shells to not use the
995 ipython crash handler. This was causing more problems than not,
998 ipython crash handler. This was causing more problems than not,
996 as exceptions in the main thread (GUI code, typically) would
999 as exceptions in the main thread (GUI code, typically) would
997 always show up as a 'crash', when they really weren't.
1000 always show up as a 'crash', when they really weren't.
998
1001
999 The colors and exception mode commands (%colors/%xmode) have been
1002 The colors and exception mode commands (%colors/%xmode) have been
1000 synchronized to also take this into account, so users can get
1003 synchronized to also take this into account, so users can get
1001 verbose exceptions for their threaded code as well. I also added
1004 verbose exceptions for their threaded code as well. I also added
1002 support for activating pdb inside this exception handler as well,
1005 support for activating pdb inside this exception handler as well,
1003 so now GUI authors can use IPython's enhanced pdb at runtime.
1006 so now GUI authors can use IPython's enhanced pdb at runtime.
1004
1007
1005 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1008 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1006 true by default, and add it to the shipped ipythonrc file. Since
1009 true by default, and add it to the shipped ipythonrc file. Since
1007 this asks the user before proceeding, I think it's OK to make it
1010 this asks the user before proceeding, I think it's OK to make it
1008 true by default.
1011 true by default.
1009
1012
1010 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1013 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1011 of the previous special-casing of input in the eval loop. I think
1014 of the previous special-casing of input in the eval loop. I think
1012 this is cleaner, as they really are commands and shouldn't have
1015 this is cleaner, as they really are commands and shouldn't have
1013 a special role in the middle of the core code.
1016 a special role in the middle of the core code.
1014
1017
1015 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1018 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1016
1019
1017 * IPython/iplib.py (edit_syntax_error): added support for
1020 * IPython/iplib.py (edit_syntax_error): added support for
1018 automatically reopening the editor if the file had a syntax error
1021 automatically reopening the editor if the file had a syntax error
1019 in it. Thanks to scottt who provided the patch at:
1022 in it. Thanks to scottt who provided the patch at:
1020 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1023 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1021 version committed).
1024 version committed).
1022
1025
1023 * IPython/iplib.py (handle_normal): add suport for multi-line
1026 * IPython/iplib.py (handle_normal): add suport for multi-line
1024 input with emtpy lines. This fixes
1027 input with emtpy lines. This fixes
1025 http://www.scipy.net/roundup/ipython/issue43 and a similar
1028 http://www.scipy.net/roundup/ipython/issue43 and a similar
1026 discussion on the user list.
1029 discussion on the user list.
1027
1030
1028 WARNING: a behavior change is necessarily introduced to support
1031 WARNING: a behavior change is necessarily introduced to support
1029 blank lines: now a single blank line with whitespace does NOT
1032 blank lines: now a single blank line with whitespace does NOT
1030 break the input loop, which means that when autoindent is on, by
1033 break the input loop, which means that when autoindent is on, by
1031 default hitting return on the next (indented) line does NOT exit.
1034 default hitting return on the next (indented) line does NOT exit.
1032
1035
1033 Instead, to exit a multiline input you can either have:
1036 Instead, to exit a multiline input you can either have:
1034
1037
1035 - TWO whitespace lines (just hit return again), or
1038 - TWO whitespace lines (just hit return again), or
1036 - a single whitespace line of a different length than provided
1039 - a single whitespace line of a different length than provided
1037 by the autoindent (add or remove a space).
1040 by the autoindent (add or remove a space).
1038
1041
1039 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1042 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1040 module to better organize all readline-related functionality.
1043 module to better organize all readline-related functionality.
1041 I've deleted FlexCompleter and put all completion clases here.
1044 I've deleted FlexCompleter and put all completion clases here.
1042
1045
1043 * IPython/iplib.py (raw_input): improve indentation management.
1046 * IPython/iplib.py (raw_input): improve indentation management.
1044 It is now possible to paste indented code with autoindent on, and
1047 It is now possible to paste indented code with autoindent on, and
1045 the code is interpreted correctly (though it still looks bad on
1048 the code is interpreted correctly (though it still looks bad on
1046 screen, due to the line-oriented nature of ipython).
1049 screen, due to the line-oriented nature of ipython).
1047 (MagicCompleter.complete): change behavior so that a TAB key on an
1050 (MagicCompleter.complete): change behavior so that a TAB key on an
1048 otherwise empty line actually inserts a tab, instead of completing
1051 otherwise empty line actually inserts a tab, instead of completing
1049 on the entire global namespace. This makes it easier to use the
1052 on the entire global namespace. This makes it easier to use the
1050 TAB key for indentation. After a request by Hans Meine
1053 TAB key for indentation. After a request by Hans Meine
1051 <hans_meine-AT-gmx.net>
1054 <hans_meine-AT-gmx.net>
1052 (_prefilter): add support so that typing plain 'exit' or 'quit'
1055 (_prefilter): add support so that typing plain 'exit' or 'quit'
1053 does a sensible thing. Originally I tried to deviate as little as
1056 does a sensible thing. Originally I tried to deviate as little as
1054 possible from the default python behavior, but even that one may
1057 possible from the default python behavior, but even that one may
1055 change in this direction (thread on python-dev to that effect).
1058 change in this direction (thread on python-dev to that effect).
1056 Regardless, ipython should do the right thing even if CPython's
1059 Regardless, ipython should do the right thing even if CPython's
1057 '>>>' prompt doesn't.
1060 '>>>' prompt doesn't.
1058 (InteractiveShell): removed subclassing code.InteractiveConsole
1061 (InteractiveShell): removed subclassing code.InteractiveConsole
1059 class. By now we'd overridden just about all of its methods: I've
1062 class. By now we'd overridden just about all of its methods: I've
1060 copied the remaining two over, and now ipython is a standalone
1063 copied the remaining two over, and now ipython is a standalone
1061 class. This will provide a clearer picture for the chainsaw
1064 class. This will provide a clearer picture for the chainsaw
1062 branch refactoring.
1065 branch refactoring.
1063
1066
1064 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1067 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1065
1068
1066 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1069 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1067 failures for objects which break when dir() is called on them.
1070 failures for objects which break when dir() is called on them.
1068
1071
1069 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1072 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1070 distinct local and global namespaces in the completer API. This
1073 distinct local and global namespaces in the completer API. This
1071 change allows us top properly handle completion with distinct
1074 change allows us top properly handle completion with distinct
1072 scopes, including in embedded instances (this had never really
1075 scopes, including in embedded instances (this had never really
1073 worked correctly).
1076 worked correctly).
1074
1077
1075 Note: this introduces a change in the constructor for
1078 Note: this introduces a change in the constructor for
1076 MagicCompleter, as a new global_namespace parameter is now the
1079 MagicCompleter, as a new global_namespace parameter is now the
1077 second argument (the others were bumped one position).
1080 second argument (the others were bumped one position).
1078
1081
1079 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1082 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1080
1083
1081 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1084 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1082 embedded instances (which can be done now thanks to Vivian's
1085 embedded instances (which can be done now thanks to Vivian's
1083 frame-handling fixes for pdb).
1086 frame-handling fixes for pdb).
1084 (InteractiveShell.__init__): Fix namespace handling problem in
1087 (InteractiveShell.__init__): Fix namespace handling problem in
1085 embedded instances. We were overwriting __main__ unconditionally,
1088 embedded instances. We were overwriting __main__ unconditionally,
1086 and this should only be done for 'full' (non-embedded) IPython;
1089 and this should only be done for 'full' (non-embedded) IPython;
1087 embedded instances must respect the caller's __main__. Thanks to
1090 embedded instances must respect the caller's __main__. Thanks to
1088 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1091 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1089
1092
1090 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1093 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1091
1094
1092 * setup.py: added download_url to setup(). This registers the
1095 * setup.py: added download_url to setup(). This registers the
1093 download address at PyPI, which is not only useful to humans
1096 download address at PyPI, which is not only useful to humans
1094 browsing the site, but is also picked up by setuptools (the Eggs
1097 browsing the site, but is also picked up by setuptools (the Eggs
1095 machinery). Thanks to Ville and R. Kern for the info/discussion
1098 machinery). Thanks to Ville and R. Kern for the info/discussion
1096 on this.
1099 on this.
1097
1100
1098 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1101 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1099
1102
1100 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1103 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1101 This brings a lot of nice functionality to the pdb mode, which now
1104 This brings a lot of nice functionality to the pdb mode, which now
1102 has tab-completion, syntax highlighting, and better stack handling
1105 has tab-completion, syntax highlighting, and better stack handling
1103 than before. Many thanks to Vivian De Smedt
1106 than before. Many thanks to Vivian De Smedt
1104 <vivian-AT-vdesmedt.com> for the original patches.
1107 <vivian-AT-vdesmedt.com> for the original patches.
1105
1108
1106 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1109 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1107
1110
1108 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1111 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1109 sequence to consistently accept the banner argument. The
1112 sequence to consistently accept the banner argument. The
1110 inconsistency was tripping SAGE, thanks to Gary Zablackis
1113 inconsistency was tripping SAGE, thanks to Gary Zablackis
1111 <gzabl-AT-yahoo.com> for the report.
1114 <gzabl-AT-yahoo.com> for the report.
1112
1115
1113 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1116 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1114
1117
1115 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1118 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1116 Fix bug where a naked 'alias' call in the ipythonrc file would
1119 Fix bug where a naked 'alias' call in the ipythonrc file would
1117 cause a crash. Bug reported by Jorgen Stenarson.
1120 cause a crash. Bug reported by Jorgen Stenarson.
1118
1121
1119 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1122 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1120
1123
1121 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1124 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1122 startup time.
1125 startup time.
1123
1126
1124 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1127 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1125 instances had introduced a bug with globals in normal code. Now
1128 instances had introduced a bug with globals in normal code. Now
1126 it's working in all cases.
1129 it's working in all cases.
1127
1130
1128 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1131 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1129 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1132 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1130 has been introduced to set the default case sensitivity of the
1133 has been introduced to set the default case sensitivity of the
1131 searches. Users can still select either mode at runtime on a
1134 searches. Users can still select either mode at runtime on a
1132 per-search basis.
1135 per-search basis.
1133
1136
1134 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1137 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1135
1138
1136 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1139 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1137 attributes in wildcard searches for subclasses. Modified version
1140 attributes in wildcard searches for subclasses. Modified version
1138 of a patch by Jorgen.
1141 of a patch by Jorgen.
1139
1142
1140 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1143 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1141
1144
1142 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1145 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1143 embedded instances. I added a user_global_ns attribute to the
1146 embedded instances. I added a user_global_ns attribute to the
1144 InteractiveShell class to handle this.
1147 InteractiveShell class to handle this.
1145
1148
1146 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1149 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1147
1150
1148 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1151 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1149 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1152 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1150 (reported under win32, but may happen also in other platforms).
1153 (reported under win32, but may happen also in other platforms).
1151 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1154 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1152
1155
1153 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1156 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1154
1157
1155 * IPython/Magic.py (magic_psearch): new support for wildcard
1158 * IPython/Magic.py (magic_psearch): new support for wildcard
1156 patterns. Now, typing ?a*b will list all names which begin with a
1159 patterns. Now, typing ?a*b will list all names which begin with a
1157 and end in b, for example. The %psearch magic has full
1160 and end in b, for example. The %psearch magic has full
1158 docstrings. Many thanks to JΓΆrgen Stenarson
1161 docstrings. Many thanks to JΓΆrgen Stenarson
1159 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1162 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1160 implementing this functionality.
1163 implementing this functionality.
1161
1164
1162 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1165 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1163
1166
1164 * Manual: fixed long-standing annoyance of double-dashes (as in
1167 * Manual: fixed long-standing annoyance of double-dashes (as in
1165 --prefix=~, for example) being stripped in the HTML version. This
1168 --prefix=~, for example) being stripped in the HTML version. This
1166 is a latex2html bug, but a workaround was provided. Many thanks
1169 is a latex2html bug, but a workaround was provided. Many thanks
1167 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1170 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1168 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1171 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1169 rolling. This seemingly small issue had tripped a number of users
1172 rolling. This seemingly small issue had tripped a number of users
1170 when first installing, so I'm glad to see it gone.
1173 when first installing, so I'm glad to see it gone.
1171
1174
1172 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1175 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1173
1176
1174 * IPython/Extensions/numeric_formats.py: fix missing import,
1177 * IPython/Extensions/numeric_formats.py: fix missing import,
1175 reported by Stephen Walton.
1178 reported by Stephen Walton.
1176
1179
1177 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1180 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1178
1181
1179 * IPython/demo.py: finish demo module, fully documented now.
1182 * IPython/demo.py: finish demo module, fully documented now.
1180
1183
1181 * IPython/genutils.py (file_read): simple little utility to read a
1184 * IPython/genutils.py (file_read): simple little utility to read a
1182 file and ensure it's closed afterwards.
1185 file and ensure it's closed afterwards.
1183
1186
1184 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1187 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1185
1188
1186 * IPython/demo.py (Demo.__init__): added support for individually
1189 * IPython/demo.py (Demo.__init__): added support for individually
1187 tagging blocks for automatic execution.
1190 tagging blocks for automatic execution.
1188
1191
1189 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1192 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1190 syntax-highlighted python sources, requested by John.
1193 syntax-highlighted python sources, requested by John.
1191
1194
1192 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1195 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1193
1196
1194 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1197 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1195 finishing.
1198 finishing.
1196
1199
1197 * IPython/genutils.py (shlex_split): moved from Magic to here,
1200 * IPython/genutils.py (shlex_split): moved from Magic to here,
1198 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1201 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1199
1202
1200 * IPython/demo.py (Demo.__init__): added support for silent
1203 * IPython/demo.py (Demo.__init__): added support for silent
1201 blocks, improved marks as regexps, docstrings written.
1204 blocks, improved marks as regexps, docstrings written.
1202 (Demo.__init__): better docstring, added support for sys.argv.
1205 (Demo.__init__): better docstring, added support for sys.argv.
1203
1206
1204 * IPython/genutils.py (marquee): little utility used by the demo
1207 * IPython/genutils.py (marquee): little utility used by the demo
1205 code, handy in general.
1208 code, handy in general.
1206
1209
1207 * IPython/demo.py (Demo.__init__): new class for interactive
1210 * IPython/demo.py (Demo.__init__): new class for interactive
1208 demos. Not documented yet, I just wrote it in a hurry for
1211 demos. Not documented yet, I just wrote it in a hurry for
1209 scipy'05. Will docstring later.
1212 scipy'05. Will docstring later.
1210
1213
1211 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1214 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1212
1215
1213 * IPython/Shell.py (sigint_handler): Drastic simplification which
1216 * IPython/Shell.py (sigint_handler): Drastic simplification which
1214 also seems to make Ctrl-C work correctly across threads! This is
1217 also seems to make Ctrl-C work correctly across threads! This is
1215 so simple, that I can't beleive I'd missed it before. Needs more
1218 so simple, that I can't beleive I'd missed it before. Needs more
1216 testing, though.
1219 testing, though.
1217 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1220 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1218 like this before...
1221 like this before...
1219
1222
1220 * IPython/genutils.py (get_home_dir): add protection against
1223 * IPython/genutils.py (get_home_dir): add protection against
1221 non-dirs in win32 registry.
1224 non-dirs in win32 registry.
1222
1225
1223 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1226 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1224 bug where dict was mutated while iterating (pysh crash).
1227 bug where dict was mutated while iterating (pysh crash).
1225
1228
1226 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1229 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1227
1230
1228 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1231 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1229 spurious newlines added by this routine. After a report by
1232 spurious newlines added by this routine. After a report by
1230 F. Mantegazza.
1233 F. Mantegazza.
1231
1234
1232 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1235 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1233
1236
1234 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1237 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1235 calls. These were a leftover from the GTK 1.x days, and can cause
1238 calls. These were a leftover from the GTK 1.x days, and can cause
1236 problems in certain cases (after a report by John Hunter).
1239 problems in certain cases (after a report by John Hunter).
1237
1240
1238 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1241 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1239 os.getcwd() fails at init time. Thanks to patch from David Remahl
1242 os.getcwd() fails at init time. Thanks to patch from David Remahl
1240 <chmod007-AT-mac.com>.
1243 <chmod007-AT-mac.com>.
1241 (InteractiveShell.__init__): prevent certain special magics from
1244 (InteractiveShell.__init__): prevent certain special magics from
1242 being shadowed by aliases. Closes
1245 being shadowed by aliases. Closes
1243 http://www.scipy.net/roundup/ipython/issue41.
1246 http://www.scipy.net/roundup/ipython/issue41.
1244
1247
1245 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1248 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1246
1249
1247 * IPython/iplib.py (InteractiveShell.complete): Added new
1250 * IPython/iplib.py (InteractiveShell.complete): Added new
1248 top-level completion method to expose the completion mechanism
1251 top-level completion method to expose the completion mechanism
1249 beyond readline-based environments.
1252 beyond readline-based environments.
1250
1253
1251 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1254 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1252
1255
1253 * tools/ipsvnc (svnversion): fix svnversion capture.
1256 * tools/ipsvnc (svnversion): fix svnversion capture.
1254
1257
1255 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1258 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1256 attribute to self, which was missing. Before, it was set by a
1259 attribute to self, which was missing. Before, it was set by a
1257 routine which in certain cases wasn't being called, so the
1260 routine which in certain cases wasn't being called, so the
1258 instance could end up missing the attribute. This caused a crash.
1261 instance could end up missing the attribute. This caused a crash.
1259 Closes http://www.scipy.net/roundup/ipython/issue40.
1262 Closes http://www.scipy.net/roundup/ipython/issue40.
1260
1263
1261 2005-08-16 Fernando Perez <fperez@colorado.edu>
1264 2005-08-16 Fernando Perez <fperez@colorado.edu>
1262
1265
1263 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1266 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1264 contains non-string attribute. Closes
1267 contains non-string attribute. Closes
1265 http://www.scipy.net/roundup/ipython/issue38.
1268 http://www.scipy.net/roundup/ipython/issue38.
1266
1269
1267 2005-08-14 Fernando Perez <fperez@colorado.edu>
1270 2005-08-14 Fernando Perez <fperez@colorado.edu>
1268
1271
1269 * tools/ipsvnc: Minor improvements, to add changeset info.
1272 * tools/ipsvnc: Minor improvements, to add changeset info.
1270
1273
1271 2005-08-12 Fernando Perez <fperez@colorado.edu>
1274 2005-08-12 Fernando Perez <fperez@colorado.edu>
1272
1275
1273 * IPython/iplib.py (runsource): remove self.code_to_run_src
1276 * IPython/iplib.py (runsource): remove self.code_to_run_src
1274 attribute. I realized this is nothing more than
1277 attribute. I realized this is nothing more than
1275 '\n'.join(self.buffer), and having the same data in two different
1278 '\n'.join(self.buffer), and having the same data in two different
1276 places is just asking for synchronization bugs. This may impact
1279 places is just asking for synchronization bugs. This may impact
1277 people who have custom exception handlers, so I need to warn
1280 people who have custom exception handlers, so I need to warn
1278 ipython-dev about it (F. Mantegazza may use them).
1281 ipython-dev about it (F. Mantegazza may use them).
1279
1282
1280 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1283 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1281
1284
1282 * IPython/genutils.py: fix 2.2 compatibility (generators)
1285 * IPython/genutils.py: fix 2.2 compatibility (generators)
1283
1286
1284 2005-07-18 Fernando Perez <fperez@colorado.edu>
1287 2005-07-18 Fernando Perez <fperez@colorado.edu>
1285
1288
1286 * IPython/genutils.py (get_home_dir): fix to help users with
1289 * IPython/genutils.py (get_home_dir): fix to help users with
1287 invalid $HOME under win32.
1290 invalid $HOME under win32.
1288
1291
1289 2005-07-17 Fernando Perez <fperez@colorado.edu>
1292 2005-07-17 Fernando Perez <fperez@colorado.edu>
1290
1293
1291 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1294 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1292 some old hacks and clean up a bit other routines; code should be
1295 some old hacks and clean up a bit other routines; code should be
1293 simpler and a bit faster.
1296 simpler and a bit faster.
1294
1297
1295 * IPython/iplib.py (interact): removed some last-resort attempts
1298 * IPython/iplib.py (interact): removed some last-resort attempts
1296 to survive broken stdout/stderr. That code was only making it
1299 to survive broken stdout/stderr. That code was only making it
1297 harder to abstract out the i/o (necessary for gui integration),
1300 harder to abstract out the i/o (necessary for gui integration),
1298 and the crashes it could prevent were extremely rare in practice
1301 and the crashes it could prevent were extremely rare in practice
1299 (besides being fully user-induced in a pretty violent manner).
1302 (besides being fully user-induced in a pretty violent manner).
1300
1303
1301 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1304 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1302 Nothing major yet, but the code is simpler to read; this should
1305 Nothing major yet, but the code is simpler to read; this should
1303 make it easier to do more serious modifications in the future.
1306 make it easier to do more serious modifications in the future.
1304
1307
1305 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1308 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1306 which broke in .15 (thanks to a report by Ville).
1309 which broke in .15 (thanks to a report by Ville).
1307
1310
1308 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1311 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1309 be quite correct, I know next to nothing about unicode). This
1312 be quite correct, I know next to nothing about unicode). This
1310 will allow unicode strings to be used in prompts, amongst other
1313 will allow unicode strings to be used in prompts, amongst other
1311 cases. It also will prevent ipython from crashing when unicode
1314 cases. It also will prevent ipython from crashing when unicode
1312 shows up unexpectedly in many places. If ascii encoding fails, we
1315 shows up unexpectedly in many places. If ascii encoding fails, we
1313 assume utf_8. Currently the encoding is not a user-visible
1316 assume utf_8. Currently the encoding is not a user-visible
1314 setting, though it could be made so if there is demand for it.
1317 setting, though it could be made so if there is demand for it.
1315
1318
1316 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1319 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1317
1320
1318 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1321 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1319
1322
1320 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1323 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1321
1324
1322 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1325 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1323 code can work transparently for 2.2/2.3.
1326 code can work transparently for 2.2/2.3.
1324
1327
1325 2005-07-16 Fernando Perez <fperez@colorado.edu>
1328 2005-07-16 Fernando Perez <fperez@colorado.edu>
1326
1329
1327 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1330 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1328 out of the color scheme table used for coloring exception
1331 out of the color scheme table used for coloring exception
1329 tracebacks. This allows user code to add new schemes at runtime.
1332 tracebacks. This allows user code to add new schemes at runtime.
1330 This is a minimally modified version of the patch at
1333 This is a minimally modified version of the patch at
1331 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1334 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1332 for the contribution.
1335 for the contribution.
1333
1336
1334 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1337 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1335 slightly modified version of the patch in
1338 slightly modified version of the patch in
1336 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1339 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1337 to remove the previous try/except solution (which was costlier).
1340 to remove the previous try/except solution (which was costlier).
1338 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1341 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1339
1342
1340 2005-06-08 Fernando Perez <fperez@colorado.edu>
1343 2005-06-08 Fernando Perez <fperez@colorado.edu>
1341
1344
1342 * IPython/iplib.py (write/write_err): Add methods to abstract all
1345 * IPython/iplib.py (write/write_err): Add methods to abstract all
1343 I/O a bit more.
1346 I/O a bit more.
1344
1347
1345 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1348 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1346 warning, reported by Aric Hagberg, fix by JD Hunter.
1349 warning, reported by Aric Hagberg, fix by JD Hunter.
1347
1350
1348 2005-06-02 *** Released version 0.6.15
1351 2005-06-02 *** Released version 0.6.15
1349
1352
1350 2005-06-01 Fernando Perez <fperez@colorado.edu>
1353 2005-06-01 Fernando Perez <fperez@colorado.edu>
1351
1354
1352 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1355 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1353 tab-completion of filenames within open-quoted strings. Note that
1356 tab-completion of filenames within open-quoted strings. Note that
1354 this requires that in ~/.ipython/ipythonrc, users change the
1357 this requires that in ~/.ipython/ipythonrc, users change the
1355 readline delimiters configuration to read:
1358 readline delimiters configuration to read:
1356
1359
1357 readline_remove_delims -/~
1360 readline_remove_delims -/~
1358
1361
1359
1362
1360 2005-05-31 *** Released version 0.6.14
1363 2005-05-31 *** Released version 0.6.14
1361
1364
1362 2005-05-29 Fernando Perez <fperez@colorado.edu>
1365 2005-05-29 Fernando Perez <fperez@colorado.edu>
1363
1366
1364 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1367 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1365 with files not on the filesystem. Reported by Eliyahu Sandler
1368 with files not on the filesystem. Reported by Eliyahu Sandler
1366 <eli@gondolin.net>
1369 <eli@gondolin.net>
1367
1370
1368 2005-05-22 Fernando Perez <fperez@colorado.edu>
1371 2005-05-22 Fernando Perez <fperez@colorado.edu>
1369
1372
1370 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1373 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1371 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1374 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1372
1375
1373 2005-05-19 Fernando Perez <fperez@colorado.edu>
1376 2005-05-19 Fernando Perez <fperez@colorado.edu>
1374
1377
1375 * IPython/iplib.py (safe_execfile): close a file which could be
1378 * IPython/iplib.py (safe_execfile): close a file which could be
1376 left open (causing problems in win32, which locks open files).
1379 left open (causing problems in win32, which locks open files).
1377 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1380 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1378
1381
1379 2005-05-18 Fernando Perez <fperez@colorado.edu>
1382 2005-05-18 Fernando Perez <fperez@colorado.edu>
1380
1383
1381 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1384 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1382 keyword arguments correctly to safe_execfile().
1385 keyword arguments correctly to safe_execfile().
1383
1386
1384 2005-05-13 Fernando Perez <fperez@colorado.edu>
1387 2005-05-13 Fernando Perez <fperez@colorado.edu>
1385
1388
1386 * ipython.1: Added info about Qt to manpage, and threads warning
1389 * ipython.1: Added info about Qt to manpage, and threads warning
1387 to usage page (invoked with --help).
1390 to usage page (invoked with --help).
1388
1391
1389 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1392 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1390 new matcher (it goes at the end of the priority list) to do
1393 new matcher (it goes at the end of the priority list) to do
1391 tab-completion on named function arguments. Submitted by George
1394 tab-completion on named function arguments. Submitted by George
1392 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1395 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1393 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1396 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1394 for more details.
1397 for more details.
1395
1398
1396 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1399 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1397 SystemExit exceptions in the script being run. Thanks to a report
1400 SystemExit exceptions in the script being run. Thanks to a report
1398 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1401 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1399 producing very annoying behavior when running unit tests.
1402 producing very annoying behavior when running unit tests.
1400
1403
1401 2005-05-12 Fernando Perez <fperez@colorado.edu>
1404 2005-05-12 Fernando Perez <fperez@colorado.edu>
1402
1405
1403 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1406 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1404 which I'd broken (again) due to a changed regexp. In the process,
1407 which I'd broken (again) due to a changed regexp. In the process,
1405 added ';' as an escape to auto-quote the whole line without
1408 added ';' as an escape to auto-quote the whole line without
1406 splitting its arguments. Thanks to a report by Jerry McRae
1409 splitting its arguments. Thanks to a report by Jerry McRae
1407 <qrs0xyc02-AT-sneakemail.com>.
1410 <qrs0xyc02-AT-sneakemail.com>.
1408
1411
1409 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1412 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1410 possible crashes caused by a TokenError. Reported by Ed Schofield
1413 possible crashes caused by a TokenError. Reported by Ed Schofield
1411 <schofield-AT-ftw.at>.
1414 <schofield-AT-ftw.at>.
1412
1415
1413 2005-05-06 Fernando Perez <fperez@colorado.edu>
1416 2005-05-06 Fernando Perez <fperez@colorado.edu>
1414
1417
1415 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1418 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1416
1419
1417 2005-04-29 Fernando Perez <fperez@colorado.edu>
1420 2005-04-29 Fernando Perez <fperez@colorado.edu>
1418
1421
1419 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1422 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1420 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1423 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1421 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1424 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1422 which provides support for Qt interactive usage (similar to the
1425 which provides support for Qt interactive usage (similar to the
1423 existing one for WX and GTK). This had been often requested.
1426 existing one for WX and GTK). This had been often requested.
1424
1427
1425 2005-04-14 *** Released version 0.6.13
1428 2005-04-14 *** Released version 0.6.13
1426
1429
1427 2005-04-08 Fernando Perez <fperez@colorado.edu>
1430 2005-04-08 Fernando Perez <fperez@colorado.edu>
1428
1431
1429 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1432 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1430 from _ofind, which gets called on almost every input line. Now,
1433 from _ofind, which gets called on almost every input line. Now,
1431 we only try to get docstrings if they are actually going to be
1434 we only try to get docstrings if they are actually going to be
1432 used (the overhead of fetching unnecessary docstrings can be
1435 used (the overhead of fetching unnecessary docstrings can be
1433 noticeable for certain objects, such as Pyro proxies).
1436 noticeable for certain objects, such as Pyro proxies).
1434
1437
1435 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1438 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1436 for completers. For some reason I had been passing them the state
1439 for completers. For some reason I had been passing them the state
1437 variable, which completers never actually need, and was in
1440 variable, which completers never actually need, and was in
1438 conflict with the rlcompleter API. Custom completers ONLY need to
1441 conflict with the rlcompleter API. Custom completers ONLY need to
1439 take the text parameter.
1442 take the text parameter.
1440
1443
1441 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1444 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1442 work correctly in pysh. I've also moved all the logic which used
1445 work correctly in pysh. I've also moved all the logic which used
1443 to be in pysh.py here, which will prevent problems with future
1446 to be in pysh.py here, which will prevent problems with future
1444 upgrades. However, this time I must warn users to update their
1447 upgrades. However, this time I must warn users to update their
1445 pysh profile to include the line
1448 pysh profile to include the line
1446
1449
1447 import_all IPython.Extensions.InterpreterExec
1450 import_all IPython.Extensions.InterpreterExec
1448
1451
1449 because otherwise things won't work for them. They MUST also
1452 because otherwise things won't work for them. They MUST also
1450 delete pysh.py and the line
1453 delete pysh.py and the line
1451
1454
1452 execfile pysh.py
1455 execfile pysh.py
1453
1456
1454 from their ipythonrc-pysh.
1457 from their ipythonrc-pysh.
1455
1458
1456 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1459 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1457 robust in the face of objects whose dir() returns non-strings
1460 robust in the face of objects whose dir() returns non-strings
1458 (which it shouldn't, but some broken libs like ITK do). Thanks to
1461 (which it shouldn't, but some broken libs like ITK do). Thanks to
1459 a patch by John Hunter (implemented differently, though). Also
1462 a patch by John Hunter (implemented differently, though). Also
1460 minor improvements by using .extend instead of + on lists.
1463 minor improvements by using .extend instead of + on lists.
1461
1464
1462 * pysh.py:
1465 * pysh.py:
1463
1466
1464 2005-04-06 Fernando Perez <fperez@colorado.edu>
1467 2005-04-06 Fernando Perez <fperez@colorado.edu>
1465
1468
1466 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1469 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1467 by default, so that all users benefit from it. Those who don't
1470 by default, so that all users benefit from it. Those who don't
1468 want it can still turn it off.
1471 want it can still turn it off.
1469
1472
1470 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1473 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1471 config file, I'd forgotten about this, so users were getting it
1474 config file, I'd forgotten about this, so users were getting it
1472 off by default.
1475 off by default.
1473
1476
1474 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1477 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1475 consistency. Now magics can be called in multiline statements,
1478 consistency. Now magics can be called in multiline statements,
1476 and python variables can be expanded in magic calls via $var.
1479 and python variables can be expanded in magic calls via $var.
1477 This makes the magic system behave just like aliases or !system
1480 This makes the magic system behave just like aliases or !system
1478 calls.
1481 calls.
1479
1482
1480 2005-03-28 Fernando Perez <fperez@colorado.edu>
1483 2005-03-28 Fernando Perez <fperez@colorado.edu>
1481
1484
1482 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1485 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1483 expensive string additions for building command. Add support for
1486 expensive string additions for building command. Add support for
1484 trailing ';' when autocall is used.
1487 trailing ';' when autocall is used.
1485
1488
1486 2005-03-26 Fernando Perez <fperez@colorado.edu>
1489 2005-03-26 Fernando Perez <fperez@colorado.edu>
1487
1490
1488 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1491 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1489 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1492 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1490 ipython.el robust against prompts with any number of spaces
1493 ipython.el robust against prompts with any number of spaces
1491 (including 0) after the ':' character.
1494 (including 0) after the ':' character.
1492
1495
1493 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1496 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1494 continuation prompt, which misled users to think the line was
1497 continuation prompt, which misled users to think the line was
1495 already indented. Closes debian Bug#300847, reported to me by
1498 already indented. Closes debian Bug#300847, reported to me by
1496 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1499 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1497
1500
1498 2005-03-23 Fernando Perez <fperez@colorado.edu>
1501 2005-03-23 Fernando Perez <fperez@colorado.edu>
1499
1502
1500 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1503 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1501 properly aligned if they have embedded newlines.
1504 properly aligned if they have embedded newlines.
1502
1505
1503 * IPython/iplib.py (runlines): Add a public method to expose
1506 * IPython/iplib.py (runlines): Add a public method to expose
1504 IPython's code execution machinery, so that users can run strings
1507 IPython's code execution machinery, so that users can run strings
1505 as if they had been typed at the prompt interactively.
1508 as if they had been typed at the prompt interactively.
1506 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1509 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1507 methods which can call the system shell, but with python variable
1510 methods which can call the system shell, but with python variable
1508 expansion. The three such methods are: __IPYTHON__.system,
1511 expansion. The three such methods are: __IPYTHON__.system,
1509 .getoutput and .getoutputerror. These need to be documented in a
1512 .getoutput and .getoutputerror. These need to be documented in a
1510 'public API' section (to be written) of the manual.
1513 'public API' section (to be written) of the manual.
1511
1514
1512 2005-03-20 Fernando Perez <fperez@colorado.edu>
1515 2005-03-20 Fernando Perez <fperez@colorado.edu>
1513
1516
1514 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1517 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1515 for custom exception handling. This is quite powerful, and it
1518 for custom exception handling. This is quite powerful, and it
1516 allows for user-installable exception handlers which can trap
1519 allows for user-installable exception handlers which can trap
1517 custom exceptions at runtime and treat them separately from
1520 custom exceptions at runtime and treat them separately from
1518 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1521 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1519 Mantegazza <mantegazza-AT-ill.fr>.
1522 Mantegazza <mantegazza-AT-ill.fr>.
1520 (InteractiveShell.set_custom_completer): public API function to
1523 (InteractiveShell.set_custom_completer): public API function to
1521 add new completers at runtime.
1524 add new completers at runtime.
1522
1525
1523 2005-03-19 Fernando Perez <fperez@colorado.edu>
1526 2005-03-19 Fernando Perez <fperez@colorado.edu>
1524
1527
1525 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1528 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1526 allow objects which provide their docstrings via non-standard
1529 allow objects which provide their docstrings via non-standard
1527 mechanisms (like Pyro proxies) to still be inspected by ipython's
1530 mechanisms (like Pyro proxies) to still be inspected by ipython's
1528 ? system.
1531 ? system.
1529
1532
1530 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1533 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1531 automatic capture system. I tried quite hard to make it work
1534 automatic capture system. I tried quite hard to make it work
1532 reliably, and simply failed. I tried many combinations with the
1535 reliably, and simply failed. I tried many combinations with the
1533 subprocess module, but eventually nothing worked in all needed
1536 subprocess module, but eventually nothing worked in all needed
1534 cases (not blocking stdin for the child, duplicating stdout
1537 cases (not blocking stdin for the child, duplicating stdout
1535 without blocking, etc). The new %sc/%sx still do capture to these
1538 without blocking, etc). The new %sc/%sx still do capture to these
1536 magical list/string objects which make shell use much more
1539 magical list/string objects which make shell use much more
1537 conveninent, so not all is lost.
1540 conveninent, so not all is lost.
1538
1541
1539 XXX - FIX MANUAL for the change above!
1542 XXX - FIX MANUAL for the change above!
1540
1543
1541 (runsource): I copied code.py's runsource() into ipython to modify
1544 (runsource): I copied code.py's runsource() into ipython to modify
1542 it a bit. Now the code object and source to be executed are
1545 it a bit. Now the code object and source to be executed are
1543 stored in ipython. This makes this info accessible to third-party
1546 stored in ipython. This makes this info accessible to third-party
1544 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1547 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1545 Mantegazza <mantegazza-AT-ill.fr>.
1548 Mantegazza <mantegazza-AT-ill.fr>.
1546
1549
1547 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1550 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1548 history-search via readline (like C-p/C-n). I'd wanted this for a
1551 history-search via readline (like C-p/C-n). I'd wanted this for a
1549 long time, but only recently found out how to do it. For users
1552 long time, but only recently found out how to do it. For users
1550 who already have their ipythonrc files made and want this, just
1553 who already have their ipythonrc files made and want this, just
1551 add:
1554 add:
1552
1555
1553 readline_parse_and_bind "\e[A": history-search-backward
1556 readline_parse_and_bind "\e[A": history-search-backward
1554 readline_parse_and_bind "\e[B": history-search-forward
1557 readline_parse_and_bind "\e[B": history-search-forward
1555
1558
1556 2005-03-18 Fernando Perez <fperez@colorado.edu>
1559 2005-03-18 Fernando Perez <fperez@colorado.edu>
1557
1560
1558 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1561 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1559 LSString and SList classes which allow transparent conversions
1562 LSString and SList classes which allow transparent conversions
1560 between list mode and whitespace-separated string.
1563 between list mode and whitespace-separated string.
1561 (magic_r): Fix recursion problem in %r.
1564 (magic_r): Fix recursion problem in %r.
1562
1565
1563 * IPython/genutils.py (LSString): New class to be used for
1566 * IPython/genutils.py (LSString): New class to be used for
1564 automatic storage of the results of all alias/system calls in _o
1567 automatic storage of the results of all alias/system calls in _o
1565 and _e (stdout/err). These provide a .l/.list attribute which
1568 and _e (stdout/err). These provide a .l/.list attribute which
1566 does automatic splitting on newlines. This means that for most
1569 does automatic splitting on newlines. This means that for most
1567 uses, you'll never need to do capturing of output with %sc/%sx
1570 uses, you'll never need to do capturing of output with %sc/%sx
1568 anymore, since ipython keeps this always done for you. Note that
1571 anymore, since ipython keeps this always done for you. Note that
1569 only the LAST results are stored, the _o/e variables are
1572 only the LAST results are stored, the _o/e variables are
1570 overwritten on each call. If you need to save their contents
1573 overwritten on each call. If you need to save their contents
1571 further, simply bind them to any other name.
1574 further, simply bind them to any other name.
1572
1575
1573 2005-03-17 Fernando Perez <fperez@colorado.edu>
1576 2005-03-17 Fernando Perez <fperez@colorado.edu>
1574
1577
1575 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1578 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1576 prompt namespace handling.
1579 prompt namespace handling.
1577
1580
1578 2005-03-16 Fernando Perez <fperez@colorado.edu>
1581 2005-03-16 Fernando Perez <fperez@colorado.edu>
1579
1582
1580 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1583 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1581 classic prompts to be '>>> ' (final space was missing, and it
1584 classic prompts to be '>>> ' (final space was missing, and it
1582 trips the emacs python mode).
1585 trips the emacs python mode).
1583 (BasePrompt.__str__): Added safe support for dynamic prompt
1586 (BasePrompt.__str__): Added safe support for dynamic prompt
1584 strings. Now you can set your prompt string to be '$x', and the
1587 strings. Now you can set your prompt string to be '$x', and the
1585 value of x will be printed from your interactive namespace. The
1588 value of x will be printed from your interactive namespace. The
1586 interpolation syntax includes the full Itpl support, so
1589 interpolation syntax includes the full Itpl support, so
1587 ${foo()+x+bar()} is a valid prompt string now, and the function
1590 ${foo()+x+bar()} is a valid prompt string now, and the function
1588 calls will be made at runtime.
1591 calls will be made at runtime.
1589
1592
1590 2005-03-15 Fernando Perez <fperez@colorado.edu>
1593 2005-03-15 Fernando Perez <fperez@colorado.edu>
1591
1594
1592 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1595 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1593 avoid name clashes in pylab. %hist still works, it just forwards
1596 avoid name clashes in pylab. %hist still works, it just forwards
1594 the call to %history.
1597 the call to %history.
1595
1598
1596 2005-03-02 *** Released version 0.6.12
1599 2005-03-02 *** Released version 0.6.12
1597
1600
1598 2005-03-02 Fernando Perez <fperez@colorado.edu>
1601 2005-03-02 Fernando Perez <fperez@colorado.edu>
1599
1602
1600 * IPython/iplib.py (handle_magic): log magic calls properly as
1603 * IPython/iplib.py (handle_magic): log magic calls properly as
1601 ipmagic() function calls.
1604 ipmagic() function calls.
1602
1605
1603 * IPython/Magic.py (magic_time): Improved %time to support
1606 * IPython/Magic.py (magic_time): Improved %time to support
1604 statements and provide wall-clock as well as CPU time.
1607 statements and provide wall-clock as well as CPU time.
1605
1608
1606 2005-02-27 Fernando Perez <fperez@colorado.edu>
1609 2005-02-27 Fernando Perez <fperez@colorado.edu>
1607
1610
1608 * IPython/hooks.py: New hooks module, to expose user-modifiable
1611 * IPython/hooks.py: New hooks module, to expose user-modifiable
1609 IPython functionality in a clean manner. For now only the editor
1612 IPython functionality in a clean manner. For now only the editor
1610 hook is actually written, and other thigns which I intend to turn
1613 hook is actually written, and other thigns which I intend to turn
1611 into proper hooks aren't yet there. The display and prefilter
1614 into proper hooks aren't yet there. The display and prefilter
1612 stuff, for example, should be hooks. But at least now the
1615 stuff, for example, should be hooks. But at least now the
1613 framework is in place, and the rest can be moved here with more
1616 framework is in place, and the rest can be moved here with more
1614 time later. IPython had had a .hooks variable for a long time for
1617 time later. IPython had had a .hooks variable for a long time for
1615 this purpose, but I'd never actually used it for anything.
1618 this purpose, but I'd never actually used it for anything.
1616
1619
1617 2005-02-26 Fernando Perez <fperez@colorado.edu>
1620 2005-02-26 Fernando Perez <fperez@colorado.edu>
1618
1621
1619 * IPython/ipmaker.py (make_IPython): make the default ipython
1622 * IPython/ipmaker.py (make_IPython): make the default ipython
1620 directory be called _ipython under win32, to follow more the
1623 directory be called _ipython under win32, to follow more the
1621 naming peculiarities of that platform (where buggy software like
1624 naming peculiarities of that platform (where buggy software like
1622 Visual Sourcesafe breaks with .named directories). Reported by
1625 Visual Sourcesafe breaks with .named directories). Reported by
1623 Ville Vainio.
1626 Ville Vainio.
1624
1627
1625 2005-02-23 Fernando Perez <fperez@colorado.edu>
1628 2005-02-23 Fernando Perez <fperez@colorado.edu>
1626
1629
1627 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1630 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1628 auto_aliases for win32 which were causing problems. Users can
1631 auto_aliases for win32 which were causing problems. Users can
1629 define the ones they personally like.
1632 define the ones they personally like.
1630
1633
1631 2005-02-21 Fernando Perez <fperez@colorado.edu>
1634 2005-02-21 Fernando Perez <fperez@colorado.edu>
1632
1635
1633 * IPython/Magic.py (magic_time): new magic to time execution of
1636 * IPython/Magic.py (magic_time): new magic to time execution of
1634 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1637 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1635
1638
1636 2005-02-19 Fernando Perez <fperez@colorado.edu>
1639 2005-02-19 Fernando Perez <fperez@colorado.edu>
1637
1640
1638 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1641 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1639 into keys (for prompts, for example).
1642 into keys (for prompts, for example).
1640
1643
1641 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1644 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1642 prompts in case users want them. This introduces a small behavior
1645 prompts in case users want them. This introduces a small behavior
1643 change: ipython does not automatically add a space to all prompts
1646 change: ipython does not automatically add a space to all prompts
1644 anymore. To get the old prompts with a space, users should add it
1647 anymore. To get the old prompts with a space, users should add it
1645 manually to their ipythonrc file, so for example prompt_in1 should
1648 manually to their ipythonrc file, so for example prompt_in1 should
1646 now read 'In [\#]: ' instead of 'In [\#]:'.
1649 now read 'In [\#]: ' instead of 'In [\#]:'.
1647 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1650 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1648 file) to control left-padding of secondary prompts.
1651 file) to control left-padding of secondary prompts.
1649
1652
1650 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1653 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1651 the profiler can't be imported. Fix for Debian, which removed
1654 the profiler can't be imported. Fix for Debian, which removed
1652 profile.py because of License issues. I applied a slightly
1655 profile.py because of License issues. I applied a slightly
1653 modified version of the original Debian patch at
1656 modified version of the original Debian patch at
1654 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1657 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1655
1658
1656 2005-02-17 Fernando Perez <fperez@colorado.edu>
1659 2005-02-17 Fernando Perez <fperez@colorado.edu>
1657
1660
1658 * IPython/genutils.py (native_line_ends): Fix bug which would
1661 * IPython/genutils.py (native_line_ends): Fix bug which would
1659 cause improper line-ends under win32 b/c I was not opening files
1662 cause improper line-ends under win32 b/c I was not opening files
1660 in binary mode. Bug report and fix thanks to Ville.
1663 in binary mode. Bug report and fix thanks to Ville.
1661
1664
1662 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1665 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1663 trying to catch spurious foo[1] autocalls. My fix actually broke
1666 trying to catch spurious foo[1] autocalls. My fix actually broke
1664 ',/' autoquote/call with explicit escape (bad regexp).
1667 ',/' autoquote/call with explicit escape (bad regexp).
1665
1668
1666 2005-02-15 *** Released version 0.6.11
1669 2005-02-15 *** Released version 0.6.11
1667
1670
1668 2005-02-14 Fernando Perez <fperez@colorado.edu>
1671 2005-02-14 Fernando Perez <fperez@colorado.edu>
1669
1672
1670 * IPython/background_jobs.py: New background job management
1673 * IPython/background_jobs.py: New background job management
1671 subsystem. This is implemented via a new set of classes, and
1674 subsystem. This is implemented via a new set of classes, and
1672 IPython now provides a builtin 'jobs' object for background job
1675 IPython now provides a builtin 'jobs' object for background job
1673 execution. A convenience %bg magic serves as a lightweight
1676 execution. A convenience %bg magic serves as a lightweight
1674 frontend for starting the more common type of calls. This was
1677 frontend for starting the more common type of calls. This was
1675 inspired by discussions with B. Granger and the BackgroundCommand
1678 inspired by discussions with B. Granger and the BackgroundCommand
1676 class described in the book Python Scripting for Computational
1679 class described in the book Python Scripting for Computational
1677 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1680 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1678 (although ultimately no code from this text was used, as IPython's
1681 (although ultimately no code from this text was used, as IPython's
1679 system is a separate implementation).
1682 system is a separate implementation).
1680
1683
1681 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1684 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1682 to control the completion of single/double underscore names
1685 to control the completion of single/double underscore names
1683 separately. As documented in the example ipytonrc file, the
1686 separately. As documented in the example ipytonrc file, the
1684 readline_omit__names variable can now be set to 2, to omit even
1687 readline_omit__names variable can now be set to 2, to omit even
1685 single underscore names. Thanks to a patch by Brian Wong
1688 single underscore names. Thanks to a patch by Brian Wong
1686 <BrianWong-AT-AirgoNetworks.Com>.
1689 <BrianWong-AT-AirgoNetworks.Com>.
1687 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1690 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1688 be autocalled as foo([1]) if foo were callable. A problem for
1691 be autocalled as foo([1]) if foo were callable. A problem for
1689 things which are both callable and implement __getitem__.
1692 things which are both callable and implement __getitem__.
1690 (init_readline): Fix autoindentation for win32. Thanks to a patch
1693 (init_readline): Fix autoindentation for win32. Thanks to a patch
1691 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1694 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1692
1695
1693 2005-02-12 Fernando Perez <fperez@colorado.edu>
1696 2005-02-12 Fernando Perez <fperez@colorado.edu>
1694
1697
1695 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1698 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1696 which I had written long ago to sort out user error messages which
1699 which I had written long ago to sort out user error messages which
1697 may occur during startup. This seemed like a good idea initially,
1700 may occur during startup. This seemed like a good idea initially,
1698 but it has proven a disaster in retrospect. I don't want to
1701 but it has proven a disaster in retrospect. I don't want to
1699 change much code for now, so my fix is to set the internal 'debug'
1702 change much code for now, so my fix is to set the internal 'debug'
1700 flag to true everywhere, whose only job was precisely to control
1703 flag to true everywhere, whose only job was precisely to control
1701 this subsystem. This closes issue 28 (as well as avoiding all
1704 this subsystem. This closes issue 28 (as well as avoiding all
1702 sorts of strange hangups which occur from time to time).
1705 sorts of strange hangups which occur from time to time).
1703
1706
1704 2005-02-07 Fernando Perez <fperez@colorado.edu>
1707 2005-02-07 Fernando Perez <fperez@colorado.edu>
1705
1708
1706 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1709 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1707 previous call produced a syntax error.
1710 previous call produced a syntax error.
1708
1711
1709 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1712 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1710 classes without constructor.
1713 classes without constructor.
1711
1714
1712 2005-02-06 Fernando Perez <fperez@colorado.edu>
1715 2005-02-06 Fernando Perez <fperez@colorado.edu>
1713
1716
1714 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1717 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1715 completions with the results of each matcher, so we return results
1718 completions with the results of each matcher, so we return results
1716 to the user from all namespaces. This breaks with ipython
1719 to the user from all namespaces. This breaks with ipython
1717 tradition, but I think it's a nicer behavior. Now you get all
1720 tradition, but I think it's a nicer behavior. Now you get all
1718 possible completions listed, from all possible namespaces (python,
1721 possible completions listed, from all possible namespaces (python,
1719 filesystem, magics...) After a request by John Hunter
1722 filesystem, magics...) After a request by John Hunter
1720 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1723 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1721
1724
1722 2005-02-05 Fernando Perez <fperez@colorado.edu>
1725 2005-02-05 Fernando Perez <fperez@colorado.edu>
1723
1726
1724 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1727 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1725 the call had quote characters in it (the quotes were stripped).
1728 the call had quote characters in it (the quotes were stripped).
1726
1729
1727 2005-01-31 Fernando Perez <fperez@colorado.edu>
1730 2005-01-31 Fernando Perez <fperez@colorado.edu>
1728
1731
1729 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1732 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1730 Itpl.itpl() to make the code more robust against psyco
1733 Itpl.itpl() to make the code more robust against psyco
1731 optimizations.
1734 optimizations.
1732
1735
1733 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1736 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1734 of causing an exception. Quicker, cleaner.
1737 of causing an exception. Quicker, cleaner.
1735
1738
1736 2005-01-28 Fernando Perez <fperez@colorado.edu>
1739 2005-01-28 Fernando Perez <fperez@colorado.edu>
1737
1740
1738 * scripts/ipython_win_post_install.py (install): hardcode
1741 * scripts/ipython_win_post_install.py (install): hardcode
1739 sys.prefix+'python.exe' as the executable path. It turns out that
1742 sys.prefix+'python.exe' as the executable path. It turns out that
1740 during the post-installation run, sys.executable resolves to the
1743 during the post-installation run, sys.executable resolves to the
1741 name of the binary installer! I should report this as a distutils
1744 name of the binary installer! I should report this as a distutils
1742 bug, I think. I updated the .10 release with this tiny fix, to
1745 bug, I think. I updated the .10 release with this tiny fix, to
1743 avoid annoying the lists further.
1746 avoid annoying the lists further.
1744
1747
1745 2005-01-27 *** Released version 0.6.10
1748 2005-01-27 *** Released version 0.6.10
1746
1749
1747 2005-01-27 Fernando Perez <fperez@colorado.edu>
1750 2005-01-27 Fernando Perez <fperez@colorado.edu>
1748
1751
1749 * IPython/numutils.py (norm): Added 'inf' as optional name for
1752 * IPython/numutils.py (norm): Added 'inf' as optional name for
1750 L-infinity norm, included references to mathworld.com for vector
1753 L-infinity norm, included references to mathworld.com for vector
1751 norm definitions.
1754 norm definitions.
1752 (amin/amax): added amin/amax for array min/max. Similar to what
1755 (amin/amax): added amin/amax for array min/max. Similar to what
1753 pylab ships with after the recent reorganization of names.
1756 pylab ships with after the recent reorganization of names.
1754 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1757 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1755
1758
1756 * ipython.el: committed Alex's recent fixes and improvements.
1759 * ipython.el: committed Alex's recent fixes and improvements.
1757 Tested with python-mode from CVS, and it looks excellent. Since
1760 Tested with python-mode from CVS, and it looks excellent. Since
1758 python-mode hasn't released anything in a while, I'm temporarily
1761 python-mode hasn't released anything in a while, I'm temporarily
1759 putting a copy of today's CVS (v 4.70) of python-mode in:
1762 putting a copy of today's CVS (v 4.70) of python-mode in:
1760 http://ipython.scipy.org/tmp/python-mode.el
1763 http://ipython.scipy.org/tmp/python-mode.el
1761
1764
1762 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1765 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1763 sys.executable for the executable name, instead of assuming it's
1766 sys.executable for the executable name, instead of assuming it's
1764 called 'python.exe' (the post-installer would have produced broken
1767 called 'python.exe' (the post-installer would have produced broken
1765 setups on systems with a differently named python binary).
1768 setups on systems with a differently named python binary).
1766
1769
1767 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1770 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1768 references to os.linesep, to make the code more
1771 references to os.linesep, to make the code more
1769 platform-independent. This is also part of the win32 coloring
1772 platform-independent. This is also part of the win32 coloring
1770 fixes.
1773 fixes.
1771
1774
1772 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1775 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1773 lines, which actually cause coloring bugs because the length of
1776 lines, which actually cause coloring bugs because the length of
1774 the line is very difficult to correctly compute with embedded
1777 the line is very difficult to correctly compute with embedded
1775 escapes. This was the source of all the coloring problems under
1778 escapes. This was the source of all the coloring problems under
1776 Win32. I think that _finally_, Win32 users have a properly
1779 Win32. I think that _finally_, Win32 users have a properly
1777 working ipython in all respects. This would never have happened
1780 working ipython in all respects. This would never have happened
1778 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1781 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1779
1782
1780 2005-01-26 *** Released version 0.6.9
1783 2005-01-26 *** Released version 0.6.9
1781
1784
1782 2005-01-25 Fernando Perez <fperez@colorado.edu>
1785 2005-01-25 Fernando Perez <fperez@colorado.edu>
1783
1786
1784 * setup.py: finally, we have a true Windows installer, thanks to
1787 * setup.py: finally, we have a true Windows installer, thanks to
1785 the excellent work of Viktor Ransmayr
1788 the excellent work of Viktor Ransmayr
1786 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1789 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1787 Windows users. The setup routine is quite a bit cleaner thanks to
1790 Windows users. The setup routine is quite a bit cleaner thanks to
1788 this, and the post-install script uses the proper functions to
1791 this, and the post-install script uses the proper functions to
1789 allow a clean de-installation using the standard Windows Control
1792 allow a clean de-installation using the standard Windows Control
1790 Panel.
1793 Panel.
1791
1794
1792 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1795 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1793 environment variable under all OSes (including win32) if
1796 environment variable under all OSes (including win32) if
1794 available. This will give consistency to win32 users who have set
1797 available. This will give consistency to win32 users who have set
1795 this variable for any reason. If os.environ['HOME'] fails, the
1798 this variable for any reason. If os.environ['HOME'] fails, the
1796 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1799 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1797
1800
1798 2005-01-24 Fernando Perez <fperez@colorado.edu>
1801 2005-01-24 Fernando Perez <fperez@colorado.edu>
1799
1802
1800 * IPython/numutils.py (empty_like): add empty_like(), similar to
1803 * IPython/numutils.py (empty_like): add empty_like(), similar to
1801 zeros_like() but taking advantage of the new empty() Numeric routine.
1804 zeros_like() but taking advantage of the new empty() Numeric routine.
1802
1805
1803 2005-01-23 *** Released version 0.6.8
1806 2005-01-23 *** Released version 0.6.8
1804
1807
1805 2005-01-22 Fernando Perez <fperez@colorado.edu>
1808 2005-01-22 Fernando Perez <fperez@colorado.edu>
1806
1809
1807 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1810 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1808 automatic show() calls. After discussing things with JDH, it
1811 automatic show() calls. After discussing things with JDH, it
1809 turns out there are too many corner cases where this can go wrong.
1812 turns out there are too many corner cases where this can go wrong.
1810 It's best not to try to be 'too smart', and simply have ipython
1813 It's best not to try to be 'too smart', and simply have ipython
1811 reproduce as much as possible the default behavior of a normal
1814 reproduce as much as possible the default behavior of a normal
1812 python shell.
1815 python shell.
1813
1816
1814 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1817 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1815 line-splitting regexp and _prefilter() to avoid calling getattr()
1818 line-splitting regexp and _prefilter() to avoid calling getattr()
1816 on assignments. This closes
1819 on assignments. This closes
1817 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1820 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1818 readline uses getattr(), so a simple <TAB> keypress is still
1821 readline uses getattr(), so a simple <TAB> keypress is still
1819 enough to trigger getattr() calls on an object.
1822 enough to trigger getattr() calls on an object.
1820
1823
1821 2005-01-21 Fernando Perez <fperez@colorado.edu>
1824 2005-01-21 Fernando Perez <fperez@colorado.edu>
1822
1825
1823 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1826 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1824 docstring under pylab so it doesn't mask the original.
1827 docstring under pylab so it doesn't mask the original.
1825
1828
1826 2005-01-21 *** Released version 0.6.7
1829 2005-01-21 *** Released version 0.6.7
1827
1830
1828 2005-01-21 Fernando Perez <fperez@colorado.edu>
1831 2005-01-21 Fernando Perez <fperez@colorado.edu>
1829
1832
1830 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1833 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1831 signal handling for win32 users in multithreaded mode.
1834 signal handling for win32 users in multithreaded mode.
1832
1835
1833 2005-01-17 Fernando Perez <fperez@colorado.edu>
1836 2005-01-17 Fernando Perez <fperez@colorado.edu>
1834
1837
1835 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1838 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1836 instances with no __init__. After a crash report by Norbert Nemec
1839 instances with no __init__. After a crash report by Norbert Nemec
1837 <Norbert-AT-nemec-online.de>.
1840 <Norbert-AT-nemec-online.de>.
1838
1841
1839 2005-01-14 Fernando Perez <fperez@colorado.edu>
1842 2005-01-14 Fernando Perez <fperez@colorado.edu>
1840
1843
1841 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1844 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1842 names for verbose exceptions, when multiple dotted names and the
1845 names for verbose exceptions, when multiple dotted names and the
1843 'parent' object were present on the same line.
1846 'parent' object were present on the same line.
1844
1847
1845 2005-01-11 Fernando Perez <fperez@colorado.edu>
1848 2005-01-11 Fernando Perez <fperez@colorado.edu>
1846
1849
1847 * IPython/genutils.py (flag_calls): new utility to trap and flag
1850 * IPython/genutils.py (flag_calls): new utility to trap and flag
1848 calls in functions. I need it to clean up matplotlib support.
1851 calls in functions. I need it to clean up matplotlib support.
1849 Also removed some deprecated code in genutils.
1852 Also removed some deprecated code in genutils.
1850
1853
1851 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1854 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1852 that matplotlib scripts called with %run, which don't call show()
1855 that matplotlib scripts called with %run, which don't call show()
1853 themselves, still have their plotting windows open.
1856 themselves, still have their plotting windows open.
1854
1857
1855 2005-01-05 Fernando Perez <fperez@colorado.edu>
1858 2005-01-05 Fernando Perez <fperez@colorado.edu>
1856
1859
1857 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1860 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1858 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1861 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1859
1862
1860 2004-12-19 Fernando Perez <fperez@colorado.edu>
1863 2004-12-19 Fernando Perez <fperez@colorado.edu>
1861
1864
1862 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1865 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1863 parent_runcode, which was an eyesore. The same result can be
1866 parent_runcode, which was an eyesore. The same result can be
1864 obtained with Python's regular superclass mechanisms.
1867 obtained with Python's regular superclass mechanisms.
1865
1868
1866 2004-12-17 Fernando Perez <fperez@colorado.edu>
1869 2004-12-17 Fernando Perez <fperez@colorado.edu>
1867
1870
1868 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1871 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1869 reported by Prabhu.
1872 reported by Prabhu.
1870 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1873 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1871 sys.stderr) instead of explicitly calling sys.stderr. This helps
1874 sys.stderr) instead of explicitly calling sys.stderr. This helps
1872 maintain our I/O abstractions clean, for future GUI embeddings.
1875 maintain our I/O abstractions clean, for future GUI embeddings.
1873
1876
1874 * IPython/genutils.py (info): added new utility for sys.stderr
1877 * IPython/genutils.py (info): added new utility for sys.stderr
1875 unified info message handling (thin wrapper around warn()).
1878 unified info message handling (thin wrapper around warn()).
1876
1879
1877 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1880 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1878 composite (dotted) names on verbose exceptions.
1881 composite (dotted) names on verbose exceptions.
1879 (VerboseTB.nullrepr): harden against another kind of errors which
1882 (VerboseTB.nullrepr): harden against another kind of errors which
1880 Python's inspect module can trigger, and which were crashing
1883 Python's inspect module can trigger, and which were crashing
1881 IPython. Thanks to a report by Marco Lombardi
1884 IPython. Thanks to a report by Marco Lombardi
1882 <mlombard-AT-ma010192.hq.eso.org>.
1885 <mlombard-AT-ma010192.hq.eso.org>.
1883
1886
1884 2004-12-13 *** Released version 0.6.6
1887 2004-12-13 *** Released version 0.6.6
1885
1888
1886 2004-12-12 Fernando Perez <fperez@colorado.edu>
1889 2004-12-12 Fernando Perez <fperez@colorado.edu>
1887
1890
1888 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1891 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1889 generated by pygtk upon initialization if it was built without
1892 generated by pygtk upon initialization if it was built without
1890 threads (for matplotlib users). After a crash reported by
1893 threads (for matplotlib users). After a crash reported by
1891 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1894 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1892
1895
1893 * IPython/ipmaker.py (make_IPython): fix small bug in the
1896 * IPython/ipmaker.py (make_IPython): fix small bug in the
1894 import_some parameter for multiple imports.
1897 import_some parameter for multiple imports.
1895
1898
1896 * IPython/iplib.py (ipmagic): simplified the interface of
1899 * IPython/iplib.py (ipmagic): simplified the interface of
1897 ipmagic() to take a single string argument, just as it would be
1900 ipmagic() to take a single string argument, just as it would be
1898 typed at the IPython cmd line.
1901 typed at the IPython cmd line.
1899 (ipalias): Added new ipalias() with an interface identical to
1902 (ipalias): Added new ipalias() with an interface identical to
1900 ipmagic(). This completes exposing a pure python interface to the
1903 ipmagic(). This completes exposing a pure python interface to the
1901 alias and magic system, which can be used in loops or more complex
1904 alias and magic system, which can be used in loops or more complex
1902 code where IPython's automatic line mangling is not active.
1905 code where IPython's automatic line mangling is not active.
1903
1906
1904 * IPython/genutils.py (timing): changed interface of timing to
1907 * IPython/genutils.py (timing): changed interface of timing to
1905 simply run code once, which is the most common case. timings()
1908 simply run code once, which is the most common case. timings()
1906 remains unchanged, for the cases where you want multiple runs.
1909 remains unchanged, for the cases where you want multiple runs.
1907
1910
1908 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1911 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1909 bug where Python2.2 crashes with exec'ing code which does not end
1912 bug where Python2.2 crashes with exec'ing code which does not end
1910 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1913 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1911 before.
1914 before.
1912
1915
1913 2004-12-10 Fernando Perez <fperez@colorado.edu>
1916 2004-12-10 Fernando Perez <fperez@colorado.edu>
1914
1917
1915 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1918 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1916 -t to -T, to accomodate the new -t flag in %run (the %run and
1919 -t to -T, to accomodate the new -t flag in %run (the %run and
1917 %prun options are kind of intermixed, and it's not easy to change
1920 %prun options are kind of intermixed, and it's not easy to change
1918 this with the limitations of python's getopt).
1921 this with the limitations of python's getopt).
1919
1922
1920 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1923 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1921 the execution of scripts. It's not as fine-tuned as timeit.py,
1924 the execution of scripts. It's not as fine-tuned as timeit.py,
1922 but it works from inside ipython (and under 2.2, which lacks
1925 but it works from inside ipython (and under 2.2, which lacks
1923 timeit.py). Optionally a number of runs > 1 can be given for
1926 timeit.py). Optionally a number of runs > 1 can be given for
1924 timing very short-running code.
1927 timing very short-running code.
1925
1928
1926 * IPython/genutils.py (uniq_stable): new routine which returns a
1929 * IPython/genutils.py (uniq_stable): new routine which returns a
1927 list of unique elements in any iterable, but in stable order of
1930 list of unique elements in any iterable, but in stable order of
1928 appearance. I needed this for the ultraTB fixes, and it's a handy
1931 appearance. I needed this for the ultraTB fixes, and it's a handy
1929 utility.
1932 utility.
1930
1933
1931 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1934 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1932 dotted names in Verbose exceptions. This had been broken since
1935 dotted names in Verbose exceptions. This had been broken since
1933 the very start, now x.y will properly be printed in a Verbose
1936 the very start, now x.y will properly be printed in a Verbose
1934 traceback, instead of x being shown and y appearing always as an
1937 traceback, instead of x being shown and y appearing always as an
1935 'undefined global'. Getting this to work was a bit tricky,
1938 'undefined global'. Getting this to work was a bit tricky,
1936 because by default python tokenizers are stateless. Saved by
1939 because by default python tokenizers are stateless. Saved by
1937 python's ability to easily add a bit of state to an arbitrary
1940 python's ability to easily add a bit of state to an arbitrary
1938 function (without needing to build a full-blown callable object).
1941 function (without needing to build a full-blown callable object).
1939
1942
1940 Also big cleanup of this code, which had horrendous runtime
1943 Also big cleanup of this code, which had horrendous runtime
1941 lookups of zillions of attributes for colorization. Moved all
1944 lookups of zillions of attributes for colorization. Moved all
1942 this code into a few templates, which make it cleaner and quicker.
1945 this code into a few templates, which make it cleaner and quicker.
1943
1946
1944 Printout quality was also improved for Verbose exceptions: one
1947 Printout quality was also improved for Verbose exceptions: one
1945 variable per line, and memory addresses are printed (this can be
1948 variable per line, and memory addresses are printed (this can be
1946 quite handy in nasty debugging situations, which is what Verbose
1949 quite handy in nasty debugging situations, which is what Verbose
1947 is for).
1950 is for).
1948
1951
1949 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1952 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1950 the command line as scripts to be loaded by embedded instances.
1953 the command line as scripts to be loaded by embedded instances.
1951 Doing so has the potential for an infinite recursion if there are
1954 Doing so has the potential for an infinite recursion if there are
1952 exceptions thrown in the process. This fixes a strange crash
1955 exceptions thrown in the process. This fixes a strange crash
1953 reported by Philippe MULLER <muller-AT-irit.fr>.
1956 reported by Philippe MULLER <muller-AT-irit.fr>.
1954
1957
1955 2004-12-09 Fernando Perez <fperez@colorado.edu>
1958 2004-12-09 Fernando Perez <fperez@colorado.edu>
1956
1959
1957 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1960 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1958 to reflect new names in matplotlib, which now expose the
1961 to reflect new names in matplotlib, which now expose the
1959 matlab-compatible interface via a pylab module instead of the
1962 matlab-compatible interface via a pylab module instead of the
1960 'matlab' name. The new code is backwards compatible, so users of
1963 'matlab' name. The new code is backwards compatible, so users of
1961 all matplotlib versions are OK. Patch by J. Hunter.
1964 all matplotlib versions are OK. Patch by J. Hunter.
1962
1965
1963 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1966 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1964 of __init__ docstrings for instances (class docstrings are already
1967 of __init__ docstrings for instances (class docstrings are already
1965 automatically printed). Instances with customized docstrings
1968 automatically printed). Instances with customized docstrings
1966 (indep. of the class) are also recognized and all 3 separate
1969 (indep. of the class) are also recognized and all 3 separate
1967 docstrings are printed (instance, class, constructor). After some
1970 docstrings are printed (instance, class, constructor). After some
1968 comments/suggestions by J. Hunter.
1971 comments/suggestions by J. Hunter.
1969
1972
1970 2004-12-05 Fernando Perez <fperez@colorado.edu>
1973 2004-12-05 Fernando Perez <fperez@colorado.edu>
1971
1974
1972 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1975 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1973 warnings when tab-completion fails and triggers an exception.
1976 warnings when tab-completion fails and triggers an exception.
1974
1977
1975 2004-12-03 Fernando Perez <fperez@colorado.edu>
1978 2004-12-03 Fernando Perez <fperez@colorado.edu>
1976
1979
1977 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1980 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1978 be triggered when using 'run -p'. An incorrect option flag was
1981 be triggered when using 'run -p'. An incorrect option flag was
1979 being set ('d' instead of 'D').
1982 being set ('d' instead of 'D').
1980 (manpage): fix missing escaped \- sign.
1983 (manpage): fix missing escaped \- sign.
1981
1984
1982 2004-11-30 *** Released version 0.6.5
1985 2004-11-30 *** Released version 0.6.5
1983
1986
1984 2004-11-30 Fernando Perez <fperez@colorado.edu>
1987 2004-11-30 Fernando Perez <fperez@colorado.edu>
1985
1988
1986 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1989 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1987 setting with -d option.
1990 setting with -d option.
1988
1991
1989 * setup.py (docfiles): Fix problem where the doc glob I was using
1992 * setup.py (docfiles): Fix problem where the doc glob I was using
1990 was COMPLETELY BROKEN. It was giving the right files by pure
1993 was COMPLETELY BROKEN. It was giving the right files by pure
1991 accident, but failed once I tried to include ipython.el. Note:
1994 accident, but failed once I tried to include ipython.el. Note:
1992 glob() does NOT allow you to do exclusion on multiple endings!
1995 glob() does NOT allow you to do exclusion on multiple endings!
1993
1996
1994 2004-11-29 Fernando Perez <fperez@colorado.edu>
1997 2004-11-29 Fernando Perez <fperez@colorado.edu>
1995
1998
1996 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1999 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1997 the manpage as the source. Better formatting & consistency.
2000 the manpage as the source. Better formatting & consistency.
1998
2001
1999 * IPython/Magic.py (magic_run): Added new -d option, to run
2002 * IPython/Magic.py (magic_run): Added new -d option, to run
2000 scripts under the control of the python pdb debugger. Note that
2003 scripts under the control of the python pdb debugger. Note that
2001 this required changing the %prun option -d to -D, to avoid a clash
2004 this required changing the %prun option -d to -D, to avoid a clash
2002 (since %run must pass options to %prun, and getopt is too dumb to
2005 (since %run must pass options to %prun, and getopt is too dumb to
2003 handle options with string values with embedded spaces). Thanks
2006 handle options with string values with embedded spaces). Thanks
2004 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2007 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2005 (magic_who_ls): added type matching to %who and %whos, so that one
2008 (magic_who_ls): added type matching to %who and %whos, so that one
2006 can filter their output to only include variables of certain
2009 can filter their output to only include variables of certain
2007 types. Another suggestion by Matthew.
2010 types. Another suggestion by Matthew.
2008 (magic_whos): Added memory summaries in kb and Mb for arrays.
2011 (magic_whos): Added memory summaries in kb and Mb for arrays.
2009 (magic_who): Improve formatting (break lines every 9 vars).
2012 (magic_who): Improve formatting (break lines every 9 vars).
2010
2013
2011 2004-11-28 Fernando Perez <fperez@colorado.edu>
2014 2004-11-28 Fernando Perez <fperez@colorado.edu>
2012
2015
2013 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2016 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2014 cache when empty lines were present.
2017 cache when empty lines were present.
2015
2018
2016 2004-11-24 Fernando Perez <fperez@colorado.edu>
2019 2004-11-24 Fernando Perez <fperez@colorado.edu>
2017
2020
2018 * IPython/usage.py (__doc__): document the re-activated threading
2021 * IPython/usage.py (__doc__): document the re-activated threading
2019 options for WX and GTK.
2022 options for WX and GTK.
2020
2023
2021 2004-11-23 Fernando Perez <fperez@colorado.edu>
2024 2004-11-23 Fernando Perez <fperez@colorado.edu>
2022
2025
2023 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2026 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2024 the -wthread and -gthread options, along with a new -tk one to try
2027 the -wthread and -gthread options, along with a new -tk one to try
2025 and coordinate Tk threading with wx/gtk. The tk support is very
2028 and coordinate Tk threading with wx/gtk. The tk support is very
2026 platform dependent, since it seems to require Tcl and Tk to be
2029 platform dependent, since it seems to require Tcl and Tk to be
2027 built with threads (Fedora1/2 appears NOT to have it, but in
2030 built with threads (Fedora1/2 appears NOT to have it, but in
2028 Prabhu's Debian boxes it works OK). But even with some Tk
2031 Prabhu's Debian boxes it works OK). But even with some Tk
2029 limitations, this is a great improvement.
2032 limitations, this is a great improvement.
2030
2033
2031 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2034 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2032 info in user prompts. Patch by Prabhu.
2035 info in user prompts. Patch by Prabhu.
2033
2036
2034 2004-11-18 Fernando Perez <fperez@colorado.edu>
2037 2004-11-18 Fernando Perez <fperez@colorado.edu>
2035
2038
2036 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2039 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2037 EOFErrors and bail, to avoid infinite loops if a non-terminating
2040 EOFErrors and bail, to avoid infinite loops if a non-terminating
2038 file is fed into ipython. Patch submitted in issue 19 by user,
2041 file is fed into ipython. Patch submitted in issue 19 by user,
2039 many thanks.
2042 many thanks.
2040
2043
2041 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2044 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2042 autoquote/parens in continuation prompts, which can cause lots of
2045 autoquote/parens in continuation prompts, which can cause lots of
2043 problems. Closes roundup issue 20.
2046 problems. Closes roundup issue 20.
2044
2047
2045 2004-11-17 Fernando Perez <fperez@colorado.edu>
2048 2004-11-17 Fernando Perez <fperez@colorado.edu>
2046
2049
2047 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2050 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2048 reported as debian bug #280505. I'm not sure my local changelog
2051 reported as debian bug #280505. I'm not sure my local changelog
2049 entry has the proper debian format (Jack?).
2052 entry has the proper debian format (Jack?).
2050
2053
2051 2004-11-08 *** Released version 0.6.4
2054 2004-11-08 *** Released version 0.6.4
2052
2055
2053 2004-11-08 Fernando Perez <fperez@colorado.edu>
2056 2004-11-08 Fernando Perez <fperez@colorado.edu>
2054
2057
2055 * IPython/iplib.py (init_readline): Fix exit message for Windows
2058 * IPython/iplib.py (init_readline): Fix exit message for Windows
2056 when readline is active. Thanks to a report by Eric Jones
2059 when readline is active. Thanks to a report by Eric Jones
2057 <eric-AT-enthought.com>.
2060 <eric-AT-enthought.com>.
2058
2061
2059 2004-11-07 Fernando Perez <fperez@colorado.edu>
2062 2004-11-07 Fernando Perez <fperez@colorado.edu>
2060
2063
2061 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2064 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2062 sometimes seen by win2k/cygwin users.
2065 sometimes seen by win2k/cygwin users.
2063
2066
2064 2004-11-06 Fernando Perez <fperez@colorado.edu>
2067 2004-11-06 Fernando Perez <fperez@colorado.edu>
2065
2068
2066 * IPython/iplib.py (interact): Change the handling of %Exit from
2069 * IPython/iplib.py (interact): Change the handling of %Exit from
2067 trying to propagate a SystemExit to an internal ipython flag.
2070 trying to propagate a SystemExit to an internal ipython flag.
2068 This is less elegant than using Python's exception mechanism, but
2071 This is less elegant than using Python's exception mechanism, but
2069 I can't get that to work reliably with threads, so under -pylab
2072 I can't get that to work reliably with threads, so under -pylab
2070 %Exit was hanging IPython. Cross-thread exception handling is
2073 %Exit was hanging IPython. Cross-thread exception handling is
2071 really a bitch. Thaks to a bug report by Stephen Walton
2074 really a bitch. Thaks to a bug report by Stephen Walton
2072 <stephen.walton-AT-csun.edu>.
2075 <stephen.walton-AT-csun.edu>.
2073
2076
2074 2004-11-04 Fernando Perez <fperez@colorado.edu>
2077 2004-11-04 Fernando Perez <fperez@colorado.edu>
2075
2078
2076 * IPython/iplib.py (raw_input_original): store a pointer to the
2079 * IPython/iplib.py (raw_input_original): store a pointer to the
2077 true raw_input to harden against code which can modify it
2080 true raw_input to harden against code which can modify it
2078 (wx.py.PyShell does this and would otherwise crash ipython).
2081 (wx.py.PyShell does this and would otherwise crash ipython).
2079 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2082 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2080
2083
2081 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2084 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2082 Ctrl-C problem, which does not mess up the input line.
2085 Ctrl-C problem, which does not mess up the input line.
2083
2086
2084 2004-11-03 Fernando Perez <fperez@colorado.edu>
2087 2004-11-03 Fernando Perez <fperez@colorado.edu>
2085
2088
2086 * IPython/Release.py: Changed licensing to BSD, in all files.
2089 * IPython/Release.py: Changed licensing to BSD, in all files.
2087 (name): lowercase name for tarball/RPM release.
2090 (name): lowercase name for tarball/RPM release.
2088
2091
2089 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2092 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2090 use throughout ipython.
2093 use throughout ipython.
2091
2094
2092 * IPython/Magic.py (Magic._ofind): Switch to using the new
2095 * IPython/Magic.py (Magic._ofind): Switch to using the new
2093 OInspect.getdoc() function.
2096 OInspect.getdoc() function.
2094
2097
2095 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2098 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2096 of the line currently being canceled via Ctrl-C. It's extremely
2099 of the line currently being canceled via Ctrl-C. It's extremely
2097 ugly, but I don't know how to do it better (the problem is one of
2100 ugly, but I don't know how to do it better (the problem is one of
2098 handling cross-thread exceptions).
2101 handling cross-thread exceptions).
2099
2102
2100 2004-10-28 Fernando Perez <fperez@colorado.edu>
2103 2004-10-28 Fernando Perez <fperez@colorado.edu>
2101
2104
2102 * IPython/Shell.py (signal_handler): add signal handlers to trap
2105 * IPython/Shell.py (signal_handler): add signal handlers to trap
2103 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2106 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2104 report by Francesc Alted.
2107 report by Francesc Alted.
2105
2108
2106 2004-10-21 Fernando Perez <fperez@colorado.edu>
2109 2004-10-21 Fernando Perez <fperez@colorado.edu>
2107
2110
2108 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2111 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2109 to % for pysh syntax extensions.
2112 to % for pysh syntax extensions.
2110
2113
2111 2004-10-09 Fernando Perez <fperez@colorado.edu>
2114 2004-10-09 Fernando Perez <fperez@colorado.edu>
2112
2115
2113 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2116 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2114 arrays to print a more useful summary, without calling str(arr).
2117 arrays to print a more useful summary, without calling str(arr).
2115 This avoids the problem of extremely lengthy computations which
2118 This avoids the problem of extremely lengthy computations which
2116 occur if arr is large, and appear to the user as a system lockup
2119 occur if arr is large, and appear to the user as a system lockup
2117 with 100% cpu activity. After a suggestion by Kristian Sandberg
2120 with 100% cpu activity. After a suggestion by Kristian Sandberg
2118 <Kristian.Sandberg@colorado.edu>.
2121 <Kristian.Sandberg@colorado.edu>.
2119 (Magic.__init__): fix bug in global magic escapes not being
2122 (Magic.__init__): fix bug in global magic escapes not being
2120 correctly set.
2123 correctly set.
2121
2124
2122 2004-10-08 Fernando Perez <fperez@colorado.edu>
2125 2004-10-08 Fernando Perez <fperez@colorado.edu>
2123
2126
2124 * IPython/Magic.py (__license__): change to absolute imports of
2127 * IPython/Magic.py (__license__): change to absolute imports of
2125 ipython's own internal packages, to start adapting to the absolute
2128 ipython's own internal packages, to start adapting to the absolute
2126 import requirement of PEP-328.
2129 import requirement of PEP-328.
2127
2130
2128 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2131 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2129 files, and standardize author/license marks through the Release
2132 files, and standardize author/license marks through the Release
2130 module instead of having per/file stuff (except for files with
2133 module instead of having per/file stuff (except for files with
2131 particular licenses, like the MIT/PSF-licensed codes).
2134 particular licenses, like the MIT/PSF-licensed codes).
2132
2135
2133 * IPython/Debugger.py: remove dead code for python 2.1
2136 * IPython/Debugger.py: remove dead code for python 2.1
2134
2137
2135 2004-10-04 Fernando Perez <fperez@colorado.edu>
2138 2004-10-04 Fernando Perez <fperez@colorado.edu>
2136
2139
2137 * IPython/iplib.py (ipmagic): New function for accessing magics
2140 * IPython/iplib.py (ipmagic): New function for accessing magics
2138 via a normal python function call.
2141 via a normal python function call.
2139
2142
2140 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2143 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2141 from '@' to '%', to accomodate the new @decorator syntax of python
2144 from '@' to '%', to accomodate the new @decorator syntax of python
2142 2.4.
2145 2.4.
2143
2146
2144 2004-09-29 Fernando Perez <fperez@colorado.edu>
2147 2004-09-29 Fernando Perez <fperez@colorado.edu>
2145
2148
2146 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2149 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2147 matplotlib.use to prevent running scripts which try to switch
2150 matplotlib.use to prevent running scripts which try to switch
2148 interactive backends from within ipython. This will just crash
2151 interactive backends from within ipython. This will just crash
2149 the python interpreter, so we can't allow it (but a detailed error
2152 the python interpreter, so we can't allow it (but a detailed error
2150 is given to the user).
2153 is given to the user).
2151
2154
2152 2004-09-28 Fernando Perez <fperez@colorado.edu>
2155 2004-09-28 Fernando Perez <fperez@colorado.edu>
2153
2156
2154 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2157 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2155 matplotlib-related fixes so that using @run with non-matplotlib
2158 matplotlib-related fixes so that using @run with non-matplotlib
2156 scripts doesn't pop up spurious plot windows. This requires
2159 scripts doesn't pop up spurious plot windows. This requires
2157 matplotlib >= 0.63, where I had to make some changes as well.
2160 matplotlib >= 0.63, where I had to make some changes as well.
2158
2161
2159 * IPython/ipmaker.py (make_IPython): update version requirement to
2162 * IPython/ipmaker.py (make_IPython): update version requirement to
2160 python 2.2.
2163 python 2.2.
2161
2164
2162 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2165 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2163 banner arg for embedded customization.
2166 banner arg for embedded customization.
2164
2167
2165 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2168 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2166 explicit uses of __IP as the IPython's instance name. Now things
2169 explicit uses of __IP as the IPython's instance name. Now things
2167 are properly handled via the shell.name value. The actual code
2170 are properly handled via the shell.name value. The actual code
2168 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2171 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2169 is much better than before. I'll clean things completely when the
2172 is much better than before. I'll clean things completely when the
2170 magic stuff gets a real overhaul.
2173 magic stuff gets a real overhaul.
2171
2174
2172 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2175 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2173 minor changes to debian dir.
2176 minor changes to debian dir.
2174
2177
2175 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2178 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2176 pointer to the shell itself in the interactive namespace even when
2179 pointer to the shell itself in the interactive namespace even when
2177 a user-supplied dict is provided. This is needed for embedding
2180 a user-supplied dict is provided. This is needed for embedding
2178 purposes (found by tests with Michel Sanner).
2181 purposes (found by tests with Michel Sanner).
2179
2182
2180 2004-09-27 Fernando Perez <fperez@colorado.edu>
2183 2004-09-27 Fernando Perez <fperez@colorado.edu>
2181
2184
2182 * IPython/UserConfig/ipythonrc: remove []{} from
2185 * IPython/UserConfig/ipythonrc: remove []{} from
2183 readline_remove_delims, so that things like [modname.<TAB> do
2186 readline_remove_delims, so that things like [modname.<TAB> do
2184 proper completion. This disables [].TAB, but that's a less common
2187 proper completion. This disables [].TAB, but that's a less common
2185 case than module names in list comprehensions, for example.
2188 case than module names in list comprehensions, for example.
2186 Thanks to a report by Andrea Riciputi.
2189 Thanks to a report by Andrea Riciputi.
2187
2190
2188 2004-09-09 Fernando Perez <fperez@colorado.edu>
2191 2004-09-09 Fernando Perez <fperez@colorado.edu>
2189
2192
2190 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2193 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2191 blocking problems in win32 and osx. Fix by John.
2194 blocking problems in win32 and osx. Fix by John.
2192
2195
2193 2004-09-08 Fernando Perez <fperez@colorado.edu>
2196 2004-09-08 Fernando Perez <fperez@colorado.edu>
2194
2197
2195 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2198 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2196 for Win32 and OSX. Fix by John Hunter.
2199 for Win32 and OSX. Fix by John Hunter.
2197
2200
2198 2004-08-30 *** Released version 0.6.3
2201 2004-08-30 *** Released version 0.6.3
2199
2202
2200 2004-08-30 Fernando Perez <fperez@colorado.edu>
2203 2004-08-30 Fernando Perez <fperez@colorado.edu>
2201
2204
2202 * setup.py (isfile): Add manpages to list of dependent files to be
2205 * setup.py (isfile): Add manpages to list of dependent files to be
2203 updated.
2206 updated.
2204
2207
2205 2004-08-27 Fernando Perez <fperez@colorado.edu>
2208 2004-08-27 Fernando Perez <fperez@colorado.edu>
2206
2209
2207 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2210 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2208 for now. They don't really work with standalone WX/GTK code
2211 for now. They don't really work with standalone WX/GTK code
2209 (though matplotlib IS working fine with both of those backends).
2212 (though matplotlib IS working fine with both of those backends).
2210 This will neeed much more testing. I disabled most things with
2213 This will neeed much more testing. I disabled most things with
2211 comments, so turning it back on later should be pretty easy.
2214 comments, so turning it back on later should be pretty easy.
2212
2215
2213 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2216 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2214 autocalling of expressions like r'foo', by modifying the line
2217 autocalling of expressions like r'foo', by modifying the line
2215 split regexp. Closes
2218 split regexp. Closes
2216 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2219 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2217 Riley <ipythonbugs-AT-sabi.net>.
2220 Riley <ipythonbugs-AT-sabi.net>.
2218 (InteractiveShell.mainloop): honor --nobanner with banner
2221 (InteractiveShell.mainloop): honor --nobanner with banner
2219 extensions.
2222 extensions.
2220
2223
2221 * IPython/Shell.py: Significant refactoring of all classes, so
2224 * IPython/Shell.py: Significant refactoring of all classes, so
2222 that we can really support ALL matplotlib backends and threading
2225 that we can really support ALL matplotlib backends and threading
2223 models (John spotted a bug with Tk which required this). Now we
2226 models (John spotted a bug with Tk which required this). Now we
2224 should support single-threaded, WX-threads and GTK-threads, both
2227 should support single-threaded, WX-threads and GTK-threads, both
2225 for generic code and for matplotlib.
2228 for generic code and for matplotlib.
2226
2229
2227 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2230 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2228 -pylab, to simplify things for users. Will also remove the pylab
2231 -pylab, to simplify things for users. Will also remove the pylab
2229 profile, since now all of matplotlib configuration is directly
2232 profile, since now all of matplotlib configuration is directly
2230 handled here. This also reduces startup time.
2233 handled here. This also reduces startup time.
2231
2234
2232 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2235 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2233 shell wasn't being correctly called. Also in IPShellWX.
2236 shell wasn't being correctly called. Also in IPShellWX.
2234
2237
2235 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2238 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2236 fine-tune banner.
2239 fine-tune banner.
2237
2240
2238 * IPython/numutils.py (spike): Deprecate these spike functions,
2241 * IPython/numutils.py (spike): Deprecate these spike functions,
2239 delete (long deprecated) gnuplot_exec handler.
2242 delete (long deprecated) gnuplot_exec handler.
2240
2243
2241 2004-08-26 Fernando Perez <fperez@colorado.edu>
2244 2004-08-26 Fernando Perez <fperez@colorado.edu>
2242
2245
2243 * ipython.1: Update for threading options, plus some others which
2246 * ipython.1: Update for threading options, plus some others which
2244 were missing.
2247 were missing.
2245
2248
2246 * IPython/ipmaker.py (__call__): Added -wthread option for
2249 * IPython/ipmaker.py (__call__): Added -wthread option for
2247 wxpython thread handling. Make sure threading options are only
2250 wxpython thread handling. Make sure threading options are only
2248 valid at the command line.
2251 valid at the command line.
2249
2252
2250 * scripts/ipython: moved shell selection into a factory function
2253 * scripts/ipython: moved shell selection into a factory function
2251 in Shell.py, to keep the starter script to a minimum.
2254 in Shell.py, to keep the starter script to a minimum.
2252
2255
2253 2004-08-25 Fernando Perez <fperez@colorado.edu>
2256 2004-08-25 Fernando Perez <fperez@colorado.edu>
2254
2257
2255 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2258 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2256 John. Along with some recent changes he made to matplotlib, the
2259 John. Along with some recent changes he made to matplotlib, the
2257 next versions of both systems should work very well together.
2260 next versions of both systems should work very well together.
2258
2261
2259 2004-08-24 Fernando Perez <fperez@colorado.edu>
2262 2004-08-24 Fernando Perez <fperez@colorado.edu>
2260
2263
2261 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2264 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2262 tried to switch the profiling to using hotshot, but I'm getting
2265 tried to switch the profiling to using hotshot, but I'm getting
2263 strange errors from prof.runctx() there. I may be misreading the
2266 strange errors from prof.runctx() there. I may be misreading the
2264 docs, but it looks weird. For now the profiling code will
2267 docs, but it looks weird. For now the profiling code will
2265 continue to use the standard profiler.
2268 continue to use the standard profiler.
2266
2269
2267 2004-08-23 Fernando Perez <fperez@colorado.edu>
2270 2004-08-23 Fernando Perez <fperez@colorado.edu>
2268
2271
2269 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2272 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2270 threaded shell, by John Hunter. It's not quite ready yet, but
2273 threaded shell, by John Hunter. It's not quite ready yet, but
2271 close.
2274 close.
2272
2275
2273 2004-08-22 Fernando Perez <fperez@colorado.edu>
2276 2004-08-22 Fernando Perez <fperez@colorado.edu>
2274
2277
2275 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2278 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2276 in Magic and ultraTB.
2279 in Magic and ultraTB.
2277
2280
2278 * ipython.1: document threading options in manpage.
2281 * ipython.1: document threading options in manpage.
2279
2282
2280 * scripts/ipython: Changed name of -thread option to -gthread,
2283 * scripts/ipython: Changed name of -thread option to -gthread,
2281 since this is GTK specific. I want to leave the door open for a
2284 since this is GTK specific. I want to leave the door open for a
2282 -wthread option for WX, which will most likely be necessary. This
2285 -wthread option for WX, which will most likely be necessary. This
2283 change affects usage and ipmaker as well.
2286 change affects usage and ipmaker as well.
2284
2287
2285 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2288 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2286 handle the matplotlib shell issues. Code by John Hunter
2289 handle the matplotlib shell issues. Code by John Hunter
2287 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2290 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2288 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2291 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2289 broken (and disabled for end users) for now, but it puts the
2292 broken (and disabled for end users) for now, but it puts the
2290 infrastructure in place.
2293 infrastructure in place.
2291
2294
2292 2004-08-21 Fernando Perez <fperez@colorado.edu>
2295 2004-08-21 Fernando Perez <fperez@colorado.edu>
2293
2296
2294 * ipythonrc-pylab: Add matplotlib support.
2297 * ipythonrc-pylab: Add matplotlib support.
2295
2298
2296 * matplotlib_config.py: new files for matplotlib support, part of
2299 * matplotlib_config.py: new files for matplotlib support, part of
2297 the pylab profile.
2300 the pylab profile.
2298
2301
2299 * IPython/usage.py (__doc__): documented the threading options.
2302 * IPython/usage.py (__doc__): documented the threading options.
2300
2303
2301 2004-08-20 Fernando Perez <fperez@colorado.edu>
2304 2004-08-20 Fernando Perez <fperez@colorado.edu>
2302
2305
2303 * ipython: Modified the main calling routine to handle the -thread
2306 * ipython: Modified the main calling routine to handle the -thread
2304 and -mpthread options. This needs to be done as a top-level hack,
2307 and -mpthread options. This needs to be done as a top-level hack,
2305 because it determines which class to instantiate for IPython
2308 because it determines which class to instantiate for IPython
2306 itself.
2309 itself.
2307
2310
2308 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2311 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2309 classes to support multithreaded GTK operation without blocking,
2312 classes to support multithreaded GTK operation without blocking,
2310 and matplotlib with all backends. This is a lot of still very
2313 and matplotlib with all backends. This is a lot of still very
2311 experimental code, and threads are tricky. So it may still have a
2314 experimental code, and threads are tricky. So it may still have a
2312 few rough edges... This code owes a lot to
2315 few rough edges... This code owes a lot to
2313 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2316 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2314 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2317 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2315 to John Hunter for all the matplotlib work.
2318 to John Hunter for all the matplotlib work.
2316
2319
2317 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2320 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2318 options for gtk thread and matplotlib support.
2321 options for gtk thread and matplotlib support.
2319
2322
2320 2004-08-16 Fernando Perez <fperez@colorado.edu>
2323 2004-08-16 Fernando Perez <fperez@colorado.edu>
2321
2324
2322 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2325 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2323 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2326 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2324 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2327 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2325
2328
2326 2004-08-11 Fernando Perez <fperez@colorado.edu>
2329 2004-08-11 Fernando Perez <fperez@colorado.edu>
2327
2330
2328 * setup.py (isfile): Fix build so documentation gets updated for
2331 * setup.py (isfile): Fix build so documentation gets updated for
2329 rpms (it was only done for .tgz builds).
2332 rpms (it was only done for .tgz builds).
2330
2333
2331 2004-08-10 Fernando Perez <fperez@colorado.edu>
2334 2004-08-10 Fernando Perez <fperez@colorado.edu>
2332
2335
2333 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2336 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2334
2337
2335 * iplib.py : Silence syntax error exceptions in tab-completion.
2338 * iplib.py : Silence syntax error exceptions in tab-completion.
2336
2339
2337 2004-08-05 Fernando Perez <fperez@colorado.edu>
2340 2004-08-05 Fernando Perez <fperez@colorado.edu>
2338
2341
2339 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2342 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2340 'color off' mark for continuation prompts. This was causing long
2343 'color off' mark for continuation prompts. This was causing long
2341 continuation lines to mis-wrap.
2344 continuation lines to mis-wrap.
2342
2345
2343 2004-08-01 Fernando Perez <fperez@colorado.edu>
2346 2004-08-01 Fernando Perez <fperez@colorado.edu>
2344
2347
2345 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2348 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2346 for building ipython to be a parameter. All this is necessary
2349 for building ipython to be a parameter. All this is necessary
2347 right now to have a multithreaded version, but this insane
2350 right now to have a multithreaded version, but this insane
2348 non-design will be cleaned up soon. For now, it's a hack that
2351 non-design will be cleaned up soon. For now, it's a hack that
2349 works.
2352 works.
2350
2353
2351 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2354 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2352 args in various places. No bugs so far, but it's a dangerous
2355 args in various places. No bugs so far, but it's a dangerous
2353 practice.
2356 practice.
2354
2357
2355 2004-07-31 Fernando Perez <fperez@colorado.edu>
2358 2004-07-31 Fernando Perez <fperez@colorado.edu>
2356
2359
2357 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2360 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2358 fix completion of files with dots in their names under most
2361 fix completion of files with dots in their names under most
2359 profiles (pysh was OK because the completion order is different).
2362 profiles (pysh was OK because the completion order is different).
2360
2363
2361 2004-07-27 Fernando Perez <fperez@colorado.edu>
2364 2004-07-27 Fernando Perez <fperez@colorado.edu>
2362
2365
2363 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2366 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2364 keywords manually, b/c the one in keyword.py was removed in python
2367 keywords manually, b/c the one in keyword.py was removed in python
2365 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2368 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2366 This is NOT a bug under python 2.3 and earlier.
2369 This is NOT a bug under python 2.3 and earlier.
2367
2370
2368 2004-07-26 Fernando Perez <fperez@colorado.edu>
2371 2004-07-26 Fernando Perez <fperez@colorado.edu>
2369
2372
2370 * IPython/ultraTB.py (VerboseTB.text): Add another
2373 * IPython/ultraTB.py (VerboseTB.text): Add another
2371 linecache.checkcache() call to try to prevent inspect.py from
2374 linecache.checkcache() call to try to prevent inspect.py from
2372 crashing under python 2.3. I think this fixes
2375 crashing under python 2.3. I think this fixes
2373 http://www.scipy.net/roundup/ipython/issue17.
2376 http://www.scipy.net/roundup/ipython/issue17.
2374
2377
2375 2004-07-26 *** Released version 0.6.2
2378 2004-07-26 *** Released version 0.6.2
2376
2379
2377 2004-07-26 Fernando Perez <fperez@colorado.edu>
2380 2004-07-26 Fernando Perez <fperez@colorado.edu>
2378
2381
2379 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2382 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2380 fail for any number.
2383 fail for any number.
2381 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2384 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2382 empty bookmarks.
2385 empty bookmarks.
2383
2386
2384 2004-07-26 *** Released version 0.6.1
2387 2004-07-26 *** Released version 0.6.1
2385
2388
2386 2004-07-26 Fernando Perez <fperez@colorado.edu>
2389 2004-07-26 Fernando Perez <fperez@colorado.edu>
2387
2390
2388 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2391 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2389
2392
2390 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2393 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2391 escaping '()[]{}' in filenames.
2394 escaping '()[]{}' in filenames.
2392
2395
2393 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2396 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2394 Python 2.2 users who lack a proper shlex.split.
2397 Python 2.2 users who lack a proper shlex.split.
2395
2398
2396 2004-07-19 Fernando Perez <fperez@colorado.edu>
2399 2004-07-19 Fernando Perez <fperez@colorado.edu>
2397
2400
2398 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2401 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2399 for reading readline's init file. I follow the normal chain:
2402 for reading readline's init file. I follow the normal chain:
2400 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2403 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2401 report by Mike Heeter. This closes
2404 report by Mike Heeter. This closes
2402 http://www.scipy.net/roundup/ipython/issue16.
2405 http://www.scipy.net/roundup/ipython/issue16.
2403
2406
2404 2004-07-18 Fernando Perez <fperez@colorado.edu>
2407 2004-07-18 Fernando Perez <fperez@colorado.edu>
2405
2408
2406 * IPython/iplib.py (__init__): Add better handling of '\' under
2409 * IPython/iplib.py (__init__): Add better handling of '\' under
2407 Win32 for filenames. After a patch by Ville.
2410 Win32 for filenames. After a patch by Ville.
2408
2411
2409 2004-07-17 Fernando Perez <fperez@colorado.edu>
2412 2004-07-17 Fernando Perez <fperez@colorado.edu>
2410
2413
2411 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2414 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2412 autocalling would be triggered for 'foo is bar' if foo is
2415 autocalling would be triggered for 'foo is bar' if foo is
2413 callable. I also cleaned up the autocall detection code to use a
2416 callable. I also cleaned up the autocall detection code to use a
2414 regexp, which is faster. Bug reported by Alexander Schmolck.
2417 regexp, which is faster. Bug reported by Alexander Schmolck.
2415
2418
2416 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2419 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2417 '?' in them would confuse the help system. Reported by Alex
2420 '?' in them would confuse the help system. Reported by Alex
2418 Schmolck.
2421 Schmolck.
2419
2422
2420 2004-07-16 Fernando Perez <fperez@colorado.edu>
2423 2004-07-16 Fernando Perez <fperez@colorado.edu>
2421
2424
2422 * IPython/GnuplotInteractive.py (__all__): added plot2.
2425 * IPython/GnuplotInteractive.py (__all__): added plot2.
2423
2426
2424 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2427 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2425 plotting dictionaries, lists or tuples of 1d arrays.
2428 plotting dictionaries, lists or tuples of 1d arrays.
2426
2429
2427 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2430 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2428 optimizations.
2431 optimizations.
2429
2432
2430 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2433 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2431 the information which was there from Janko's original IPP code:
2434 the information which was there from Janko's original IPP code:
2432
2435
2433 03.05.99 20:53 porto.ifm.uni-kiel.de
2436 03.05.99 20:53 porto.ifm.uni-kiel.de
2434 --Started changelog.
2437 --Started changelog.
2435 --make clear do what it say it does
2438 --make clear do what it say it does
2436 --added pretty output of lines from inputcache
2439 --added pretty output of lines from inputcache
2437 --Made Logger a mixin class, simplifies handling of switches
2440 --Made Logger a mixin class, simplifies handling of switches
2438 --Added own completer class. .string<TAB> expands to last history
2441 --Added own completer class. .string<TAB> expands to last history
2439 line which starts with string. The new expansion is also present
2442 line which starts with string. The new expansion is also present
2440 with Ctrl-r from the readline library. But this shows, who this
2443 with Ctrl-r from the readline library. But this shows, who this
2441 can be done for other cases.
2444 can be done for other cases.
2442 --Added convention that all shell functions should accept a
2445 --Added convention that all shell functions should accept a
2443 parameter_string This opens the door for different behaviour for
2446 parameter_string This opens the door for different behaviour for
2444 each function. @cd is a good example of this.
2447 each function. @cd is a good example of this.
2445
2448
2446 04.05.99 12:12 porto.ifm.uni-kiel.de
2449 04.05.99 12:12 porto.ifm.uni-kiel.de
2447 --added logfile rotation
2450 --added logfile rotation
2448 --added new mainloop method which freezes first the namespace
2451 --added new mainloop method which freezes first the namespace
2449
2452
2450 07.05.99 21:24 porto.ifm.uni-kiel.de
2453 07.05.99 21:24 porto.ifm.uni-kiel.de
2451 --added the docreader classes. Now there is a help system.
2454 --added the docreader classes. Now there is a help system.
2452 -This is only a first try. Currently it's not easy to put new
2455 -This is only a first try. Currently it's not easy to put new
2453 stuff in the indices. But this is the way to go. Info would be
2456 stuff in the indices. But this is the way to go. Info would be
2454 better, but HTML is every where and not everybody has an info
2457 better, but HTML is every where and not everybody has an info
2455 system installed and it's not so easy to change html-docs to info.
2458 system installed and it's not so easy to change html-docs to info.
2456 --added global logfile option
2459 --added global logfile option
2457 --there is now a hook for object inspection method pinfo needs to
2460 --there is now a hook for object inspection method pinfo needs to
2458 be provided for this. Can be reached by two '??'.
2461 be provided for this. Can be reached by two '??'.
2459
2462
2460 08.05.99 20:51 porto.ifm.uni-kiel.de
2463 08.05.99 20:51 porto.ifm.uni-kiel.de
2461 --added a README
2464 --added a README
2462 --bug in rc file. Something has changed so functions in the rc
2465 --bug in rc file. Something has changed so functions in the rc
2463 file need to reference the shell and not self. Not clear if it's a
2466 file need to reference the shell and not self. Not clear if it's a
2464 bug or feature.
2467 bug or feature.
2465 --changed rc file for new behavior
2468 --changed rc file for new behavior
2466
2469
2467 2004-07-15 Fernando Perez <fperez@colorado.edu>
2470 2004-07-15 Fernando Perez <fperez@colorado.edu>
2468
2471
2469 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2472 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2470 cache was falling out of sync in bizarre manners when multi-line
2473 cache was falling out of sync in bizarre manners when multi-line
2471 input was present. Minor optimizations and cleanup.
2474 input was present. Minor optimizations and cleanup.
2472
2475
2473 (Logger): Remove old Changelog info for cleanup. This is the
2476 (Logger): Remove old Changelog info for cleanup. This is the
2474 information which was there from Janko's original code:
2477 information which was there from Janko's original code:
2475
2478
2476 Changes to Logger: - made the default log filename a parameter
2479 Changes to Logger: - made the default log filename a parameter
2477
2480
2478 - put a check for lines beginning with !@? in log(). Needed
2481 - put a check for lines beginning with !@? in log(). Needed
2479 (even if the handlers properly log their lines) for mid-session
2482 (even if the handlers properly log their lines) for mid-session
2480 logging activation to work properly. Without this, lines logged
2483 logging activation to work properly. Without this, lines logged
2481 in mid session, which get read from the cache, would end up
2484 in mid session, which get read from the cache, would end up
2482 'bare' (with !@? in the open) in the log. Now they are caught
2485 'bare' (with !@? in the open) in the log. Now they are caught
2483 and prepended with a #.
2486 and prepended with a #.
2484
2487
2485 * IPython/iplib.py (InteractiveShell.init_readline): added check
2488 * IPython/iplib.py (InteractiveShell.init_readline): added check
2486 in case MagicCompleter fails to be defined, so we don't crash.
2489 in case MagicCompleter fails to be defined, so we don't crash.
2487
2490
2488 2004-07-13 Fernando Perez <fperez@colorado.edu>
2491 2004-07-13 Fernando Perez <fperez@colorado.edu>
2489
2492
2490 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2493 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2491 of EPS if the requested filename ends in '.eps'.
2494 of EPS if the requested filename ends in '.eps'.
2492
2495
2493 2004-07-04 Fernando Perez <fperez@colorado.edu>
2496 2004-07-04 Fernando Perez <fperez@colorado.edu>
2494
2497
2495 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2498 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2496 escaping of quotes when calling the shell.
2499 escaping of quotes when calling the shell.
2497
2500
2498 2004-07-02 Fernando Perez <fperez@colorado.edu>
2501 2004-07-02 Fernando Perez <fperez@colorado.edu>
2499
2502
2500 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2503 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2501 gettext not working because we were clobbering '_'. Fixes
2504 gettext not working because we were clobbering '_'. Fixes
2502 http://www.scipy.net/roundup/ipython/issue6.
2505 http://www.scipy.net/roundup/ipython/issue6.
2503
2506
2504 2004-07-01 Fernando Perez <fperez@colorado.edu>
2507 2004-07-01 Fernando Perez <fperez@colorado.edu>
2505
2508
2506 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2509 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2507 into @cd. Patch by Ville.
2510 into @cd. Patch by Ville.
2508
2511
2509 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2512 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2510 new function to store things after ipmaker runs. Patch by Ville.
2513 new function to store things after ipmaker runs. Patch by Ville.
2511 Eventually this will go away once ipmaker is removed and the class
2514 Eventually this will go away once ipmaker is removed and the class
2512 gets cleaned up, but for now it's ok. Key functionality here is
2515 gets cleaned up, but for now it's ok. Key functionality here is
2513 the addition of the persistent storage mechanism, a dict for
2516 the addition of the persistent storage mechanism, a dict for
2514 keeping data across sessions (for now just bookmarks, but more can
2517 keeping data across sessions (for now just bookmarks, but more can
2515 be implemented later).
2518 be implemented later).
2516
2519
2517 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2520 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2518 persistent across sections. Patch by Ville, I modified it
2521 persistent across sections. Patch by Ville, I modified it
2519 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2522 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2520 added a '-l' option to list all bookmarks.
2523 added a '-l' option to list all bookmarks.
2521
2524
2522 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2525 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2523 center for cleanup. Registered with atexit.register(). I moved
2526 center for cleanup. Registered with atexit.register(). I moved
2524 here the old exit_cleanup(). After a patch by Ville.
2527 here the old exit_cleanup(). After a patch by Ville.
2525
2528
2526 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2529 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2527 characters in the hacked shlex_split for python 2.2.
2530 characters in the hacked shlex_split for python 2.2.
2528
2531
2529 * IPython/iplib.py (file_matches): more fixes to filenames with
2532 * IPython/iplib.py (file_matches): more fixes to filenames with
2530 whitespace in them. It's not perfect, but limitations in python's
2533 whitespace in them. It's not perfect, but limitations in python's
2531 readline make it impossible to go further.
2534 readline make it impossible to go further.
2532
2535
2533 2004-06-29 Fernando Perez <fperez@colorado.edu>
2536 2004-06-29 Fernando Perez <fperez@colorado.edu>
2534
2537
2535 * IPython/iplib.py (file_matches): escape whitespace correctly in
2538 * IPython/iplib.py (file_matches): escape whitespace correctly in
2536 filename completions. Bug reported by Ville.
2539 filename completions. Bug reported by Ville.
2537
2540
2538 2004-06-28 Fernando Perez <fperez@colorado.edu>
2541 2004-06-28 Fernando Perez <fperez@colorado.edu>
2539
2542
2540 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2543 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2541 the history file will be called 'history-PROFNAME' (or just
2544 the history file will be called 'history-PROFNAME' (or just
2542 'history' if no profile is loaded). I was getting annoyed at
2545 'history' if no profile is loaded). I was getting annoyed at
2543 getting my Numerical work history clobbered by pysh sessions.
2546 getting my Numerical work history clobbered by pysh sessions.
2544
2547
2545 * IPython/iplib.py (InteractiveShell.__init__): Internal
2548 * IPython/iplib.py (InteractiveShell.__init__): Internal
2546 getoutputerror() function so that we can honor the system_verbose
2549 getoutputerror() function so that we can honor the system_verbose
2547 flag for _all_ system calls. I also added escaping of #
2550 flag for _all_ system calls. I also added escaping of #
2548 characters here to avoid confusing Itpl.
2551 characters here to avoid confusing Itpl.
2549
2552
2550 * IPython/Magic.py (shlex_split): removed call to shell in
2553 * IPython/Magic.py (shlex_split): removed call to shell in
2551 parse_options and replaced it with shlex.split(). The annoying
2554 parse_options and replaced it with shlex.split(). The annoying
2552 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2555 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2553 to backport it from 2.3, with several frail hacks (the shlex
2556 to backport it from 2.3, with several frail hacks (the shlex
2554 module is rather limited in 2.2). Thanks to a suggestion by Ville
2557 module is rather limited in 2.2). Thanks to a suggestion by Ville
2555 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2558 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2556 problem.
2559 problem.
2557
2560
2558 (Magic.magic_system_verbose): new toggle to print the actual
2561 (Magic.magic_system_verbose): new toggle to print the actual
2559 system calls made by ipython. Mainly for debugging purposes.
2562 system calls made by ipython. Mainly for debugging purposes.
2560
2563
2561 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2564 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2562 doesn't support persistence. Reported (and fix suggested) by
2565 doesn't support persistence. Reported (and fix suggested) by
2563 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2566 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2564
2567
2565 2004-06-26 Fernando Perez <fperez@colorado.edu>
2568 2004-06-26 Fernando Perez <fperez@colorado.edu>
2566
2569
2567 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2570 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2568 continue prompts.
2571 continue prompts.
2569
2572
2570 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2573 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2571 function (basically a big docstring) and a few more things here to
2574 function (basically a big docstring) and a few more things here to
2572 speedup startup. pysh.py is now very lightweight. We want because
2575 speedup startup. pysh.py is now very lightweight. We want because
2573 it gets execfile'd, while InterpreterExec gets imported, so
2576 it gets execfile'd, while InterpreterExec gets imported, so
2574 byte-compilation saves time.
2577 byte-compilation saves time.
2575
2578
2576 2004-06-25 Fernando Perez <fperez@colorado.edu>
2579 2004-06-25 Fernando Perez <fperez@colorado.edu>
2577
2580
2578 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2581 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2579 -NUM', which was recently broken.
2582 -NUM', which was recently broken.
2580
2583
2581 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2584 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2582 in multi-line input (but not !!, which doesn't make sense there).
2585 in multi-line input (but not !!, which doesn't make sense there).
2583
2586
2584 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2587 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2585 It's just too useful, and people can turn it off in the less
2588 It's just too useful, and people can turn it off in the less
2586 common cases where it's a problem.
2589 common cases where it's a problem.
2587
2590
2588 2004-06-24 Fernando Perez <fperez@colorado.edu>
2591 2004-06-24 Fernando Perez <fperez@colorado.edu>
2589
2592
2590 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2593 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2591 special syntaxes (like alias calling) is now allied in multi-line
2594 special syntaxes (like alias calling) is now allied in multi-line
2592 input. This is still _very_ experimental, but it's necessary for
2595 input. This is still _very_ experimental, but it's necessary for
2593 efficient shell usage combining python looping syntax with system
2596 efficient shell usage combining python looping syntax with system
2594 calls. For now it's restricted to aliases, I don't think it
2597 calls. For now it's restricted to aliases, I don't think it
2595 really even makes sense to have this for magics.
2598 really even makes sense to have this for magics.
2596
2599
2597 2004-06-23 Fernando Perez <fperez@colorado.edu>
2600 2004-06-23 Fernando Perez <fperez@colorado.edu>
2598
2601
2599 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2602 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2600 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2603 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2601
2604
2602 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2605 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2603 extensions under Windows (after code sent by Gary Bishop). The
2606 extensions under Windows (after code sent by Gary Bishop). The
2604 extensions considered 'executable' are stored in IPython's rc
2607 extensions considered 'executable' are stored in IPython's rc
2605 structure as win_exec_ext.
2608 structure as win_exec_ext.
2606
2609
2607 * IPython/genutils.py (shell): new function, like system() but
2610 * IPython/genutils.py (shell): new function, like system() but
2608 without return value. Very useful for interactive shell work.
2611 without return value. Very useful for interactive shell work.
2609
2612
2610 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2613 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2611 delete aliases.
2614 delete aliases.
2612
2615
2613 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2616 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2614 sure that the alias table doesn't contain python keywords.
2617 sure that the alias table doesn't contain python keywords.
2615
2618
2616 2004-06-21 Fernando Perez <fperez@colorado.edu>
2619 2004-06-21 Fernando Perez <fperez@colorado.edu>
2617
2620
2618 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2621 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2619 non-existent items are found in $PATH. Reported by Thorsten.
2622 non-existent items are found in $PATH. Reported by Thorsten.
2620
2623
2621 2004-06-20 Fernando Perez <fperez@colorado.edu>
2624 2004-06-20 Fernando Perez <fperez@colorado.edu>
2622
2625
2623 * IPython/iplib.py (complete): modified the completer so that the
2626 * IPython/iplib.py (complete): modified the completer so that the
2624 order of priorities can be easily changed at runtime.
2627 order of priorities can be easily changed at runtime.
2625
2628
2626 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2629 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2627 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2630 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2628
2631
2629 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2632 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2630 expand Python variables prepended with $ in all system calls. The
2633 expand Python variables prepended with $ in all system calls. The
2631 same was done to InteractiveShell.handle_shell_escape. Now all
2634 same was done to InteractiveShell.handle_shell_escape. Now all
2632 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2635 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2633 expansion of python variables and expressions according to the
2636 expansion of python variables and expressions according to the
2634 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2637 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2635
2638
2636 Though PEP-215 has been rejected, a similar (but simpler) one
2639 Though PEP-215 has been rejected, a similar (but simpler) one
2637 seems like it will go into Python 2.4, PEP-292 -
2640 seems like it will go into Python 2.4, PEP-292 -
2638 http://www.python.org/peps/pep-0292.html.
2641 http://www.python.org/peps/pep-0292.html.
2639
2642
2640 I'll keep the full syntax of PEP-215, since IPython has since the
2643 I'll keep the full syntax of PEP-215, since IPython has since the
2641 start used Ka-Ping Yee's reference implementation discussed there
2644 start used Ka-Ping Yee's reference implementation discussed there
2642 (Itpl), and I actually like the powerful semantics it offers.
2645 (Itpl), and I actually like the powerful semantics it offers.
2643
2646
2644 In order to access normal shell variables, the $ has to be escaped
2647 In order to access normal shell variables, the $ has to be escaped
2645 via an extra $. For example:
2648 via an extra $. For example:
2646
2649
2647 In [7]: PATH='a python variable'
2650 In [7]: PATH='a python variable'
2648
2651
2649 In [8]: !echo $PATH
2652 In [8]: !echo $PATH
2650 a python variable
2653 a python variable
2651
2654
2652 In [9]: !echo $$PATH
2655 In [9]: !echo $$PATH
2653 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2656 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2654
2657
2655 (Magic.parse_options): escape $ so the shell doesn't evaluate
2658 (Magic.parse_options): escape $ so the shell doesn't evaluate
2656 things prematurely.
2659 things prematurely.
2657
2660
2658 * IPython/iplib.py (InteractiveShell.call_alias): added the
2661 * IPython/iplib.py (InteractiveShell.call_alias): added the
2659 ability for aliases to expand python variables via $.
2662 ability for aliases to expand python variables via $.
2660
2663
2661 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2664 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2662 system, now there's a @rehash/@rehashx pair of magics. These work
2665 system, now there's a @rehash/@rehashx pair of magics. These work
2663 like the csh rehash command, and can be invoked at any time. They
2666 like the csh rehash command, and can be invoked at any time. They
2664 build a table of aliases to everything in the user's $PATH
2667 build a table of aliases to everything in the user's $PATH
2665 (@rehash uses everything, @rehashx is slower but only adds
2668 (@rehash uses everything, @rehashx is slower but only adds
2666 executable files). With this, the pysh.py-based shell profile can
2669 executable files). With this, the pysh.py-based shell profile can
2667 now simply call rehash upon startup, and full access to all
2670 now simply call rehash upon startup, and full access to all
2668 programs in the user's path is obtained.
2671 programs in the user's path is obtained.
2669
2672
2670 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2673 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2671 functionality is now fully in place. I removed the old dynamic
2674 functionality is now fully in place. I removed the old dynamic
2672 code generation based approach, in favor of a much lighter one
2675 code generation based approach, in favor of a much lighter one
2673 based on a simple dict. The advantage is that this allows me to
2676 based on a simple dict. The advantage is that this allows me to
2674 now have thousands of aliases with negligible cost (unthinkable
2677 now have thousands of aliases with negligible cost (unthinkable
2675 with the old system).
2678 with the old system).
2676
2679
2677 2004-06-19 Fernando Perez <fperez@colorado.edu>
2680 2004-06-19 Fernando Perez <fperez@colorado.edu>
2678
2681
2679 * IPython/iplib.py (__init__): extended MagicCompleter class to
2682 * IPython/iplib.py (__init__): extended MagicCompleter class to
2680 also complete (last in priority) on user aliases.
2683 also complete (last in priority) on user aliases.
2681
2684
2682 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2685 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2683 call to eval.
2686 call to eval.
2684 (ItplNS.__init__): Added a new class which functions like Itpl,
2687 (ItplNS.__init__): Added a new class which functions like Itpl,
2685 but allows configuring the namespace for the evaluation to occur
2688 but allows configuring the namespace for the evaluation to occur
2686 in.
2689 in.
2687
2690
2688 2004-06-18 Fernando Perez <fperez@colorado.edu>
2691 2004-06-18 Fernando Perez <fperez@colorado.edu>
2689
2692
2690 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2693 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2691 better message when 'exit' or 'quit' are typed (a common newbie
2694 better message when 'exit' or 'quit' are typed (a common newbie
2692 confusion).
2695 confusion).
2693
2696
2694 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2697 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2695 check for Windows users.
2698 check for Windows users.
2696
2699
2697 * IPython/iplib.py (InteractiveShell.user_setup): removed
2700 * IPython/iplib.py (InteractiveShell.user_setup): removed
2698 disabling of colors for Windows. I'll test at runtime and issue a
2701 disabling of colors for Windows. I'll test at runtime and issue a
2699 warning if Gary's readline isn't found, as to nudge users to
2702 warning if Gary's readline isn't found, as to nudge users to
2700 download it.
2703 download it.
2701
2704
2702 2004-06-16 Fernando Perez <fperez@colorado.edu>
2705 2004-06-16 Fernando Perez <fperez@colorado.edu>
2703
2706
2704 * IPython/genutils.py (Stream.__init__): changed to print errors
2707 * IPython/genutils.py (Stream.__init__): changed to print errors
2705 to sys.stderr. I had a circular dependency here. Now it's
2708 to sys.stderr. I had a circular dependency here. Now it's
2706 possible to run ipython as IDLE's shell (consider this pre-alpha,
2709 possible to run ipython as IDLE's shell (consider this pre-alpha,
2707 since true stdout things end up in the starting terminal instead
2710 since true stdout things end up in the starting terminal instead
2708 of IDLE's out).
2711 of IDLE's out).
2709
2712
2710 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2713 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2711 users who haven't # updated their prompt_in2 definitions. Remove
2714 users who haven't # updated their prompt_in2 definitions. Remove
2712 eventually.
2715 eventually.
2713 (multiple_replace): added credit to original ASPN recipe.
2716 (multiple_replace): added credit to original ASPN recipe.
2714
2717
2715 2004-06-15 Fernando Perez <fperez@colorado.edu>
2718 2004-06-15 Fernando Perez <fperez@colorado.edu>
2716
2719
2717 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2720 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2718 list of auto-defined aliases.
2721 list of auto-defined aliases.
2719
2722
2720 2004-06-13 Fernando Perez <fperez@colorado.edu>
2723 2004-06-13 Fernando Perez <fperez@colorado.edu>
2721
2724
2722 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2725 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2723 install was really requested (so setup.py can be used for other
2726 install was really requested (so setup.py can be used for other
2724 things under Windows).
2727 things under Windows).
2725
2728
2726 2004-06-10 Fernando Perez <fperez@colorado.edu>
2729 2004-06-10 Fernando Perez <fperez@colorado.edu>
2727
2730
2728 * IPython/Logger.py (Logger.create_log): Manually remove any old
2731 * IPython/Logger.py (Logger.create_log): Manually remove any old
2729 backup, since os.remove may fail under Windows. Fixes bug
2732 backup, since os.remove may fail under Windows. Fixes bug
2730 reported by Thorsten.
2733 reported by Thorsten.
2731
2734
2732 2004-06-09 Fernando Perez <fperez@colorado.edu>
2735 2004-06-09 Fernando Perez <fperez@colorado.edu>
2733
2736
2734 * examples/example-embed.py: fixed all references to %n (replaced
2737 * examples/example-embed.py: fixed all references to %n (replaced
2735 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2738 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2736 for all examples and the manual as well.
2739 for all examples and the manual as well.
2737
2740
2738 2004-06-08 Fernando Perez <fperez@colorado.edu>
2741 2004-06-08 Fernando Perez <fperez@colorado.edu>
2739
2742
2740 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2743 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2741 alignment and color management. All 3 prompt subsystems now
2744 alignment and color management. All 3 prompt subsystems now
2742 inherit from BasePrompt.
2745 inherit from BasePrompt.
2743
2746
2744 * tools/release: updates for windows installer build and tag rpms
2747 * tools/release: updates for windows installer build and tag rpms
2745 with python version (since paths are fixed).
2748 with python version (since paths are fixed).
2746
2749
2747 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2750 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2748 which will become eventually obsolete. Also fixed the default
2751 which will become eventually obsolete. Also fixed the default
2749 prompt_in2 to use \D, so at least new users start with the correct
2752 prompt_in2 to use \D, so at least new users start with the correct
2750 defaults.
2753 defaults.
2751 WARNING: Users with existing ipythonrc files will need to apply
2754 WARNING: Users with existing ipythonrc files will need to apply
2752 this fix manually!
2755 this fix manually!
2753
2756
2754 * setup.py: make windows installer (.exe). This is finally the
2757 * setup.py: make windows installer (.exe). This is finally the
2755 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2758 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2756 which I hadn't included because it required Python 2.3 (or recent
2759 which I hadn't included because it required Python 2.3 (or recent
2757 distutils).
2760 distutils).
2758
2761
2759 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2762 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2760 usage of new '\D' escape.
2763 usage of new '\D' escape.
2761
2764
2762 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2765 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2763 lacks os.getuid())
2766 lacks os.getuid())
2764 (CachedOutput.set_colors): Added the ability to turn coloring
2767 (CachedOutput.set_colors): Added the ability to turn coloring
2765 on/off with @colors even for manually defined prompt colors. It
2768 on/off with @colors even for manually defined prompt colors. It
2766 uses a nasty global, but it works safely and via the generic color
2769 uses a nasty global, but it works safely and via the generic color
2767 handling mechanism.
2770 handling mechanism.
2768 (Prompt2.__init__): Introduced new escape '\D' for continuation
2771 (Prompt2.__init__): Introduced new escape '\D' for continuation
2769 prompts. It represents the counter ('\#') as dots.
2772 prompts. It represents the counter ('\#') as dots.
2770 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2773 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2771 need to update their ipythonrc files and replace '%n' with '\D' in
2774 need to update their ipythonrc files and replace '%n' with '\D' in
2772 their prompt_in2 settings everywhere. Sorry, but there's
2775 their prompt_in2 settings everywhere. Sorry, but there's
2773 otherwise no clean way to get all prompts to properly align. The
2776 otherwise no clean way to get all prompts to properly align. The
2774 ipythonrc shipped with IPython has been updated.
2777 ipythonrc shipped with IPython has been updated.
2775
2778
2776 2004-06-07 Fernando Perez <fperez@colorado.edu>
2779 2004-06-07 Fernando Perez <fperez@colorado.edu>
2777
2780
2778 * setup.py (isfile): Pass local_icons option to latex2html, so the
2781 * setup.py (isfile): Pass local_icons option to latex2html, so the
2779 resulting HTML file is self-contained. Thanks to
2782 resulting HTML file is self-contained. Thanks to
2780 dryice-AT-liu.com.cn for the tip.
2783 dryice-AT-liu.com.cn for the tip.
2781
2784
2782 * pysh.py: I created a new profile 'shell', which implements a
2785 * pysh.py: I created a new profile 'shell', which implements a
2783 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2786 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2784 system shell, nor will it become one anytime soon. It's mainly
2787 system shell, nor will it become one anytime soon. It's mainly
2785 meant to illustrate the use of the new flexible bash-like prompts.
2788 meant to illustrate the use of the new flexible bash-like prompts.
2786 I guess it could be used by hardy souls for true shell management,
2789 I guess it could be used by hardy souls for true shell management,
2787 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2790 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2788 profile. This uses the InterpreterExec extension provided by
2791 profile. This uses the InterpreterExec extension provided by
2789 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2792 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2790
2793
2791 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2794 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2792 auto-align itself with the length of the previous input prompt
2795 auto-align itself with the length of the previous input prompt
2793 (taking into account the invisible color escapes).
2796 (taking into account the invisible color escapes).
2794 (CachedOutput.__init__): Large restructuring of this class. Now
2797 (CachedOutput.__init__): Large restructuring of this class. Now
2795 all three prompts (primary1, primary2, output) are proper objects,
2798 all three prompts (primary1, primary2, output) are proper objects,
2796 managed by the 'parent' CachedOutput class. The code is still a
2799 managed by the 'parent' CachedOutput class. The code is still a
2797 bit hackish (all prompts share state via a pointer to the cache),
2800 bit hackish (all prompts share state via a pointer to the cache),
2798 but it's overall far cleaner than before.
2801 but it's overall far cleaner than before.
2799
2802
2800 * IPython/genutils.py (getoutputerror): modified to add verbose,
2803 * IPython/genutils.py (getoutputerror): modified to add verbose,
2801 debug and header options. This makes the interface of all getout*
2804 debug and header options. This makes the interface of all getout*
2802 functions uniform.
2805 functions uniform.
2803 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2806 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2804
2807
2805 * IPython/Magic.py (Magic.default_option): added a function to
2808 * IPython/Magic.py (Magic.default_option): added a function to
2806 allow registering default options for any magic command. This
2809 allow registering default options for any magic command. This
2807 makes it easy to have profiles which customize the magics globally
2810 makes it easy to have profiles which customize the magics globally
2808 for a certain use. The values set through this function are
2811 for a certain use. The values set through this function are
2809 picked up by the parse_options() method, which all magics should
2812 picked up by the parse_options() method, which all magics should
2810 use to parse their options.
2813 use to parse their options.
2811
2814
2812 * IPython/genutils.py (warn): modified the warnings framework to
2815 * IPython/genutils.py (warn): modified the warnings framework to
2813 use the Term I/O class. I'm trying to slowly unify all of
2816 use the Term I/O class. I'm trying to slowly unify all of
2814 IPython's I/O operations to pass through Term.
2817 IPython's I/O operations to pass through Term.
2815
2818
2816 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2819 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2817 the secondary prompt to correctly match the length of the primary
2820 the secondary prompt to correctly match the length of the primary
2818 one for any prompt. Now multi-line code will properly line up
2821 one for any prompt. Now multi-line code will properly line up
2819 even for path dependent prompts, such as the new ones available
2822 even for path dependent prompts, such as the new ones available
2820 via the prompt_specials.
2823 via the prompt_specials.
2821
2824
2822 2004-06-06 Fernando Perez <fperez@colorado.edu>
2825 2004-06-06 Fernando Perez <fperez@colorado.edu>
2823
2826
2824 * IPython/Prompts.py (prompt_specials): Added the ability to have
2827 * IPython/Prompts.py (prompt_specials): Added the ability to have
2825 bash-like special sequences in the prompts, which get
2828 bash-like special sequences in the prompts, which get
2826 automatically expanded. Things like hostname, current working
2829 automatically expanded. Things like hostname, current working
2827 directory and username are implemented already, but it's easy to
2830 directory and username are implemented already, but it's easy to
2828 add more in the future. Thanks to a patch by W.J. van der Laan
2831 add more in the future. Thanks to a patch by W.J. van der Laan
2829 <gnufnork-AT-hetdigitalegat.nl>
2832 <gnufnork-AT-hetdigitalegat.nl>
2830 (prompt_specials): Added color support for prompt strings, so
2833 (prompt_specials): Added color support for prompt strings, so
2831 users can define arbitrary color setups for their prompts.
2834 users can define arbitrary color setups for their prompts.
2832
2835
2833 2004-06-05 Fernando Perez <fperez@colorado.edu>
2836 2004-06-05 Fernando Perez <fperez@colorado.edu>
2834
2837
2835 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2838 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2836 code to load Gary Bishop's readline and configure it
2839 code to load Gary Bishop's readline and configure it
2837 automatically. Thanks to Gary for help on this.
2840 automatically. Thanks to Gary for help on this.
2838
2841
2839 2004-06-01 Fernando Perez <fperez@colorado.edu>
2842 2004-06-01 Fernando Perez <fperez@colorado.edu>
2840
2843
2841 * IPython/Logger.py (Logger.create_log): fix bug for logging
2844 * IPython/Logger.py (Logger.create_log): fix bug for logging
2842 with no filename (previous fix was incomplete).
2845 with no filename (previous fix was incomplete).
2843
2846
2844 2004-05-25 Fernando Perez <fperez@colorado.edu>
2847 2004-05-25 Fernando Perez <fperez@colorado.edu>
2845
2848
2846 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2849 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2847 parens would get passed to the shell.
2850 parens would get passed to the shell.
2848
2851
2849 2004-05-20 Fernando Perez <fperez@colorado.edu>
2852 2004-05-20 Fernando Perez <fperez@colorado.edu>
2850
2853
2851 * IPython/Magic.py (Magic.magic_prun): changed default profile
2854 * IPython/Magic.py (Magic.magic_prun): changed default profile
2852 sort order to 'time' (the more common profiling need).
2855 sort order to 'time' (the more common profiling need).
2853
2856
2854 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2857 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2855 so that source code shown is guaranteed in sync with the file on
2858 so that source code shown is guaranteed in sync with the file on
2856 disk (also changed in psource). Similar fix to the one for
2859 disk (also changed in psource). Similar fix to the one for
2857 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2860 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2858 <yann.ledu-AT-noos.fr>.
2861 <yann.ledu-AT-noos.fr>.
2859
2862
2860 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2863 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2861 with a single option would not be correctly parsed. Closes
2864 with a single option would not be correctly parsed. Closes
2862 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2865 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2863 introduced in 0.6.0 (on 2004-05-06).
2866 introduced in 0.6.0 (on 2004-05-06).
2864
2867
2865 2004-05-13 *** Released version 0.6.0
2868 2004-05-13 *** Released version 0.6.0
2866
2869
2867 2004-05-13 Fernando Perez <fperez@colorado.edu>
2870 2004-05-13 Fernando Perez <fperez@colorado.edu>
2868
2871
2869 * debian/: Added debian/ directory to CVS, so that debian support
2872 * debian/: Added debian/ directory to CVS, so that debian support
2870 is publicly accessible. The debian package is maintained by Jack
2873 is publicly accessible. The debian package is maintained by Jack
2871 Moffit <jack-AT-xiph.org>.
2874 Moffit <jack-AT-xiph.org>.
2872
2875
2873 * Documentation: included the notes about an ipython-based system
2876 * Documentation: included the notes about an ipython-based system
2874 shell (the hypothetical 'pysh') into the new_design.pdf document,
2877 shell (the hypothetical 'pysh') into the new_design.pdf document,
2875 so that these ideas get distributed to users along with the
2878 so that these ideas get distributed to users along with the
2876 official documentation.
2879 official documentation.
2877
2880
2878 2004-05-10 Fernando Perez <fperez@colorado.edu>
2881 2004-05-10 Fernando Perez <fperez@colorado.edu>
2879
2882
2880 * IPython/Logger.py (Logger.create_log): fix recently introduced
2883 * IPython/Logger.py (Logger.create_log): fix recently introduced
2881 bug (misindented line) where logstart would fail when not given an
2884 bug (misindented line) where logstart would fail when not given an
2882 explicit filename.
2885 explicit filename.
2883
2886
2884 2004-05-09 Fernando Perez <fperez@colorado.edu>
2887 2004-05-09 Fernando Perez <fperez@colorado.edu>
2885
2888
2886 * IPython/Magic.py (Magic.parse_options): skip system call when
2889 * IPython/Magic.py (Magic.parse_options): skip system call when
2887 there are no options to look for. Faster, cleaner for the common
2890 there are no options to look for. Faster, cleaner for the common
2888 case.
2891 case.
2889
2892
2890 * Documentation: many updates to the manual: describing Windows
2893 * Documentation: many updates to the manual: describing Windows
2891 support better, Gnuplot updates, credits, misc small stuff. Also
2894 support better, Gnuplot updates, credits, misc small stuff. Also
2892 updated the new_design doc a bit.
2895 updated the new_design doc a bit.
2893
2896
2894 2004-05-06 *** Released version 0.6.0.rc1
2897 2004-05-06 *** Released version 0.6.0.rc1
2895
2898
2896 2004-05-06 Fernando Perez <fperez@colorado.edu>
2899 2004-05-06 Fernando Perez <fperez@colorado.edu>
2897
2900
2898 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2901 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2899 operations to use the vastly more efficient list/''.join() method.
2902 operations to use the vastly more efficient list/''.join() method.
2900 (FormattedTB.text): Fix
2903 (FormattedTB.text): Fix
2901 http://www.scipy.net/roundup/ipython/issue12 - exception source
2904 http://www.scipy.net/roundup/ipython/issue12 - exception source
2902 extract not updated after reload. Thanks to Mike Salib
2905 extract not updated after reload. Thanks to Mike Salib
2903 <msalib-AT-mit.edu> for pinning the source of the problem.
2906 <msalib-AT-mit.edu> for pinning the source of the problem.
2904 Fortunately, the solution works inside ipython and doesn't require
2907 Fortunately, the solution works inside ipython and doesn't require
2905 any changes to python proper.
2908 any changes to python proper.
2906
2909
2907 * IPython/Magic.py (Magic.parse_options): Improved to process the
2910 * IPython/Magic.py (Magic.parse_options): Improved to process the
2908 argument list as a true shell would (by actually using the
2911 argument list as a true shell would (by actually using the
2909 underlying system shell). This way, all @magics automatically get
2912 underlying system shell). This way, all @magics automatically get
2910 shell expansion for variables. Thanks to a comment by Alex
2913 shell expansion for variables. Thanks to a comment by Alex
2911 Schmolck.
2914 Schmolck.
2912
2915
2913 2004-04-04 Fernando Perez <fperez@colorado.edu>
2916 2004-04-04 Fernando Perez <fperez@colorado.edu>
2914
2917
2915 * IPython/iplib.py (InteractiveShell.interact): Added a special
2918 * IPython/iplib.py (InteractiveShell.interact): Added a special
2916 trap for a debugger quit exception, which is basically impossible
2919 trap for a debugger quit exception, which is basically impossible
2917 to handle by normal mechanisms, given what pdb does to the stack.
2920 to handle by normal mechanisms, given what pdb does to the stack.
2918 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2921 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2919
2922
2920 2004-04-03 Fernando Perez <fperez@colorado.edu>
2923 2004-04-03 Fernando Perez <fperez@colorado.edu>
2921
2924
2922 * IPython/genutils.py (Term): Standardized the names of the Term
2925 * IPython/genutils.py (Term): Standardized the names of the Term
2923 class streams to cin/cout/cerr, following C++ naming conventions
2926 class streams to cin/cout/cerr, following C++ naming conventions
2924 (I can't use in/out/err because 'in' is not a valid attribute
2927 (I can't use in/out/err because 'in' is not a valid attribute
2925 name).
2928 name).
2926
2929
2927 * IPython/iplib.py (InteractiveShell.interact): don't increment
2930 * IPython/iplib.py (InteractiveShell.interact): don't increment
2928 the prompt if there's no user input. By Daniel 'Dang' Griffith
2931 the prompt if there's no user input. By Daniel 'Dang' Griffith
2929 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2932 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2930 Francois Pinard.
2933 Francois Pinard.
2931
2934
2932 2004-04-02 Fernando Perez <fperez@colorado.edu>
2935 2004-04-02 Fernando Perez <fperez@colorado.edu>
2933
2936
2934 * IPython/genutils.py (Stream.__init__): Modified to survive at
2937 * IPython/genutils.py (Stream.__init__): Modified to survive at
2935 least importing in contexts where stdin/out/err aren't true file
2938 least importing in contexts where stdin/out/err aren't true file
2936 objects, such as PyCrust (they lack fileno() and mode). However,
2939 objects, such as PyCrust (they lack fileno() and mode). However,
2937 the recovery facilities which rely on these things existing will
2940 the recovery facilities which rely on these things existing will
2938 not work.
2941 not work.
2939
2942
2940 2004-04-01 Fernando Perez <fperez@colorado.edu>
2943 2004-04-01 Fernando Perez <fperez@colorado.edu>
2941
2944
2942 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2945 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2943 use the new getoutputerror() function, so it properly
2946 use the new getoutputerror() function, so it properly
2944 distinguishes stdout/err.
2947 distinguishes stdout/err.
2945
2948
2946 * IPython/genutils.py (getoutputerror): added a function to
2949 * IPython/genutils.py (getoutputerror): added a function to
2947 capture separately the standard output and error of a command.
2950 capture separately the standard output and error of a command.
2948 After a comment from dang on the mailing lists. This code is
2951 After a comment from dang on the mailing lists. This code is
2949 basically a modified version of commands.getstatusoutput(), from
2952 basically a modified version of commands.getstatusoutput(), from
2950 the standard library.
2953 the standard library.
2951
2954
2952 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2955 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2953 '!!' as a special syntax (shorthand) to access @sx.
2956 '!!' as a special syntax (shorthand) to access @sx.
2954
2957
2955 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2958 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2956 command and return its output as a list split on '\n'.
2959 command and return its output as a list split on '\n'.
2957
2960
2958 2004-03-31 Fernando Perez <fperez@colorado.edu>
2961 2004-03-31 Fernando Perez <fperez@colorado.edu>
2959
2962
2960 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2963 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2961 method to dictionaries used as FakeModule instances if they lack
2964 method to dictionaries used as FakeModule instances if they lack
2962 it. At least pydoc in python2.3 breaks for runtime-defined
2965 it. At least pydoc in python2.3 breaks for runtime-defined
2963 functions without this hack. At some point I need to _really_
2966 functions without this hack. At some point I need to _really_
2964 understand what FakeModule is doing, because it's a gross hack.
2967 understand what FakeModule is doing, because it's a gross hack.
2965 But it solves Arnd's problem for now...
2968 But it solves Arnd's problem for now...
2966
2969
2967 2004-02-27 Fernando Perez <fperez@colorado.edu>
2970 2004-02-27 Fernando Perez <fperez@colorado.edu>
2968
2971
2969 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2972 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2970 mode would behave erratically. Also increased the number of
2973 mode would behave erratically. Also increased the number of
2971 possible logs in rotate mod to 999. Thanks to Rod Holland
2974 possible logs in rotate mod to 999. Thanks to Rod Holland
2972 <rhh@StructureLABS.com> for the report and fixes.
2975 <rhh@StructureLABS.com> for the report and fixes.
2973
2976
2974 2004-02-26 Fernando Perez <fperez@colorado.edu>
2977 2004-02-26 Fernando Perez <fperez@colorado.edu>
2975
2978
2976 * IPython/genutils.py (page): Check that the curses module really
2979 * IPython/genutils.py (page): Check that the curses module really
2977 has the initscr attribute before trying to use it. For some
2980 has the initscr attribute before trying to use it. For some
2978 reason, the Solaris curses module is missing this. I think this
2981 reason, the Solaris curses module is missing this. I think this
2979 should be considered a Solaris python bug, but I'm not sure.
2982 should be considered a Solaris python bug, but I'm not sure.
2980
2983
2981 2004-01-17 Fernando Perez <fperez@colorado.edu>
2984 2004-01-17 Fernando Perez <fperez@colorado.edu>
2982
2985
2983 * IPython/genutils.py (Stream.__init__): Changes to try to make
2986 * IPython/genutils.py (Stream.__init__): Changes to try to make
2984 ipython robust against stdin/out/err being closed by the user.
2987 ipython robust against stdin/out/err being closed by the user.
2985 This is 'user error' (and blocks a normal python session, at least
2988 This is 'user error' (and blocks a normal python session, at least
2986 the stdout case). However, Ipython should be able to survive such
2989 the stdout case). However, Ipython should be able to survive such
2987 instances of abuse as gracefully as possible. To simplify the
2990 instances of abuse as gracefully as possible. To simplify the
2988 coding and maintain compatibility with Gary Bishop's Term
2991 coding and maintain compatibility with Gary Bishop's Term
2989 contributions, I've made use of classmethods for this. I think
2992 contributions, I've made use of classmethods for this. I think
2990 this introduces a dependency on python 2.2.
2993 this introduces a dependency on python 2.2.
2991
2994
2992 2004-01-13 Fernando Perez <fperez@colorado.edu>
2995 2004-01-13 Fernando Perez <fperez@colorado.edu>
2993
2996
2994 * IPython/numutils.py (exp_safe): simplified the code a bit and
2997 * IPython/numutils.py (exp_safe): simplified the code a bit and
2995 removed the need for importing the kinds module altogether.
2998 removed the need for importing the kinds module altogether.
2996
2999
2997 2004-01-06 Fernando Perez <fperez@colorado.edu>
3000 2004-01-06 Fernando Perez <fperez@colorado.edu>
2998
3001
2999 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3002 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3000 a magic function instead, after some community feedback. No
3003 a magic function instead, after some community feedback. No
3001 special syntax will exist for it, but its name is deliberately
3004 special syntax will exist for it, but its name is deliberately
3002 very short.
3005 very short.
3003
3006
3004 2003-12-20 Fernando Perez <fperez@colorado.edu>
3007 2003-12-20 Fernando Perez <fperez@colorado.edu>
3005
3008
3006 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3009 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3007 new functionality, to automagically assign the result of a shell
3010 new functionality, to automagically assign the result of a shell
3008 command to a variable. I'll solicit some community feedback on
3011 command to a variable. I'll solicit some community feedback on
3009 this before making it permanent.
3012 this before making it permanent.
3010
3013
3011 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3014 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3012 requested about callables for which inspect couldn't obtain a
3015 requested about callables for which inspect couldn't obtain a
3013 proper argspec. Thanks to a crash report sent by Etienne
3016 proper argspec. Thanks to a crash report sent by Etienne
3014 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3017 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3015
3018
3016 2003-12-09 Fernando Perez <fperez@colorado.edu>
3019 2003-12-09 Fernando Perez <fperez@colorado.edu>
3017
3020
3018 * IPython/genutils.py (page): patch for the pager to work across
3021 * IPython/genutils.py (page): patch for the pager to work across
3019 various versions of Windows. By Gary Bishop.
3022 various versions of Windows. By Gary Bishop.
3020
3023
3021 2003-12-04 Fernando Perez <fperez@colorado.edu>
3024 2003-12-04 Fernando Perez <fperez@colorado.edu>
3022
3025
3023 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3026 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3024 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3027 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3025 While I tested this and it looks ok, there may still be corner
3028 While I tested this and it looks ok, there may still be corner
3026 cases I've missed.
3029 cases I've missed.
3027
3030
3028 2003-12-01 Fernando Perez <fperez@colorado.edu>
3031 2003-12-01 Fernando Perez <fperez@colorado.edu>
3029
3032
3030 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3033 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3031 where a line like 'p,q=1,2' would fail because the automagic
3034 where a line like 'p,q=1,2' would fail because the automagic
3032 system would be triggered for @p.
3035 system would be triggered for @p.
3033
3036
3034 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3037 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3035 cleanups, code unmodified.
3038 cleanups, code unmodified.
3036
3039
3037 * IPython/genutils.py (Term): added a class for IPython to handle
3040 * IPython/genutils.py (Term): added a class for IPython to handle
3038 output. In most cases it will just be a proxy for stdout/err, but
3041 output. In most cases it will just be a proxy for stdout/err, but
3039 having this allows modifications to be made for some platforms,
3042 having this allows modifications to be made for some platforms,
3040 such as handling color escapes under Windows. All of this code
3043 such as handling color escapes under Windows. All of this code
3041 was contributed by Gary Bishop, with minor modifications by me.
3044 was contributed by Gary Bishop, with minor modifications by me.
3042 The actual changes affect many files.
3045 The actual changes affect many files.
3043
3046
3044 2003-11-30 Fernando Perez <fperez@colorado.edu>
3047 2003-11-30 Fernando Perez <fperez@colorado.edu>
3045
3048
3046 * IPython/iplib.py (file_matches): new completion code, courtesy
3049 * IPython/iplib.py (file_matches): new completion code, courtesy
3047 of Jeff Collins. This enables filename completion again under
3050 of Jeff Collins. This enables filename completion again under
3048 python 2.3, which disabled it at the C level.
3051 python 2.3, which disabled it at the C level.
3049
3052
3050 2003-11-11 Fernando Perez <fperez@colorado.edu>
3053 2003-11-11 Fernando Perez <fperez@colorado.edu>
3051
3054
3052 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3055 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3053 for Numeric.array(map(...)), but often convenient.
3056 for Numeric.array(map(...)), but often convenient.
3054
3057
3055 2003-11-05 Fernando Perez <fperez@colorado.edu>
3058 2003-11-05 Fernando Perez <fperez@colorado.edu>
3056
3059
3057 * IPython/numutils.py (frange): Changed a call from int() to
3060 * IPython/numutils.py (frange): Changed a call from int() to
3058 int(round()) to prevent a problem reported with arange() in the
3061 int(round()) to prevent a problem reported with arange() in the
3059 numpy list.
3062 numpy list.
3060
3063
3061 2003-10-06 Fernando Perez <fperez@colorado.edu>
3064 2003-10-06 Fernando Perez <fperez@colorado.edu>
3062
3065
3063 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3066 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3064 prevent crashes if sys lacks an argv attribute (it happens with
3067 prevent crashes if sys lacks an argv attribute (it happens with
3065 embedded interpreters which build a bare-bones sys module).
3068 embedded interpreters which build a bare-bones sys module).
3066 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3069 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3067
3070
3068 2003-09-24 Fernando Perez <fperez@colorado.edu>
3071 2003-09-24 Fernando Perez <fperez@colorado.edu>
3069
3072
3070 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3073 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3071 to protect against poorly written user objects where __getattr__
3074 to protect against poorly written user objects where __getattr__
3072 raises exceptions other than AttributeError. Thanks to a bug
3075 raises exceptions other than AttributeError. Thanks to a bug
3073 report by Oliver Sander <osander-AT-gmx.de>.
3076 report by Oliver Sander <osander-AT-gmx.de>.
3074
3077
3075 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3078 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3076 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3079 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3077
3080
3078 2003-09-09 Fernando Perez <fperez@colorado.edu>
3081 2003-09-09 Fernando Perez <fperez@colorado.edu>
3079
3082
3080 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3083 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3081 unpacking a list whith a callable as first element would
3084 unpacking a list whith a callable as first element would
3082 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3085 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3083 Collins.
3086 Collins.
3084
3087
3085 2003-08-25 *** Released version 0.5.0
3088 2003-08-25 *** Released version 0.5.0
3086
3089
3087 2003-08-22 Fernando Perez <fperez@colorado.edu>
3090 2003-08-22 Fernando Perez <fperez@colorado.edu>
3088
3091
3089 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3092 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3090 improperly defined user exceptions. Thanks to feedback from Mark
3093 improperly defined user exceptions. Thanks to feedback from Mark
3091 Russell <mrussell-AT-verio.net>.
3094 Russell <mrussell-AT-verio.net>.
3092
3095
3093 2003-08-20 Fernando Perez <fperez@colorado.edu>
3096 2003-08-20 Fernando Perez <fperez@colorado.edu>
3094
3097
3095 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3098 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3096 printing so that it would print multi-line string forms starting
3099 printing so that it would print multi-line string forms starting
3097 with a new line. This way the formatting is better respected for
3100 with a new line. This way the formatting is better respected for
3098 objects which work hard to make nice string forms.
3101 objects which work hard to make nice string forms.
3099
3102
3100 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3103 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3101 autocall would overtake data access for objects with both
3104 autocall would overtake data access for objects with both
3102 __getitem__ and __call__.
3105 __getitem__ and __call__.
3103
3106
3104 2003-08-19 *** Released version 0.5.0-rc1
3107 2003-08-19 *** Released version 0.5.0-rc1
3105
3108
3106 2003-08-19 Fernando Perez <fperez@colorado.edu>
3109 2003-08-19 Fernando Perez <fperez@colorado.edu>
3107
3110
3108 * IPython/deep_reload.py (load_tail): single tiny change here
3111 * IPython/deep_reload.py (load_tail): single tiny change here
3109 seems to fix the long-standing bug of dreload() failing to work
3112 seems to fix the long-standing bug of dreload() failing to work
3110 for dotted names. But this module is pretty tricky, so I may have
3113 for dotted names. But this module is pretty tricky, so I may have
3111 missed some subtlety. Needs more testing!.
3114 missed some subtlety. Needs more testing!.
3112
3115
3113 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3116 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3114 exceptions which have badly implemented __str__ methods.
3117 exceptions which have badly implemented __str__ methods.
3115 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3118 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3116 which I've been getting reports about from Python 2.3 users. I
3119 which I've been getting reports about from Python 2.3 users. I
3117 wish I had a simple test case to reproduce the problem, so I could
3120 wish I had a simple test case to reproduce the problem, so I could
3118 either write a cleaner workaround or file a bug report if
3121 either write a cleaner workaround or file a bug report if
3119 necessary.
3122 necessary.
3120
3123
3121 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3124 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3122 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3125 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3123 a bug report by Tjabo Kloppenburg.
3126 a bug report by Tjabo Kloppenburg.
3124
3127
3125 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3128 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3126 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3129 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3127 seems rather unstable. Thanks to a bug report by Tjabo
3130 seems rather unstable. Thanks to a bug report by Tjabo
3128 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3131 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3129
3132
3130 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3133 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3131 this out soon because of the critical fixes in the inner loop for
3134 this out soon because of the critical fixes in the inner loop for
3132 generators.
3135 generators.
3133
3136
3134 * IPython/Magic.py (Magic.getargspec): removed. This (and
3137 * IPython/Magic.py (Magic.getargspec): removed. This (and
3135 _get_def) have been obsoleted by OInspect for a long time, I
3138 _get_def) have been obsoleted by OInspect for a long time, I
3136 hadn't noticed that they were dead code.
3139 hadn't noticed that they were dead code.
3137 (Magic._ofind): restored _ofind functionality for a few literals
3140 (Magic._ofind): restored _ofind functionality for a few literals
3138 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3141 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3139 for things like "hello".capitalize?, since that would require a
3142 for things like "hello".capitalize?, since that would require a
3140 potentially dangerous eval() again.
3143 potentially dangerous eval() again.
3141
3144
3142 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3145 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3143 logic a bit more to clean up the escapes handling and minimize the
3146 logic a bit more to clean up the escapes handling and minimize the
3144 use of _ofind to only necessary cases. The interactive 'feel' of
3147 use of _ofind to only necessary cases. The interactive 'feel' of
3145 IPython should have improved quite a bit with the changes in
3148 IPython should have improved quite a bit with the changes in
3146 _prefilter and _ofind (besides being far safer than before).
3149 _prefilter and _ofind (besides being far safer than before).
3147
3150
3148 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3151 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3149 obscure, never reported). Edit would fail to find the object to
3152 obscure, never reported). Edit would fail to find the object to
3150 edit under some circumstances.
3153 edit under some circumstances.
3151 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3154 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3152 which were causing double-calling of generators. Those eval calls
3155 which were causing double-calling of generators. Those eval calls
3153 were _very_ dangerous, since code with side effects could be
3156 were _very_ dangerous, since code with side effects could be
3154 triggered. As they say, 'eval is evil'... These were the
3157 triggered. As they say, 'eval is evil'... These were the
3155 nastiest evals in IPython. Besides, _ofind is now far simpler,
3158 nastiest evals in IPython. Besides, _ofind is now far simpler,
3156 and it should also be quite a bit faster. Its use of inspect is
3159 and it should also be quite a bit faster. Its use of inspect is
3157 also safer, so perhaps some of the inspect-related crashes I've
3160 also safer, so perhaps some of the inspect-related crashes I've
3158 seen lately with Python 2.3 might be taken care of. That will
3161 seen lately with Python 2.3 might be taken care of. That will
3159 need more testing.
3162 need more testing.
3160
3163
3161 2003-08-17 Fernando Perez <fperez@colorado.edu>
3164 2003-08-17 Fernando Perez <fperez@colorado.edu>
3162
3165
3163 * IPython/iplib.py (InteractiveShell._prefilter): significant
3166 * IPython/iplib.py (InteractiveShell._prefilter): significant
3164 simplifications to the logic for handling user escapes. Faster
3167 simplifications to the logic for handling user escapes. Faster
3165 and simpler code.
3168 and simpler code.
3166
3169
3167 2003-08-14 Fernando Perez <fperez@colorado.edu>
3170 2003-08-14 Fernando Perez <fperez@colorado.edu>
3168
3171
3169 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3172 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3170 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3173 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3171 but it should be quite a bit faster. And the recursive version
3174 but it should be quite a bit faster. And the recursive version
3172 generated O(log N) intermediate storage for all rank>1 arrays,
3175 generated O(log N) intermediate storage for all rank>1 arrays,
3173 even if they were contiguous.
3176 even if they were contiguous.
3174 (l1norm): Added this function.
3177 (l1norm): Added this function.
3175 (norm): Added this function for arbitrary norms (including
3178 (norm): Added this function for arbitrary norms (including
3176 l-infinity). l1 and l2 are still special cases for convenience
3179 l-infinity). l1 and l2 are still special cases for convenience
3177 and speed.
3180 and speed.
3178
3181
3179 2003-08-03 Fernando Perez <fperez@colorado.edu>
3182 2003-08-03 Fernando Perez <fperez@colorado.edu>
3180
3183
3181 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3184 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3182 exceptions, which now raise PendingDeprecationWarnings in Python
3185 exceptions, which now raise PendingDeprecationWarnings in Python
3183 2.3. There were some in Magic and some in Gnuplot2.
3186 2.3. There were some in Magic and some in Gnuplot2.
3184
3187
3185 2003-06-30 Fernando Perez <fperez@colorado.edu>
3188 2003-06-30 Fernando Perez <fperez@colorado.edu>
3186
3189
3187 * IPython/genutils.py (page): modified to call curses only for
3190 * IPython/genutils.py (page): modified to call curses only for
3188 terminals where TERM=='xterm'. After problems under many other
3191 terminals where TERM=='xterm'. After problems under many other
3189 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3192 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3190
3193
3191 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3194 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3192 would be triggered when readline was absent. This was just an old
3195 would be triggered when readline was absent. This was just an old
3193 debugging statement I'd forgotten to take out.
3196 debugging statement I'd forgotten to take out.
3194
3197
3195 2003-06-20 Fernando Perez <fperez@colorado.edu>
3198 2003-06-20 Fernando Perez <fperez@colorado.edu>
3196
3199
3197 * IPython/genutils.py (clock): modified to return only user time
3200 * IPython/genutils.py (clock): modified to return only user time
3198 (not counting system time), after a discussion on scipy. While
3201 (not counting system time), after a discussion on scipy. While
3199 system time may be a useful quantity occasionally, it may much
3202 system time may be a useful quantity occasionally, it may much
3200 more easily be skewed by occasional swapping or other similar
3203 more easily be skewed by occasional swapping or other similar
3201 activity.
3204 activity.
3202
3205
3203 2003-06-05 Fernando Perez <fperez@colorado.edu>
3206 2003-06-05 Fernando Perez <fperez@colorado.edu>
3204
3207
3205 * IPython/numutils.py (identity): new function, for building
3208 * IPython/numutils.py (identity): new function, for building
3206 arbitrary rank Kronecker deltas (mostly backwards compatible with
3209 arbitrary rank Kronecker deltas (mostly backwards compatible with
3207 Numeric.identity)
3210 Numeric.identity)
3208
3211
3209 2003-06-03 Fernando Perez <fperez@colorado.edu>
3212 2003-06-03 Fernando Perez <fperez@colorado.edu>
3210
3213
3211 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3214 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3212 arguments passed to magics with spaces, to allow trailing '\' to
3215 arguments passed to magics with spaces, to allow trailing '\' to
3213 work normally (mainly for Windows users).
3216 work normally (mainly for Windows users).
3214
3217
3215 2003-05-29 Fernando Perez <fperez@colorado.edu>
3218 2003-05-29 Fernando Perez <fperez@colorado.edu>
3216
3219
3217 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3220 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3218 instead of pydoc.help. This fixes a bizarre behavior where
3221 instead of pydoc.help. This fixes a bizarre behavior where
3219 printing '%s' % locals() would trigger the help system. Now
3222 printing '%s' % locals() would trigger the help system. Now
3220 ipython behaves like normal python does.
3223 ipython behaves like normal python does.
3221
3224
3222 Note that if one does 'from pydoc import help', the bizarre
3225 Note that if one does 'from pydoc import help', the bizarre
3223 behavior returns, but this will also happen in normal python, so
3226 behavior returns, but this will also happen in normal python, so
3224 it's not an ipython bug anymore (it has to do with how pydoc.help
3227 it's not an ipython bug anymore (it has to do with how pydoc.help
3225 is implemented).
3228 is implemented).
3226
3229
3227 2003-05-22 Fernando Perez <fperez@colorado.edu>
3230 2003-05-22 Fernando Perez <fperez@colorado.edu>
3228
3231
3229 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3232 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3230 return [] instead of None when nothing matches, also match to end
3233 return [] instead of None when nothing matches, also match to end
3231 of line. Patch by Gary Bishop.
3234 of line. Patch by Gary Bishop.
3232
3235
3233 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3236 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3234 protection as before, for files passed on the command line. This
3237 protection as before, for files passed on the command line. This
3235 prevents the CrashHandler from kicking in if user files call into
3238 prevents the CrashHandler from kicking in if user files call into
3236 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3239 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3237 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3240 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3238
3241
3239 2003-05-20 *** Released version 0.4.0
3242 2003-05-20 *** Released version 0.4.0
3240
3243
3241 2003-05-20 Fernando Perez <fperez@colorado.edu>
3244 2003-05-20 Fernando Perez <fperez@colorado.edu>
3242
3245
3243 * setup.py: added support for manpages. It's a bit hackish b/c of
3246 * setup.py: added support for manpages. It's a bit hackish b/c of
3244 a bug in the way the bdist_rpm distutils target handles gzipped
3247 a bug in the way the bdist_rpm distutils target handles gzipped
3245 manpages, but it works. After a patch by Jack.
3248 manpages, but it works. After a patch by Jack.
3246
3249
3247 2003-05-19 Fernando Perez <fperez@colorado.edu>
3250 2003-05-19 Fernando Perez <fperez@colorado.edu>
3248
3251
3249 * IPython/numutils.py: added a mockup of the kinds module, since
3252 * IPython/numutils.py: added a mockup of the kinds module, since
3250 it was recently removed from Numeric. This way, numutils will
3253 it was recently removed from Numeric. This way, numutils will
3251 work for all users even if they are missing kinds.
3254 work for all users even if they are missing kinds.
3252
3255
3253 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3256 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3254 failure, which can occur with SWIG-wrapped extensions. After a
3257 failure, which can occur with SWIG-wrapped extensions. After a
3255 crash report from Prabhu.
3258 crash report from Prabhu.
3256
3259
3257 2003-05-16 Fernando Perez <fperez@colorado.edu>
3260 2003-05-16 Fernando Perez <fperez@colorado.edu>
3258
3261
3259 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3262 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3260 protect ipython from user code which may call directly
3263 protect ipython from user code which may call directly
3261 sys.excepthook (this looks like an ipython crash to the user, even
3264 sys.excepthook (this looks like an ipython crash to the user, even
3262 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3265 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3263 This is especially important to help users of WxWindows, but may
3266 This is especially important to help users of WxWindows, but may
3264 also be useful in other cases.
3267 also be useful in other cases.
3265
3268
3266 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3269 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3267 an optional tb_offset to be specified, and to preserve exception
3270 an optional tb_offset to be specified, and to preserve exception
3268 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3271 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3269
3272
3270 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3273 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3271
3274
3272 2003-05-15 Fernando Perez <fperez@colorado.edu>
3275 2003-05-15 Fernando Perez <fperez@colorado.edu>
3273
3276
3274 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3277 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3275 installing for a new user under Windows.
3278 installing for a new user under Windows.
3276
3279
3277 2003-05-12 Fernando Perez <fperez@colorado.edu>
3280 2003-05-12 Fernando Perez <fperez@colorado.edu>
3278
3281
3279 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3282 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3280 handler for Emacs comint-based lines. Currently it doesn't do
3283 handler for Emacs comint-based lines. Currently it doesn't do
3281 much (but importantly, it doesn't update the history cache). In
3284 much (but importantly, it doesn't update the history cache). In
3282 the future it may be expanded if Alex needs more functionality
3285 the future it may be expanded if Alex needs more functionality
3283 there.
3286 there.
3284
3287
3285 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3288 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3286 info to crash reports.
3289 info to crash reports.
3287
3290
3288 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3291 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3289 just like Python's -c. Also fixed crash with invalid -color
3292 just like Python's -c. Also fixed crash with invalid -color
3290 option value at startup. Thanks to Will French
3293 option value at startup. Thanks to Will French
3291 <wfrench-AT-bestweb.net> for the bug report.
3294 <wfrench-AT-bestweb.net> for the bug report.
3292
3295
3293 2003-05-09 Fernando Perez <fperez@colorado.edu>
3296 2003-05-09 Fernando Perez <fperez@colorado.edu>
3294
3297
3295 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3298 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3296 to EvalDict (it's a mapping, after all) and simplified its code
3299 to EvalDict (it's a mapping, after all) and simplified its code
3297 quite a bit, after a nice discussion on c.l.py where Gustavo
3300 quite a bit, after a nice discussion on c.l.py where Gustavo
3298 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3301 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3299
3302
3300 2003-04-30 Fernando Perez <fperez@colorado.edu>
3303 2003-04-30 Fernando Perez <fperez@colorado.edu>
3301
3304
3302 * IPython/genutils.py (timings_out): modified it to reduce its
3305 * IPython/genutils.py (timings_out): modified it to reduce its
3303 overhead in the common reps==1 case.
3306 overhead in the common reps==1 case.
3304
3307
3305 2003-04-29 Fernando Perez <fperez@colorado.edu>
3308 2003-04-29 Fernando Perez <fperez@colorado.edu>
3306
3309
3307 * IPython/genutils.py (timings_out): Modified to use the resource
3310 * IPython/genutils.py (timings_out): Modified to use the resource
3308 module, which avoids the wraparound problems of time.clock().
3311 module, which avoids the wraparound problems of time.clock().
3309
3312
3310 2003-04-17 *** Released version 0.2.15pre4
3313 2003-04-17 *** Released version 0.2.15pre4
3311
3314
3312 2003-04-17 Fernando Perez <fperez@colorado.edu>
3315 2003-04-17 Fernando Perez <fperez@colorado.edu>
3313
3316
3314 * setup.py (scriptfiles): Split windows-specific stuff over to a
3317 * setup.py (scriptfiles): Split windows-specific stuff over to a
3315 separate file, in an attempt to have a Windows GUI installer.
3318 separate file, in an attempt to have a Windows GUI installer.
3316 That didn't work, but part of the groundwork is done.
3319 That didn't work, but part of the groundwork is done.
3317
3320
3318 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3321 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3319 indent/unindent with 4 spaces. Particularly useful in combination
3322 indent/unindent with 4 spaces. Particularly useful in combination
3320 with the new auto-indent option.
3323 with the new auto-indent option.
3321
3324
3322 2003-04-16 Fernando Perez <fperez@colorado.edu>
3325 2003-04-16 Fernando Perez <fperez@colorado.edu>
3323
3326
3324 * IPython/Magic.py: various replacements of self.rc for
3327 * IPython/Magic.py: various replacements of self.rc for
3325 self.shell.rc. A lot more remains to be done to fully disentangle
3328 self.shell.rc. A lot more remains to be done to fully disentangle
3326 this class from the main Shell class.
3329 this class from the main Shell class.
3327
3330
3328 * IPython/GnuplotRuntime.py: added checks for mouse support so
3331 * IPython/GnuplotRuntime.py: added checks for mouse support so
3329 that we don't try to enable it if the current gnuplot doesn't
3332 that we don't try to enable it if the current gnuplot doesn't
3330 really support it. Also added checks so that we don't try to
3333 really support it. Also added checks so that we don't try to
3331 enable persist under Windows (where Gnuplot doesn't recognize the
3334 enable persist under Windows (where Gnuplot doesn't recognize the
3332 option).
3335 option).
3333
3336
3334 * IPython/iplib.py (InteractiveShell.interact): Added optional
3337 * IPython/iplib.py (InteractiveShell.interact): Added optional
3335 auto-indenting code, after a patch by King C. Shu
3338 auto-indenting code, after a patch by King C. Shu
3336 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3339 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3337 get along well with pasting indented code. If I ever figure out
3340 get along well with pasting indented code. If I ever figure out
3338 how to make that part go well, it will become on by default.
3341 how to make that part go well, it will become on by default.
3339
3342
3340 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3343 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3341 crash ipython if there was an unmatched '%' in the user's prompt
3344 crash ipython if there was an unmatched '%' in the user's prompt
3342 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3345 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3343
3346
3344 * IPython/iplib.py (InteractiveShell.interact): removed the
3347 * IPython/iplib.py (InteractiveShell.interact): removed the
3345 ability to ask the user whether he wants to crash or not at the
3348 ability to ask the user whether he wants to crash or not at the
3346 'last line' exception handler. Calling functions at that point
3349 'last line' exception handler. Calling functions at that point
3347 changes the stack, and the error reports would have incorrect
3350 changes the stack, and the error reports would have incorrect
3348 tracebacks.
3351 tracebacks.
3349
3352
3350 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3353 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3351 pass through a peger a pretty-printed form of any object. After a
3354 pass through a peger a pretty-printed form of any object. After a
3352 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3355 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3353
3356
3354 2003-04-14 Fernando Perez <fperez@colorado.edu>
3357 2003-04-14 Fernando Perez <fperez@colorado.edu>
3355
3358
3356 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3359 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3357 all files in ~ would be modified at first install (instead of
3360 all files in ~ would be modified at first install (instead of
3358 ~/.ipython). This could be potentially disastrous, as the
3361 ~/.ipython). This could be potentially disastrous, as the
3359 modification (make line-endings native) could damage binary files.
3362 modification (make line-endings native) could damage binary files.
3360
3363
3361 2003-04-10 Fernando Perez <fperez@colorado.edu>
3364 2003-04-10 Fernando Perez <fperez@colorado.edu>
3362
3365
3363 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3366 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3364 handle only lines which are invalid python. This now means that
3367 handle only lines which are invalid python. This now means that
3365 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3368 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3366 for the bug report.
3369 for the bug report.
3367
3370
3368 2003-04-01 Fernando Perez <fperez@colorado.edu>
3371 2003-04-01 Fernando Perez <fperez@colorado.edu>
3369
3372
3370 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3373 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3371 where failing to set sys.last_traceback would crash pdb.pm().
3374 where failing to set sys.last_traceback would crash pdb.pm().
3372 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3375 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3373 report.
3376 report.
3374
3377
3375 2003-03-25 Fernando Perez <fperez@colorado.edu>
3378 2003-03-25 Fernando Perez <fperez@colorado.edu>
3376
3379
3377 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3380 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3378 before printing it (it had a lot of spurious blank lines at the
3381 before printing it (it had a lot of spurious blank lines at the
3379 end).
3382 end).
3380
3383
3381 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3384 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3382 output would be sent 21 times! Obviously people don't use this
3385 output would be sent 21 times! Obviously people don't use this
3383 too often, or I would have heard about it.
3386 too often, or I would have heard about it.
3384
3387
3385 2003-03-24 Fernando Perez <fperez@colorado.edu>
3388 2003-03-24 Fernando Perez <fperez@colorado.edu>
3386
3389
3387 * setup.py (scriptfiles): renamed the data_files parameter from
3390 * setup.py (scriptfiles): renamed the data_files parameter from
3388 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3391 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3389 for the patch.
3392 for the patch.
3390
3393
3391 2003-03-20 Fernando Perez <fperez@colorado.edu>
3394 2003-03-20 Fernando Perez <fperez@colorado.edu>
3392
3395
3393 * IPython/genutils.py (error): added error() and fatal()
3396 * IPython/genutils.py (error): added error() and fatal()
3394 functions.
3397 functions.
3395
3398
3396 2003-03-18 *** Released version 0.2.15pre3
3399 2003-03-18 *** Released version 0.2.15pre3
3397
3400
3398 2003-03-18 Fernando Perez <fperez@colorado.edu>
3401 2003-03-18 Fernando Perez <fperez@colorado.edu>
3399
3402
3400 * setupext/install_data_ext.py
3403 * setupext/install_data_ext.py
3401 (install_data_ext.initialize_options): Class contributed by Jack
3404 (install_data_ext.initialize_options): Class contributed by Jack
3402 Moffit for fixing the old distutils hack. He is sending this to
3405 Moffit for fixing the old distutils hack. He is sending this to
3403 the distutils folks so in the future we may not need it as a
3406 the distutils folks so in the future we may not need it as a
3404 private fix.
3407 private fix.
3405
3408
3406 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3409 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3407 changes for Debian packaging. See his patch for full details.
3410 changes for Debian packaging. See his patch for full details.
3408 The old distutils hack of making the ipythonrc* files carry a
3411 The old distutils hack of making the ipythonrc* files carry a
3409 bogus .py extension is gone, at last. Examples were moved to a
3412 bogus .py extension is gone, at last. Examples were moved to a
3410 separate subdir under doc/, and the separate executable scripts
3413 separate subdir under doc/, and the separate executable scripts
3411 now live in their own directory. Overall a great cleanup. The
3414 now live in their own directory. Overall a great cleanup. The
3412 manual was updated to use the new files, and setup.py has been
3415 manual was updated to use the new files, and setup.py has been
3413 fixed for this setup.
3416 fixed for this setup.
3414
3417
3415 * IPython/PyColorize.py (Parser.usage): made non-executable and
3418 * IPython/PyColorize.py (Parser.usage): made non-executable and
3416 created a pycolor wrapper around it to be included as a script.
3419 created a pycolor wrapper around it to be included as a script.
3417
3420
3418 2003-03-12 *** Released version 0.2.15pre2
3421 2003-03-12 *** Released version 0.2.15pre2
3419
3422
3420 2003-03-12 Fernando Perez <fperez@colorado.edu>
3423 2003-03-12 Fernando Perez <fperez@colorado.edu>
3421
3424
3422 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3425 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3423 long-standing problem with garbage characters in some terminals.
3426 long-standing problem with garbage characters in some terminals.
3424 The issue was really that the \001 and \002 escapes must _only_ be
3427 The issue was really that the \001 and \002 escapes must _only_ be
3425 passed to input prompts (which call readline), but _never_ to
3428 passed to input prompts (which call readline), but _never_ to
3426 normal text to be printed on screen. I changed ColorANSI to have
3429 normal text to be printed on screen. I changed ColorANSI to have
3427 two classes: TermColors and InputTermColors, each with the
3430 two classes: TermColors and InputTermColors, each with the
3428 appropriate escapes for input prompts or normal text. The code in
3431 appropriate escapes for input prompts or normal text. The code in
3429 Prompts.py got slightly more complicated, but this very old and
3432 Prompts.py got slightly more complicated, but this very old and
3430 annoying bug is finally fixed.
3433 annoying bug is finally fixed.
3431
3434
3432 All the credit for nailing down the real origin of this problem
3435 All the credit for nailing down the real origin of this problem
3433 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3436 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3434 *Many* thanks to him for spending quite a bit of effort on this.
3437 *Many* thanks to him for spending quite a bit of effort on this.
3435
3438
3436 2003-03-05 *** Released version 0.2.15pre1
3439 2003-03-05 *** Released version 0.2.15pre1
3437
3440
3438 2003-03-03 Fernando Perez <fperez@colorado.edu>
3441 2003-03-03 Fernando Perez <fperez@colorado.edu>
3439
3442
3440 * IPython/FakeModule.py: Moved the former _FakeModule to a
3443 * IPython/FakeModule.py: Moved the former _FakeModule to a
3441 separate file, because it's also needed by Magic (to fix a similar
3444 separate file, because it's also needed by Magic (to fix a similar
3442 pickle-related issue in @run).
3445 pickle-related issue in @run).
3443
3446
3444 2003-03-02 Fernando Perez <fperez@colorado.edu>
3447 2003-03-02 Fernando Perez <fperez@colorado.edu>
3445
3448
3446 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3449 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3447 the autocall option at runtime.
3450 the autocall option at runtime.
3448 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3451 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3449 across Magic.py to start separating Magic from InteractiveShell.
3452 across Magic.py to start separating Magic from InteractiveShell.
3450 (Magic._ofind): Fixed to return proper namespace for dotted
3453 (Magic._ofind): Fixed to return proper namespace for dotted
3451 names. Before, a dotted name would always return 'not currently
3454 names. Before, a dotted name would always return 'not currently
3452 defined', because it would find the 'parent'. s.x would be found,
3455 defined', because it would find the 'parent'. s.x would be found,
3453 but since 'x' isn't defined by itself, it would get confused.
3456 but since 'x' isn't defined by itself, it would get confused.
3454 (Magic.magic_run): Fixed pickling problems reported by Ralf
3457 (Magic.magic_run): Fixed pickling problems reported by Ralf
3455 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3458 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3456 that I'd used when Mike Heeter reported similar issues at the
3459 that I'd used when Mike Heeter reported similar issues at the
3457 top-level, but now for @run. It boils down to injecting the
3460 top-level, but now for @run. It boils down to injecting the
3458 namespace where code is being executed with something that looks
3461 namespace where code is being executed with something that looks
3459 enough like a module to fool pickle.dump(). Since a pickle stores
3462 enough like a module to fool pickle.dump(). Since a pickle stores
3460 a named reference to the importing module, we need this for
3463 a named reference to the importing module, we need this for
3461 pickles to save something sensible.
3464 pickles to save something sensible.
3462
3465
3463 * IPython/ipmaker.py (make_IPython): added an autocall option.
3466 * IPython/ipmaker.py (make_IPython): added an autocall option.
3464
3467
3465 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3468 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3466 the auto-eval code. Now autocalling is an option, and the code is
3469 the auto-eval code. Now autocalling is an option, and the code is
3467 also vastly safer. There is no more eval() involved at all.
3470 also vastly safer. There is no more eval() involved at all.
3468
3471
3469 2003-03-01 Fernando Perez <fperez@colorado.edu>
3472 2003-03-01 Fernando Perez <fperez@colorado.edu>
3470
3473
3471 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3474 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3472 dict with named keys instead of a tuple.
3475 dict with named keys instead of a tuple.
3473
3476
3474 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3477 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3475
3478
3476 * setup.py (make_shortcut): Fixed message about directories
3479 * setup.py (make_shortcut): Fixed message about directories
3477 created during Windows installation (the directories were ok, just
3480 created during Windows installation (the directories were ok, just
3478 the printed message was misleading). Thanks to Chris Liechti
3481 the printed message was misleading). Thanks to Chris Liechti
3479 <cliechti-AT-gmx.net> for the heads up.
3482 <cliechti-AT-gmx.net> for the heads up.
3480
3483
3481 2003-02-21 Fernando Perez <fperez@colorado.edu>
3484 2003-02-21 Fernando Perez <fperez@colorado.edu>
3482
3485
3483 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3486 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3484 of ValueError exception when checking for auto-execution. This
3487 of ValueError exception when checking for auto-execution. This
3485 one is raised by things like Numeric arrays arr.flat when the
3488 one is raised by things like Numeric arrays arr.flat when the
3486 array is non-contiguous.
3489 array is non-contiguous.
3487
3490
3488 2003-01-31 Fernando Perez <fperez@colorado.edu>
3491 2003-01-31 Fernando Perez <fperez@colorado.edu>
3489
3492
3490 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3493 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3491 not return any value at all (even though the command would get
3494 not return any value at all (even though the command would get
3492 executed).
3495 executed).
3493 (xsys): Flush stdout right after printing the command to ensure
3496 (xsys): Flush stdout right after printing the command to ensure
3494 proper ordering of commands and command output in the total
3497 proper ordering of commands and command output in the total
3495 output.
3498 output.
3496 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3499 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3497 system/getoutput as defaults. The old ones are kept for
3500 system/getoutput as defaults. The old ones are kept for
3498 compatibility reasons, so no code which uses this library needs
3501 compatibility reasons, so no code which uses this library needs
3499 changing.
3502 changing.
3500
3503
3501 2003-01-27 *** Released version 0.2.14
3504 2003-01-27 *** Released version 0.2.14
3502
3505
3503 2003-01-25 Fernando Perez <fperez@colorado.edu>
3506 2003-01-25 Fernando Perez <fperez@colorado.edu>
3504
3507
3505 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3508 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3506 functions defined in previous edit sessions could not be re-edited
3509 functions defined in previous edit sessions could not be re-edited
3507 (because the temp files were immediately removed). Now temp files
3510 (because the temp files were immediately removed). Now temp files
3508 are removed only at IPython's exit.
3511 are removed only at IPython's exit.
3509 (Magic.magic_run): Improved @run to perform shell-like expansions
3512 (Magic.magic_run): Improved @run to perform shell-like expansions
3510 on its arguments (~users and $VARS). With this, @run becomes more
3513 on its arguments (~users and $VARS). With this, @run becomes more
3511 like a normal command-line.
3514 like a normal command-line.
3512
3515
3513 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3516 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3514 bugs related to embedding and cleaned up that code. A fairly
3517 bugs related to embedding and cleaned up that code. A fairly
3515 important one was the impossibility to access the global namespace
3518 important one was the impossibility to access the global namespace
3516 through the embedded IPython (only local variables were visible).
3519 through the embedded IPython (only local variables were visible).
3517
3520
3518 2003-01-14 Fernando Perez <fperez@colorado.edu>
3521 2003-01-14 Fernando Perez <fperez@colorado.edu>
3519
3522
3520 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3523 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3521 auto-calling to be a bit more conservative. Now it doesn't get
3524 auto-calling to be a bit more conservative. Now it doesn't get
3522 triggered if any of '!=()<>' are in the rest of the input line, to
3525 triggered if any of '!=()<>' are in the rest of the input line, to
3523 allow comparing callables. Thanks to Alex for the heads up.
3526 allow comparing callables. Thanks to Alex for the heads up.
3524
3527
3525 2003-01-07 Fernando Perez <fperez@colorado.edu>
3528 2003-01-07 Fernando Perez <fperez@colorado.edu>
3526
3529
3527 * IPython/genutils.py (page): fixed estimation of the number of
3530 * IPython/genutils.py (page): fixed estimation of the number of
3528 lines in a string to be paged to simply count newlines. This
3531 lines in a string to be paged to simply count newlines. This
3529 prevents over-guessing due to embedded escape sequences. A better
3532 prevents over-guessing due to embedded escape sequences. A better
3530 long-term solution would involve stripping out the control chars
3533 long-term solution would involve stripping out the control chars
3531 for the count, but it's potentially so expensive I just don't
3534 for the count, but it's potentially so expensive I just don't
3532 think it's worth doing.
3535 think it's worth doing.
3533
3536
3534 2002-12-19 *** Released version 0.2.14pre50
3537 2002-12-19 *** Released version 0.2.14pre50
3535
3538
3536 2002-12-19 Fernando Perez <fperez@colorado.edu>
3539 2002-12-19 Fernando Perez <fperez@colorado.edu>
3537
3540
3538 * tools/release (version): Changed release scripts to inform
3541 * tools/release (version): Changed release scripts to inform
3539 Andrea and build a NEWS file with a list of recent changes.
3542 Andrea and build a NEWS file with a list of recent changes.
3540
3543
3541 * IPython/ColorANSI.py (__all__): changed terminal detection
3544 * IPython/ColorANSI.py (__all__): changed terminal detection
3542 code. Seems to work better for xterms without breaking
3545 code. Seems to work better for xterms without breaking
3543 konsole. Will need more testing to determine if WinXP and Mac OSX
3546 konsole. Will need more testing to determine if WinXP and Mac OSX
3544 also work ok.
3547 also work ok.
3545
3548
3546 2002-12-18 *** Released version 0.2.14pre49
3549 2002-12-18 *** Released version 0.2.14pre49
3547
3550
3548 2002-12-18 Fernando Perez <fperez@colorado.edu>
3551 2002-12-18 Fernando Perez <fperez@colorado.edu>
3549
3552
3550 * Docs: added new info about Mac OSX, from Andrea.
3553 * Docs: added new info about Mac OSX, from Andrea.
3551
3554
3552 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3555 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3553 allow direct plotting of python strings whose format is the same
3556 allow direct plotting of python strings whose format is the same
3554 of gnuplot data files.
3557 of gnuplot data files.
3555
3558
3556 2002-12-16 Fernando Perez <fperez@colorado.edu>
3559 2002-12-16 Fernando Perez <fperez@colorado.edu>
3557
3560
3558 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3561 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3559 value of exit question to be acknowledged.
3562 value of exit question to be acknowledged.
3560
3563
3561 2002-12-03 Fernando Perez <fperez@colorado.edu>
3564 2002-12-03 Fernando Perez <fperez@colorado.edu>
3562
3565
3563 * IPython/ipmaker.py: removed generators, which had been added
3566 * IPython/ipmaker.py: removed generators, which had been added
3564 by mistake in an earlier debugging run. This was causing trouble
3567 by mistake in an earlier debugging run. This was causing trouble
3565 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3568 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3566 for pointing this out.
3569 for pointing this out.
3567
3570
3568 2002-11-17 Fernando Perez <fperez@colorado.edu>
3571 2002-11-17 Fernando Perez <fperez@colorado.edu>
3569
3572
3570 * Manual: updated the Gnuplot section.
3573 * Manual: updated the Gnuplot section.
3571
3574
3572 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3575 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3573 a much better split of what goes in Runtime and what goes in
3576 a much better split of what goes in Runtime and what goes in
3574 Interactive.
3577 Interactive.
3575
3578
3576 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3579 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3577 being imported from iplib.
3580 being imported from iplib.
3578
3581
3579 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3582 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3580 for command-passing. Now the global Gnuplot instance is called
3583 for command-passing. Now the global Gnuplot instance is called
3581 'gp' instead of 'g', which was really a far too fragile and
3584 'gp' instead of 'g', which was really a far too fragile and
3582 common name.
3585 common name.
3583
3586
3584 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3587 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3585 bounding boxes generated by Gnuplot for square plots.
3588 bounding boxes generated by Gnuplot for square plots.
3586
3589
3587 * IPython/genutils.py (popkey): new function added. I should
3590 * IPython/genutils.py (popkey): new function added. I should
3588 suggest this on c.l.py as a dict method, it seems useful.
3591 suggest this on c.l.py as a dict method, it seems useful.
3589
3592
3590 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3593 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3591 to transparently handle PostScript generation. MUCH better than
3594 to transparently handle PostScript generation. MUCH better than
3592 the previous plot_eps/replot_eps (which I removed now). The code
3595 the previous plot_eps/replot_eps (which I removed now). The code
3593 is also fairly clean and well documented now (including
3596 is also fairly clean and well documented now (including
3594 docstrings).
3597 docstrings).
3595
3598
3596 2002-11-13 Fernando Perez <fperez@colorado.edu>
3599 2002-11-13 Fernando Perez <fperez@colorado.edu>
3597
3600
3598 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3601 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3599 (inconsistent with options).
3602 (inconsistent with options).
3600
3603
3601 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3604 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3602 manually disabled, I don't know why. Fixed it.
3605 manually disabled, I don't know why. Fixed it.
3603 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3606 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3604 eps output.
3607 eps output.
3605
3608
3606 2002-11-12 Fernando Perez <fperez@colorado.edu>
3609 2002-11-12 Fernando Perez <fperez@colorado.edu>
3607
3610
3608 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3611 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3609 don't propagate up to caller. Fixes crash reported by François
3612 don't propagate up to caller. Fixes crash reported by François
3610 Pinard.
3613 Pinard.
3611
3614
3612 2002-11-09 Fernando Perez <fperez@colorado.edu>
3615 2002-11-09 Fernando Perez <fperez@colorado.edu>
3613
3616
3614 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3617 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3615 history file for new users.
3618 history file for new users.
3616 (make_IPython): fixed bug where initial install would leave the
3619 (make_IPython): fixed bug where initial install would leave the
3617 user running in the .ipython dir.
3620 user running in the .ipython dir.
3618 (make_IPython): fixed bug where config dir .ipython would be
3621 (make_IPython): fixed bug where config dir .ipython would be
3619 created regardless of the given -ipythondir option. Thanks to Cory
3622 created regardless of the given -ipythondir option. Thanks to Cory
3620 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3623 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3621
3624
3622 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3625 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3623 type confirmations. Will need to use it in all of IPython's code
3626 type confirmations. Will need to use it in all of IPython's code
3624 consistently.
3627 consistently.
3625
3628
3626 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3629 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3627 context to print 31 lines instead of the default 5. This will make
3630 context to print 31 lines instead of the default 5. This will make
3628 the crash reports extremely detailed in case the problem is in
3631 the crash reports extremely detailed in case the problem is in
3629 libraries I don't have access to.
3632 libraries I don't have access to.
3630
3633
3631 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3634 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3632 line of defense' code to still crash, but giving users fair
3635 line of defense' code to still crash, but giving users fair
3633 warning. I don't want internal errors to go unreported: if there's
3636 warning. I don't want internal errors to go unreported: if there's
3634 an internal problem, IPython should crash and generate a full
3637 an internal problem, IPython should crash and generate a full
3635 report.
3638 report.
3636
3639
3637 2002-11-08 Fernando Perez <fperez@colorado.edu>
3640 2002-11-08 Fernando Perez <fperez@colorado.edu>
3638
3641
3639 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3642 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3640 otherwise uncaught exceptions which can appear if people set
3643 otherwise uncaught exceptions which can appear if people set
3641 sys.stdout to something badly broken. Thanks to a crash report
3644 sys.stdout to something badly broken. Thanks to a crash report
3642 from henni-AT-mail.brainbot.com.
3645 from henni-AT-mail.brainbot.com.
3643
3646
3644 2002-11-04 Fernando Perez <fperez@colorado.edu>
3647 2002-11-04 Fernando Perez <fperez@colorado.edu>
3645
3648
3646 * IPython/iplib.py (InteractiveShell.interact): added
3649 * IPython/iplib.py (InteractiveShell.interact): added
3647 __IPYTHON__active to the builtins. It's a flag which goes on when
3650 __IPYTHON__active to the builtins. It's a flag which goes on when
3648 the interaction starts and goes off again when it stops. This
3651 the interaction starts and goes off again when it stops. This
3649 allows embedding code to detect being inside IPython. Before this
3652 allows embedding code to detect being inside IPython. Before this
3650 was done via __IPYTHON__, but that only shows that an IPython
3653 was done via __IPYTHON__, but that only shows that an IPython
3651 instance has been created.
3654 instance has been created.
3652
3655
3653 * IPython/Magic.py (Magic.magic_env): I realized that in a
3656 * IPython/Magic.py (Magic.magic_env): I realized that in a
3654 UserDict, instance.data holds the data as a normal dict. So I
3657 UserDict, instance.data holds the data as a normal dict. So I
3655 modified @env to return os.environ.data instead of rebuilding a
3658 modified @env to return os.environ.data instead of rebuilding a
3656 dict by hand.
3659 dict by hand.
3657
3660
3658 2002-11-02 Fernando Perez <fperez@colorado.edu>
3661 2002-11-02 Fernando Perez <fperez@colorado.edu>
3659
3662
3660 * IPython/genutils.py (warn): changed so that level 1 prints no
3663 * IPython/genutils.py (warn): changed so that level 1 prints no
3661 header. Level 2 is now the default (with 'WARNING' header, as
3664 header. Level 2 is now the default (with 'WARNING' header, as
3662 before). I think I tracked all places where changes were needed in
3665 before). I think I tracked all places where changes were needed in
3663 IPython, but outside code using the old level numbering may have
3666 IPython, but outside code using the old level numbering may have
3664 broken.
3667 broken.
3665
3668
3666 * IPython/iplib.py (InteractiveShell.runcode): added this to
3669 * IPython/iplib.py (InteractiveShell.runcode): added this to
3667 handle the tracebacks in SystemExit traps correctly. The previous
3670 handle the tracebacks in SystemExit traps correctly. The previous
3668 code (through interact) was printing more of the stack than
3671 code (through interact) was printing more of the stack than
3669 necessary, showing IPython internal code to the user.
3672 necessary, showing IPython internal code to the user.
3670
3673
3671 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3674 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3672 default. Now that the default at the confirmation prompt is yes,
3675 default. Now that the default at the confirmation prompt is yes,
3673 it's not so intrusive. François' argument that ipython sessions
3676 it's not so intrusive. François' argument that ipython sessions
3674 tend to be complex enough not to lose them from an accidental C-d,
3677 tend to be complex enough not to lose them from an accidental C-d,
3675 is a valid one.
3678 is a valid one.
3676
3679
3677 * IPython/iplib.py (InteractiveShell.interact): added a
3680 * IPython/iplib.py (InteractiveShell.interact): added a
3678 showtraceback() call to the SystemExit trap, and modified the exit
3681 showtraceback() call to the SystemExit trap, and modified the exit
3679 confirmation to have yes as the default.
3682 confirmation to have yes as the default.
3680
3683
3681 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3684 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3682 this file. It's been gone from the code for a long time, this was
3685 this file. It's been gone from the code for a long time, this was
3683 simply leftover junk.
3686 simply leftover junk.
3684
3687
3685 2002-11-01 Fernando Perez <fperez@colorado.edu>
3688 2002-11-01 Fernando Perez <fperez@colorado.edu>
3686
3689
3687 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3690 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3688 added. If set, IPython now traps EOF and asks for
3691 added. If set, IPython now traps EOF and asks for
3689 confirmation. After a request by François Pinard.
3692 confirmation. After a request by François Pinard.
3690
3693
3691 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3694 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3692 of @abort, and with a new (better) mechanism for handling the
3695 of @abort, and with a new (better) mechanism for handling the
3693 exceptions.
3696 exceptions.
3694
3697
3695 2002-10-27 Fernando Perez <fperez@colorado.edu>
3698 2002-10-27 Fernando Perez <fperez@colorado.edu>
3696
3699
3697 * IPython/usage.py (__doc__): updated the --help information and
3700 * IPython/usage.py (__doc__): updated the --help information and
3698 the ipythonrc file to indicate that -log generates
3701 the ipythonrc file to indicate that -log generates
3699 ./ipython.log. Also fixed the corresponding info in @logstart.
3702 ./ipython.log. Also fixed the corresponding info in @logstart.
3700 This and several other fixes in the manuals thanks to reports by
3703 This and several other fixes in the manuals thanks to reports by
3701 François Pinard <pinard-AT-iro.umontreal.ca>.
3704 François Pinard <pinard-AT-iro.umontreal.ca>.
3702
3705
3703 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3706 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3704 refer to @logstart (instead of @log, which doesn't exist).
3707 refer to @logstart (instead of @log, which doesn't exist).
3705
3708
3706 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3709 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3707 AttributeError crash. Thanks to Christopher Armstrong
3710 AttributeError crash. Thanks to Christopher Armstrong
3708 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3711 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3709 introduced recently (in 0.2.14pre37) with the fix to the eval
3712 introduced recently (in 0.2.14pre37) with the fix to the eval
3710 problem mentioned below.
3713 problem mentioned below.
3711
3714
3712 2002-10-17 Fernando Perez <fperez@colorado.edu>
3715 2002-10-17 Fernando Perez <fperez@colorado.edu>
3713
3716
3714 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3717 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3715 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3718 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3716
3719
3717 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3720 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3718 this function to fix a problem reported by Alex Schmolck. He saw
3721 this function to fix a problem reported by Alex Schmolck. He saw
3719 it with list comprehensions and generators, which were getting
3722 it with list comprehensions and generators, which were getting
3720 called twice. The real problem was an 'eval' call in testing for
3723 called twice. The real problem was an 'eval' call in testing for
3721 automagic which was evaluating the input line silently.
3724 automagic which was evaluating the input line silently.
3722
3725
3723 This is a potentially very nasty bug, if the input has side
3726 This is a potentially very nasty bug, if the input has side
3724 effects which must not be repeated. The code is much cleaner now,
3727 effects which must not be repeated. The code is much cleaner now,
3725 without any blanket 'except' left and with a regexp test for
3728 without any blanket 'except' left and with a regexp test for
3726 actual function names.
3729 actual function names.
3727
3730
3728 But an eval remains, which I'm not fully comfortable with. I just
3731 But an eval remains, which I'm not fully comfortable with. I just
3729 don't know how to find out if an expression could be a callable in
3732 don't know how to find out if an expression could be a callable in
3730 the user's namespace without doing an eval on the string. However
3733 the user's namespace without doing an eval on the string. However
3731 that string is now much more strictly checked so that no code
3734 that string is now much more strictly checked so that no code
3732 slips by, so the eval should only happen for things that can
3735 slips by, so the eval should only happen for things that can
3733 really be only function/method names.
3736 really be only function/method names.
3734
3737
3735 2002-10-15 Fernando Perez <fperez@colorado.edu>
3738 2002-10-15 Fernando Perez <fperez@colorado.edu>
3736
3739
3737 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3740 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3738 OSX information to main manual, removed README_Mac_OSX file from
3741 OSX information to main manual, removed README_Mac_OSX file from
3739 distribution. Also updated credits for recent additions.
3742 distribution. Also updated credits for recent additions.
3740
3743
3741 2002-10-10 Fernando Perez <fperez@colorado.edu>
3744 2002-10-10 Fernando Perez <fperez@colorado.edu>
3742
3745
3743 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3746 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3744 terminal-related issues. Many thanks to Andrea Riciputi
3747 terminal-related issues. Many thanks to Andrea Riciputi
3745 <andrea.riciputi-AT-libero.it> for writing it.
3748 <andrea.riciputi-AT-libero.it> for writing it.
3746
3749
3747 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3750 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3748 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3751 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3749
3752
3750 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3753 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3751 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3754 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3752 <syver-en-AT-online.no> who both submitted patches for this problem.
3755 <syver-en-AT-online.no> who both submitted patches for this problem.
3753
3756
3754 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3757 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3755 global embedding to make sure that things don't overwrite user
3758 global embedding to make sure that things don't overwrite user
3756 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3759 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3757
3760
3758 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3761 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3759 compatibility. Thanks to Hayden Callow
3762 compatibility. Thanks to Hayden Callow
3760 <h.callow-AT-elec.canterbury.ac.nz>
3763 <h.callow-AT-elec.canterbury.ac.nz>
3761
3764
3762 2002-10-04 Fernando Perez <fperez@colorado.edu>
3765 2002-10-04 Fernando Perez <fperez@colorado.edu>
3763
3766
3764 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3767 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3765 Gnuplot.File objects.
3768 Gnuplot.File objects.
3766
3769
3767 2002-07-23 Fernando Perez <fperez@colorado.edu>
3770 2002-07-23 Fernando Perez <fperez@colorado.edu>
3768
3771
3769 * IPython/genutils.py (timing): Added timings() and timing() for
3772 * IPython/genutils.py (timing): Added timings() and timing() for
3770 quick access to the most commonly needed data, the execution
3773 quick access to the most commonly needed data, the execution
3771 times. Old timing() renamed to timings_out().
3774 times. Old timing() renamed to timings_out().
3772
3775
3773 2002-07-18 Fernando Perez <fperez@colorado.edu>
3776 2002-07-18 Fernando Perez <fperez@colorado.edu>
3774
3777
3775 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3778 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3776 bug with nested instances disrupting the parent's tab completion.
3779 bug with nested instances disrupting the parent's tab completion.
3777
3780
3778 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3781 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3779 all_completions code to begin the emacs integration.
3782 all_completions code to begin the emacs integration.
3780
3783
3781 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3784 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3782 argument to allow titling individual arrays when plotting.
3785 argument to allow titling individual arrays when plotting.
3783
3786
3784 2002-07-15 Fernando Perez <fperez@colorado.edu>
3787 2002-07-15 Fernando Perez <fperez@colorado.edu>
3785
3788
3786 * setup.py (make_shortcut): changed to retrieve the value of
3789 * setup.py (make_shortcut): changed to retrieve the value of
3787 'Program Files' directory from the registry (this value changes in
3790 'Program Files' directory from the registry (this value changes in
3788 non-english versions of Windows). Thanks to Thomas Fanslau
3791 non-english versions of Windows). Thanks to Thomas Fanslau
3789 <tfanslau-AT-gmx.de> for the report.
3792 <tfanslau-AT-gmx.de> for the report.
3790
3793
3791 2002-07-10 Fernando Perez <fperez@colorado.edu>
3794 2002-07-10 Fernando Perez <fperez@colorado.edu>
3792
3795
3793 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3796 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3794 a bug in pdb, which crashes if a line with only whitespace is
3797 a bug in pdb, which crashes if a line with only whitespace is
3795 entered. Bug report submitted to sourceforge.
3798 entered. Bug report submitted to sourceforge.
3796
3799
3797 2002-07-09 Fernando Perez <fperez@colorado.edu>
3800 2002-07-09 Fernando Perez <fperez@colorado.edu>
3798
3801
3799 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3802 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3800 reporting exceptions (it's a bug in inspect.py, I just set a
3803 reporting exceptions (it's a bug in inspect.py, I just set a
3801 workaround).
3804 workaround).
3802
3805
3803 2002-07-08 Fernando Perez <fperez@colorado.edu>
3806 2002-07-08 Fernando Perez <fperez@colorado.edu>
3804
3807
3805 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3808 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3806 __IPYTHON__ in __builtins__ to show up in user_ns.
3809 __IPYTHON__ in __builtins__ to show up in user_ns.
3807
3810
3808 2002-07-03 Fernando Perez <fperez@colorado.edu>
3811 2002-07-03 Fernando Perez <fperez@colorado.edu>
3809
3812
3810 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3813 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3811 name from @gp_set_instance to @gp_set_default.
3814 name from @gp_set_instance to @gp_set_default.
3812
3815
3813 * IPython/ipmaker.py (make_IPython): default editor value set to
3816 * IPython/ipmaker.py (make_IPython): default editor value set to
3814 '0' (a string), to match the rc file. Otherwise will crash when
3817 '0' (a string), to match the rc file. Otherwise will crash when
3815 .strip() is called on it.
3818 .strip() is called on it.
3816
3819
3817
3820
3818 2002-06-28 Fernando Perez <fperez@colorado.edu>
3821 2002-06-28 Fernando Perez <fperez@colorado.edu>
3819
3822
3820 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3823 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3821 of files in current directory when a file is executed via
3824 of files in current directory when a file is executed via
3822 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3825 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3823
3826
3824 * setup.py (manfiles): fix for rpm builds, submitted by RA
3827 * setup.py (manfiles): fix for rpm builds, submitted by RA
3825 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3828 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3826
3829
3827 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3830 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3828 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3831 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3829 string!). A. Schmolck caught this one.
3832 string!). A. Schmolck caught this one.
3830
3833
3831 2002-06-27 Fernando Perez <fperez@colorado.edu>
3834 2002-06-27 Fernando Perez <fperez@colorado.edu>
3832
3835
3833 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3836 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3834 defined files at the cmd line. __name__ wasn't being set to
3837 defined files at the cmd line. __name__ wasn't being set to
3835 __main__.
3838 __main__.
3836
3839
3837 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3840 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3838 regular lists and tuples besides Numeric arrays.
3841 regular lists and tuples besides Numeric arrays.
3839
3842
3840 * IPython/Prompts.py (CachedOutput.__call__): Added output
3843 * IPython/Prompts.py (CachedOutput.__call__): Added output
3841 supression for input ending with ';'. Similar to Mathematica and
3844 supression for input ending with ';'. Similar to Mathematica and
3842 Matlab. The _* vars and Out[] list are still updated, just like
3845 Matlab. The _* vars and Out[] list are still updated, just like
3843 Mathematica behaves.
3846 Mathematica behaves.
3844
3847
3845 2002-06-25 Fernando Perez <fperez@colorado.edu>
3848 2002-06-25 Fernando Perez <fperez@colorado.edu>
3846
3849
3847 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3850 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3848 .ini extensions for profiels under Windows.
3851 .ini extensions for profiels under Windows.
3849
3852
3850 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3853 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3851 string form. Fix contributed by Alexander Schmolck
3854 string form. Fix contributed by Alexander Schmolck
3852 <a.schmolck-AT-gmx.net>
3855 <a.schmolck-AT-gmx.net>
3853
3856
3854 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3857 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3855 pre-configured Gnuplot instance.
3858 pre-configured Gnuplot instance.
3856
3859
3857 2002-06-21 Fernando Perez <fperez@colorado.edu>
3860 2002-06-21 Fernando Perez <fperez@colorado.edu>
3858
3861
3859 * IPython/numutils.py (exp_safe): new function, works around the
3862 * IPython/numutils.py (exp_safe): new function, works around the
3860 underflow problems in Numeric.
3863 underflow problems in Numeric.
3861 (log2): New fn. Safe log in base 2: returns exact integer answer
3864 (log2): New fn. Safe log in base 2: returns exact integer answer
3862 for exact integer powers of 2.
3865 for exact integer powers of 2.
3863
3866
3864 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3867 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3865 properly.
3868 properly.
3866
3869
3867 2002-06-20 Fernando Perez <fperez@colorado.edu>
3870 2002-06-20 Fernando Perez <fperez@colorado.edu>
3868
3871
3869 * IPython/genutils.py (timing): new function like
3872 * IPython/genutils.py (timing): new function like
3870 Mathematica's. Similar to time_test, but returns more info.
3873 Mathematica's. Similar to time_test, but returns more info.
3871
3874
3872 2002-06-18 Fernando Perez <fperez@colorado.edu>
3875 2002-06-18 Fernando Perez <fperez@colorado.edu>
3873
3876
3874 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3877 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3875 according to Mike Heeter's suggestions.
3878 according to Mike Heeter's suggestions.
3876
3879
3877 2002-06-16 Fernando Perez <fperez@colorado.edu>
3880 2002-06-16 Fernando Perez <fperez@colorado.edu>
3878
3881
3879 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3882 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3880 system. GnuplotMagic is gone as a user-directory option. New files
3883 system. GnuplotMagic is gone as a user-directory option. New files
3881 make it easier to use all the gnuplot stuff both from external
3884 make it easier to use all the gnuplot stuff both from external
3882 programs as well as from IPython. Had to rewrite part of
3885 programs as well as from IPython. Had to rewrite part of
3883 hardcopy() b/c of a strange bug: often the ps files simply don't
3886 hardcopy() b/c of a strange bug: often the ps files simply don't
3884 get created, and require a repeat of the command (often several
3887 get created, and require a repeat of the command (often several
3885 times).
3888 times).
3886
3889
3887 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3890 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3888 resolve output channel at call time, so that if sys.stderr has
3891 resolve output channel at call time, so that if sys.stderr has
3889 been redirected by user this gets honored.
3892 been redirected by user this gets honored.
3890
3893
3891 2002-06-13 Fernando Perez <fperez@colorado.edu>
3894 2002-06-13 Fernando Perez <fperez@colorado.edu>
3892
3895
3893 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3896 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3894 IPShell. Kept a copy with the old names to avoid breaking people's
3897 IPShell. Kept a copy with the old names to avoid breaking people's
3895 embedded code.
3898 embedded code.
3896
3899
3897 * IPython/ipython: simplified it to the bare minimum after
3900 * IPython/ipython: simplified it to the bare minimum after
3898 Holger's suggestions. Added info about how to use it in
3901 Holger's suggestions. Added info about how to use it in
3899 PYTHONSTARTUP.
3902 PYTHONSTARTUP.
3900
3903
3901 * IPython/Shell.py (IPythonShell): changed the options passing
3904 * IPython/Shell.py (IPythonShell): changed the options passing
3902 from a string with funky %s replacements to a straight list. Maybe
3905 from a string with funky %s replacements to a straight list. Maybe
3903 a bit more typing, but it follows sys.argv conventions, so there's
3906 a bit more typing, but it follows sys.argv conventions, so there's
3904 less special-casing to remember.
3907 less special-casing to remember.
3905
3908
3906 2002-06-12 Fernando Perez <fperez@colorado.edu>
3909 2002-06-12 Fernando Perez <fperez@colorado.edu>
3907
3910
3908 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3911 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3909 command. Thanks to a suggestion by Mike Heeter.
3912 command. Thanks to a suggestion by Mike Heeter.
3910 (Magic.magic_pfile): added behavior to look at filenames if given
3913 (Magic.magic_pfile): added behavior to look at filenames if given
3911 arg is not a defined object.
3914 arg is not a defined object.
3912 (Magic.magic_save): New @save function to save code snippets. Also
3915 (Magic.magic_save): New @save function to save code snippets. Also
3913 a Mike Heeter idea.
3916 a Mike Heeter idea.
3914
3917
3915 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3918 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3916 plot() and replot(). Much more convenient now, especially for
3919 plot() and replot(). Much more convenient now, especially for
3917 interactive use.
3920 interactive use.
3918
3921
3919 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3922 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3920 filenames.
3923 filenames.
3921
3924
3922 2002-06-02 Fernando Perez <fperez@colorado.edu>
3925 2002-06-02 Fernando Perez <fperez@colorado.edu>
3923
3926
3924 * IPython/Struct.py (Struct.__init__): modified to admit
3927 * IPython/Struct.py (Struct.__init__): modified to admit
3925 initialization via another struct.
3928 initialization via another struct.
3926
3929
3927 * IPython/genutils.py (SystemExec.__init__): New stateful
3930 * IPython/genutils.py (SystemExec.__init__): New stateful
3928 interface to xsys and bq. Useful for writing system scripts.
3931 interface to xsys and bq. Useful for writing system scripts.
3929
3932
3930 2002-05-30 Fernando Perez <fperez@colorado.edu>
3933 2002-05-30 Fernando Perez <fperez@colorado.edu>
3931
3934
3932 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3935 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3933 documents. This will make the user download smaller (it's getting
3936 documents. This will make the user download smaller (it's getting
3934 too big).
3937 too big).
3935
3938
3936 2002-05-29 Fernando Perez <fperez@colorado.edu>
3939 2002-05-29 Fernando Perez <fperez@colorado.edu>
3937
3940
3938 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3941 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3939 fix problems with shelve and pickle. Seems to work, but I don't
3942 fix problems with shelve and pickle. Seems to work, but I don't
3940 know if corner cases break it. Thanks to Mike Heeter
3943 know if corner cases break it. Thanks to Mike Heeter
3941 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3944 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3942
3945
3943 2002-05-24 Fernando Perez <fperez@colorado.edu>
3946 2002-05-24 Fernando Perez <fperez@colorado.edu>
3944
3947
3945 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3948 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3946 macros having broken.
3949 macros having broken.
3947
3950
3948 2002-05-21 Fernando Perez <fperez@colorado.edu>
3951 2002-05-21 Fernando Perez <fperez@colorado.edu>
3949
3952
3950 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3953 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3951 introduced logging bug: all history before logging started was
3954 introduced logging bug: all history before logging started was
3952 being written one character per line! This came from the redesign
3955 being written one character per line! This came from the redesign
3953 of the input history as a special list which slices to strings,
3956 of the input history as a special list which slices to strings,
3954 not to lists.
3957 not to lists.
3955
3958
3956 2002-05-20 Fernando Perez <fperez@colorado.edu>
3959 2002-05-20 Fernando Perez <fperez@colorado.edu>
3957
3960
3958 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3961 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3959 be an attribute of all classes in this module. The design of these
3962 be an attribute of all classes in this module. The design of these
3960 classes needs some serious overhauling.
3963 classes needs some serious overhauling.
3961
3964
3962 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3965 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3963 which was ignoring '_' in option names.
3966 which was ignoring '_' in option names.
3964
3967
3965 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3968 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3966 'Verbose_novars' to 'Context' and made it the new default. It's a
3969 'Verbose_novars' to 'Context' and made it the new default. It's a
3967 bit more readable and also safer than verbose.
3970 bit more readable and also safer than verbose.
3968
3971
3969 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3972 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3970 triple-quoted strings.
3973 triple-quoted strings.
3971
3974
3972 * IPython/OInspect.py (__all__): new module exposing the object
3975 * IPython/OInspect.py (__all__): new module exposing the object
3973 introspection facilities. Now the corresponding magics are dummy
3976 introspection facilities. Now the corresponding magics are dummy
3974 wrappers around this. Having this module will make it much easier
3977 wrappers around this. Having this module will make it much easier
3975 to put these functions into our modified pdb.
3978 to put these functions into our modified pdb.
3976 This new object inspector system uses the new colorizing module,
3979 This new object inspector system uses the new colorizing module,
3977 so source code and other things are nicely syntax highlighted.
3980 so source code and other things are nicely syntax highlighted.
3978
3981
3979 2002-05-18 Fernando Perez <fperez@colorado.edu>
3982 2002-05-18 Fernando Perez <fperez@colorado.edu>
3980
3983
3981 * IPython/ColorANSI.py: Split the coloring tools into a separate
3984 * IPython/ColorANSI.py: Split the coloring tools into a separate
3982 module so I can use them in other code easier (they were part of
3985 module so I can use them in other code easier (they were part of
3983 ultraTB).
3986 ultraTB).
3984
3987
3985 2002-05-17 Fernando Perez <fperez@colorado.edu>
3988 2002-05-17 Fernando Perez <fperez@colorado.edu>
3986
3989
3987 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3990 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3988 fixed it to set the global 'g' also to the called instance, as
3991 fixed it to set the global 'g' also to the called instance, as
3989 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3992 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3990 user's 'g' variables).
3993 user's 'g' variables).
3991
3994
3992 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3995 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3993 global variables (aliases to _ih,_oh) so that users which expect
3996 global variables (aliases to _ih,_oh) so that users which expect
3994 In[5] or Out[7] to work aren't unpleasantly surprised.
3997 In[5] or Out[7] to work aren't unpleasantly surprised.
3995 (InputList.__getslice__): new class to allow executing slices of
3998 (InputList.__getslice__): new class to allow executing slices of
3996 input history directly. Very simple class, complements the use of
3999 input history directly. Very simple class, complements the use of
3997 macros.
4000 macros.
3998
4001
3999 2002-05-16 Fernando Perez <fperez@colorado.edu>
4002 2002-05-16 Fernando Perez <fperez@colorado.edu>
4000
4003
4001 * setup.py (docdirbase): make doc directory be just doc/IPython
4004 * setup.py (docdirbase): make doc directory be just doc/IPython
4002 without version numbers, it will reduce clutter for users.
4005 without version numbers, it will reduce clutter for users.
4003
4006
4004 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4007 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4005 execfile call to prevent possible memory leak. See for details:
4008 execfile call to prevent possible memory leak. See for details:
4006 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4009 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4007
4010
4008 2002-05-15 Fernando Perez <fperez@colorado.edu>
4011 2002-05-15 Fernando Perez <fperez@colorado.edu>
4009
4012
4010 * IPython/Magic.py (Magic.magic_psource): made the object
4013 * IPython/Magic.py (Magic.magic_psource): made the object
4011 introspection names be more standard: pdoc, pdef, pfile and
4014 introspection names be more standard: pdoc, pdef, pfile and
4012 psource. They all print/page their output, and it makes
4015 psource. They all print/page their output, and it makes
4013 remembering them easier. Kept old names for compatibility as
4016 remembering them easier. Kept old names for compatibility as
4014 aliases.
4017 aliases.
4015
4018
4016 2002-05-14 Fernando Perez <fperez@colorado.edu>
4019 2002-05-14 Fernando Perez <fperez@colorado.edu>
4017
4020
4018 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4021 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4019 what the mouse problem was. The trick is to use gnuplot with temp
4022 what the mouse problem was. The trick is to use gnuplot with temp
4020 files and NOT with pipes (for data communication), because having
4023 files and NOT with pipes (for data communication), because having
4021 both pipes and the mouse on is bad news.
4024 both pipes and the mouse on is bad news.
4022
4025
4023 2002-05-13 Fernando Perez <fperez@colorado.edu>
4026 2002-05-13 Fernando Perez <fperez@colorado.edu>
4024
4027
4025 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4028 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4026 bug. Information would be reported about builtins even when
4029 bug. Information would be reported about builtins even when
4027 user-defined functions overrode them.
4030 user-defined functions overrode them.
4028
4031
4029 2002-05-11 Fernando Perez <fperez@colorado.edu>
4032 2002-05-11 Fernando Perez <fperez@colorado.edu>
4030
4033
4031 * IPython/__init__.py (__all__): removed FlexCompleter from
4034 * IPython/__init__.py (__all__): removed FlexCompleter from
4032 __all__ so that things don't fail in platforms without readline.
4035 __all__ so that things don't fail in platforms without readline.
4033
4036
4034 2002-05-10 Fernando Perez <fperez@colorado.edu>
4037 2002-05-10 Fernando Perez <fperez@colorado.edu>
4035
4038
4036 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4039 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4037 it requires Numeric, effectively making Numeric a dependency for
4040 it requires Numeric, effectively making Numeric a dependency for
4038 IPython.
4041 IPython.
4039
4042
4040 * Released 0.2.13
4043 * Released 0.2.13
4041
4044
4042 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4045 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4043 profiler interface. Now all the major options from the profiler
4046 profiler interface. Now all the major options from the profiler
4044 module are directly supported in IPython, both for single
4047 module are directly supported in IPython, both for single
4045 expressions (@prun) and for full programs (@run -p).
4048 expressions (@prun) and for full programs (@run -p).
4046
4049
4047 2002-05-09 Fernando Perez <fperez@colorado.edu>
4050 2002-05-09 Fernando Perez <fperez@colorado.edu>
4048
4051
4049 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4052 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4050 magic properly formatted for screen.
4053 magic properly formatted for screen.
4051
4054
4052 * setup.py (make_shortcut): Changed things to put pdf version in
4055 * setup.py (make_shortcut): Changed things to put pdf version in
4053 doc/ instead of doc/manual (had to change lyxport a bit).
4056 doc/ instead of doc/manual (had to change lyxport a bit).
4054
4057
4055 * IPython/Magic.py (Profile.string_stats): made profile runs go
4058 * IPython/Magic.py (Profile.string_stats): made profile runs go
4056 through pager (they are long and a pager allows searching, saving,
4059 through pager (they are long and a pager allows searching, saving,
4057 etc.)
4060 etc.)
4058
4061
4059 2002-05-08 Fernando Perez <fperez@colorado.edu>
4062 2002-05-08 Fernando Perez <fperez@colorado.edu>
4060
4063
4061 * Released 0.2.12
4064 * Released 0.2.12
4062
4065
4063 2002-05-06 Fernando Perez <fperez@colorado.edu>
4066 2002-05-06 Fernando Perez <fperez@colorado.edu>
4064
4067
4065 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4068 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4066 introduced); 'hist n1 n2' was broken.
4069 introduced); 'hist n1 n2' was broken.
4067 (Magic.magic_pdb): added optional on/off arguments to @pdb
4070 (Magic.magic_pdb): added optional on/off arguments to @pdb
4068 (Magic.magic_run): added option -i to @run, which executes code in
4071 (Magic.magic_run): added option -i to @run, which executes code in
4069 the IPython namespace instead of a clean one. Also added @irun as
4072 the IPython namespace instead of a clean one. Also added @irun as
4070 an alias to @run -i.
4073 an alias to @run -i.
4071
4074
4072 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4075 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4073 fixed (it didn't really do anything, the namespaces were wrong).
4076 fixed (it didn't really do anything, the namespaces were wrong).
4074
4077
4075 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4078 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4076
4079
4077 * IPython/__init__.py (__all__): Fixed package namespace, now
4080 * IPython/__init__.py (__all__): Fixed package namespace, now
4078 'import IPython' does give access to IPython.<all> as
4081 'import IPython' does give access to IPython.<all> as
4079 expected. Also renamed __release__ to Release.
4082 expected. Also renamed __release__ to Release.
4080
4083
4081 * IPython/Debugger.py (__license__): created new Pdb class which
4084 * IPython/Debugger.py (__license__): created new Pdb class which
4082 functions like a drop-in for the normal pdb.Pdb but does NOT
4085 functions like a drop-in for the normal pdb.Pdb but does NOT
4083 import readline by default. This way it doesn't muck up IPython's
4086 import readline by default. This way it doesn't muck up IPython's
4084 readline handling, and now tab-completion finally works in the
4087 readline handling, and now tab-completion finally works in the
4085 debugger -- sort of. It completes things globally visible, but the
4088 debugger -- sort of. It completes things globally visible, but the
4086 completer doesn't track the stack as pdb walks it. That's a bit
4089 completer doesn't track the stack as pdb walks it. That's a bit
4087 tricky, and I'll have to implement it later.
4090 tricky, and I'll have to implement it later.
4088
4091
4089 2002-05-05 Fernando Perez <fperez@colorado.edu>
4092 2002-05-05 Fernando Perez <fperez@colorado.edu>
4090
4093
4091 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4094 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4092 magic docstrings when printed via ? (explicit \'s were being
4095 magic docstrings when printed via ? (explicit \'s were being
4093 printed).
4096 printed).
4094
4097
4095 * IPython/ipmaker.py (make_IPython): fixed namespace
4098 * IPython/ipmaker.py (make_IPython): fixed namespace
4096 identification bug. Now variables loaded via logs or command-line
4099 identification bug. Now variables loaded via logs or command-line
4097 files are recognized in the interactive namespace by @who.
4100 files are recognized in the interactive namespace by @who.
4098
4101
4099 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4102 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4100 log replay system stemming from the string form of Structs.
4103 log replay system stemming from the string form of Structs.
4101
4104
4102 * IPython/Magic.py (Macro.__init__): improved macros to properly
4105 * IPython/Magic.py (Macro.__init__): improved macros to properly
4103 handle magic commands in them.
4106 handle magic commands in them.
4104 (Magic.magic_logstart): usernames are now expanded so 'logstart
4107 (Magic.magic_logstart): usernames are now expanded so 'logstart
4105 ~/mylog' now works.
4108 ~/mylog' now works.
4106
4109
4107 * IPython/iplib.py (complete): fixed bug where paths starting with
4110 * IPython/iplib.py (complete): fixed bug where paths starting with
4108 '/' would be completed as magic names.
4111 '/' would be completed as magic names.
4109
4112
4110 2002-05-04 Fernando Perez <fperez@colorado.edu>
4113 2002-05-04 Fernando Perez <fperez@colorado.edu>
4111
4114
4112 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4115 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4113 allow running full programs under the profiler's control.
4116 allow running full programs under the profiler's control.
4114
4117
4115 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4118 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4116 mode to report exceptions verbosely but without formatting
4119 mode to report exceptions verbosely but without formatting
4117 variables. This addresses the issue of ipython 'freezing' (it's
4120 variables. This addresses the issue of ipython 'freezing' (it's
4118 not frozen, but caught in an expensive formatting loop) when huge
4121 not frozen, but caught in an expensive formatting loop) when huge
4119 variables are in the context of an exception.
4122 variables are in the context of an exception.
4120 (VerboseTB.text): Added '--->' markers at line where exception was
4123 (VerboseTB.text): Added '--->' markers at line where exception was
4121 triggered. Much clearer to read, especially in NoColor modes.
4124 triggered. Much clearer to read, especially in NoColor modes.
4122
4125
4123 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4126 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4124 implemented in reverse when changing to the new parse_options().
4127 implemented in reverse when changing to the new parse_options().
4125
4128
4126 2002-05-03 Fernando Perez <fperez@colorado.edu>
4129 2002-05-03 Fernando Perez <fperez@colorado.edu>
4127
4130
4128 * IPython/Magic.py (Magic.parse_options): new function so that
4131 * IPython/Magic.py (Magic.parse_options): new function so that
4129 magics can parse options easier.
4132 magics can parse options easier.
4130 (Magic.magic_prun): new function similar to profile.run(),
4133 (Magic.magic_prun): new function similar to profile.run(),
4131 suggested by Chris Hart.
4134 suggested by Chris Hart.
4132 (Magic.magic_cd): fixed behavior so that it only changes if
4135 (Magic.magic_cd): fixed behavior so that it only changes if
4133 directory actually is in history.
4136 directory actually is in history.
4134
4137
4135 * IPython/usage.py (__doc__): added information about potential
4138 * IPython/usage.py (__doc__): added information about potential
4136 slowness of Verbose exception mode when there are huge data
4139 slowness of Verbose exception mode when there are huge data
4137 structures to be formatted (thanks to Archie Paulson).
4140 structures to be formatted (thanks to Archie Paulson).
4138
4141
4139 * IPython/ipmaker.py (make_IPython): Changed default logging
4142 * IPython/ipmaker.py (make_IPython): Changed default logging
4140 (when simply called with -log) to use curr_dir/ipython.log in
4143 (when simply called with -log) to use curr_dir/ipython.log in
4141 rotate mode. Fixed crash which was occuring with -log before
4144 rotate mode. Fixed crash which was occuring with -log before
4142 (thanks to Jim Boyle).
4145 (thanks to Jim Boyle).
4143
4146
4144 2002-05-01 Fernando Perez <fperez@colorado.edu>
4147 2002-05-01 Fernando Perez <fperez@colorado.edu>
4145
4148
4146 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4149 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4147 was nasty -- though somewhat of a corner case).
4150 was nasty -- though somewhat of a corner case).
4148
4151
4149 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4152 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4150 text (was a bug).
4153 text (was a bug).
4151
4154
4152 2002-04-30 Fernando Perez <fperez@colorado.edu>
4155 2002-04-30 Fernando Perez <fperez@colorado.edu>
4153
4156
4154 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4157 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4155 a print after ^D or ^C from the user so that the In[] prompt
4158 a print after ^D or ^C from the user so that the In[] prompt
4156 doesn't over-run the gnuplot one.
4159 doesn't over-run the gnuplot one.
4157
4160
4158 2002-04-29 Fernando Perez <fperez@colorado.edu>
4161 2002-04-29 Fernando Perez <fperez@colorado.edu>
4159
4162
4160 * Released 0.2.10
4163 * Released 0.2.10
4161
4164
4162 * IPython/__release__.py (version): get date dynamically.
4165 * IPython/__release__.py (version): get date dynamically.
4163
4166
4164 * Misc. documentation updates thanks to Arnd's comments. Also ran
4167 * Misc. documentation updates thanks to Arnd's comments. Also ran
4165 a full spellcheck on the manual (hadn't been done in a while).
4168 a full spellcheck on the manual (hadn't been done in a while).
4166
4169
4167 2002-04-27 Fernando Perez <fperez@colorado.edu>
4170 2002-04-27 Fernando Perez <fperez@colorado.edu>
4168
4171
4169 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4172 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4170 starting a log in mid-session would reset the input history list.
4173 starting a log in mid-session would reset the input history list.
4171
4174
4172 2002-04-26 Fernando Perez <fperez@colorado.edu>
4175 2002-04-26 Fernando Perez <fperez@colorado.edu>
4173
4176
4174 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4177 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4175 all files were being included in an update. Now anything in
4178 all files were being included in an update. Now anything in
4176 UserConfig that matches [A-Za-z]*.py will go (this excludes
4179 UserConfig that matches [A-Za-z]*.py will go (this excludes
4177 __init__.py)
4180 __init__.py)
4178
4181
4179 2002-04-25 Fernando Perez <fperez@colorado.edu>
4182 2002-04-25 Fernando Perez <fperez@colorado.edu>
4180
4183
4181 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4184 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4182 to __builtins__ so that any form of embedded or imported code can
4185 to __builtins__ so that any form of embedded or imported code can
4183 test for being inside IPython.
4186 test for being inside IPython.
4184
4187
4185 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4188 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4186 changed to GnuplotMagic because it's now an importable module,
4189 changed to GnuplotMagic because it's now an importable module,
4187 this makes the name follow that of the standard Gnuplot module.
4190 this makes the name follow that of the standard Gnuplot module.
4188 GnuplotMagic can now be loaded at any time in mid-session.
4191 GnuplotMagic can now be loaded at any time in mid-session.
4189
4192
4190 2002-04-24 Fernando Perez <fperez@colorado.edu>
4193 2002-04-24 Fernando Perez <fperez@colorado.edu>
4191
4194
4192 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4195 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4193 the globals (IPython has its own namespace) and the
4196 the globals (IPython has its own namespace) and the
4194 PhysicalQuantity stuff is much better anyway.
4197 PhysicalQuantity stuff is much better anyway.
4195
4198
4196 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4199 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4197 embedding example to standard user directory for
4200 embedding example to standard user directory for
4198 distribution. Also put it in the manual.
4201 distribution. Also put it in the manual.
4199
4202
4200 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4203 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4201 instance as first argument (so it doesn't rely on some obscure
4204 instance as first argument (so it doesn't rely on some obscure
4202 hidden global).
4205 hidden global).
4203
4206
4204 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4207 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4205 delimiters. While it prevents ().TAB from working, it allows
4208 delimiters. While it prevents ().TAB from working, it allows
4206 completions in open (... expressions. This is by far a more common
4209 completions in open (... expressions. This is by far a more common
4207 case.
4210 case.
4208
4211
4209 2002-04-23 Fernando Perez <fperez@colorado.edu>
4212 2002-04-23 Fernando Perez <fperez@colorado.edu>
4210
4213
4211 * IPython/Extensions/InterpreterPasteInput.py: new
4214 * IPython/Extensions/InterpreterPasteInput.py: new
4212 syntax-processing module for pasting lines with >>> or ... at the
4215 syntax-processing module for pasting lines with >>> or ... at the
4213 start.
4216 start.
4214
4217
4215 * IPython/Extensions/PhysicalQ_Interactive.py
4218 * IPython/Extensions/PhysicalQ_Interactive.py
4216 (PhysicalQuantityInteractive.__int__): fixed to work with either
4219 (PhysicalQuantityInteractive.__int__): fixed to work with either
4217 Numeric or math.
4220 Numeric or math.
4218
4221
4219 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4222 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4220 provided profiles. Now we have:
4223 provided profiles. Now we have:
4221 -math -> math module as * and cmath with its own namespace.
4224 -math -> math module as * and cmath with its own namespace.
4222 -numeric -> Numeric as *, plus gnuplot & grace
4225 -numeric -> Numeric as *, plus gnuplot & grace
4223 -physics -> same as before
4226 -physics -> same as before
4224
4227
4225 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4228 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4226 user-defined magics wouldn't be found by @magic if they were
4229 user-defined magics wouldn't be found by @magic if they were
4227 defined as class methods. Also cleaned up the namespace search
4230 defined as class methods. Also cleaned up the namespace search
4228 logic and the string building (to use %s instead of many repeated
4231 logic and the string building (to use %s instead of many repeated
4229 string adds).
4232 string adds).
4230
4233
4231 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4234 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4232 of user-defined magics to operate with class methods (cleaner, in
4235 of user-defined magics to operate with class methods (cleaner, in
4233 line with the gnuplot code).
4236 line with the gnuplot code).
4234
4237
4235 2002-04-22 Fernando Perez <fperez@colorado.edu>
4238 2002-04-22 Fernando Perez <fperez@colorado.edu>
4236
4239
4237 * setup.py: updated dependency list so that manual is updated when
4240 * setup.py: updated dependency list so that manual is updated when
4238 all included files change.
4241 all included files change.
4239
4242
4240 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4243 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4241 the delimiter removal option (the fix is ugly right now).
4244 the delimiter removal option (the fix is ugly right now).
4242
4245
4243 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4246 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4244 all of the math profile (quicker loading, no conflict between
4247 all of the math profile (quicker loading, no conflict between
4245 g-9.8 and g-gnuplot).
4248 g-9.8 and g-gnuplot).
4246
4249
4247 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4250 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4248 name of post-mortem files to IPython_crash_report.txt.
4251 name of post-mortem files to IPython_crash_report.txt.
4249
4252
4250 * Cleanup/update of the docs. Added all the new readline info and
4253 * Cleanup/update of the docs. Added all the new readline info and
4251 formatted all lists as 'real lists'.
4254 formatted all lists as 'real lists'.
4252
4255
4253 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4256 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4254 tab-completion options, since the full readline parse_and_bind is
4257 tab-completion options, since the full readline parse_and_bind is
4255 now accessible.
4258 now accessible.
4256
4259
4257 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4260 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4258 handling of readline options. Now users can specify any string to
4261 handling of readline options. Now users can specify any string to
4259 be passed to parse_and_bind(), as well as the delimiters to be
4262 be passed to parse_and_bind(), as well as the delimiters to be
4260 removed.
4263 removed.
4261 (InteractiveShell.__init__): Added __name__ to the global
4264 (InteractiveShell.__init__): Added __name__ to the global
4262 namespace so that things like Itpl which rely on its existence
4265 namespace so that things like Itpl which rely on its existence
4263 don't crash.
4266 don't crash.
4264 (InteractiveShell._prefilter): Defined the default with a _ so
4267 (InteractiveShell._prefilter): Defined the default with a _ so
4265 that prefilter() is easier to override, while the default one
4268 that prefilter() is easier to override, while the default one
4266 remains available.
4269 remains available.
4267
4270
4268 2002-04-18 Fernando Perez <fperez@colorado.edu>
4271 2002-04-18 Fernando Perez <fperez@colorado.edu>
4269
4272
4270 * Added information about pdb in the docs.
4273 * Added information about pdb in the docs.
4271
4274
4272 2002-04-17 Fernando Perez <fperez@colorado.edu>
4275 2002-04-17 Fernando Perez <fperez@colorado.edu>
4273
4276
4274 * IPython/ipmaker.py (make_IPython): added rc_override option to
4277 * IPython/ipmaker.py (make_IPython): added rc_override option to
4275 allow passing config options at creation time which may override
4278 allow passing config options at creation time which may override
4276 anything set in the config files or command line. This is
4279 anything set in the config files or command line. This is
4277 particularly useful for configuring embedded instances.
4280 particularly useful for configuring embedded instances.
4278
4281
4279 2002-04-15 Fernando Perez <fperez@colorado.edu>
4282 2002-04-15 Fernando Perez <fperez@colorado.edu>
4280
4283
4281 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4284 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4282 crash embedded instances because of the input cache falling out of
4285 crash embedded instances because of the input cache falling out of
4283 sync with the output counter.
4286 sync with the output counter.
4284
4287
4285 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4288 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4286 mode which calls pdb after an uncaught exception in IPython itself.
4289 mode which calls pdb after an uncaught exception in IPython itself.
4287
4290
4288 2002-04-14 Fernando Perez <fperez@colorado.edu>
4291 2002-04-14 Fernando Perez <fperez@colorado.edu>
4289
4292
4290 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4293 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4291 readline, fix it back after each call.
4294 readline, fix it back after each call.
4292
4295
4293 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4296 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4294 method to force all access via __call__(), which guarantees that
4297 method to force all access via __call__(), which guarantees that
4295 traceback references are properly deleted.
4298 traceback references are properly deleted.
4296
4299
4297 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4300 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4298 improve printing when pprint is in use.
4301 improve printing when pprint is in use.
4299
4302
4300 2002-04-13 Fernando Perez <fperez@colorado.edu>
4303 2002-04-13 Fernando Perez <fperez@colorado.edu>
4301
4304
4302 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4305 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4303 exceptions aren't caught anymore. If the user triggers one, he
4306 exceptions aren't caught anymore. If the user triggers one, he
4304 should know why he's doing it and it should go all the way up,
4307 should know why he's doing it and it should go all the way up,
4305 just like any other exception. So now @abort will fully kill the
4308 just like any other exception. So now @abort will fully kill the
4306 embedded interpreter and the embedding code (unless that happens
4309 embedded interpreter and the embedding code (unless that happens
4307 to catch SystemExit).
4310 to catch SystemExit).
4308
4311
4309 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4312 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4310 and a debugger() method to invoke the interactive pdb debugger
4313 and a debugger() method to invoke the interactive pdb debugger
4311 after printing exception information. Also added the corresponding
4314 after printing exception information. Also added the corresponding
4312 -pdb option and @pdb magic to control this feature, and updated
4315 -pdb option and @pdb magic to control this feature, and updated
4313 the docs. After a suggestion from Christopher Hart
4316 the docs. After a suggestion from Christopher Hart
4314 (hart-AT-caltech.edu).
4317 (hart-AT-caltech.edu).
4315
4318
4316 2002-04-12 Fernando Perez <fperez@colorado.edu>
4319 2002-04-12 Fernando Perez <fperez@colorado.edu>
4317
4320
4318 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4321 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4319 the exception handlers defined by the user (not the CrashHandler)
4322 the exception handlers defined by the user (not the CrashHandler)
4320 so that user exceptions don't trigger an ipython bug report.
4323 so that user exceptions don't trigger an ipython bug report.
4321
4324
4322 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4325 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4323 configurable (it should have always been so).
4326 configurable (it should have always been so).
4324
4327
4325 2002-03-26 Fernando Perez <fperez@colorado.edu>
4328 2002-03-26 Fernando Perez <fperez@colorado.edu>
4326
4329
4327 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4330 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4328 and there to fix embedding namespace issues. This should all be
4331 and there to fix embedding namespace issues. This should all be
4329 done in a more elegant way.
4332 done in a more elegant way.
4330
4333
4331 2002-03-25 Fernando Perez <fperez@colorado.edu>
4334 2002-03-25 Fernando Perez <fperez@colorado.edu>
4332
4335
4333 * IPython/genutils.py (get_home_dir): Try to make it work under
4336 * IPython/genutils.py (get_home_dir): Try to make it work under
4334 win9x also.
4337 win9x also.
4335
4338
4336 2002-03-20 Fernando Perez <fperez@colorado.edu>
4339 2002-03-20 Fernando Perez <fperez@colorado.edu>
4337
4340
4338 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4341 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4339 sys.displayhook untouched upon __init__.
4342 sys.displayhook untouched upon __init__.
4340
4343
4341 2002-03-19 Fernando Perez <fperez@colorado.edu>
4344 2002-03-19 Fernando Perez <fperez@colorado.edu>
4342
4345
4343 * Released 0.2.9 (for embedding bug, basically).
4346 * Released 0.2.9 (for embedding bug, basically).
4344
4347
4345 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4348 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4346 exceptions so that enclosing shell's state can be restored.
4349 exceptions so that enclosing shell's state can be restored.
4347
4350
4348 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4351 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4349 naming conventions in the .ipython/ dir.
4352 naming conventions in the .ipython/ dir.
4350
4353
4351 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4354 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4352 from delimiters list so filenames with - in them get expanded.
4355 from delimiters list so filenames with - in them get expanded.
4353
4356
4354 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4357 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4355 sys.displayhook not being properly restored after an embedded call.
4358 sys.displayhook not being properly restored after an embedded call.
4356
4359
4357 2002-03-18 Fernando Perez <fperez@colorado.edu>
4360 2002-03-18 Fernando Perez <fperez@colorado.edu>
4358
4361
4359 * Released 0.2.8
4362 * Released 0.2.8
4360
4363
4361 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4364 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4362 some files weren't being included in a -upgrade.
4365 some files weren't being included in a -upgrade.
4363 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4366 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4364 on' so that the first tab completes.
4367 on' so that the first tab completes.
4365 (InteractiveShell.handle_magic): fixed bug with spaces around
4368 (InteractiveShell.handle_magic): fixed bug with spaces around
4366 quotes breaking many magic commands.
4369 quotes breaking many magic commands.
4367
4370
4368 * setup.py: added note about ignoring the syntax error messages at
4371 * setup.py: added note about ignoring the syntax error messages at
4369 installation.
4372 installation.
4370
4373
4371 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4374 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4372 streamlining the gnuplot interface, now there's only one magic @gp.
4375 streamlining the gnuplot interface, now there's only one magic @gp.
4373
4376
4374 2002-03-17 Fernando Perez <fperez@colorado.edu>
4377 2002-03-17 Fernando Perez <fperez@colorado.edu>
4375
4378
4376 * IPython/UserConfig/magic_gnuplot.py: new name for the
4379 * IPython/UserConfig/magic_gnuplot.py: new name for the
4377 example-magic_pm.py file. Much enhanced system, now with a shell
4380 example-magic_pm.py file. Much enhanced system, now with a shell
4378 for communicating directly with gnuplot, one command at a time.
4381 for communicating directly with gnuplot, one command at a time.
4379
4382
4380 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4383 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4381 setting __name__=='__main__'.
4384 setting __name__=='__main__'.
4382
4385
4383 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4386 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4384 mini-shell for accessing gnuplot from inside ipython. Should
4387 mini-shell for accessing gnuplot from inside ipython. Should
4385 extend it later for grace access too. Inspired by Arnd's
4388 extend it later for grace access too. Inspired by Arnd's
4386 suggestion.
4389 suggestion.
4387
4390
4388 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4391 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4389 calling magic functions with () in their arguments. Thanks to Arnd
4392 calling magic functions with () in their arguments. Thanks to Arnd
4390 Baecker for pointing this to me.
4393 Baecker for pointing this to me.
4391
4394
4392 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4395 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4393 infinitely for integer or complex arrays (only worked with floats).
4396 infinitely for integer or complex arrays (only worked with floats).
4394
4397
4395 2002-03-16 Fernando Perez <fperez@colorado.edu>
4398 2002-03-16 Fernando Perez <fperez@colorado.edu>
4396
4399
4397 * setup.py: Merged setup and setup_windows into a single script
4400 * setup.py: Merged setup and setup_windows into a single script
4398 which properly handles things for windows users.
4401 which properly handles things for windows users.
4399
4402
4400 2002-03-15 Fernando Perez <fperez@colorado.edu>
4403 2002-03-15 Fernando Perez <fperez@colorado.edu>
4401
4404
4402 * Big change to the manual: now the magics are all automatically
4405 * Big change to the manual: now the magics are all automatically
4403 documented. This information is generated from their docstrings
4406 documented. This information is generated from their docstrings
4404 and put in a latex file included by the manual lyx file. This way
4407 and put in a latex file included by the manual lyx file. This way
4405 we get always up to date information for the magics. The manual
4408 we get always up to date information for the magics. The manual
4406 now also has proper version information, also auto-synced.
4409 now also has proper version information, also auto-synced.
4407
4410
4408 For this to work, an undocumented --magic_docstrings option was added.
4411 For this to work, an undocumented --magic_docstrings option was added.
4409
4412
4410 2002-03-13 Fernando Perez <fperez@colorado.edu>
4413 2002-03-13 Fernando Perez <fperez@colorado.edu>
4411
4414
4412 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4415 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4413 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4416 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4414
4417
4415 2002-03-12 Fernando Perez <fperez@colorado.edu>
4418 2002-03-12 Fernando Perez <fperez@colorado.edu>
4416
4419
4417 * IPython/ultraTB.py (TermColors): changed color escapes again to
4420 * IPython/ultraTB.py (TermColors): changed color escapes again to
4418 fix the (old, reintroduced) line-wrapping bug. Basically, if
4421 fix the (old, reintroduced) line-wrapping bug. Basically, if
4419 \001..\002 aren't given in the color escapes, lines get wrapped
4422 \001..\002 aren't given in the color escapes, lines get wrapped
4420 weirdly. But giving those screws up old xterms and emacs terms. So
4423 weirdly. But giving those screws up old xterms and emacs terms. So
4421 I added some logic for emacs terms to be ok, but I can't identify old
4424 I added some logic for emacs terms to be ok, but I can't identify old
4422 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4425 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4423
4426
4424 2002-03-10 Fernando Perez <fperez@colorado.edu>
4427 2002-03-10 Fernando Perez <fperez@colorado.edu>
4425
4428
4426 * IPython/usage.py (__doc__): Various documentation cleanups and
4429 * IPython/usage.py (__doc__): Various documentation cleanups and
4427 updates, both in usage docstrings and in the manual.
4430 updates, both in usage docstrings and in the manual.
4428
4431
4429 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4432 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4430 handling of caching. Set minimum acceptabe value for having a
4433 handling of caching. Set minimum acceptabe value for having a
4431 cache at 20 values.
4434 cache at 20 values.
4432
4435
4433 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4436 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4434 install_first_time function to a method, renamed it and added an
4437 install_first_time function to a method, renamed it and added an
4435 'upgrade' mode. Now people can update their config directory with
4438 'upgrade' mode. Now people can update their config directory with
4436 a simple command line switch (-upgrade, also new).
4439 a simple command line switch (-upgrade, also new).
4437
4440
4438 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4441 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4439 @file (convenient for automagic users under Python >= 2.2).
4442 @file (convenient for automagic users under Python >= 2.2).
4440 Removed @files (it seemed more like a plural than an abbrev. of
4443 Removed @files (it seemed more like a plural than an abbrev. of
4441 'file show').
4444 'file show').
4442
4445
4443 * IPython/iplib.py (install_first_time): Fixed crash if there were
4446 * IPython/iplib.py (install_first_time): Fixed crash if there were
4444 backup files ('~') in .ipython/ install directory.
4447 backup files ('~') in .ipython/ install directory.
4445
4448
4446 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4449 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4447 system. Things look fine, but these changes are fairly
4450 system. Things look fine, but these changes are fairly
4448 intrusive. Test them for a few days.
4451 intrusive. Test them for a few days.
4449
4452
4450 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4453 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4451 the prompts system. Now all in/out prompt strings are user
4454 the prompts system. Now all in/out prompt strings are user
4452 controllable. This is particularly useful for embedding, as one
4455 controllable. This is particularly useful for embedding, as one
4453 can tag embedded instances with particular prompts.
4456 can tag embedded instances with particular prompts.
4454
4457
4455 Also removed global use of sys.ps1/2, which now allows nested
4458 Also removed global use of sys.ps1/2, which now allows nested
4456 embeddings without any problems. Added command-line options for
4459 embeddings without any problems. Added command-line options for
4457 the prompt strings.
4460 the prompt strings.
4458
4461
4459 2002-03-08 Fernando Perez <fperez@colorado.edu>
4462 2002-03-08 Fernando Perez <fperez@colorado.edu>
4460
4463
4461 * IPython/UserConfig/example-embed-short.py (ipshell): added
4464 * IPython/UserConfig/example-embed-short.py (ipshell): added
4462 example file with the bare minimum code for embedding.
4465 example file with the bare minimum code for embedding.
4463
4466
4464 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4467 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4465 functionality for the embeddable shell to be activated/deactivated
4468 functionality for the embeddable shell to be activated/deactivated
4466 either globally or at each call.
4469 either globally or at each call.
4467
4470
4468 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4471 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4469 rewriting the prompt with '--->' for auto-inputs with proper
4472 rewriting the prompt with '--->' for auto-inputs with proper
4470 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4473 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4471 this is handled by the prompts class itself, as it should.
4474 this is handled by the prompts class itself, as it should.
4472
4475
4473 2002-03-05 Fernando Perez <fperez@colorado.edu>
4476 2002-03-05 Fernando Perez <fperez@colorado.edu>
4474
4477
4475 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4478 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4476 @logstart to avoid name clashes with the math log function.
4479 @logstart to avoid name clashes with the math log function.
4477
4480
4478 * Big updates to X/Emacs section of the manual.
4481 * Big updates to X/Emacs section of the manual.
4479
4482
4480 * Removed ipython_emacs. Milan explained to me how to pass
4483 * Removed ipython_emacs. Milan explained to me how to pass
4481 arguments to ipython through Emacs. Some day I'm going to end up
4484 arguments to ipython through Emacs. Some day I'm going to end up
4482 learning some lisp...
4485 learning some lisp...
4483
4486
4484 2002-03-04 Fernando Perez <fperez@colorado.edu>
4487 2002-03-04 Fernando Perez <fperez@colorado.edu>
4485
4488
4486 * IPython/ipython_emacs: Created script to be used as the
4489 * IPython/ipython_emacs: Created script to be used as the
4487 py-python-command Emacs variable so we can pass IPython
4490 py-python-command Emacs variable so we can pass IPython
4488 parameters. I can't figure out how to tell Emacs directly to pass
4491 parameters. I can't figure out how to tell Emacs directly to pass
4489 parameters to IPython, so a dummy shell script will do it.
4492 parameters to IPython, so a dummy shell script will do it.
4490
4493
4491 Other enhancements made for things to work better under Emacs'
4494 Other enhancements made for things to work better under Emacs'
4492 various types of terminals. Many thanks to Milan Zamazal
4495 various types of terminals. Many thanks to Milan Zamazal
4493 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4496 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4494
4497
4495 2002-03-01 Fernando Perez <fperez@colorado.edu>
4498 2002-03-01 Fernando Perez <fperez@colorado.edu>
4496
4499
4497 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4500 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4498 that loading of readline is now optional. This gives better
4501 that loading of readline is now optional. This gives better
4499 control to emacs users.
4502 control to emacs users.
4500
4503
4501 * IPython/ultraTB.py (__date__): Modified color escape sequences
4504 * IPython/ultraTB.py (__date__): Modified color escape sequences
4502 and now things work fine under xterm and in Emacs' term buffers
4505 and now things work fine under xterm and in Emacs' term buffers
4503 (though not shell ones). Well, in emacs you get colors, but all
4506 (though not shell ones). Well, in emacs you get colors, but all
4504 seem to be 'light' colors (no difference between dark and light
4507 seem to be 'light' colors (no difference between dark and light
4505 ones). But the garbage chars are gone, and also in xterms. It
4508 ones). But the garbage chars are gone, and also in xterms. It
4506 seems that now I'm using 'cleaner' ansi sequences.
4509 seems that now I'm using 'cleaner' ansi sequences.
4507
4510
4508 2002-02-21 Fernando Perez <fperez@colorado.edu>
4511 2002-02-21 Fernando Perez <fperez@colorado.edu>
4509
4512
4510 * Released 0.2.7 (mainly to publish the scoping fix).
4513 * Released 0.2.7 (mainly to publish the scoping fix).
4511
4514
4512 * IPython/Logger.py (Logger.logstate): added. A corresponding
4515 * IPython/Logger.py (Logger.logstate): added. A corresponding
4513 @logstate magic was created.
4516 @logstate magic was created.
4514
4517
4515 * IPython/Magic.py: fixed nested scoping problem under Python
4518 * IPython/Magic.py: fixed nested scoping problem under Python
4516 2.1.x (automagic wasn't working).
4519 2.1.x (automagic wasn't working).
4517
4520
4518 2002-02-20 Fernando Perez <fperez@colorado.edu>
4521 2002-02-20 Fernando Perez <fperez@colorado.edu>
4519
4522
4520 * Released 0.2.6.
4523 * Released 0.2.6.
4521
4524
4522 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4525 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4523 option so that logs can come out without any headers at all.
4526 option so that logs can come out without any headers at all.
4524
4527
4525 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4528 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4526 SciPy.
4529 SciPy.
4527
4530
4528 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4531 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4529 that embedded IPython calls don't require vars() to be explicitly
4532 that embedded IPython calls don't require vars() to be explicitly
4530 passed. Now they are extracted from the caller's frame (code
4533 passed. Now they are extracted from the caller's frame (code
4531 snatched from Eric Jones' weave). Added better documentation to
4534 snatched from Eric Jones' weave). Added better documentation to
4532 the section on embedding and the example file.
4535 the section on embedding and the example file.
4533
4536
4534 * IPython/genutils.py (page): Changed so that under emacs, it just
4537 * IPython/genutils.py (page): Changed so that under emacs, it just
4535 prints the string. You can then page up and down in the emacs
4538 prints the string. You can then page up and down in the emacs
4536 buffer itself. This is how the builtin help() works.
4539 buffer itself. This is how the builtin help() works.
4537
4540
4538 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4541 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4539 macro scoping: macros need to be executed in the user's namespace
4542 macro scoping: macros need to be executed in the user's namespace
4540 to work as if they had been typed by the user.
4543 to work as if they had been typed by the user.
4541
4544
4542 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4545 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4543 execute automatically (no need to type 'exec...'). They then
4546 execute automatically (no need to type 'exec...'). They then
4544 behave like 'true macros'. The printing system was also modified
4547 behave like 'true macros'. The printing system was also modified
4545 for this to work.
4548 for this to work.
4546
4549
4547 2002-02-19 Fernando Perez <fperez@colorado.edu>
4550 2002-02-19 Fernando Perez <fperez@colorado.edu>
4548
4551
4549 * IPython/genutils.py (page_file): new function for paging files
4552 * IPython/genutils.py (page_file): new function for paging files
4550 in an OS-independent way. Also necessary for file viewing to work
4553 in an OS-independent way. Also necessary for file viewing to work
4551 well inside Emacs buffers.
4554 well inside Emacs buffers.
4552 (page): Added checks for being in an emacs buffer.
4555 (page): Added checks for being in an emacs buffer.
4553 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4556 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4554 same bug in iplib.
4557 same bug in iplib.
4555
4558
4556 2002-02-18 Fernando Perez <fperez@colorado.edu>
4559 2002-02-18 Fernando Perez <fperez@colorado.edu>
4557
4560
4558 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4561 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4559 of readline so that IPython can work inside an Emacs buffer.
4562 of readline so that IPython can work inside an Emacs buffer.
4560
4563
4561 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4564 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4562 method signatures (they weren't really bugs, but it looks cleaner
4565 method signatures (they weren't really bugs, but it looks cleaner
4563 and keeps PyChecker happy).
4566 and keeps PyChecker happy).
4564
4567
4565 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4568 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4566 for implementing various user-defined hooks. Currently only
4569 for implementing various user-defined hooks. Currently only
4567 display is done.
4570 display is done.
4568
4571
4569 * IPython/Prompts.py (CachedOutput._display): changed display
4572 * IPython/Prompts.py (CachedOutput._display): changed display
4570 functions so that they can be dynamically changed by users easily.
4573 functions so that they can be dynamically changed by users easily.
4571
4574
4572 * IPython/Extensions/numeric_formats.py (num_display): added an
4575 * IPython/Extensions/numeric_formats.py (num_display): added an
4573 extension for printing NumPy arrays in flexible manners. It
4576 extension for printing NumPy arrays in flexible manners. It
4574 doesn't do anything yet, but all the structure is in
4577 doesn't do anything yet, but all the structure is in
4575 place. Ultimately the plan is to implement output format control
4578 place. Ultimately the plan is to implement output format control
4576 like in Octave.
4579 like in Octave.
4577
4580
4578 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4581 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4579 methods are found at run-time by all the automatic machinery.
4582 methods are found at run-time by all the automatic machinery.
4580
4583
4581 2002-02-17 Fernando Perez <fperez@colorado.edu>
4584 2002-02-17 Fernando Perez <fperez@colorado.edu>
4582
4585
4583 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4586 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4584 whole file a little.
4587 whole file a little.
4585
4588
4586 * ToDo: closed this document. Now there's a new_design.lyx
4589 * ToDo: closed this document. Now there's a new_design.lyx
4587 document for all new ideas. Added making a pdf of it for the
4590 document for all new ideas. Added making a pdf of it for the
4588 end-user distro.
4591 end-user distro.
4589
4592
4590 * IPython/Logger.py (Logger.switch_log): Created this to replace
4593 * IPython/Logger.py (Logger.switch_log): Created this to replace
4591 logon() and logoff(). It also fixes a nasty crash reported by
4594 logon() and logoff(). It also fixes a nasty crash reported by
4592 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4595 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4593
4596
4594 * IPython/iplib.py (complete): got auto-completion to work with
4597 * IPython/iplib.py (complete): got auto-completion to work with
4595 automagic (I had wanted this for a long time).
4598 automagic (I had wanted this for a long time).
4596
4599
4597 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4600 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4598 to @file, since file() is now a builtin and clashes with automagic
4601 to @file, since file() is now a builtin and clashes with automagic
4599 for @file.
4602 for @file.
4600
4603
4601 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4604 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4602 of this was previously in iplib, which had grown to more than 2000
4605 of this was previously in iplib, which had grown to more than 2000
4603 lines, way too long. No new functionality, but it makes managing
4606 lines, way too long. No new functionality, but it makes managing
4604 the code a bit easier.
4607 the code a bit easier.
4605
4608
4606 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4609 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4607 information to crash reports.
4610 information to crash reports.
4608
4611
4609 2002-02-12 Fernando Perez <fperez@colorado.edu>
4612 2002-02-12 Fernando Perez <fperez@colorado.edu>
4610
4613
4611 * Released 0.2.5.
4614 * Released 0.2.5.
4612
4615
4613 2002-02-11 Fernando Perez <fperez@colorado.edu>
4616 2002-02-11 Fernando Perez <fperez@colorado.edu>
4614
4617
4615 * Wrote a relatively complete Windows installer. It puts
4618 * Wrote a relatively complete Windows installer. It puts
4616 everything in place, creates Start Menu entries and fixes the
4619 everything in place, creates Start Menu entries and fixes the
4617 color issues. Nothing fancy, but it works.
4620 color issues. Nothing fancy, but it works.
4618
4621
4619 2002-02-10 Fernando Perez <fperez@colorado.edu>
4622 2002-02-10 Fernando Perez <fperez@colorado.edu>
4620
4623
4621 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4624 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4622 os.path.expanduser() call so that we can type @run ~/myfile.py and
4625 os.path.expanduser() call so that we can type @run ~/myfile.py and
4623 have thigs work as expected.
4626 have thigs work as expected.
4624
4627
4625 * IPython/genutils.py (page): fixed exception handling so things
4628 * IPython/genutils.py (page): fixed exception handling so things
4626 work both in Unix and Windows correctly. Quitting a pager triggers
4629 work both in Unix and Windows correctly. Quitting a pager triggers
4627 an IOError/broken pipe in Unix, and in windows not finding a pager
4630 an IOError/broken pipe in Unix, and in windows not finding a pager
4628 is also an IOError, so I had to actually look at the return value
4631 is also an IOError, so I had to actually look at the return value
4629 of the exception, not just the exception itself. Should be ok now.
4632 of the exception, not just the exception itself. Should be ok now.
4630
4633
4631 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4634 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4632 modified to allow case-insensitive color scheme changes.
4635 modified to allow case-insensitive color scheme changes.
4633
4636
4634 2002-02-09 Fernando Perez <fperez@colorado.edu>
4637 2002-02-09 Fernando Perez <fperez@colorado.edu>
4635
4638
4636 * IPython/genutils.py (native_line_ends): new function to leave
4639 * IPython/genutils.py (native_line_ends): new function to leave
4637 user config files with os-native line-endings.
4640 user config files with os-native line-endings.
4638
4641
4639 * README and manual updates.
4642 * README and manual updates.
4640
4643
4641 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4644 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4642 instead of StringType to catch Unicode strings.
4645 instead of StringType to catch Unicode strings.
4643
4646
4644 * IPython/genutils.py (filefind): fixed bug for paths with
4647 * IPython/genutils.py (filefind): fixed bug for paths with
4645 embedded spaces (very common in Windows).
4648 embedded spaces (very common in Windows).
4646
4649
4647 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4650 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4648 files under Windows, so that they get automatically associated
4651 files under Windows, so that they get automatically associated
4649 with a text editor. Windows makes it a pain to handle
4652 with a text editor. Windows makes it a pain to handle
4650 extension-less files.
4653 extension-less files.
4651
4654
4652 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4655 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4653 warning about readline only occur for Posix. In Windows there's no
4656 warning about readline only occur for Posix. In Windows there's no
4654 way to get readline, so why bother with the warning.
4657 way to get readline, so why bother with the warning.
4655
4658
4656 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4659 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4657 for __str__ instead of dir(self), since dir() changed in 2.2.
4660 for __str__ instead of dir(self), since dir() changed in 2.2.
4658
4661
4659 * Ported to Windows! Tested on XP, I suspect it should work fine
4662 * Ported to Windows! Tested on XP, I suspect it should work fine
4660 on NT/2000, but I don't think it will work on 98 et al. That
4663 on NT/2000, but I don't think it will work on 98 et al. That
4661 series of Windows is such a piece of junk anyway that I won't try
4664 series of Windows is such a piece of junk anyway that I won't try
4662 porting it there. The XP port was straightforward, showed a few
4665 porting it there. The XP port was straightforward, showed a few
4663 bugs here and there (fixed all), in particular some string
4666 bugs here and there (fixed all), in particular some string
4664 handling stuff which required considering Unicode strings (which
4667 handling stuff which required considering Unicode strings (which
4665 Windows uses). This is good, but hasn't been too tested :) No
4668 Windows uses). This is good, but hasn't been too tested :) No
4666 fancy installer yet, I'll put a note in the manual so people at
4669 fancy installer yet, I'll put a note in the manual so people at
4667 least make manually a shortcut.
4670 least make manually a shortcut.
4668
4671
4669 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4672 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4670 into a single one, "colors". This now controls both prompt and
4673 into a single one, "colors". This now controls both prompt and
4671 exception color schemes, and can be changed both at startup
4674 exception color schemes, and can be changed both at startup
4672 (either via command-line switches or via ipythonrc files) and at
4675 (either via command-line switches or via ipythonrc files) and at
4673 runtime, with @colors.
4676 runtime, with @colors.
4674 (Magic.magic_run): renamed @prun to @run and removed the old
4677 (Magic.magic_run): renamed @prun to @run and removed the old
4675 @run. The two were too similar to warrant keeping both.
4678 @run. The two were too similar to warrant keeping both.
4676
4679
4677 2002-02-03 Fernando Perez <fperez@colorado.edu>
4680 2002-02-03 Fernando Perez <fperez@colorado.edu>
4678
4681
4679 * IPython/iplib.py (install_first_time): Added comment on how to
4682 * IPython/iplib.py (install_first_time): Added comment on how to
4680 configure the color options for first-time users. Put a <return>
4683 configure the color options for first-time users. Put a <return>
4681 request at the end so that small-terminal users get a chance to
4684 request at the end so that small-terminal users get a chance to
4682 read the startup info.
4685 read the startup info.
4683
4686
4684 2002-01-23 Fernando Perez <fperez@colorado.edu>
4687 2002-01-23 Fernando Perez <fperez@colorado.edu>
4685
4688
4686 * IPython/iplib.py (CachedOutput.update): Changed output memory
4689 * IPython/iplib.py (CachedOutput.update): Changed output memory
4687 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4690 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4688 input history we still use _i. Did this b/c these variable are
4691 input history we still use _i. Did this b/c these variable are
4689 very commonly used in interactive work, so the less we need to
4692 very commonly used in interactive work, so the less we need to
4690 type the better off we are.
4693 type the better off we are.
4691 (Magic.magic_prun): updated @prun to better handle the namespaces
4694 (Magic.magic_prun): updated @prun to better handle the namespaces
4692 the file will run in, including a fix for __name__ not being set
4695 the file will run in, including a fix for __name__ not being set
4693 before.
4696 before.
4694
4697
4695 2002-01-20 Fernando Perez <fperez@colorado.edu>
4698 2002-01-20 Fernando Perez <fperez@colorado.edu>
4696
4699
4697 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4700 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4698 extra garbage for Python 2.2. Need to look more carefully into
4701 extra garbage for Python 2.2. Need to look more carefully into
4699 this later.
4702 this later.
4700
4703
4701 2002-01-19 Fernando Perez <fperez@colorado.edu>
4704 2002-01-19 Fernando Perez <fperez@colorado.edu>
4702
4705
4703 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4706 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4704 display SyntaxError exceptions properly formatted when they occur
4707 display SyntaxError exceptions properly formatted when they occur
4705 (they can be triggered by imported code).
4708 (they can be triggered by imported code).
4706
4709
4707 2002-01-18 Fernando Perez <fperez@colorado.edu>
4710 2002-01-18 Fernando Perez <fperez@colorado.edu>
4708
4711
4709 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4712 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4710 SyntaxError exceptions are reported nicely formatted, instead of
4713 SyntaxError exceptions are reported nicely formatted, instead of
4711 spitting out only offset information as before.
4714 spitting out only offset information as before.
4712 (Magic.magic_prun): Added the @prun function for executing
4715 (Magic.magic_prun): Added the @prun function for executing
4713 programs with command line args inside IPython.
4716 programs with command line args inside IPython.
4714
4717
4715 2002-01-16 Fernando Perez <fperez@colorado.edu>
4718 2002-01-16 Fernando Perez <fperez@colorado.edu>
4716
4719
4717 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4720 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4718 to *not* include the last item given in a range. This brings their
4721 to *not* include the last item given in a range. This brings their
4719 behavior in line with Python's slicing:
4722 behavior in line with Python's slicing:
4720 a[n1:n2] -> a[n1]...a[n2-1]
4723 a[n1:n2] -> a[n1]...a[n2-1]
4721 It may be a bit less convenient, but I prefer to stick to Python's
4724 It may be a bit less convenient, but I prefer to stick to Python's
4722 conventions *everywhere*, so users never have to wonder.
4725 conventions *everywhere*, so users never have to wonder.
4723 (Magic.magic_macro): Added @macro function to ease the creation of
4726 (Magic.magic_macro): Added @macro function to ease the creation of
4724 macros.
4727 macros.
4725
4728
4726 2002-01-05 Fernando Perez <fperez@colorado.edu>
4729 2002-01-05 Fernando Perez <fperez@colorado.edu>
4727
4730
4728 * Released 0.2.4.
4731 * Released 0.2.4.
4729
4732
4730 * IPython/iplib.py (Magic.magic_pdef):
4733 * IPython/iplib.py (Magic.magic_pdef):
4731 (InteractiveShell.safe_execfile): report magic lines and error
4734 (InteractiveShell.safe_execfile): report magic lines and error
4732 lines without line numbers so one can easily copy/paste them for
4735 lines without line numbers so one can easily copy/paste them for
4733 re-execution.
4736 re-execution.
4734
4737
4735 * Updated manual with recent changes.
4738 * Updated manual with recent changes.
4736
4739
4737 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4740 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4738 docstring printing when class? is called. Very handy for knowing
4741 docstring printing when class? is called. Very handy for knowing
4739 how to create class instances (as long as __init__ is well
4742 how to create class instances (as long as __init__ is well
4740 documented, of course :)
4743 documented, of course :)
4741 (Magic.magic_doc): print both class and constructor docstrings.
4744 (Magic.magic_doc): print both class and constructor docstrings.
4742 (Magic.magic_pdef): give constructor info if passed a class and
4745 (Magic.magic_pdef): give constructor info if passed a class and
4743 __call__ info for callable object instances.
4746 __call__ info for callable object instances.
4744
4747
4745 2002-01-04 Fernando Perez <fperez@colorado.edu>
4748 2002-01-04 Fernando Perez <fperez@colorado.edu>
4746
4749
4747 * Made deep_reload() off by default. It doesn't always work
4750 * Made deep_reload() off by default. It doesn't always work
4748 exactly as intended, so it's probably safer to have it off. It's
4751 exactly as intended, so it's probably safer to have it off. It's
4749 still available as dreload() anyway, so nothing is lost.
4752 still available as dreload() anyway, so nothing is lost.
4750
4753
4751 2002-01-02 Fernando Perez <fperez@colorado.edu>
4754 2002-01-02 Fernando Perez <fperez@colorado.edu>
4752
4755
4753 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4756 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4754 so I wanted an updated release).
4757 so I wanted an updated release).
4755
4758
4756 2001-12-27 Fernando Perez <fperez@colorado.edu>
4759 2001-12-27 Fernando Perez <fperez@colorado.edu>
4757
4760
4758 * IPython/iplib.py (InteractiveShell.interact): Added the original
4761 * IPython/iplib.py (InteractiveShell.interact): Added the original
4759 code from 'code.py' for this module in order to change the
4762 code from 'code.py' for this module in order to change the
4760 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4763 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4761 the history cache would break when the user hit Ctrl-C, and
4764 the history cache would break when the user hit Ctrl-C, and
4762 interact() offers no way to add any hooks to it.
4765 interact() offers no way to add any hooks to it.
4763
4766
4764 2001-12-23 Fernando Perez <fperez@colorado.edu>
4767 2001-12-23 Fernando Perez <fperez@colorado.edu>
4765
4768
4766 * setup.py: added check for 'MANIFEST' before trying to remove
4769 * setup.py: added check for 'MANIFEST' before trying to remove
4767 it. Thanks to Sean Reifschneider.
4770 it. Thanks to Sean Reifschneider.
4768
4771
4769 2001-12-22 Fernando Perez <fperez@colorado.edu>
4772 2001-12-22 Fernando Perez <fperez@colorado.edu>
4770
4773
4771 * Released 0.2.2.
4774 * Released 0.2.2.
4772
4775
4773 * Finished (reasonably) writing the manual. Later will add the
4776 * Finished (reasonably) writing the manual. Later will add the
4774 python-standard navigation stylesheets, but for the time being
4777 python-standard navigation stylesheets, but for the time being
4775 it's fairly complete. Distribution will include html and pdf
4778 it's fairly complete. Distribution will include html and pdf
4776 versions.
4779 versions.
4777
4780
4778 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4781 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4779 (MayaVi author).
4782 (MayaVi author).
4780
4783
4781 2001-12-21 Fernando Perez <fperez@colorado.edu>
4784 2001-12-21 Fernando Perez <fperez@colorado.edu>
4782
4785
4783 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4786 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4784 good public release, I think (with the manual and the distutils
4787 good public release, I think (with the manual and the distutils
4785 installer). The manual can use some work, but that can go
4788 installer). The manual can use some work, but that can go
4786 slowly. Otherwise I think it's quite nice for end users. Next
4789 slowly. Otherwise I think it's quite nice for end users. Next
4787 summer, rewrite the guts of it...
4790 summer, rewrite the guts of it...
4788
4791
4789 * Changed format of ipythonrc files to use whitespace as the
4792 * Changed format of ipythonrc files to use whitespace as the
4790 separator instead of an explicit '='. Cleaner.
4793 separator instead of an explicit '='. Cleaner.
4791
4794
4792 2001-12-20 Fernando Perez <fperez@colorado.edu>
4795 2001-12-20 Fernando Perez <fperez@colorado.edu>
4793
4796
4794 * Started a manual in LyX. For now it's just a quick merge of the
4797 * Started a manual in LyX. For now it's just a quick merge of the
4795 various internal docstrings and READMEs. Later it may grow into a
4798 various internal docstrings and READMEs. Later it may grow into a
4796 nice, full-blown manual.
4799 nice, full-blown manual.
4797
4800
4798 * Set up a distutils based installer. Installation should now be
4801 * Set up a distutils based installer. Installation should now be
4799 trivially simple for end-users.
4802 trivially simple for end-users.
4800
4803
4801 2001-12-11 Fernando Perez <fperez@colorado.edu>
4804 2001-12-11 Fernando Perez <fperez@colorado.edu>
4802
4805
4803 * Released 0.2.0. First public release, announced it at
4806 * Released 0.2.0. First public release, announced it at
4804 comp.lang.python. From now on, just bugfixes...
4807 comp.lang.python. From now on, just bugfixes...
4805
4808
4806 * Went through all the files, set copyright/license notices and
4809 * Went through all the files, set copyright/license notices and
4807 cleaned up things. Ready for release.
4810 cleaned up things. Ready for release.
4808
4811
4809 2001-12-10 Fernando Perez <fperez@colorado.edu>
4812 2001-12-10 Fernando Perez <fperez@colorado.edu>
4810
4813
4811 * Changed the first-time installer not to use tarfiles. It's more
4814 * Changed the first-time installer not to use tarfiles. It's more
4812 robust now and less unix-dependent. Also makes it easier for
4815 robust now and less unix-dependent. Also makes it easier for
4813 people to later upgrade versions.
4816 people to later upgrade versions.
4814
4817
4815 * Changed @exit to @abort to reflect the fact that it's pretty
4818 * Changed @exit to @abort to reflect the fact that it's pretty
4816 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4819 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4817 becomes significant only when IPyhton is embedded: in that case,
4820 becomes significant only when IPyhton is embedded: in that case,
4818 C-D closes IPython only, but @abort kills the enclosing program
4821 C-D closes IPython only, but @abort kills the enclosing program
4819 too (unless it had called IPython inside a try catching
4822 too (unless it had called IPython inside a try catching
4820 SystemExit).
4823 SystemExit).
4821
4824
4822 * Created Shell module which exposes the actuall IPython Shell
4825 * Created Shell module which exposes the actuall IPython Shell
4823 classes, currently the normal and the embeddable one. This at
4826 classes, currently the normal and the embeddable one. This at
4824 least offers a stable interface we won't need to change when
4827 least offers a stable interface we won't need to change when
4825 (later) the internals are rewritten. That rewrite will be confined
4828 (later) the internals are rewritten. That rewrite will be confined
4826 to iplib and ipmaker, but the Shell interface should remain as is.
4829 to iplib and ipmaker, but the Shell interface should remain as is.
4827
4830
4828 * Added embed module which offers an embeddable IPShell object,
4831 * Added embed module which offers an embeddable IPShell object,
4829 useful to fire up IPython *inside* a running program. Great for
4832 useful to fire up IPython *inside* a running program. Great for
4830 debugging or dynamical data analysis.
4833 debugging or dynamical data analysis.
4831
4834
4832 2001-12-08 Fernando Perez <fperez@colorado.edu>
4835 2001-12-08 Fernando Perez <fperez@colorado.edu>
4833
4836
4834 * Fixed small bug preventing seeing info from methods of defined
4837 * Fixed small bug preventing seeing info from methods of defined
4835 objects (incorrect namespace in _ofind()).
4838 objects (incorrect namespace in _ofind()).
4836
4839
4837 * Documentation cleanup. Moved the main usage docstrings to a
4840 * Documentation cleanup. Moved the main usage docstrings to a
4838 separate file, usage.py (cleaner to maintain, and hopefully in the
4841 separate file, usage.py (cleaner to maintain, and hopefully in the
4839 future some perlpod-like way of producing interactive, man and
4842 future some perlpod-like way of producing interactive, man and
4840 html docs out of it will be found).
4843 html docs out of it will be found).
4841
4844
4842 * Added @profile to see your profile at any time.
4845 * Added @profile to see your profile at any time.
4843
4846
4844 * Added @p as an alias for 'print'. It's especially convenient if
4847 * Added @p as an alias for 'print'. It's especially convenient if
4845 using automagic ('p x' prints x).
4848 using automagic ('p x' prints x).
4846
4849
4847 * Small cleanups and fixes after a pychecker run.
4850 * Small cleanups and fixes after a pychecker run.
4848
4851
4849 * Changed the @cd command to handle @cd - and @cd -<n> for
4852 * Changed the @cd command to handle @cd - and @cd -<n> for
4850 visiting any directory in _dh.
4853 visiting any directory in _dh.
4851
4854
4852 * Introduced _dh, a history of visited directories. @dhist prints
4855 * Introduced _dh, a history of visited directories. @dhist prints
4853 it out with numbers.
4856 it out with numbers.
4854
4857
4855 2001-12-07 Fernando Perez <fperez@colorado.edu>
4858 2001-12-07 Fernando Perez <fperez@colorado.edu>
4856
4859
4857 * Released 0.1.22
4860 * Released 0.1.22
4858
4861
4859 * Made initialization a bit more robust against invalid color
4862 * Made initialization a bit more robust against invalid color
4860 options in user input (exit, not traceback-crash).
4863 options in user input (exit, not traceback-crash).
4861
4864
4862 * Changed the bug crash reporter to write the report only in the
4865 * Changed the bug crash reporter to write the report only in the
4863 user's .ipython directory. That way IPython won't litter people's
4866 user's .ipython directory. That way IPython won't litter people's
4864 hard disks with crash files all over the place. Also print on
4867 hard disks with crash files all over the place. Also print on
4865 screen the necessary mail command.
4868 screen the necessary mail command.
4866
4869
4867 * With the new ultraTB, implemented LightBG color scheme for light
4870 * With the new ultraTB, implemented LightBG color scheme for light
4868 background terminals. A lot of people like white backgrounds, so I
4871 background terminals. A lot of people like white backgrounds, so I
4869 guess we should at least give them something readable.
4872 guess we should at least give them something readable.
4870
4873
4871 2001-12-06 Fernando Perez <fperez@colorado.edu>
4874 2001-12-06 Fernando Perez <fperez@colorado.edu>
4872
4875
4873 * Modified the structure of ultraTB. Now there's a proper class
4876 * Modified the structure of ultraTB. Now there's a proper class
4874 for tables of color schemes which allow adding schemes easily and
4877 for tables of color schemes which allow adding schemes easily and
4875 switching the active scheme without creating a new instance every
4878 switching the active scheme without creating a new instance every
4876 time (which was ridiculous). The syntax for creating new schemes
4879 time (which was ridiculous). The syntax for creating new schemes
4877 is also cleaner. I think ultraTB is finally done, with a clean
4880 is also cleaner. I think ultraTB is finally done, with a clean
4878 class structure. Names are also much cleaner (now there's proper
4881 class structure. Names are also much cleaner (now there's proper
4879 color tables, no need for every variable to also have 'color' in
4882 color tables, no need for every variable to also have 'color' in
4880 its name).
4883 its name).
4881
4884
4882 * Broke down genutils into separate files. Now genutils only
4885 * Broke down genutils into separate files. Now genutils only
4883 contains utility functions, and classes have been moved to their
4886 contains utility functions, and classes have been moved to their
4884 own files (they had enough independent functionality to warrant
4887 own files (they had enough independent functionality to warrant
4885 it): ConfigLoader, OutputTrap, Struct.
4888 it): ConfigLoader, OutputTrap, Struct.
4886
4889
4887 2001-12-05 Fernando Perez <fperez@colorado.edu>
4890 2001-12-05 Fernando Perez <fperez@colorado.edu>
4888
4891
4889 * IPython turns 21! Released version 0.1.21, as a candidate for
4892 * IPython turns 21! Released version 0.1.21, as a candidate for
4890 public consumption. If all goes well, release in a few days.
4893 public consumption. If all goes well, release in a few days.
4891
4894
4892 * Fixed path bug (files in Extensions/ directory wouldn't be found
4895 * Fixed path bug (files in Extensions/ directory wouldn't be found
4893 unless IPython/ was explicitly in sys.path).
4896 unless IPython/ was explicitly in sys.path).
4894
4897
4895 * Extended the FlexCompleter class as MagicCompleter to allow
4898 * Extended the FlexCompleter class as MagicCompleter to allow
4896 completion of @-starting lines.
4899 completion of @-starting lines.
4897
4900
4898 * Created __release__.py file as a central repository for release
4901 * Created __release__.py file as a central repository for release
4899 info that other files can read from.
4902 info that other files can read from.
4900
4903
4901 * Fixed small bug in logging: when logging was turned on in
4904 * Fixed small bug in logging: when logging was turned on in
4902 mid-session, old lines with special meanings (!@?) were being
4905 mid-session, old lines with special meanings (!@?) were being
4903 logged without the prepended comment, which is necessary since
4906 logged without the prepended comment, which is necessary since
4904 they are not truly valid python syntax. This should make session
4907 they are not truly valid python syntax. This should make session
4905 restores produce less errors.
4908 restores produce less errors.
4906
4909
4907 * The namespace cleanup forced me to make a FlexCompleter class
4910 * The namespace cleanup forced me to make a FlexCompleter class
4908 which is nothing but a ripoff of rlcompleter, but with selectable
4911 which is nothing but a ripoff of rlcompleter, but with selectable
4909 namespace (rlcompleter only works in __main__.__dict__). I'll try
4912 namespace (rlcompleter only works in __main__.__dict__). I'll try
4910 to submit a note to the authors to see if this change can be
4913 to submit a note to the authors to see if this change can be
4911 incorporated in future rlcompleter releases (Dec.6: done)
4914 incorporated in future rlcompleter releases (Dec.6: done)
4912
4915
4913 * More fixes to namespace handling. It was a mess! Now all
4916 * More fixes to namespace handling. It was a mess! Now all
4914 explicit references to __main__.__dict__ are gone (except when
4917 explicit references to __main__.__dict__ are gone (except when
4915 really needed) and everything is handled through the namespace
4918 really needed) and everything is handled through the namespace
4916 dicts in the IPython instance. We seem to be getting somewhere
4919 dicts in the IPython instance. We seem to be getting somewhere
4917 with this, finally...
4920 with this, finally...
4918
4921
4919 * Small documentation updates.
4922 * Small documentation updates.
4920
4923
4921 * Created the Extensions directory under IPython (with an
4924 * Created the Extensions directory under IPython (with an
4922 __init__.py). Put the PhysicalQ stuff there. This directory should
4925 __init__.py). Put the PhysicalQ stuff there. This directory should
4923 be used for all special-purpose extensions.
4926 be used for all special-purpose extensions.
4924
4927
4925 * File renaming:
4928 * File renaming:
4926 ipythonlib --> ipmaker
4929 ipythonlib --> ipmaker
4927 ipplib --> iplib
4930 ipplib --> iplib
4928 This makes a bit more sense in terms of what these files actually do.
4931 This makes a bit more sense in terms of what these files actually do.
4929
4932
4930 * Moved all the classes and functions in ipythonlib to ipplib, so
4933 * Moved all the classes and functions in ipythonlib to ipplib, so
4931 now ipythonlib only has make_IPython(). This will ease up its
4934 now ipythonlib only has make_IPython(). This will ease up its
4932 splitting in smaller functional chunks later.
4935 splitting in smaller functional chunks later.
4933
4936
4934 * Cleaned up (done, I think) output of @whos. Better column
4937 * Cleaned up (done, I think) output of @whos. Better column
4935 formatting, and now shows str(var) for as much as it can, which is
4938 formatting, and now shows str(var) for as much as it can, which is
4936 typically what one gets with a 'print var'.
4939 typically what one gets with a 'print var'.
4937
4940
4938 2001-12-04 Fernando Perez <fperez@colorado.edu>
4941 2001-12-04 Fernando Perez <fperez@colorado.edu>
4939
4942
4940 * Fixed namespace problems. Now builtin/IPyhton/user names get
4943 * Fixed namespace problems. Now builtin/IPyhton/user names get
4941 properly reported in their namespace. Internal namespace handling
4944 properly reported in their namespace. Internal namespace handling
4942 is finally getting decent (not perfect yet, but much better than
4945 is finally getting decent (not perfect yet, but much better than
4943 the ad-hoc mess we had).
4946 the ad-hoc mess we had).
4944
4947
4945 * Removed -exit option. If people just want to run a python
4948 * Removed -exit option. If people just want to run a python
4946 script, that's what the normal interpreter is for. Less
4949 script, that's what the normal interpreter is for. Less
4947 unnecessary options, less chances for bugs.
4950 unnecessary options, less chances for bugs.
4948
4951
4949 * Added a crash handler which generates a complete post-mortem if
4952 * Added a crash handler which generates a complete post-mortem if
4950 IPython crashes. This will help a lot in tracking bugs down the
4953 IPython crashes. This will help a lot in tracking bugs down the
4951 road.
4954 road.
4952
4955
4953 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4956 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4954 which were boud to functions being reassigned would bypass the
4957 which were boud to functions being reassigned would bypass the
4955 logger, breaking the sync of _il with the prompt counter. This
4958 logger, breaking the sync of _il with the prompt counter. This
4956 would then crash IPython later when a new line was logged.
4959 would then crash IPython later when a new line was logged.
4957
4960
4958 2001-12-02 Fernando Perez <fperez@colorado.edu>
4961 2001-12-02 Fernando Perez <fperez@colorado.edu>
4959
4962
4960 * Made IPython a package. This means people don't have to clutter
4963 * Made IPython a package. This means people don't have to clutter
4961 their sys.path with yet another directory. Changed the INSTALL
4964 their sys.path with yet another directory. Changed the INSTALL
4962 file accordingly.
4965 file accordingly.
4963
4966
4964 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4967 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4965 sorts its output (so @who shows it sorted) and @whos formats the
4968 sorts its output (so @who shows it sorted) and @whos formats the
4966 table according to the width of the first column. Nicer, easier to
4969 table according to the width of the first column. Nicer, easier to
4967 read. Todo: write a generic table_format() which takes a list of
4970 read. Todo: write a generic table_format() which takes a list of
4968 lists and prints it nicely formatted, with optional row/column
4971 lists and prints it nicely formatted, with optional row/column
4969 separators and proper padding and justification.
4972 separators and proper padding and justification.
4970
4973
4971 * Released 0.1.20
4974 * Released 0.1.20
4972
4975
4973 * Fixed bug in @log which would reverse the inputcache list (a
4976 * Fixed bug in @log which would reverse the inputcache list (a
4974 copy operation was missing).
4977 copy operation was missing).
4975
4978
4976 * Code cleanup. @config was changed to use page(). Better, since
4979 * Code cleanup. @config was changed to use page(). Better, since
4977 its output is always quite long.
4980 its output is always quite long.
4978
4981
4979 * Itpl is back as a dependency. I was having too many problems
4982 * Itpl is back as a dependency. I was having too many problems
4980 getting the parametric aliases to work reliably, and it's just
4983 getting the parametric aliases to work reliably, and it's just
4981 easier to code weird string operations with it than playing %()s
4984 easier to code weird string operations with it than playing %()s
4982 games. It's only ~6k, so I don't think it's too big a deal.
4985 games. It's only ~6k, so I don't think it's too big a deal.
4983
4986
4984 * Found (and fixed) a very nasty bug with history. !lines weren't
4987 * Found (and fixed) a very nasty bug with history. !lines weren't
4985 getting cached, and the out of sync caches would crash
4988 getting cached, and the out of sync caches would crash
4986 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4989 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4987 division of labor a bit better. Bug fixed, cleaner structure.
4990 division of labor a bit better. Bug fixed, cleaner structure.
4988
4991
4989 2001-12-01 Fernando Perez <fperez@colorado.edu>
4992 2001-12-01 Fernando Perez <fperez@colorado.edu>
4990
4993
4991 * Released 0.1.19
4994 * Released 0.1.19
4992
4995
4993 * Added option -n to @hist to prevent line number printing. Much
4996 * Added option -n to @hist to prevent line number printing. Much
4994 easier to copy/paste code this way.
4997 easier to copy/paste code this way.
4995
4998
4996 * Created global _il to hold the input list. Allows easy
4999 * Created global _il to hold the input list. Allows easy
4997 re-execution of blocks of code by slicing it (inspired by Janko's
5000 re-execution of blocks of code by slicing it (inspired by Janko's
4998 comment on 'macros').
5001 comment on 'macros').
4999
5002
5000 * Small fixes and doc updates.
5003 * Small fixes and doc updates.
5001
5004
5002 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5005 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5003 much too fragile with automagic. Handles properly multi-line
5006 much too fragile with automagic. Handles properly multi-line
5004 statements and takes parameters.
5007 statements and takes parameters.
5005
5008
5006 2001-11-30 Fernando Perez <fperez@colorado.edu>
5009 2001-11-30 Fernando Perez <fperez@colorado.edu>
5007
5010
5008 * Version 0.1.18 released.
5011 * Version 0.1.18 released.
5009
5012
5010 * Fixed nasty namespace bug in initial module imports.
5013 * Fixed nasty namespace bug in initial module imports.
5011
5014
5012 * Added copyright/license notes to all code files (except
5015 * Added copyright/license notes to all code files (except
5013 DPyGetOpt). For the time being, LGPL. That could change.
5016 DPyGetOpt). For the time being, LGPL. That could change.
5014
5017
5015 * Rewrote a much nicer README, updated INSTALL, cleaned up
5018 * Rewrote a much nicer README, updated INSTALL, cleaned up
5016 ipythonrc-* samples.
5019 ipythonrc-* samples.
5017
5020
5018 * Overall code/documentation cleanup. Basically ready for
5021 * Overall code/documentation cleanup. Basically ready for
5019 release. Only remaining thing: licence decision (LGPL?).
5022 release. Only remaining thing: licence decision (LGPL?).
5020
5023
5021 * Converted load_config to a class, ConfigLoader. Now recursion
5024 * Converted load_config to a class, ConfigLoader. Now recursion
5022 control is better organized. Doesn't include the same file twice.
5025 control is better organized. Doesn't include the same file twice.
5023
5026
5024 2001-11-29 Fernando Perez <fperez@colorado.edu>
5027 2001-11-29 Fernando Perez <fperez@colorado.edu>
5025
5028
5026 * Got input history working. Changed output history variables from
5029 * Got input history working. Changed output history variables from
5027 _p to _o so that _i is for input and _o for output. Just cleaner
5030 _p to _o so that _i is for input and _o for output. Just cleaner
5028 convention.
5031 convention.
5029
5032
5030 * Implemented parametric aliases. This pretty much allows the
5033 * Implemented parametric aliases. This pretty much allows the
5031 alias system to offer full-blown shell convenience, I think.
5034 alias system to offer full-blown shell convenience, I think.
5032
5035
5033 * Version 0.1.17 released, 0.1.18 opened.
5036 * Version 0.1.17 released, 0.1.18 opened.
5034
5037
5035 * dot_ipython/ipythonrc (alias): added documentation.
5038 * dot_ipython/ipythonrc (alias): added documentation.
5036 (xcolor): Fixed small bug (xcolors -> xcolor)
5039 (xcolor): Fixed small bug (xcolors -> xcolor)
5037
5040
5038 * Changed the alias system. Now alias is a magic command to define
5041 * Changed the alias system. Now alias is a magic command to define
5039 aliases just like the shell. Rationale: the builtin magics should
5042 aliases just like the shell. Rationale: the builtin magics should
5040 be there for things deeply connected to IPython's
5043 be there for things deeply connected to IPython's
5041 architecture. And this is a much lighter system for what I think
5044 architecture. And this is a much lighter system for what I think
5042 is the really important feature: allowing users to define quickly
5045 is the really important feature: allowing users to define quickly
5043 magics that will do shell things for them, so they can customize
5046 magics that will do shell things for them, so they can customize
5044 IPython easily to match their work habits. If someone is really
5047 IPython easily to match their work habits. If someone is really
5045 desperate to have another name for a builtin alias, they can
5048 desperate to have another name for a builtin alias, they can
5046 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5049 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5047 works.
5050 works.
5048
5051
5049 2001-11-28 Fernando Perez <fperez@colorado.edu>
5052 2001-11-28 Fernando Perez <fperez@colorado.edu>
5050
5053
5051 * Changed @file so that it opens the source file at the proper
5054 * Changed @file so that it opens the source file at the proper
5052 line. Since it uses less, if your EDITOR environment is
5055 line. Since it uses less, if your EDITOR environment is
5053 configured, typing v will immediately open your editor of choice
5056 configured, typing v will immediately open your editor of choice
5054 right at the line where the object is defined. Not as quick as
5057 right at the line where the object is defined. Not as quick as
5055 having a direct @edit command, but for all intents and purposes it
5058 having a direct @edit command, but for all intents and purposes it
5056 works. And I don't have to worry about writing @edit to deal with
5059 works. And I don't have to worry about writing @edit to deal with
5057 all the editors, less does that.
5060 all the editors, less does that.
5058
5061
5059 * Version 0.1.16 released, 0.1.17 opened.
5062 * Version 0.1.16 released, 0.1.17 opened.
5060
5063
5061 * Fixed some nasty bugs in the page/page_dumb combo that could
5064 * Fixed some nasty bugs in the page/page_dumb combo that could
5062 crash IPython.
5065 crash IPython.
5063
5066
5064 2001-11-27 Fernando Perez <fperez@colorado.edu>
5067 2001-11-27 Fernando Perez <fperez@colorado.edu>
5065
5068
5066 * Version 0.1.15 released, 0.1.16 opened.
5069 * Version 0.1.15 released, 0.1.16 opened.
5067
5070
5068 * Finally got ? and ?? to work for undefined things: now it's
5071 * Finally got ? and ?? to work for undefined things: now it's
5069 possible to type {}.get? and get information about the get method
5072 possible to type {}.get? and get information about the get method
5070 of dicts, or os.path? even if only os is defined (so technically
5073 of dicts, or os.path? even if only os is defined (so technically
5071 os.path isn't). Works at any level. For example, after import os,
5074 os.path isn't). Works at any level. For example, after import os,
5072 os?, os.path?, os.path.abspath? all work. This is great, took some
5075 os?, os.path?, os.path.abspath? all work. This is great, took some
5073 work in _ofind.
5076 work in _ofind.
5074
5077
5075 * Fixed more bugs with logging. The sanest way to do it was to add
5078 * Fixed more bugs with logging. The sanest way to do it was to add
5076 to @log a 'mode' parameter. Killed two in one shot (this mode
5079 to @log a 'mode' parameter. Killed two in one shot (this mode
5077 option was a request of Janko's). I think it's finally clean
5080 option was a request of Janko's). I think it's finally clean
5078 (famous last words).
5081 (famous last words).
5079
5082
5080 * Added a page_dumb() pager which does a decent job of paging on
5083 * Added a page_dumb() pager which does a decent job of paging on
5081 screen, if better things (like less) aren't available. One less
5084 screen, if better things (like less) aren't available. One less
5082 unix dependency (someday maybe somebody will port this to
5085 unix dependency (someday maybe somebody will port this to
5083 windows).
5086 windows).
5084
5087
5085 * Fixed problem in magic_log: would lock of logging out if log
5088 * Fixed problem in magic_log: would lock of logging out if log
5086 creation failed (because it would still think it had succeeded).
5089 creation failed (because it would still think it had succeeded).
5087
5090
5088 * Improved the page() function using curses to auto-detect screen
5091 * Improved the page() function using curses to auto-detect screen
5089 size. Now it can make a much better decision on whether to print
5092 size. Now it can make a much better decision on whether to print
5090 or page a string. Option screen_length was modified: a value 0
5093 or page a string. Option screen_length was modified: a value 0
5091 means auto-detect, and that's the default now.
5094 means auto-detect, and that's the default now.
5092
5095
5093 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5096 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5094 go out. I'll test it for a few days, then talk to Janko about
5097 go out. I'll test it for a few days, then talk to Janko about
5095 licences and announce it.
5098 licences and announce it.
5096
5099
5097 * Fixed the length of the auto-generated ---> prompt which appears
5100 * Fixed the length of the auto-generated ---> prompt which appears
5098 for auto-parens and auto-quotes. Getting this right isn't trivial,
5101 for auto-parens and auto-quotes. Getting this right isn't trivial,
5099 with all the color escapes, different prompt types and optional
5102 with all the color escapes, different prompt types and optional
5100 separators. But it seems to be working in all the combinations.
5103 separators. But it seems to be working in all the combinations.
5101
5104
5102 2001-11-26 Fernando Perez <fperez@colorado.edu>
5105 2001-11-26 Fernando Perez <fperez@colorado.edu>
5103
5106
5104 * Wrote a regexp filter to get option types from the option names
5107 * Wrote a regexp filter to get option types from the option names
5105 string. This eliminates the need to manually keep two duplicate
5108 string. This eliminates the need to manually keep two duplicate
5106 lists.
5109 lists.
5107
5110
5108 * Removed the unneeded check_option_names. Now options are handled
5111 * Removed the unneeded check_option_names. Now options are handled
5109 in a much saner manner and it's easy to visually check that things
5112 in a much saner manner and it's easy to visually check that things
5110 are ok.
5113 are ok.
5111
5114
5112 * Updated version numbers on all files I modified to carry a
5115 * Updated version numbers on all files I modified to carry a
5113 notice so Janko and Nathan have clear version markers.
5116 notice so Janko and Nathan have clear version markers.
5114
5117
5115 * Updated docstring for ultraTB with my changes. I should send
5118 * Updated docstring for ultraTB with my changes. I should send
5116 this to Nathan.
5119 this to Nathan.
5117
5120
5118 * Lots of small fixes. Ran everything through pychecker again.
5121 * Lots of small fixes. Ran everything through pychecker again.
5119
5122
5120 * Made loading of deep_reload an cmd line option. If it's not too
5123 * Made loading of deep_reload an cmd line option. If it's not too
5121 kosher, now people can just disable it. With -nodeep_reload it's
5124 kosher, now people can just disable it. With -nodeep_reload it's
5122 still available as dreload(), it just won't overwrite reload().
5125 still available as dreload(), it just won't overwrite reload().
5123
5126
5124 * Moved many options to the no| form (-opt and -noopt
5127 * Moved many options to the no| form (-opt and -noopt
5125 accepted). Cleaner.
5128 accepted). Cleaner.
5126
5129
5127 * Changed magic_log so that if called with no parameters, it uses
5130 * Changed magic_log so that if called with no parameters, it uses
5128 'rotate' mode. That way auto-generated logs aren't automatically
5131 'rotate' mode. That way auto-generated logs aren't automatically
5129 over-written. For normal logs, now a backup is made if it exists
5132 over-written. For normal logs, now a backup is made if it exists
5130 (only 1 level of backups). A new 'backup' mode was added to the
5133 (only 1 level of backups). A new 'backup' mode was added to the
5131 Logger class to support this. This was a request by Janko.
5134 Logger class to support this. This was a request by Janko.
5132
5135
5133 * Added @logoff/@logon to stop/restart an active log.
5136 * Added @logoff/@logon to stop/restart an active log.
5134
5137
5135 * Fixed a lot of bugs in log saving/replay. It was pretty
5138 * Fixed a lot of bugs in log saving/replay. It was pretty
5136 broken. Now special lines (!@,/) appear properly in the command
5139 broken. Now special lines (!@,/) appear properly in the command
5137 history after a log replay.
5140 history after a log replay.
5138
5141
5139 * Tried and failed to implement full session saving via pickle. My
5142 * Tried and failed to implement full session saving via pickle. My
5140 idea was to pickle __main__.__dict__, but modules can't be
5143 idea was to pickle __main__.__dict__, but modules can't be
5141 pickled. This would be a better alternative to replaying logs, but
5144 pickled. This would be a better alternative to replaying logs, but
5142 seems quite tricky to get to work. Changed -session to be called
5145 seems quite tricky to get to work. Changed -session to be called
5143 -logplay, which more accurately reflects what it does. And if we
5146 -logplay, which more accurately reflects what it does. And if we
5144 ever get real session saving working, -session is now available.
5147 ever get real session saving working, -session is now available.
5145
5148
5146 * Implemented color schemes for prompts also. As for tracebacks,
5149 * Implemented color schemes for prompts also. As for tracebacks,
5147 currently only NoColor and Linux are supported. But now the
5150 currently only NoColor and Linux are supported. But now the
5148 infrastructure is in place, based on a generic ColorScheme
5151 infrastructure is in place, based on a generic ColorScheme
5149 class. So writing and activating new schemes both for the prompts
5152 class. So writing and activating new schemes both for the prompts
5150 and the tracebacks should be straightforward.
5153 and the tracebacks should be straightforward.
5151
5154
5152 * Version 0.1.13 released, 0.1.14 opened.
5155 * Version 0.1.13 released, 0.1.14 opened.
5153
5156
5154 * Changed handling of options for output cache. Now counter is
5157 * Changed handling of options for output cache. Now counter is
5155 hardwired starting at 1 and one specifies the maximum number of
5158 hardwired starting at 1 and one specifies the maximum number of
5156 entries *in the outcache* (not the max prompt counter). This is
5159 entries *in the outcache* (not the max prompt counter). This is
5157 much better, since many statements won't increase the cache
5160 much better, since many statements won't increase the cache
5158 count. It also eliminated some confusing options, now there's only
5161 count. It also eliminated some confusing options, now there's only
5159 one: cache_size.
5162 one: cache_size.
5160
5163
5161 * Added 'alias' magic function and magic_alias option in the
5164 * Added 'alias' magic function and magic_alias option in the
5162 ipythonrc file. Now the user can easily define whatever names he
5165 ipythonrc file. Now the user can easily define whatever names he
5163 wants for the magic functions without having to play weird
5166 wants for the magic functions without having to play weird
5164 namespace games. This gives IPython a real shell-like feel.
5167 namespace games. This gives IPython a real shell-like feel.
5165
5168
5166 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5169 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5167 @ or not).
5170 @ or not).
5168
5171
5169 This was one of the last remaining 'visible' bugs (that I know
5172 This was one of the last remaining 'visible' bugs (that I know
5170 of). I think if I can clean up the session loading so it works
5173 of). I think if I can clean up the session loading so it works
5171 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5174 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5172 about licensing).
5175 about licensing).
5173
5176
5174 2001-11-25 Fernando Perez <fperez@colorado.edu>
5177 2001-11-25 Fernando Perez <fperez@colorado.edu>
5175
5178
5176 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5179 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5177 there's a cleaner distinction between what ? and ?? show.
5180 there's a cleaner distinction between what ? and ?? show.
5178
5181
5179 * Added screen_length option. Now the user can define his own
5182 * Added screen_length option. Now the user can define his own
5180 screen size for page() operations.
5183 screen size for page() operations.
5181
5184
5182 * Implemented magic shell-like functions with automatic code
5185 * Implemented magic shell-like functions with automatic code
5183 generation. Now adding another function is just a matter of adding
5186 generation. Now adding another function is just a matter of adding
5184 an entry to a dict, and the function is dynamically generated at
5187 an entry to a dict, and the function is dynamically generated at
5185 run-time. Python has some really cool features!
5188 run-time. Python has some really cool features!
5186
5189
5187 * Renamed many options to cleanup conventions a little. Now all
5190 * Renamed many options to cleanup conventions a little. Now all
5188 are lowercase, and only underscores where needed. Also in the code
5191 are lowercase, and only underscores where needed. Also in the code
5189 option name tables are clearer.
5192 option name tables are clearer.
5190
5193
5191 * Changed prompts a little. Now input is 'In [n]:' instead of
5194 * Changed prompts a little. Now input is 'In [n]:' instead of
5192 'In[n]:='. This allows it the numbers to be aligned with the
5195 'In[n]:='. This allows it the numbers to be aligned with the
5193 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5196 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5194 Python (it was a Mathematica thing). The '...' continuation prompt
5197 Python (it was a Mathematica thing). The '...' continuation prompt
5195 was also changed a little to align better.
5198 was also changed a little to align better.
5196
5199
5197 * Fixed bug when flushing output cache. Not all _p<n> variables
5200 * Fixed bug when flushing output cache. Not all _p<n> variables
5198 exist, so their deletion needs to be wrapped in a try:
5201 exist, so their deletion needs to be wrapped in a try:
5199
5202
5200 * Figured out how to properly use inspect.formatargspec() (it
5203 * Figured out how to properly use inspect.formatargspec() (it
5201 requires the args preceded by *). So I removed all the code from
5204 requires the args preceded by *). So I removed all the code from
5202 _get_pdef in Magic, which was just replicating that.
5205 _get_pdef in Magic, which was just replicating that.
5203
5206
5204 * Added test to prefilter to allow redefining magic function names
5207 * Added test to prefilter to allow redefining magic function names
5205 as variables. This is ok, since the @ form is always available,
5208 as variables. This is ok, since the @ form is always available,
5206 but whe should allow the user to define a variable called 'ls' if
5209 but whe should allow the user to define a variable called 'ls' if
5207 he needs it.
5210 he needs it.
5208
5211
5209 * Moved the ToDo information from README into a separate ToDo.
5212 * Moved the ToDo information from README into a separate ToDo.
5210
5213
5211 * General code cleanup and small bugfixes. I think it's close to a
5214 * General code cleanup and small bugfixes. I think it's close to a
5212 state where it can be released, obviously with a big 'beta'
5215 state where it can be released, obviously with a big 'beta'
5213 warning on it.
5216 warning on it.
5214
5217
5215 * Got the magic function split to work. Now all magics are defined
5218 * Got the magic function split to work. Now all magics are defined
5216 in a separate class. It just organizes things a bit, and now
5219 in a separate class. It just organizes things a bit, and now
5217 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5220 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5218 was too long).
5221 was too long).
5219
5222
5220 * Changed @clear to @reset to avoid potential confusions with
5223 * Changed @clear to @reset to avoid potential confusions with
5221 the shell command clear. Also renamed @cl to @clear, which does
5224 the shell command clear. Also renamed @cl to @clear, which does
5222 exactly what people expect it to from their shell experience.
5225 exactly what people expect it to from their shell experience.
5223
5226
5224 Added a check to the @reset command (since it's so
5227 Added a check to the @reset command (since it's so
5225 destructive, it's probably a good idea to ask for confirmation).
5228 destructive, it's probably a good idea to ask for confirmation).
5226 But now reset only works for full namespace resetting. Since the
5229 But now reset only works for full namespace resetting. Since the
5227 del keyword is already there for deleting a few specific
5230 del keyword is already there for deleting a few specific
5228 variables, I don't see the point of having a redundant magic
5231 variables, I don't see the point of having a redundant magic
5229 function for the same task.
5232 function for the same task.
5230
5233
5231 2001-11-24 Fernando Perez <fperez@colorado.edu>
5234 2001-11-24 Fernando Perez <fperez@colorado.edu>
5232
5235
5233 * Updated the builtin docs (esp. the ? ones).
5236 * Updated the builtin docs (esp. the ? ones).
5234
5237
5235 * Ran all the code through pychecker. Not terribly impressed with
5238 * Ran all the code through pychecker. Not terribly impressed with
5236 it: lots of spurious warnings and didn't really find anything of
5239 it: lots of spurious warnings and didn't really find anything of
5237 substance (just a few modules being imported and not used).
5240 substance (just a few modules being imported and not used).
5238
5241
5239 * Implemented the new ultraTB functionality into IPython. New
5242 * Implemented the new ultraTB functionality into IPython. New
5240 option: xcolors. This chooses color scheme. xmode now only selects
5243 option: xcolors. This chooses color scheme. xmode now only selects
5241 between Plain and Verbose. Better orthogonality.
5244 between Plain and Verbose. Better orthogonality.
5242
5245
5243 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5246 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5244 mode and color scheme for the exception handlers. Now it's
5247 mode and color scheme for the exception handlers. Now it's
5245 possible to have the verbose traceback with no coloring.
5248 possible to have the verbose traceback with no coloring.
5246
5249
5247 2001-11-23 Fernando Perez <fperez@colorado.edu>
5250 2001-11-23 Fernando Perez <fperez@colorado.edu>
5248
5251
5249 * Version 0.1.12 released, 0.1.13 opened.
5252 * Version 0.1.12 released, 0.1.13 opened.
5250
5253
5251 * Removed option to set auto-quote and auto-paren escapes by
5254 * Removed option to set auto-quote and auto-paren escapes by
5252 user. The chances of breaking valid syntax are just too high. If
5255 user. The chances of breaking valid syntax are just too high. If
5253 someone *really* wants, they can always dig into the code.
5256 someone *really* wants, they can always dig into the code.
5254
5257
5255 * Made prompt separators configurable.
5258 * Made prompt separators configurable.
5256
5259
5257 2001-11-22 Fernando Perez <fperez@colorado.edu>
5260 2001-11-22 Fernando Perez <fperez@colorado.edu>
5258
5261
5259 * Small bugfixes in many places.
5262 * Small bugfixes in many places.
5260
5263
5261 * Removed the MyCompleter class from ipplib. It seemed redundant
5264 * Removed the MyCompleter class from ipplib. It seemed redundant
5262 with the C-p,C-n history search functionality. Less code to
5265 with the C-p,C-n history search functionality. Less code to
5263 maintain.
5266 maintain.
5264
5267
5265 * Moved all the original ipython.py code into ipythonlib.py. Right
5268 * Moved all the original ipython.py code into ipythonlib.py. Right
5266 now it's just one big dump into a function called make_IPython, so
5269 now it's just one big dump into a function called make_IPython, so
5267 no real modularity has been gained. But at least it makes the
5270 no real modularity has been gained. But at least it makes the
5268 wrapper script tiny, and since ipythonlib is a module, it gets
5271 wrapper script tiny, and since ipythonlib is a module, it gets
5269 compiled and startup is much faster.
5272 compiled and startup is much faster.
5270
5273
5271 This is a reasobably 'deep' change, so we should test it for a
5274 This is a reasobably 'deep' change, so we should test it for a
5272 while without messing too much more with the code.
5275 while without messing too much more with the code.
5273
5276
5274 2001-11-21 Fernando Perez <fperez@colorado.edu>
5277 2001-11-21 Fernando Perez <fperez@colorado.edu>
5275
5278
5276 * Version 0.1.11 released, 0.1.12 opened for further work.
5279 * Version 0.1.11 released, 0.1.12 opened for further work.
5277
5280
5278 * Removed dependency on Itpl. It was only needed in one place. It
5281 * Removed dependency on Itpl. It was only needed in one place. It
5279 would be nice if this became part of python, though. It makes life
5282 would be nice if this became part of python, though. It makes life
5280 *a lot* easier in some cases.
5283 *a lot* easier in some cases.
5281
5284
5282 * Simplified the prefilter code a bit. Now all handlers are
5285 * Simplified the prefilter code a bit. Now all handlers are
5283 expected to explicitly return a value (at least a blank string).
5286 expected to explicitly return a value (at least a blank string).
5284
5287
5285 * Heavy edits in ipplib. Removed the help system altogether. Now
5288 * Heavy edits in ipplib. Removed the help system altogether. Now
5286 obj?/?? is used for inspecting objects, a magic @doc prints
5289 obj?/?? is used for inspecting objects, a magic @doc prints
5287 docstrings, and full-blown Python help is accessed via the 'help'
5290 docstrings, and full-blown Python help is accessed via the 'help'
5288 keyword. This cleans up a lot of code (less to maintain) and does
5291 keyword. This cleans up a lot of code (less to maintain) and does
5289 the job. Since 'help' is now a standard Python component, might as
5292 the job. Since 'help' is now a standard Python component, might as
5290 well use it and remove duplicate functionality.
5293 well use it and remove duplicate functionality.
5291
5294
5292 Also removed the option to use ipplib as a standalone program. By
5295 Also removed the option to use ipplib as a standalone program. By
5293 now it's too dependent on other parts of IPython to function alone.
5296 now it's too dependent on other parts of IPython to function alone.
5294
5297
5295 * Fixed bug in genutils.pager. It would crash if the pager was
5298 * Fixed bug in genutils.pager. It would crash if the pager was
5296 exited immediately after opening (broken pipe).
5299 exited immediately after opening (broken pipe).
5297
5300
5298 * Trimmed down the VerboseTB reporting a little. The header is
5301 * Trimmed down the VerboseTB reporting a little. The header is
5299 much shorter now and the repeated exception arguments at the end
5302 much shorter now and the repeated exception arguments at the end
5300 have been removed. For interactive use the old header seemed a bit
5303 have been removed. For interactive use the old header seemed a bit
5301 excessive.
5304 excessive.
5302
5305
5303 * Fixed small bug in output of @whos for variables with multi-word
5306 * Fixed small bug in output of @whos for variables with multi-word
5304 types (only first word was displayed).
5307 types (only first word was displayed).
5305
5308
5306 2001-11-17 Fernando Perez <fperez@colorado.edu>
5309 2001-11-17 Fernando Perez <fperez@colorado.edu>
5307
5310
5308 * Version 0.1.10 released, 0.1.11 opened for further work.
5311 * Version 0.1.10 released, 0.1.11 opened for further work.
5309
5312
5310 * Modified dirs and friends. dirs now *returns* the stack (not
5313 * Modified dirs and friends. dirs now *returns* the stack (not
5311 prints), so one can manipulate it as a variable. Convenient to
5314 prints), so one can manipulate it as a variable. Convenient to
5312 travel along many directories.
5315 travel along many directories.
5313
5316
5314 * Fixed bug in magic_pdef: would only work with functions with
5317 * Fixed bug in magic_pdef: would only work with functions with
5315 arguments with default values.
5318 arguments with default values.
5316
5319
5317 2001-11-14 Fernando Perez <fperez@colorado.edu>
5320 2001-11-14 Fernando Perez <fperez@colorado.edu>
5318
5321
5319 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5322 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5320 example with IPython. Various other minor fixes and cleanups.
5323 example with IPython. Various other minor fixes and cleanups.
5321
5324
5322 * Version 0.1.9 released, 0.1.10 opened for further work.
5325 * Version 0.1.9 released, 0.1.10 opened for further work.
5323
5326
5324 * Added sys.path to the list of directories searched in the
5327 * Added sys.path to the list of directories searched in the
5325 execfile= option. It used to be the current directory and the
5328 execfile= option. It used to be the current directory and the
5326 user's IPYTHONDIR only.
5329 user's IPYTHONDIR only.
5327
5330
5328 2001-11-13 Fernando Perez <fperez@colorado.edu>
5331 2001-11-13 Fernando Perez <fperez@colorado.edu>
5329
5332
5330 * Reinstated the raw_input/prefilter separation that Janko had
5333 * Reinstated the raw_input/prefilter separation that Janko had
5331 initially. This gives a more convenient setup for extending the
5334 initially. This gives a more convenient setup for extending the
5332 pre-processor from the outside: raw_input always gets a string,
5335 pre-processor from the outside: raw_input always gets a string,
5333 and prefilter has to process it. We can then redefine prefilter
5336 and prefilter has to process it. We can then redefine prefilter
5334 from the outside and implement extensions for special
5337 from the outside and implement extensions for special
5335 purposes.
5338 purposes.
5336
5339
5337 Today I got one for inputting PhysicalQuantity objects
5340 Today I got one for inputting PhysicalQuantity objects
5338 (from Scientific) without needing any function calls at
5341 (from Scientific) without needing any function calls at
5339 all. Extremely convenient, and it's all done as a user-level
5342 all. Extremely convenient, and it's all done as a user-level
5340 extension (no IPython code was touched). Now instead of:
5343 extension (no IPython code was touched). Now instead of:
5341 a = PhysicalQuantity(4.2,'m/s**2')
5344 a = PhysicalQuantity(4.2,'m/s**2')
5342 one can simply say
5345 one can simply say
5343 a = 4.2 m/s**2
5346 a = 4.2 m/s**2
5344 or even
5347 or even
5345 a = 4.2 m/s^2
5348 a = 4.2 m/s^2
5346
5349
5347 I use this, but it's also a proof of concept: IPython really is
5350 I use this, but it's also a proof of concept: IPython really is
5348 fully user-extensible, even at the level of the parsing of the
5351 fully user-extensible, even at the level of the parsing of the
5349 command line. It's not trivial, but it's perfectly doable.
5352 command line. It's not trivial, but it's perfectly doable.
5350
5353
5351 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5354 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5352 the problem of modules being loaded in the inverse order in which
5355 the problem of modules being loaded in the inverse order in which
5353 they were defined in
5356 they were defined in
5354
5357
5355 * Version 0.1.8 released, 0.1.9 opened for further work.
5358 * Version 0.1.8 released, 0.1.9 opened for further work.
5356
5359
5357 * Added magics pdef, source and file. They respectively show the
5360 * Added magics pdef, source and file. They respectively show the
5358 definition line ('prototype' in C), source code and full python
5361 definition line ('prototype' in C), source code and full python
5359 file for any callable object. The object inspector oinfo uses
5362 file for any callable object. The object inspector oinfo uses
5360 these to show the same information.
5363 these to show the same information.
5361
5364
5362 * Version 0.1.7 released, 0.1.8 opened for further work.
5365 * Version 0.1.7 released, 0.1.8 opened for further work.
5363
5366
5364 * Separated all the magic functions into a class called Magic. The
5367 * Separated all the magic functions into a class called Magic. The
5365 InteractiveShell class was becoming too big for Xemacs to handle
5368 InteractiveShell class was becoming too big for Xemacs to handle
5366 (de-indenting a line would lock it up for 10 seconds while it
5369 (de-indenting a line would lock it up for 10 seconds while it
5367 backtracked on the whole class!)
5370 backtracked on the whole class!)
5368
5371
5369 FIXME: didn't work. It can be done, but right now namespaces are
5372 FIXME: didn't work. It can be done, but right now namespaces are
5370 all messed up. Do it later (reverted it for now, so at least
5373 all messed up. Do it later (reverted it for now, so at least
5371 everything works as before).
5374 everything works as before).
5372
5375
5373 * Got the object introspection system (magic_oinfo) working! I
5376 * Got the object introspection system (magic_oinfo) working! I
5374 think this is pretty much ready for release to Janko, so he can
5377 think this is pretty much ready for release to Janko, so he can
5375 test it for a while and then announce it. Pretty much 100% of what
5378 test it for a while and then announce it. Pretty much 100% of what
5376 I wanted for the 'phase 1' release is ready. Happy, tired.
5379 I wanted for the 'phase 1' release is ready. Happy, tired.
5377
5380
5378 2001-11-12 Fernando Perez <fperez@colorado.edu>
5381 2001-11-12 Fernando Perez <fperez@colorado.edu>
5379
5382
5380 * Version 0.1.6 released, 0.1.7 opened for further work.
5383 * Version 0.1.6 released, 0.1.7 opened for further work.
5381
5384
5382 * Fixed bug in printing: it used to test for truth before
5385 * Fixed bug in printing: it used to test for truth before
5383 printing, so 0 wouldn't print. Now checks for None.
5386 printing, so 0 wouldn't print. Now checks for None.
5384
5387
5385 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5388 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5386 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5389 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5387 reaches by hand into the outputcache. Think of a better way to do
5390 reaches by hand into the outputcache. Think of a better way to do
5388 this later.
5391 this later.
5389
5392
5390 * Various small fixes thanks to Nathan's comments.
5393 * Various small fixes thanks to Nathan's comments.
5391
5394
5392 * Changed magic_pprint to magic_Pprint. This way it doesn't
5395 * Changed magic_pprint to magic_Pprint. This way it doesn't
5393 collide with pprint() and the name is consistent with the command
5396 collide with pprint() and the name is consistent with the command
5394 line option.
5397 line option.
5395
5398
5396 * Changed prompt counter behavior to be fully like
5399 * Changed prompt counter behavior to be fully like
5397 Mathematica's. That is, even input that doesn't return a result
5400 Mathematica's. That is, even input that doesn't return a result
5398 raises the prompt counter. The old behavior was kind of confusing
5401 raises the prompt counter. The old behavior was kind of confusing
5399 (getting the same prompt number several times if the operation
5402 (getting the same prompt number several times if the operation
5400 didn't return a result).
5403 didn't return a result).
5401
5404
5402 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5405 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5403
5406
5404 * Fixed -Classic mode (wasn't working anymore).
5407 * Fixed -Classic mode (wasn't working anymore).
5405
5408
5406 * Added colored prompts using Nathan's new code. Colors are
5409 * Added colored prompts using Nathan's new code. Colors are
5407 currently hardwired, they can be user-configurable. For
5410 currently hardwired, they can be user-configurable. For
5408 developers, they can be chosen in file ipythonlib.py, at the
5411 developers, they can be chosen in file ipythonlib.py, at the
5409 beginning of the CachedOutput class def.
5412 beginning of the CachedOutput class def.
5410
5413
5411 2001-11-11 Fernando Perez <fperez@colorado.edu>
5414 2001-11-11 Fernando Perez <fperez@colorado.edu>
5412
5415
5413 * Version 0.1.5 released, 0.1.6 opened for further work.
5416 * Version 0.1.5 released, 0.1.6 opened for further work.
5414
5417
5415 * Changed magic_env to *return* the environment as a dict (not to
5418 * Changed magic_env to *return* the environment as a dict (not to
5416 print it). This way it prints, but it can also be processed.
5419 print it). This way it prints, but it can also be processed.
5417
5420
5418 * Added Verbose exception reporting to interactive
5421 * Added Verbose exception reporting to interactive
5419 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5422 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5420 traceback. Had to make some changes to the ultraTB file. This is
5423 traceback. Had to make some changes to the ultraTB file. This is
5421 probably the last 'big' thing in my mental todo list. This ties
5424 probably the last 'big' thing in my mental todo list. This ties
5422 in with the next entry:
5425 in with the next entry:
5423
5426
5424 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5427 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5425 has to specify is Plain, Color or Verbose for all exception
5428 has to specify is Plain, Color or Verbose for all exception
5426 handling.
5429 handling.
5427
5430
5428 * Removed ShellServices option. All this can really be done via
5431 * Removed ShellServices option. All this can really be done via
5429 the magic system. It's easier to extend, cleaner and has automatic
5432 the magic system. It's easier to extend, cleaner and has automatic
5430 namespace protection and documentation.
5433 namespace protection and documentation.
5431
5434
5432 2001-11-09 Fernando Perez <fperez@colorado.edu>
5435 2001-11-09 Fernando Perez <fperez@colorado.edu>
5433
5436
5434 * Fixed bug in output cache flushing (missing parameter to
5437 * Fixed bug in output cache flushing (missing parameter to
5435 __init__). Other small bugs fixed (found using pychecker).
5438 __init__). Other small bugs fixed (found using pychecker).
5436
5439
5437 * Version 0.1.4 opened for bugfixing.
5440 * Version 0.1.4 opened for bugfixing.
5438
5441
5439 2001-11-07 Fernando Perez <fperez@colorado.edu>
5442 2001-11-07 Fernando Perez <fperez@colorado.edu>
5440
5443
5441 * Version 0.1.3 released, mainly because of the raw_input bug.
5444 * Version 0.1.3 released, mainly because of the raw_input bug.
5442
5445
5443 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5446 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5444 and when testing for whether things were callable, a call could
5447 and when testing for whether things were callable, a call could
5445 actually be made to certain functions. They would get called again
5448 actually be made to certain functions. They would get called again
5446 once 'really' executed, with a resulting double call. A disaster
5449 once 'really' executed, with a resulting double call. A disaster
5447 in many cases (list.reverse() would never work!).
5450 in many cases (list.reverse() would never work!).
5448
5451
5449 * Removed prefilter() function, moved its code to raw_input (which
5452 * Removed prefilter() function, moved its code to raw_input (which
5450 after all was just a near-empty caller for prefilter). This saves
5453 after all was just a near-empty caller for prefilter). This saves
5451 a function call on every prompt, and simplifies the class a tiny bit.
5454 a function call on every prompt, and simplifies the class a tiny bit.
5452
5455
5453 * Fix _ip to __ip name in magic example file.
5456 * Fix _ip to __ip name in magic example file.
5454
5457
5455 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5458 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5456 work with non-gnu versions of tar.
5459 work with non-gnu versions of tar.
5457
5460
5458 2001-11-06 Fernando Perez <fperez@colorado.edu>
5461 2001-11-06 Fernando Perez <fperez@colorado.edu>
5459
5462
5460 * Version 0.1.2. Just to keep track of the recent changes.
5463 * Version 0.1.2. Just to keep track of the recent changes.
5461
5464
5462 * Fixed nasty bug in output prompt routine. It used to check 'if
5465 * Fixed nasty bug in output prompt routine. It used to check 'if
5463 arg != None...'. Problem is, this fails if arg implements a
5466 arg != None...'. Problem is, this fails if arg implements a
5464 special comparison (__cmp__) which disallows comparing to
5467 special comparison (__cmp__) which disallows comparing to
5465 None. Found it when trying to use the PhysicalQuantity module from
5468 None. Found it when trying to use the PhysicalQuantity module from
5466 ScientificPython.
5469 ScientificPython.
5467
5470
5468 2001-11-05 Fernando Perez <fperez@colorado.edu>
5471 2001-11-05 Fernando Perez <fperez@colorado.edu>
5469
5472
5470 * Also added dirs. Now the pushd/popd/dirs family functions
5473 * Also added dirs. Now the pushd/popd/dirs family functions
5471 basically like the shell, with the added convenience of going home
5474 basically like the shell, with the added convenience of going home
5472 when called with no args.
5475 when called with no args.
5473
5476
5474 * pushd/popd slightly modified to mimic shell behavior more
5477 * pushd/popd slightly modified to mimic shell behavior more
5475 closely.
5478 closely.
5476
5479
5477 * Added env,pushd,popd from ShellServices as magic functions. I
5480 * Added env,pushd,popd from ShellServices as magic functions. I
5478 think the cleanest will be to port all desired functions from
5481 think the cleanest will be to port all desired functions from
5479 ShellServices as magics and remove ShellServices altogether. This
5482 ShellServices as magics and remove ShellServices altogether. This
5480 will provide a single, clean way of adding functionality
5483 will provide a single, clean way of adding functionality
5481 (shell-type or otherwise) to IP.
5484 (shell-type or otherwise) to IP.
5482
5485
5483 2001-11-04 Fernando Perez <fperez@colorado.edu>
5486 2001-11-04 Fernando Perez <fperez@colorado.edu>
5484
5487
5485 * Added .ipython/ directory to sys.path. This way users can keep
5488 * Added .ipython/ directory to sys.path. This way users can keep
5486 customizations there and access them via import.
5489 customizations there and access them via import.
5487
5490
5488 2001-11-03 Fernando Perez <fperez@colorado.edu>
5491 2001-11-03 Fernando Perez <fperez@colorado.edu>
5489
5492
5490 * Opened version 0.1.1 for new changes.
5493 * Opened version 0.1.1 for new changes.
5491
5494
5492 * Changed version number to 0.1.0: first 'public' release, sent to
5495 * Changed version number to 0.1.0: first 'public' release, sent to
5493 Nathan and Janko.
5496 Nathan and Janko.
5494
5497
5495 * Lots of small fixes and tweaks.
5498 * Lots of small fixes and tweaks.
5496
5499
5497 * Minor changes to whos format. Now strings are shown, snipped if
5500 * Minor changes to whos format. Now strings are shown, snipped if
5498 too long.
5501 too long.
5499
5502
5500 * Changed ShellServices to work on __main__ so they show up in @who
5503 * Changed ShellServices to work on __main__ so they show up in @who
5501
5504
5502 * Help also works with ? at the end of a line:
5505 * Help also works with ? at the end of a line:
5503 ?sin and sin?
5506 ?sin and sin?
5504 both produce the same effect. This is nice, as often I use the
5507 both produce the same effect. This is nice, as often I use the
5505 tab-complete to find the name of a method, but I used to then have
5508 tab-complete to find the name of a method, but I used to then have
5506 to go to the beginning of the line to put a ? if I wanted more
5509 to go to the beginning of the line to put a ? if I wanted more
5507 info. Now I can just add the ? and hit return. Convenient.
5510 info. Now I can just add the ? and hit return. Convenient.
5508
5511
5509 2001-11-02 Fernando Perez <fperez@colorado.edu>
5512 2001-11-02 Fernando Perez <fperez@colorado.edu>
5510
5513
5511 * Python version check (>=2.1) added.
5514 * Python version check (>=2.1) added.
5512
5515
5513 * Added LazyPython documentation. At this point the docs are quite
5516 * Added LazyPython documentation. At this point the docs are quite
5514 a mess. A cleanup is in order.
5517 a mess. A cleanup is in order.
5515
5518
5516 * Auto-installer created. For some bizarre reason, the zipfiles
5519 * Auto-installer created. For some bizarre reason, the zipfiles
5517 module isn't working on my system. So I made a tar version
5520 module isn't working on my system. So I made a tar version
5518 (hopefully the command line options in various systems won't kill
5521 (hopefully the command line options in various systems won't kill
5519 me).
5522 me).
5520
5523
5521 * Fixes to Struct in genutils. Now all dictionary-like methods are
5524 * Fixes to Struct in genutils. Now all dictionary-like methods are
5522 protected (reasonably).
5525 protected (reasonably).
5523
5526
5524 * Added pager function to genutils and changed ? to print usage
5527 * Added pager function to genutils and changed ? to print usage
5525 note through it (it was too long).
5528 note through it (it was too long).
5526
5529
5527 * Added the LazyPython functionality. Works great! I changed the
5530 * Added the LazyPython functionality. Works great! I changed the
5528 auto-quote escape to ';', it's on home row and next to '. But
5531 auto-quote escape to ';', it's on home row and next to '. But
5529 both auto-quote and auto-paren (still /) escapes are command-line
5532 both auto-quote and auto-paren (still /) escapes are command-line
5530 parameters.
5533 parameters.
5531
5534
5532
5535
5533 2001-11-01 Fernando Perez <fperez@colorado.edu>
5536 2001-11-01 Fernando Perez <fperez@colorado.edu>
5534
5537
5535 * Version changed to 0.0.7. Fairly large change: configuration now
5538 * Version changed to 0.0.7. Fairly large change: configuration now
5536 is all stored in a directory, by default .ipython. There, all
5539 is all stored in a directory, by default .ipython. There, all
5537 config files have normal looking names (not .names)
5540 config files have normal looking names (not .names)
5538
5541
5539 * Version 0.0.6 Released first to Lucas and Archie as a test
5542 * Version 0.0.6 Released first to Lucas and Archie as a test
5540 run. Since it's the first 'semi-public' release, change version to
5543 run. Since it's the first 'semi-public' release, change version to
5541 > 0.0.6 for any changes now.
5544 > 0.0.6 for any changes now.
5542
5545
5543 * Stuff I had put in the ipplib.py changelog:
5546 * Stuff I had put in the ipplib.py changelog:
5544
5547
5545 Changes to InteractiveShell:
5548 Changes to InteractiveShell:
5546
5549
5547 - Made the usage message a parameter.
5550 - Made the usage message a parameter.
5548
5551
5549 - Require the name of the shell variable to be given. It's a bit
5552 - Require the name of the shell variable to be given. It's a bit
5550 of a hack, but allows the name 'shell' not to be hardwire in the
5553 of a hack, but allows the name 'shell' not to be hardwire in the
5551 magic (@) handler, which is problematic b/c it requires
5554 magic (@) handler, which is problematic b/c it requires
5552 polluting the global namespace with 'shell'. This in turn is
5555 polluting the global namespace with 'shell'. This in turn is
5553 fragile: if a user redefines a variable called shell, things
5556 fragile: if a user redefines a variable called shell, things
5554 break.
5557 break.
5555
5558
5556 - magic @: all functions available through @ need to be defined
5559 - magic @: all functions available through @ need to be defined
5557 as magic_<name>, even though they can be called simply as
5560 as magic_<name>, even though they can be called simply as
5558 @<name>. This allows the special command @magic to gather
5561 @<name>. This allows the special command @magic to gather
5559 information automatically about all existing magic functions,
5562 information automatically about all existing magic functions,
5560 even if they are run-time user extensions, by parsing the shell
5563 even if they are run-time user extensions, by parsing the shell
5561 instance __dict__ looking for special magic_ names.
5564 instance __dict__ looking for special magic_ names.
5562
5565
5563 - mainloop: added *two* local namespace parameters. This allows
5566 - mainloop: added *two* local namespace parameters. This allows
5564 the class to differentiate between parameters which were there
5567 the class to differentiate between parameters which were there
5565 before and after command line initialization was processed. This
5568 before and after command line initialization was processed. This
5566 way, later @who can show things loaded at startup by the
5569 way, later @who can show things loaded at startup by the
5567 user. This trick was necessary to make session saving/reloading
5570 user. This trick was necessary to make session saving/reloading
5568 really work: ideally after saving/exiting/reloading a session,
5571 really work: ideally after saving/exiting/reloading a session,
5569 *everythin* should look the same, including the output of @who. I
5572 *everythin* should look the same, including the output of @who. I
5570 was only able to make this work with this double namespace
5573 was only able to make this work with this double namespace
5571 trick.
5574 trick.
5572
5575
5573 - added a header to the logfile which allows (almost) full
5576 - added a header to the logfile which allows (almost) full
5574 session restoring.
5577 session restoring.
5575
5578
5576 - prepend lines beginning with @ or !, with a and log
5579 - prepend lines beginning with @ or !, with a and log
5577 them. Why? !lines: may be useful to know what you did @lines:
5580 them. Why? !lines: may be useful to know what you did @lines:
5578 they may affect session state. So when restoring a session, at
5581 they may affect session state. So when restoring a session, at
5579 least inform the user of their presence. I couldn't quite get
5582 least inform the user of their presence. I couldn't quite get
5580 them to properly re-execute, but at least the user is warned.
5583 them to properly re-execute, but at least the user is warned.
5581
5584
5582 * Started ChangeLog.
5585 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now