##// END OF EJS Templates
Configurable display hook
vivainio -
Show More
@@ -1,583 +1,575 b''
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 1005 2006-01-12 08:39:26Z fperez $"""
5 $Id: Prompts.py 1020 2006-01-14 13:22:58Z 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 from pprint import pprint,pformat
26 from pprint import pprint,pformat
27
27
28 # IPython's own
28 # IPython's own
29 from IPython import ColorANSI
29 from IPython import ColorANSI
30 from IPython.Itpl import ItplNS
30 from IPython.Itpl import ItplNS
31 from IPython.ipstruct import Struct
31 from IPython.ipstruct import Struct
32 from IPython.macro import Macro
32 from IPython.macro import Macro
33 from IPython.genutils import *
33 from IPython.genutils import *
34
34
35 #****************************************************************************
35 #****************************************************************************
36 #Color schemes for Prompts.
36 #Color schemes for Prompts.
37
37
38 PromptColors = ColorANSI.ColorSchemeTable()
38 PromptColors = ColorANSI.ColorSchemeTable()
39 InputColors = ColorANSI.InputTermColors # just a shorthand
39 InputColors = ColorANSI.InputTermColors # just a shorthand
40 Colors = ColorANSI.TermColors # just a shorthand
40 Colors = ColorANSI.TermColors # just a shorthand
41
41
42 PromptColors.add_scheme(ColorANSI.ColorScheme(
42 PromptColors.add_scheme(ColorANSI.ColorScheme(
43 'NoColor',
43 'NoColor',
44 in_prompt = InputColors.NoColor, # Input prompt
44 in_prompt = InputColors.NoColor, # Input prompt
45 in_number = InputColors.NoColor, # Input prompt number
45 in_number = InputColors.NoColor, # Input prompt number
46 in_prompt2 = InputColors.NoColor, # Continuation prompt
46 in_prompt2 = InputColors.NoColor, # Continuation prompt
47 in_normal = InputColors.NoColor, # color off (usu. Colors.Normal)
47 in_normal = InputColors.NoColor, # color off (usu. Colors.Normal)
48
48
49 out_prompt = Colors.NoColor, # Output prompt
49 out_prompt = Colors.NoColor, # Output prompt
50 out_number = Colors.NoColor, # Output prompt number
50 out_number = Colors.NoColor, # Output prompt number
51
51
52 normal = Colors.NoColor # color off (usu. Colors.Normal)
52 normal = Colors.NoColor # color off (usu. Colors.Normal)
53 ))
53 ))
54
54
55 # make some schemes as instances so we can copy them for modification easily:
55 # make some schemes as instances so we can copy them for modification easily:
56 __PColLinux = ColorANSI.ColorScheme(
56 __PColLinux = ColorANSI.ColorScheme(
57 'Linux',
57 'Linux',
58 in_prompt = InputColors.Green,
58 in_prompt = InputColors.Green,
59 in_number = InputColors.LightGreen,
59 in_number = InputColors.LightGreen,
60 in_prompt2 = InputColors.Green,
60 in_prompt2 = InputColors.Green,
61 in_normal = InputColors.Normal, # color off (usu. Colors.Normal)
61 in_normal = InputColors.Normal, # color off (usu. Colors.Normal)
62
62
63 out_prompt = Colors.Red,
63 out_prompt = Colors.Red,
64 out_number = Colors.LightRed,
64 out_number = Colors.LightRed,
65
65
66 normal = Colors.Normal
66 normal = Colors.Normal
67 )
67 )
68 # Don't forget to enter it into the table!
68 # Don't forget to enter it into the table!
69 PromptColors.add_scheme(__PColLinux)
69 PromptColors.add_scheme(__PColLinux)
70
70
71 # Slightly modified Linux for light backgrounds
71 # Slightly modified Linux for light backgrounds
72 __PColLightBG = __PColLinux.copy('LightBG')
72 __PColLightBG = __PColLinux.copy('LightBG')
73
73
74 __PColLightBG.colors.update(
74 __PColLightBG.colors.update(
75 in_prompt = InputColors.Blue,
75 in_prompt = InputColors.Blue,
76 in_number = InputColors.LightBlue,
76 in_number = InputColors.LightBlue,
77 in_prompt2 = InputColors.Blue
77 in_prompt2 = InputColors.Blue
78 )
78 )
79 PromptColors.add_scheme(__PColLightBG)
79 PromptColors.add_scheme(__PColLightBG)
80
80
81 del Colors,InputColors
81 del Colors,InputColors
82
82
83 #-----------------------------------------------------------------------------
83 #-----------------------------------------------------------------------------
84 def multiple_replace(dict, text):
84 def multiple_replace(dict, text):
85 """ Replace in 'text' all occurences of any key in the given
85 """ Replace in 'text' all occurences of any key in the given
86 dictionary by its corresponding value. Returns the new string."""
86 dictionary by its corresponding value. Returns the new string."""
87
87
88 # Function by Xavier Defrang, originally found at:
88 # Function by Xavier Defrang, originally found at:
89 # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/81330
89 # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/81330
90
90
91 # Create a regular expression from the dictionary keys
91 # Create a regular expression from the dictionary keys
92 regex = re.compile("(%s)" % "|".join(map(re.escape, dict.keys())))
92 regex = re.compile("(%s)" % "|".join(map(re.escape, dict.keys())))
93 # For each match, look-up corresponding value in dictionary
93 # For each match, look-up corresponding value in dictionary
94 return regex.sub(lambda mo: dict[mo.string[mo.start():mo.end()]], text)
94 return regex.sub(lambda mo: dict[mo.string[mo.start():mo.end()]], text)
95
95
96 #-----------------------------------------------------------------------------
96 #-----------------------------------------------------------------------------
97 # Special characters that can be used in prompt templates, mainly bash-like
97 # Special characters that can be used in prompt templates, mainly bash-like
98
98
99 # If $HOME isn't defined (Windows), make it an absurd string so that it can
99 # If $HOME isn't defined (Windows), make it an absurd string so that it can
100 # never be expanded out into '~'. Basically anything which can never be a
100 # never be expanded out into '~'. Basically anything which can never be a
101 # reasonable directory name will do, we just want the $HOME -> '~' operation
101 # reasonable directory name will do, we just want the $HOME -> '~' operation
102 # to become a no-op. We pre-compute $HOME here so it's not done on every
102 # to become a no-op. We pre-compute $HOME here so it's not done on every
103 # prompt call.
103 # prompt call.
104
104
105 # FIXME:
105 # FIXME:
106
106
107 # - This should be turned into a class which does proper namespace management,
107 # - This should be turned into a class which does proper namespace management,
108 # since the prompt specials need to be evaluated in a certain namespace.
108 # since the prompt specials need to be evaluated in a certain namespace.
109 # Currently it's just globals, which need to be managed manually by code
109 # Currently it's just globals, which need to be managed manually by code
110 # below.
110 # below.
111
111
112 # - I also need to split up the color schemes from the prompt specials
112 # - I also need to split up the color schemes from the prompt specials
113 # somehow. I don't have a clean design for that quite yet.
113 # somehow. I don't have a clean design for that quite yet.
114
114
115 HOME = os.environ.get("HOME","//////:::::ZZZZZ,,,~~~")
115 HOME = os.environ.get("HOME","//////:::::ZZZZZ,,,~~~")
116
116
117 # We precompute a few more strings here for the prompt_specials, which are
117 # We precompute a few more strings here for the prompt_specials, which are
118 # fixed once ipython starts. This reduces the runtime overhead of computing
118 # fixed once ipython starts. This reduces the runtime overhead of computing
119 # prompt strings.
119 # prompt strings.
120 USER = os.environ.get("USER")
120 USER = os.environ.get("USER")
121 HOSTNAME = socket.gethostname()
121 HOSTNAME = socket.gethostname()
122 HOSTNAME_SHORT = HOSTNAME.split(".")[0]
122 HOSTNAME_SHORT = HOSTNAME.split(".")[0]
123 ROOT_SYMBOL = "$#"[os.name=='nt' or os.getuid()==0]
123 ROOT_SYMBOL = "$#"[os.name=='nt' or os.getuid()==0]
124
124
125 prompt_specials_color = {
125 prompt_specials_color = {
126 # Prompt/history count
126 # Prompt/history count
127 '%n' : '${self.col_num}' '${self.cache.prompt_count}' '${self.col_p}',
127 '%n' : '${self.col_num}' '${self.cache.prompt_count}' '${self.col_p}',
128 '\\#': '${self.col_num}' '${self.cache.prompt_count}' '${self.col_p}',
128 '\\#': '${self.col_num}' '${self.cache.prompt_count}' '${self.col_p}',
129 # Prompt/history count, with the actual digits replaced by dots. Used
129 # Prompt/history count, with the actual digits replaced by dots. Used
130 # mainly in continuation prompts (prompt_in2)
130 # mainly in continuation prompts (prompt_in2)
131 '\\D': '${"."*len(str(self.cache.prompt_count))}',
131 '\\D': '${"."*len(str(self.cache.prompt_count))}',
132 # Current working directory
132 # Current working directory
133 '\\w': '${os.getcwd()}',
133 '\\w': '${os.getcwd()}',
134 # Current time
134 # Current time
135 '\\t' : '${time.strftime("%H:%M:%S")}',
135 '\\t' : '${time.strftime("%H:%M:%S")}',
136 # Basename of current working directory.
136 # Basename of current working directory.
137 # (use os.sep to make this portable across OSes)
137 # (use os.sep to make this portable across OSes)
138 '\\W' : '${os.getcwd().split("%s")[-1]}' % os.sep,
138 '\\W' : '${os.getcwd().split("%s")[-1]}' % os.sep,
139 # These X<N> are an extension to the normal bash prompts. They return
139 # These X<N> are an extension to the normal bash prompts. They return
140 # N terms of the path, after replacing $HOME with '~'
140 # N terms of the path, after replacing $HOME with '~'
141 '\\X0': '${os.getcwd().replace("%s","~")}' % HOME,
141 '\\X0': '${os.getcwd().replace("%s","~")}' % HOME,
142 '\\X1': '${self.cwd_filt(1)}',
142 '\\X1': '${self.cwd_filt(1)}',
143 '\\X2': '${self.cwd_filt(2)}',
143 '\\X2': '${self.cwd_filt(2)}',
144 '\\X3': '${self.cwd_filt(3)}',
144 '\\X3': '${self.cwd_filt(3)}',
145 '\\X4': '${self.cwd_filt(4)}',
145 '\\X4': '${self.cwd_filt(4)}',
146 '\\X5': '${self.cwd_filt(5)}',
146 '\\X5': '${self.cwd_filt(5)}',
147 # Y<N> are similar to X<N>, but they show '~' if it's the directory
147 # Y<N> are similar to X<N>, but they show '~' if it's the directory
148 # N+1 in the list. Somewhat like %cN in tcsh.
148 # N+1 in the list. Somewhat like %cN in tcsh.
149 '\\Y0': '${self.cwd_filt2(0)}',
149 '\\Y0': '${self.cwd_filt2(0)}',
150 '\\Y1': '${self.cwd_filt2(1)}',
150 '\\Y1': '${self.cwd_filt2(1)}',
151 '\\Y2': '${self.cwd_filt2(2)}',
151 '\\Y2': '${self.cwd_filt2(2)}',
152 '\\Y3': '${self.cwd_filt2(3)}',
152 '\\Y3': '${self.cwd_filt2(3)}',
153 '\\Y4': '${self.cwd_filt2(4)}',
153 '\\Y4': '${self.cwd_filt2(4)}',
154 '\\Y5': '${self.cwd_filt2(5)}',
154 '\\Y5': '${self.cwd_filt2(5)}',
155 # Hostname up to first .
155 # Hostname up to first .
156 '\\h': HOSTNAME_SHORT,
156 '\\h': HOSTNAME_SHORT,
157 # Full hostname
157 # Full hostname
158 '\\H': HOSTNAME,
158 '\\H': HOSTNAME,
159 # Username of current user
159 # Username of current user
160 '\\u': USER,
160 '\\u': USER,
161 # Escaped '\'
161 # Escaped '\'
162 '\\\\': '\\',
162 '\\\\': '\\',
163 # Newline
163 # Newline
164 '\\n': '\n',
164 '\\n': '\n',
165 # Carriage return
165 # Carriage return
166 '\\r': '\r',
166 '\\r': '\r',
167 # Release version
167 # Release version
168 '\\v': __version__,
168 '\\v': __version__,
169 # Root symbol ($ or #)
169 # Root symbol ($ or #)
170 '\\$': ROOT_SYMBOL,
170 '\\$': ROOT_SYMBOL,
171 }
171 }
172
172
173 # A copy of the prompt_specials dictionary but with all color escapes removed,
173 # A copy of the prompt_specials dictionary but with all color escapes removed,
174 # so we can correctly compute the prompt length for the auto_rewrite method.
174 # so we can correctly compute the prompt length for the auto_rewrite method.
175 prompt_specials_nocolor = prompt_specials_color.copy()
175 prompt_specials_nocolor = prompt_specials_color.copy()
176 prompt_specials_nocolor['%n'] = '${self.cache.prompt_count}'
176 prompt_specials_nocolor['%n'] = '${self.cache.prompt_count}'
177 prompt_specials_nocolor['\\#'] = '${self.cache.prompt_count}'
177 prompt_specials_nocolor['\\#'] = '${self.cache.prompt_count}'
178
178
179 # Add in all the InputTermColors color escapes as valid prompt characters.
179 # Add in all the InputTermColors color escapes as valid prompt characters.
180 # They all get added as \\C_COLORNAME, so that we don't have any conflicts
180 # They all get added as \\C_COLORNAME, so that we don't have any conflicts
181 # with a color name which may begin with a letter used by any other of the
181 # with a color name which may begin with a letter used by any other of the
182 # allowed specials. This of course means that \\C will never be allowed for
182 # allowed specials. This of course means that \\C will never be allowed for
183 # anything else.
183 # anything else.
184 input_colors = ColorANSI.InputTermColors
184 input_colors = ColorANSI.InputTermColors
185 for _color in dir(input_colors):
185 for _color in dir(input_colors):
186 if _color[0] != '_':
186 if _color[0] != '_':
187 c_name = '\\C_'+_color
187 c_name = '\\C_'+_color
188 prompt_specials_color[c_name] = getattr(input_colors,_color)
188 prompt_specials_color[c_name] = getattr(input_colors,_color)
189 prompt_specials_nocolor[c_name] = ''
189 prompt_specials_nocolor[c_name] = ''
190
190
191 # we default to no color for safety. Note that prompt_specials is a global
191 # we default to no color for safety. Note that prompt_specials is a global
192 # variable used by all prompt objects.
192 # variable used by all prompt objects.
193 prompt_specials = prompt_specials_nocolor
193 prompt_specials = prompt_specials_nocolor
194
194
195 #-----------------------------------------------------------------------------
195 #-----------------------------------------------------------------------------
196 def str_safe(arg):
196 def str_safe(arg):
197 """Convert to a string, without ever raising an exception.
197 """Convert to a string, without ever raising an exception.
198
198
199 If str(arg) fails, <ERROR: ... > is returned, where ... is the exception
199 If str(arg) fails, <ERROR: ... > is returned, where ... is the exception
200 error message."""
200 error message."""
201
201
202 try:
202 try:
203 out = str(arg)
203 out = str(arg)
204 except UnicodeError:
204 except UnicodeError:
205 try:
205 try:
206 out = arg.encode('utf_8','replace')
206 out = arg.encode('utf_8','replace')
207 except Exception,msg:
207 except Exception,msg:
208 # let's keep this little duplication here, so that the most common
208 # let's keep this little duplication here, so that the most common
209 # case doesn't suffer from a double try wrapping.
209 # case doesn't suffer from a double try wrapping.
210 out = '<ERROR: %s>' % msg
210 out = '<ERROR: %s>' % msg
211 except Exception,msg:
211 except Exception,msg:
212 out = '<ERROR: %s>' % msg
212 out = '<ERROR: %s>' % msg
213 return out
213 return out
214
214
215 class BasePrompt:
215 class BasePrompt:
216 """Interactive prompt similar to Mathematica's."""
216 """Interactive prompt similar to Mathematica's."""
217 def __init__(self,cache,sep,prompt,pad_left=False):
217 def __init__(self,cache,sep,prompt,pad_left=False):
218
218
219 # Hack: we access information about the primary prompt through the
219 # Hack: we access information about the primary prompt through the
220 # cache argument. We need this, because we want the secondary prompt
220 # cache argument. We need this, because we want the secondary prompt
221 # to be aligned with the primary one. Color table info is also shared
221 # to be aligned with the primary one. Color table info is also shared
222 # by all prompt classes through the cache. Nice OO spaghetti code!
222 # by all prompt classes through the cache. Nice OO spaghetti code!
223 self.cache = cache
223 self.cache = cache
224 self.sep = sep
224 self.sep = sep
225
225
226 # regexp to count the number of spaces at the end of a prompt
226 # regexp to count the number of spaces at the end of a prompt
227 # expression, useful for prompt auto-rewriting
227 # expression, useful for prompt auto-rewriting
228 self.rspace = re.compile(r'(\s*)$')
228 self.rspace = re.compile(r'(\s*)$')
229 # Flag to left-pad prompt strings to match the length of the primary
229 # Flag to left-pad prompt strings to match the length of the primary
230 # prompt
230 # prompt
231 self.pad_left = pad_left
231 self.pad_left = pad_left
232 # Set template to create each actual prompt (where numbers change)
232 # Set template to create each actual prompt (where numbers change)
233 self.p_template = prompt
233 self.p_template = prompt
234 self.set_p_str()
234 self.set_p_str()
235
235
236 def set_p_str(self):
236 def set_p_str(self):
237 """ Set the interpolating prompt strings.
237 """ Set the interpolating prompt strings.
238
238
239 This must be called every time the color settings change, because the
239 This must be called every time the color settings change, because the
240 prompt_specials global may have changed."""
240 prompt_specials global may have changed."""
241
241
242 import os,time # needed in locals for prompt string handling
242 import os,time # needed in locals for prompt string handling
243 loc = locals()
243 loc = locals()
244 self.p_str = ItplNS('%s%s%s' %
244 self.p_str = ItplNS('%s%s%s' %
245 ('${self.sep}${self.col_p}',
245 ('${self.sep}${self.col_p}',
246 multiple_replace(prompt_specials, self.p_template),
246 multiple_replace(prompt_specials, self.p_template),
247 '${self.col_norm}'),self.cache.user_ns,loc)
247 '${self.col_norm}'),self.cache.user_ns,loc)
248
248
249 self.p_str_nocolor = ItplNS(multiple_replace(prompt_specials_nocolor,
249 self.p_str_nocolor = ItplNS(multiple_replace(prompt_specials_nocolor,
250 self.p_template),
250 self.p_template),
251 self.cache.user_ns,loc)
251 self.cache.user_ns,loc)
252
252
253 def write(self,msg): # dbg
253 def write(self,msg): # dbg
254 sys.stdout.write(msg)
254 sys.stdout.write(msg)
255 return ''
255 return ''
256
256
257 def __str__(self):
257 def __str__(self):
258 """Return a string form of the prompt.
258 """Return a string form of the prompt.
259
259
260 This for is useful for continuation and output prompts, since it is
260 This for is useful for continuation and output prompts, since it is
261 left-padded to match lengths with the primary one (if the
261 left-padded to match lengths with the primary one (if the
262 self.pad_left attribute is set)."""
262 self.pad_left attribute is set)."""
263
263
264 out_str = str_safe(self.p_str)
264 out_str = str_safe(self.p_str)
265 if self.pad_left:
265 if self.pad_left:
266 # We must find the amount of padding required to match lengths,
266 # We must find the amount of padding required to match lengths,
267 # taking the color escapes (which are invisible on-screen) into
267 # taking the color escapes (which are invisible on-screen) into
268 # account.
268 # account.
269 esc_pad = len(out_str) - len(str_safe(self.p_str_nocolor))
269 esc_pad = len(out_str) - len(str_safe(self.p_str_nocolor))
270 format = '%%%ss' % (len(str(self.cache.last_prompt))+esc_pad)
270 format = '%%%ss' % (len(str(self.cache.last_prompt))+esc_pad)
271 return format % out_str
271 return format % out_str
272 else:
272 else:
273 return out_str
273 return out_str
274
274
275 # these path filters are put in as methods so that we can control the
275 # these path filters are put in as methods so that we can control the
276 # namespace where the prompt strings get evaluated
276 # namespace where the prompt strings get evaluated
277 def cwd_filt(self,depth):
277 def cwd_filt(self,depth):
278 """Return the last depth elements of the current working directory.
278 """Return the last depth elements of the current working directory.
279
279
280 $HOME is always replaced with '~'.
280 $HOME is always replaced with '~'.
281 If depth==0, the full path is returned."""
281 If depth==0, the full path is returned."""
282
282
283 cwd = os.getcwd().replace(HOME,"~")
283 cwd = os.getcwd().replace(HOME,"~")
284 out = os.sep.join(cwd.split(os.sep)[-depth:])
284 out = os.sep.join(cwd.split(os.sep)[-depth:])
285 if out:
285 if out:
286 return out
286 return out
287 else:
287 else:
288 return os.sep
288 return os.sep
289
289
290 def cwd_filt2(self,depth):
290 def cwd_filt2(self,depth):
291 """Return the last depth elements of the current working directory.
291 """Return the last depth elements of the current working directory.
292
292
293 $HOME is always replaced with '~'.
293 $HOME is always replaced with '~'.
294 If depth==0, the full path is returned."""
294 If depth==0, the full path is returned."""
295
295
296 cwd = os.getcwd().replace(HOME,"~").split(os.sep)
296 cwd = os.getcwd().replace(HOME,"~").split(os.sep)
297 if '~' in cwd and len(cwd) == depth+1:
297 if '~' in cwd and len(cwd) == depth+1:
298 depth += 1
298 depth += 1
299 out = os.sep.join(cwd[-depth:])
299 out = os.sep.join(cwd[-depth:])
300 if out:
300 if out:
301 return out
301 return out
302 else:
302 else:
303 return os.sep
303 return os.sep
304
304
305 class Prompt1(BasePrompt):
305 class Prompt1(BasePrompt):
306 """Input interactive prompt similar to Mathematica's."""
306 """Input interactive prompt similar to Mathematica's."""
307
307
308 def __init__(self,cache,sep='\n',prompt='In [\\#]: ',pad_left=True):
308 def __init__(self,cache,sep='\n',prompt='In [\\#]: ',pad_left=True):
309 BasePrompt.__init__(self,cache,sep,prompt,pad_left)
309 BasePrompt.__init__(self,cache,sep,prompt,pad_left)
310
310
311 def set_colors(self):
311 def set_colors(self):
312 self.set_p_str()
312 self.set_p_str()
313 Colors = self.cache.color_table.active_colors # shorthand
313 Colors = self.cache.color_table.active_colors # shorthand
314 self.col_p = Colors.in_prompt
314 self.col_p = Colors.in_prompt
315 self.col_num = Colors.in_number
315 self.col_num = Colors.in_number
316 self.col_norm = Colors.in_normal
316 self.col_norm = Colors.in_normal
317 # We need a non-input version of these escapes for the '--->'
317 # We need a non-input version of these escapes for the '--->'
318 # auto-call prompts used in the auto_rewrite() method.
318 # auto-call prompts used in the auto_rewrite() method.
319 self.col_p_ni = self.col_p.replace('\001','').replace('\002','')
319 self.col_p_ni = self.col_p.replace('\001','').replace('\002','')
320 self.col_norm_ni = Colors.normal
320 self.col_norm_ni = Colors.normal
321
321
322 def __str__(self):
322 def __str__(self):
323 self.cache.prompt_count += 1
323 self.cache.prompt_count += 1
324 self.cache.last_prompt = str_safe(self.p_str_nocolor).split('\n')[-1]
324 self.cache.last_prompt = str_safe(self.p_str_nocolor).split('\n')[-1]
325 return str_safe(self.p_str)
325 return str_safe(self.p_str)
326
326
327 def auto_rewrite(self):
327 def auto_rewrite(self):
328 """Print a string of the form '--->' which lines up with the previous
328 """Print a string of the form '--->' which lines up with the previous
329 input string. Useful for systems which re-write the user input when
329 input string. Useful for systems which re-write the user input when
330 handling automatically special syntaxes."""
330 handling automatically special syntaxes."""
331
331
332 curr = str(self.cache.last_prompt)
332 curr = str(self.cache.last_prompt)
333 nrspaces = len(self.rspace.search(curr).group())
333 nrspaces = len(self.rspace.search(curr).group())
334 return '%s%s>%s%s' % (self.col_p_ni,'-'*(len(curr)-nrspaces-1),
334 return '%s%s>%s%s' % (self.col_p_ni,'-'*(len(curr)-nrspaces-1),
335 ' '*nrspaces,self.col_norm_ni)
335 ' '*nrspaces,self.col_norm_ni)
336
336
337 class PromptOut(BasePrompt):
337 class PromptOut(BasePrompt):
338 """Output interactive prompt similar to Mathematica's."""
338 """Output interactive prompt similar to Mathematica's."""
339
339
340 def __init__(self,cache,sep='',prompt='Out[\\#]: ',pad_left=True):
340 def __init__(self,cache,sep='',prompt='Out[\\#]: ',pad_left=True):
341 BasePrompt.__init__(self,cache,sep,prompt,pad_left)
341 BasePrompt.__init__(self,cache,sep,prompt,pad_left)
342 if not self.p_template:
342 if not self.p_template:
343 self.__str__ = lambda: ''
343 self.__str__ = lambda: ''
344
344
345 def set_colors(self):
345 def set_colors(self):
346 self.set_p_str()
346 self.set_p_str()
347 Colors = self.cache.color_table.active_colors # shorthand
347 Colors = self.cache.color_table.active_colors # shorthand
348 self.col_p = Colors.out_prompt
348 self.col_p = Colors.out_prompt
349 self.col_num = Colors.out_number
349 self.col_num = Colors.out_number
350 self.col_norm = Colors.normal
350 self.col_norm = Colors.normal
351
351
352 class Prompt2(BasePrompt):
352 class Prompt2(BasePrompt):
353 """Interactive continuation prompt."""
353 """Interactive continuation prompt."""
354
354
355 def __init__(self,cache,prompt=' .\\D.: ',pad_left=True):
355 def __init__(self,cache,prompt=' .\\D.: ',pad_left=True):
356 self.cache = cache
356 self.cache = cache
357 self.p_template = prompt
357 self.p_template = prompt
358 self.pad_left = pad_left
358 self.pad_left = pad_left
359 self.set_p_str()
359 self.set_p_str()
360
360
361 def set_p_str(self):
361 def set_p_str(self):
362 import os,time # needed in locals for prompt string handling
362 import os,time # needed in locals for prompt string handling
363 loc = locals()
363 loc = locals()
364 self.p_str = ItplNS('%s%s%s' %
364 self.p_str = ItplNS('%s%s%s' %
365 ('${self.col_p2}',
365 ('${self.col_p2}',
366 multiple_replace(prompt_specials, self.p_template),
366 multiple_replace(prompt_specials, self.p_template),
367 '$self.col_norm'),
367 '$self.col_norm'),
368 self.cache.user_ns,loc)
368 self.cache.user_ns,loc)
369 self.p_str_nocolor = ItplNS(multiple_replace(prompt_specials_nocolor,
369 self.p_str_nocolor = ItplNS(multiple_replace(prompt_specials_nocolor,
370 self.p_template),
370 self.p_template),
371 self.cache.user_ns,loc)
371 self.cache.user_ns,loc)
372
372
373 def set_colors(self):
373 def set_colors(self):
374 self.set_p_str()
374 self.set_p_str()
375 Colors = self.cache.color_table.active_colors
375 Colors = self.cache.color_table.active_colors
376 self.col_p2 = Colors.in_prompt2
376 self.col_p2 = Colors.in_prompt2
377 self.col_norm = Colors.in_normal
377 self.col_norm = Colors.in_normal
378 # FIXME (2004-06-16) HACK: prevent crashes for users who haven't
378 # FIXME (2004-06-16) HACK: prevent crashes for users who haven't
379 # updated their prompt_in2 definitions. Remove eventually.
379 # updated their prompt_in2 definitions. Remove eventually.
380 self.col_p = Colors.out_prompt
380 self.col_p = Colors.out_prompt
381 self.col_num = Colors.out_number
381 self.col_num = Colors.out_number
382
382
383 #-----------------------------------------------------------------------------
383 #-----------------------------------------------------------------------------
384 class CachedOutput:
384 class CachedOutput:
385 """Class for printing output from calculations while keeping a cache of
385 """Class for printing output from calculations while keeping a cache of
386 reults. It dynamically creates global variables prefixed with _ which
386 reults. It dynamically creates global variables prefixed with _ which
387 contain these results.
387 contain these results.
388
388
389 Meant to be used as a sys.displayhook replacement, providing numbered
389 Meant to be used as a sys.displayhook replacement, providing numbered
390 prompts and cache services.
390 prompts and cache services.
391
391
392 Initialize with initial and final values for cache counter (this defines
392 Initialize with initial and final values for cache counter (this defines
393 the maximum size of the cache."""
393 the maximum size of the cache."""
394
394
395 def __init__(self,shell,cache_size,Pprint,
395 def __init__(self,shell,cache_size,Pprint,
396 colors='NoColor',input_sep='\n',
396 colors='NoColor',input_sep='\n',
397 output_sep='\n',output_sep2='',
397 output_sep='\n',output_sep2='',
398 ps1 = None, ps2 = None,ps_out = None,pad_left=True):
398 ps1 = None, ps2 = None,ps_out = None,pad_left=True):
399
399
400 cache_size_min = 20
400 cache_size_min = 20
401 if cache_size <= 0:
401 if cache_size <= 0:
402 self.do_full_cache = 0
402 self.do_full_cache = 0
403 cache_size = 0
403 cache_size = 0
404 elif cache_size < cache_size_min:
404 elif cache_size < cache_size_min:
405 self.do_full_cache = 0
405 self.do_full_cache = 0
406 cache_size = 0
406 cache_size = 0
407 warn('caching was disabled (min value for cache size is %s).' %
407 warn('caching was disabled (min value for cache size is %s).' %
408 cache_size_min,level=3)
408 cache_size_min,level=3)
409 else:
409 else:
410 self.do_full_cache = 1
410 self.do_full_cache = 1
411
411
412 self.cache_size = cache_size
412 self.cache_size = cache_size
413 self.input_sep = input_sep
413 self.input_sep = input_sep
414
414
415 # we need a reference to the user-level namespace
415 # we need a reference to the user-level namespace
416 self.shell = shell
416 self.shell = shell
417 self.user_ns = shell.user_ns
417 self.user_ns = shell.user_ns
418 # and to the user's input
418 # and to the user's input
419 self.input_hist = shell.input_hist
419 self.input_hist = shell.input_hist
420 # and to the user's logger, for logging output
420 # and to the user's logger, for logging output
421 self.logger = shell.logger
421 self.logger = shell.logger
422
422
423 # Set input prompt strings and colors
423 # Set input prompt strings and colors
424 if cache_size == 0:
424 if cache_size == 0:
425 if ps1.find('%n') > -1 or ps1.find('\\#') > -1: ps1 = '>>> '
425 if ps1.find('%n') > -1 or ps1.find('\\#') > -1: ps1 = '>>> '
426 if ps2.find('%n') > -1 or ps2.find('\\#') > -1: ps2 = '... '
426 if ps2.find('%n') > -1 or ps2.find('\\#') > -1: ps2 = '... '
427 self.ps1_str = self._set_prompt_str(ps1,'In [\\#]: ','>>> ')
427 self.ps1_str = self._set_prompt_str(ps1,'In [\\#]: ','>>> ')
428 self.ps2_str = self._set_prompt_str(ps2,' .\\D.: ','... ')
428 self.ps2_str = self._set_prompt_str(ps2,' .\\D.: ','... ')
429 self.ps_out_str = self._set_prompt_str(ps_out,'Out[\\#]: ','')
429 self.ps_out_str = self._set_prompt_str(ps_out,'Out[\\#]: ','')
430
430
431 self.color_table = PromptColors
431 self.color_table = PromptColors
432 self.prompt1 = Prompt1(self,sep=input_sep,prompt=self.ps1_str,
432 self.prompt1 = Prompt1(self,sep=input_sep,prompt=self.ps1_str,
433 pad_left=pad_left)
433 pad_left=pad_left)
434 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)
435 self.prompt_out = PromptOut(self,sep='',prompt=self.ps_out_str,
435 self.prompt_out = PromptOut(self,sep='',prompt=self.ps_out_str,
436 pad_left=pad_left)
436 pad_left=pad_left)
437 self.set_colors(colors)
437 self.set_colors(colors)
438
438
439 # other more normal stuff
439 # other more normal stuff
440 # 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.
441 self.prompt_count = 0
441 self.prompt_count = 0
442 self.cache_count = 1
442 self.cache_count = 1
443 # Store the last prompt string each time, we need it for aligning
443 # Store the last prompt string each time, we need it for aligning
444 # continuation and auto-rewrite prompts
444 # continuation and auto-rewrite prompts
445 self.last_prompt = ''
445 self.last_prompt = ''
446 self.entries = [None] # output counter starts at 1 for the user
446 self.entries = [None] # output counter starts at 1 for the user
447 self.Pprint = Pprint
447 self.Pprint = Pprint
448 self.output_sep = output_sep
448 self.output_sep = output_sep
449 self.output_sep2 = output_sep2
449 self.output_sep2 = output_sep2
450 self._,self.__,self.___ = '','',''
450 self._,self.__,self.___ = '','',''
451 self.pprint_types = map(type,[(),[],{}])
451 self.pprint_types = map(type,[(),[],{}])
452
452
453 # these are deliberately global:
453 # these are deliberately global:
454 to_user_ns = {'_':self._,'__':self.__,'___':self.___}
454 to_user_ns = {'_':self._,'__':self.__,'___':self.___}
455 self.user_ns.update(to_user_ns)
455 self.user_ns.update(to_user_ns)
456
456
457 def _set_prompt_str(self,p_str,cache_def,no_cache_def):
457 def _set_prompt_str(self,p_str,cache_def,no_cache_def):
458 if p_str is None:
458 if p_str is None:
459 if self.do_full_cache:
459 if self.do_full_cache:
460 return cache_def
460 return cache_def
461 else:
461 else:
462 return no_cache_def
462 return no_cache_def
463 else:
463 else:
464 return p_str
464 return p_str
465
465
466 def set_colors(self,colors):
466 def set_colors(self,colors):
467 """Set the active color scheme and configure colors for the three
467 """Set the active color scheme and configure colors for the three
468 prompt subsystems."""
468 prompt subsystems."""
469
469
470 # FIXME: the prompt_specials global should be gobbled inside this
470 # FIXME: the prompt_specials global should be gobbled inside this
471 # class instead. Do it when cleaning up the whole 3-prompt system.
471 # class instead. Do it when cleaning up the whole 3-prompt system.
472 global prompt_specials
472 global prompt_specials
473 if colors.lower()=='nocolor':
473 if colors.lower()=='nocolor':
474 prompt_specials = prompt_specials_nocolor
474 prompt_specials = prompt_specials_nocolor
475 else:
475 else:
476 prompt_specials = prompt_specials_color
476 prompt_specials = prompt_specials_color
477
477
478 self.color_table.set_active_scheme(colors)
478 self.color_table.set_active_scheme(colors)
479 self.prompt1.set_colors()
479 self.prompt1.set_colors()
480 self.prompt2.set_colors()
480 self.prompt2.set_colors()
481 self.prompt_out.set_colors()
481 self.prompt_out.set_colors()
482
482
483 def __call__(self,arg=None):
483 def __call__(self,arg=None):
484 """Printing with history cache management.
484 """Printing with history cache management.
485
485
486 This is invoked everytime the interpreter needs to print, and is
486 This is invoked everytime the interpreter needs to print, and is
487 activated by setting the variable sys.displayhook to it."""
487 activated by setting the variable sys.displayhook to it."""
488
488
489 # If something injected a '_' variable in __builtin__, delete
489 # If something injected a '_' variable in __builtin__, delete
490 # ipython's automatic one so we don't clobber that. gettext() in
490 # ipython's automatic one so we don't clobber that. gettext() in
491 # particular uses _, so we need to stay away from it.
491 # particular uses _, so we need to stay away from it.
492 if '_' in __builtin__.__dict__:
492 if '_' in __builtin__.__dict__:
493 try:
493 try:
494 del self.user_ns['_']
494 del self.user_ns['_']
495 except KeyError:
495 except KeyError:
496 pass
496 pass
497 if arg is not None:
497 if arg is not None:
498 cout_write = Term.cout.write # fast lookup
498 cout_write = Term.cout.write # fast lookup
499 # first handle the cache and counters
499 # first handle the cache and counters
500 # but avoid recursive reference when displaying _oh/Out
500 # but avoid recursive reference when displaying _oh/Out
501 if arg is not self.user_ns['_oh']:
501 if arg is not self.user_ns['_oh']:
502 self.update(arg)
502 self.update(arg)
503 # do not print output if input ends in ';'
503 # do not print output if input ends in ';'
504 if self.input_hist[self.prompt_count].endswith(';\n'):
504 if self.input_hist[self.prompt_count].endswith(';\n'):
505 return
505 return
506 # don't use print, puts an extra space
506 # don't use print, puts an extra space
507 cout_write(self.output_sep)
507 cout_write(self.output_sep)
508 if self.do_full_cache:
508 if self.do_full_cache:
509 cout_write(str(self.prompt_out))
509 cout_write(str(self.prompt_out))
510
510
511 if isinstance(arg,Macro):
511 if isinstance(arg,Macro):
512 print 'Executing Macro...'
512 print 'Executing Macro...'
513 # in case the macro takes a long time to execute
513 # in case the macro takes a long time to execute
514 Term.cout.flush()
514 Term.cout.flush()
515 self.shell.runlines(arg.value)
515 self.shell.runlines(arg.value)
516 return None
516 return None
517
517
518 # and now call a possibly user-defined print mechanism
518 # and now call a possibly user-defined print mechanism
519 self.display(arg)
519 self.display(arg)
520 if self.logger.log_output:
520 if self.logger.log_output:
521 self.logger.log_write(repr(arg),'output')
521 self.logger.log_write(repr(arg),'output')
522 cout_write(self.output_sep2)
522 cout_write(self.output_sep2)
523 Term.cout.flush()
523 Term.cout.flush()
524
524
525 def _display(self,arg):
525 def _display(self,arg):
526 """Default printer method, uses pprint.
526 """Default printer method, uses pprint.
527
527
528 This can be over-ridden by the users to implement special formatting
528 Do ip.set_hook("result_display", my_displayhook) for custom result
529 of certain types of output."""
529 display, e.g. when your own objects need special formatting.
530
530 """
531 if self.Pprint:
531
532 out = pformat(arg)
532 self.shell.hooks.result_display(arg)
533 if '\n' in out:
534 # So that multi-line strings line up with the left column of
535 # the screen, instead of having the output prompt mess up
536 # their first line.
537 Term.cout.write('\n')
538 print >>Term.cout, out
539 else:
540 print >>Term.cout, arg
541
533
542 # Assign the default display method:
534 # Assign the default display method:
543 display = _display
535 display = _display
544
536
545 def update(self,arg):
537 def update(self,arg):
546 #print '***cache_count', self.cache_count # dbg
538 #print '***cache_count', self.cache_count # dbg
547 if self.cache_count >= self.cache_size and self.do_full_cache:
539 if self.cache_count >= self.cache_size and self.do_full_cache:
548 self.flush()
540 self.flush()
549 # Don't overwrite '_' and friends if '_' is in __builtin__ (otherwise
541 # Don't overwrite '_' and friends if '_' is in __builtin__ (otherwise
550 # we cause buggy behavior for things like gettext).
542 # we cause buggy behavior for things like gettext).
551 if '_' not in __builtin__.__dict__:
543 if '_' not in __builtin__.__dict__:
552 self.___ = self.__
544 self.___ = self.__
553 self.__ = self._
545 self.__ = self._
554 self._ = arg
546 self._ = arg
555 self.user_ns.update({'_':self._,'__':self.__,'___':self.___})
547 self.user_ns.update({'_':self._,'__':self.__,'___':self.___})
556
548
557 # hackish access to top-level namespace to create _1,_2... dynamically
549 # hackish access to top-level namespace to create _1,_2... dynamically
558 to_main = {}
550 to_main = {}
559 if self.do_full_cache:
551 if self.do_full_cache:
560 self.cache_count += 1
552 self.cache_count += 1
561 self.entries.append(arg)
553 self.entries.append(arg)
562 new_result = '_'+`self.prompt_count`
554 new_result = '_'+`self.prompt_count`
563 to_main[new_result] = self.entries[-1]
555 to_main[new_result] = self.entries[-1]
564 self.user_ns.update(to_main)
556 self.user_ns.update(to_main)
565 self.user_ns['_oh'][self.prompt_count] = arg
557 self.user_ns['_oh'][self.prompt_count] = arg
566
558
567 def flush(self):
559 def flush(self):
568 if not self.do_full_cache:
560 if not self.do_full_cache:
569 raise ValueError,"You shouldn't have reached the cache flush "\
561 raise ValueError,"You shouldn't have reached the cache flush "\
570 "if full caching is not enabled!"
562 "if full caching is not enabled!"
571 warn('Output cache limit (currently '+\
563 warn('Output cache limit (currently '+\
572 `self.cache_count`+' entries) hit.\n'
564 `self.cache_count`+' entries) hit.\n'
573 'Flushing cache and resetting history counter...\n'
565 'Flushing cache and resetting history counter...\n'
574 'The only history variables available will be _,__,___ and _1\n'
566 'The only history variables available will be _,__,___ and _1\n'
575 'with the current result.')
567 'with the current result.')
576 # delete auto-generated vars from global namespace
568 # delete auto-generated vars from global namespace
577 for n in range(1,self.prompt_count + 1):
569 for n in range(1,self.prompt_count + 1):
578 key = '_'+`n`
570 key = '_'+`n`
579 try:
571 try:
580 del self.user_ns[key]
572 del self.user_ns[key]
581 except: pass
573 except: pass
582 self.prompt_count = 1
574 self.prompt_count = 1
583 self.cache_count = 1
575 self.cache_count = 1
@@ -1,136 +1,149 b''
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 def calljed(self,filename, linenum):
22 def calljed(self,filename, linenum):
23 "My editor hook calls the jed editor directly."
23 "My editor hook calls the jed editor directly."
24 print "Calling my own editor, jed ..."
24 print "Calling my own editor, jed ..."
25 os.system('jed +%d %s' % (linenum,filename))
25 os.system('jed +%d %s' % (linenum,filename))
26
26
27 You can then execute the following line of code to make it the new IPython
27 You can then execute the following line of code to make it the new IPython
28 editor hook, after having imported 'myiphooks':
28 editor hook, after having imported 'myiphooks':
29
29
30 ip_set_hook('editor',myiphooks.calljed)
30 ip_set_hook('editor',myiphooks.calljed)
31
31
32 The ip_set_hook function is put by IPython into the builtin namespace, so it
32 The ip_set_hook function is put by IPython into the builtin namespace, so it
33 is always available from all running code.
33 is always available from all running code.
34
34
35 $Id: hooks.py 1019 2006-01-14 13:02:12Z vivainio $"""
35 $Id: hooks.py 1020 2006-01-14 13:22:58Z 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 __author__ = '%s <%s>' % Release.authors['Fernando']
45 __author__ = '%s <%s>' % Release.authors['Fernando']
46 __license__ = Release.license
46 __license__ = Release.license
47 __version__ = Release.version
47 __version__ = Release.version
48
48
49 import os,bisect
49 import os,bisect
50 from genutils import Term
51 from pprint import pformat
50
52
51 # List here all the default hooks. For now it's just the editor functions
53 # List here all the default hooks. For now it's just the editor functions
52 # but over time we'll move here all the public API for user-accessible things.
54 # but over time we'll move here all the public API for user-accessible things.
53 __all__ = ['editor', 'fix_error_editor']
55 __all__ = ['editor', 'fix_error_editor', 'result_display']
54
56
55 def editor(self,filename, linenum=None):
57 def editor(self,filename, linenum=None):
56 """Open the default editor at the given filename and linenumber.
58 """Open the default editor at the given filename and linenumber.
57
59
58 This is IPython's default editor hook, you can use it as an example to
60 This is IPython's default editor hook, you can use it as an example to
59 write your own modified one. To set your own editor function as the
61 write your own modified one. To set your own editor function as the
60 new editor hook, call ip_set_hook('editor',yourfunc)."""
62 new editor hook, call ip_set_hook('editor',yourfunc)."""
61
63
62 # IPython configures a default editor at startup by reading $EDITOR from
64 # IPython configures a default editor at startup by reading $EDITOR from
63 # the environment, and falling back on vi (unix) or notepad (win32).
65 # the environment, and falling back on vi (unix) or notepad (win32).
64 editor = self.rc.editor
66 editor = self.rc.editor
65
67
66 # marker for at which line to open the file (for existing objects)
68 # marker for at which line to open the file (for existing objects)
67 if linenum is None or editor=='notepad':
69 if linenum is None or editor=='notepad':
68 linemark = ''
70 linemark = ''
69 else:
71 else:
70 linemark = '+%d' % linenum
72 linemark = '+%d' % linenum
71 # Call the actual editor
73 # Call the actual editor
72 os.system('%s %s %s' % (editor,linemark,filename))
74 os.system('%s %s %s' % (editor,linemark,filename))
73
75
74 import tempfile
76 import tempfile
75 def fix_error_editor(self,filename,linenum,column,msg):
77 def fix_error_editor(self,filename,linenum,column,msg):
76 """Open the editor at the given filename, linenumber, column and
78 """Open the editor at the given filename, linenumber, column and
77 show an error message. This is used for correcting syntax errors.
79 show an error message. This is used for correcting syntax errors.
78 The current implementation only has special support for the VIM editor,
80 The current implementation only has special support for the VIM editor,
79 and falls back on the 'editor' hook if VIM is not used.
81 and falls back on the 'editor' hook if VIM is not used.
80
82
81 Call ip_set_hook('fix_error_editor',youfunc) to use your own function,
83 Call ip_set_hook('fix_error_editor',youfunc) to use your own function,
82 """
84 """
83 def vim_quickfix_file():
85 def vim_quickfix_file():
84 t = tempfile.NamedTemporaryFile()
86 t = tempfile.NamedTemporaryFile()
85 t.write('%s:%d:%d:%s\n' % (filename,linenum,column,msg))
87 t.write('%s:%d:%d:%s\n' % (filename,linenum,column,msg))
86 t.flush()
88 t.flush()
87 return t
89 return t
88 if os.path.basename(self.rc.editor) != 'vim':
90 if os.path.basename(self.rc.editor) != 'vim':
89 self.hooks.editor(filename,linenum)
91 self.hooks.editor(filename,linenum)
90 return
92 return
91 t = vim_quickfix_file()
93 t = vim_quickfix_file()
92 try:
94 try:
93 os.system('vim --cmd "set errorformat=%f:%l:%c:%m" -q ' + t.name)
95 os.system('vim --cmd "set errorformat=%f:%l:%c:%m" -q ' + t.name)
94 finally:
96 finally:
95 t.close()
97 t.close()
96
98
97 class TryNext(Exception):
99 class TryNext(Exception):
98 pass
100 pass
99
101
100 class CommandChainDispatcher:
102 class CommandChainDispatcher:
101 """ Dispatch calls to a chain of commands until some func can handle it
103 """ Dispatch calls to a chain of commands until some func can handle it
102
104
103 Usage: instantiate, execute "add" to add commands (with optional
105 Usage: instantiate, execute "add" to add commands (with optional
104 priority), execute normally via f() calling mechanism.
106 priority), execute normally via f() calling mechanism.
105
107
106 """
108 """
107 def __init__(self,commands=None):
109 def __init__(self,commands=None):
108 if commands is None:
110 if commands is None:
109 self.chain = []
111 self.chain = []
110 else:
112 else:
111 self.chain = commands
113 self.chain = commands
112
114
113
115
114 def __call__(self,*args, **kw):
116 def __call__(self,*args, **kw):
115 """ Command chain is called just like normal func.
117 """ Command chain is called just like normal func.
116
118
117 This will call all funcs in chain with the same args as were given to this
119 This will call all funcs in chain with the same args as were given to this
118 function, and return the result of first func that didn't raise
120 function, and return the result of first func that didn't raise
119 TryNext """
121 TryNext """
120
122
121 for prio,cmd in self.chain:
123 for prio,cmd in self.chain:
122 #print "prio",prio,"cmd",cmd #dbg
124 #print "prio",prio,"cmd",cmd #dbg
123 try:
125 try:
124 ret = cmd(*args, **kw)
126 ret = cmd(*args, **kw)
125 return ret
127 return ret
126 except TryNext:
128 except TryNext:
127 pass
129 pass
128
130
129 def __str__(self):
131 def __str__(self):
130 return str(self.chain)
132 return str(self.chain)
131
133
132 def add(self, func, priority=0):
134 def add(self, func, priority=0):
133 """ Add a func to the cmd chain with given priority """
135 """ Add a func to the cmd chain with given priority """
134 bisect.insort(self.chain,(priority,func))
136 bisect.insort(self.chain,(priority,func))
135
137
138 def result_display(self,arg):
139 if self.rc.pprint:
140 out = pformat(arg)
141 if '\n' in out:
142 # So that multi-line strings line up with the left column of
143 # the screen, instead of having the output prompt mess up
144 # their first line.
145 Term.cout.write('\n')
146 print >>Term.cout, out
147 else:
148 print >>Term.cout, arg
136 No newline at end of file
149
@@ -1,4918 +1,4918 b''
1 2006-01-14 Ville Vainio <vivainio@gmail.com>
1 2006-01-14 Ville Vainio <vivainio@gmail.com>
2
2
3 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
3 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
4 ipapi decorators for python 2.4 users, options() provides access to rc
4 ipapi decorators for python 2.4 users, options() provides access to rc
5 data.
5 data.
6
6
7 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
7 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
8 as path separators (even on Linux ;-). Space character after
8 as path separators (even on Linux ;-). Space character after
9 backslash (as yielded by tab completer) is still space;
9 backslash (as yielded by tab completer) is still space;
10 "%cd long\ name" works as expected.
10 "%cd long\ name" works as expected.
11
11
12 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
12 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
13 as "chain of command", with priority. API stays the same,
13 as "chain of command", with priority. API stays the same,
14 TryNext exception raised by a hook function signals that
14 TryNext exception raised by a hook function signals that
15 current hook failed and next hook should try handling it, as
15 current hook failed and next hook should try handling it, as
16 suggested by Walter DΓΆrwald <walter@livinglogic.de>.
16 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
17
17 requested configurable display hook, which is now implemented.
18
18
19 2006-01-13 Ville Vainio <vivainio@gmail.com>
19 2006-01-13 Ville Vainio <vivainio@gmail.com>
20
20
21 * IPython/platutils*.py: platform specific utility functions,
21 * IPython/platutils*.py: platform specific utility functions,
22 so far only set_term_title is implemented (change terminal
22 so far only set_term_title is implemented (change terminal
23 label in windowing systems). %cd now changes the title to
23 label in windowing systems). %cd now changes the title to
24 current dir.
24 current dir.
25
25
26 * IPython/Release.py: Added myself to "authors" list,
26 * IPython/Release.py: Added myself to "authors" list,
27 had to create new files.
27 had to create new files.
28
28
29 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
29 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
30 shell escape; not a known bug but had potential to be one in the
30 shell escape; not a known bug but had potential to be one in the
31 future.
31 future.
32
32
33 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
33 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
34 extension API for IPython! See the module for usage example. Fix
34 extension API for IPython! See the module for usage example. Fix
35 OInspect for docstring-less magic functions.
35 OInspect for docstring-less magic functions.
36
36
37
37
38 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
38 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
39
39
40 * IPython/iplib.py (raw_input): temporarily deactivate all
40 * IPython/iplib.py (raw_input): temporarily deactivate all
41 attempts at allowing pasting of code with autoindent on. It
41 attempts at allowing pasting of code with autoindent on. It
42 introduced bugs (reported by Prabhu) and I can't seem to find a
42 introduced bugs (reported by Prabhu) and I can't seem to find a
43 robust combination which works in all cases. Will have to revisit
43 robust combination which works in all cases. Will have to revisit
44 later.
44 later.
45
45
46 * IPython/genutils.py: remove isspace() function. We've dropped
46 * IPython/genutils.py: remove isspace() function. We've dropped
47 2.2 compatibility, so it's OK to use the string method.
47 2.2 compatibility, so it's OK to use the string method.
48
48
49 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
49 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
50
50
51 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
51 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
52 matching what NOT to autocall on, to include all python binary
52 matching what NOT to autocall on, to include all python binary
53 operators (including things like 'and', 'or', 'is' and 'in').
53 operators (including things like 'and', 'or', 'is' and 'in').
54 Prompted by a bug report on 'foo & bar', but I realized we had
54 Prompted by a bug report on 'foo & bar', but I realized we had
55 many more potential bug cases with other operators. The regexp is
55 many more potential bug cases with other operators. The regexp is
56 self.re_exclude_auto, it's fairly commented.
56 self.re_exclude_auto, it's fairly commented.
57
57
58 2006-01-12 Ville Vainio <vivainio@gmail.com>
58 2006-01-12 Ville Vainio <vivainio@gmail.com>
59
59
60 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
60 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
61 Prettified and hardened string/backslash quoting with ipsystem(),
61 Prettified and hardened string/backslash quoting with ipsystem(),
62 ipalias() and ipmagic(). Now even \ characters are passed to
62 ipalias() and ipmagic(). Now even \ characters are passed to
63 %magics, !shell escapes and aliases exactly as they are in the
63 %magics, !shell escapes and aliases exactly as they are in the
64 ipython command line. Should improve backslash experience,
64 ipython command line. Should improve backslash experience,
65 particularly in Windows (path delimiter for some commands that
65 particularly in Windows (path delimiter for some commands that
66 won't understand '/'), but Unix benefits as well (regexps). %cd
66 won't understand '/'), but Unix benefits as well (regexps). %cd
67 magic still doesn't support backslash path delimiters, though. Also
67 magic still doesn't support backslash path delimiters, though. Also
68 deleted all pretense of supporting multiline command strings in
68 deleted all pretense of supporting multiline command strings in
69 !system or %magic commands. Thanks to Jerry McRae for suggestions.
69 !system or %magic commands. Thanks to Jerry McRae for suggestions.
70
70
71 * doc/build_doc_instructions.txt added. Documentation on how to
71 * doc/build_doc_instructions.txt added. Documentation on how to
72 use doc/update_manual.py, added yesterday. Both files contributed
72 use doc/update_manual.py, added yesterday. Both files contributed
73 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
73 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
74 doc/*.sh for deprecation at a later date.
74 doc/*.sh for deprecation at a later date.
75
75
76 * /ipython.py Added ipython.py to root directory for
76 * /ipython.py Added ipython.py to root directory for
77 zero-installation (tar xzvf ipython.tgz; cd ipython; python
77 zero-installation (tar xzvf ipython.tgz; cd ipython; python
78 ipython.py) and development convenience (no need to kee doing
78 ipython.py) and development convenience (no need to kee doing
79 "setup.py install" between changes).
79 "setup.py install" between changes).
80
80
81 * Made ! and !! shell escapes work (again) in multiline expressions:
81 * Made ! and !! shell escapes work (again) in multiline expressions:
82 if 1:
82 if 1:
83 !ls
83 !ls
84 !!ls
84 !!ls
85
85
86 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
86 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
87
87
88 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
88 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
89 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
89 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
90 module in case-insensitive installation. Was causing crashes
90 module in case-insensitive installation. Was causing crashes
91 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
91 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
92
92
93 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
93 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
94 <marienz-AT-gentoo.org>, closes
94 <marienz-AT-gentoo.org>, closes
95 http://www.scipy.net/roundup/ipython/issue51.
95 http://www.scipy.net/roundup/ipython/issue51.
96
96
97 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
97 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
98
98
99 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
99 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
100 problem of excessive CPU usage under *nix and keyboard lag under
100 problem of excessive CPU usage under *nix and keyboard lag under
101 win32.
101 win32.
102
102
103 2006-01-10 *** Released version 0.7.0
103 2006-01-10 *** Released version 0.7.0
104
104
105 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
105 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
106
106
107 * IPython/Release.py (revision): tag version number to 0.7.0,
107 * IPython/Release.py (revision): tag version number to 0.7.0,
108 ready for release.
108 ready for release.
109
109
110 * IPython/Magic.py (magic_edit): Add print statement to %edit so
110 * IPython/Magic.py (magic_edit): Add print statement to %edit so
111 it informs the user of the name of the temp. file used. This can
111 it informs the user of the name of the temp. file used. This can
112 help if you decide later to reuse that same file, so you know
112 help if you decide later to reuse that same file, so you know
113 where to copy the info from.
113 where to copy the info from.
114
114
115 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
115 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
116
116
117 * setup_bdist_egg.py: little script to build an egg. Added
117 * setup_bdist_egg.py: little script to build an egg. Added
118 support in the release tools as well.
118 support in the release tools as well.
119
119
120 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
120 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
121
121
122 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
122 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
123 version selection (new -wxversion command line and ipythonrc
123 version selection (new -wxversion command line and ipythonrc
124 parameter). Patch contributed by Arnd Baecker
124 parameter). Patch contributed by Arnd Baecker
125 <arnd.baecker-AT-web.de>.
125 <arnd.baecker-AT-web.de>.
126
126
127 * IPython/iplib.py (embed_mainloop): fix tab-completion in
127 * IPython/iplib.py (embed_mainloop): fix tab-completion in
128 embedded instances, for variables defined at the interactive
128 embedded instances, for variables defined at the interactive
129 prompt of the embedded ipython. Reported by Arnd.
129 prompt of the embedded ipython. Reported by Arnd.
130
130
131 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
131 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
132 it can be used as a (stateful) toggle, or with a direct parameter.
132 it can be used as a (stateful) toggle, or with a direct parameter.
133
133
134 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
134 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
135 could be triggered in certain cases and cause the traceback
135 could be triggered in certain cases and cause the traceback
136 printer not to work.
136 printer not to work.
137
137
138 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
138 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
139
139
140 * IPython/iplib.py (_should_recompile): Small fix, closes
140 * IPython/iplib.py (_should_recompile): Small fix, closes
141 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
141 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
142
142
143 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
143 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
144
144
145 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
145 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
146 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
146 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
147 Moad for help with tracking it down.
147 Moad for help with tracking it down.
148
148
149 * IPython/iplib.py (handle_auto): fix autocall handling for
149 * IPython/iplib.py (handle_auto): fix autocall handling for
150 objects which support BOTH __getitem__ and __call__ (so that f [x]
150 objects which support BOTH __getitem__ and __call__ (so that f [x]
151 is left alone, instead of becoming f([x]) automatically).
151 is left alone, instead of becoming f([x]) automatically).
152
152
153 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
153 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
154 Ville's patch.
154 Ville's patch.
155
155
156 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
156 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
157
157
158 * IPython/iplib.py (handle_auto): changed autocall semantics to
158 * IPython/iplib.py (handle_auto): changed autocall semantics to
159 include 'smart' mode, where the autocall transformation is NOT
159 include 'smart' mode, where the autocall transformation is NOT
160 applied if there are no arguments on the line. This allows you to
160 applied if there are no arguments on the line. This allows you to
161 just type 'foo' if foo is a callable to see its internal form,
161 just type 'foo' if foo is a callable to see its internal form,
162 instead of having it called with no arguments (typically a
162 instead of having it called with no arguments (typically a
163 mistake). The old 'full' autocall still exists: for that, you
163 mistake). The old 'full' autocall still exists: for that, you
164 need to set the 'autocall' parameter to 2 in your ipythonrc file.
164 need to set the 'autocall' parameter to 2 in your ipythonrc file.
165
165
166 * IPython/completer.py (Completer.attr_matches): add
166 * IPython/completer.py (Completer.attr_matches): add
167 tab-completion support for Enthoughts' traits. After a report by
167 tab-completion support for Enthoughts' traits. After a report by
168 Arnd and a patch by Prabhu.
168 Arnd and a patch by Prabhu.
169
169
170 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
170 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
171
171
172 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
172 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
173 Schmolck's patch to fix inspect.getinnerframes().
173 Schmolck's patch to fix inspect.getinnerframes().
174
174
175 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
175 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
176 for embedded instances, regarding handling of namespaces and items
176 for embedded instances, regarding handling of namespaces and items
177 added to the __builtin__ one. Multiple embedded instances and
177 added to the __builtin__ one. Multiple embedded instances and
178 recursive embeddings should work better now (though I'm not sure
178 recursive embeddings should work better now (though I'm not sure
179 I've got all the corner cases fixed, that code is a bit of a brain
179 I've got all the corner cases fixed, that code is a bit of a brain
180 twister).
180 twister).
181
181
182 * IPython/Magic.py (magic_edit): added support to edit in-memory
182 * IPython/Magic.py (magic_edit): added support to edit in-memory
183 macros (automatically creates the necessary temp files). %edit
183 macros (automatically creates the necessary temp files). %edit
184 also doesn't return the file contents anymore, it's just noise.
184 also doesn't return the file contents anymore, it's just noise.
185
185
186 * IPython/completer.py (Completer.attr_matches): revert change to
186 * IPython/completer.py (Completer.attr_matches): revert change to
187 complete only on attributes listed in __all__. I realized it
187 complete only on attributes listed in __all__. I realized it
188 cripples the tab-completion system as a tool for exploring the
188 cripples the tab-completion system as a tool for exploring the
189 internals of unknown libraries (it renders any non-__all__
189 internals of unknown libraries (it renders any non-__all__
190 attribute off-limits). I got bit by this when trying to see
190 attribute off-limits). I got bit by this when trying to see
191 something inside the dis module.
191 something inside the dis module.
192
192
193 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
193 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
194
194
195 * IPython/iplib.py (InteractiveShell.__init__): add .meta
195 * IPython/iplib.py (InteractiveShell.__init__): add .meta
196 namespace for users and extension writers to hold data in. This
196 namespace for users and extension writers to hold data in. This
197 follows the discussion in
197 follows the discussion in
198 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
198 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
199
199
200 * IPython/completer.py (IPCompleter.complete): small patch to help
200 * IPython/completer.py (IPCompleter.complete): small patch to help
201 tab-completion under Emacs, after a suggestion by John Barnard
201 tab-completion under Emacs, after a suggestion by John Barnard
202 <barnarj-AT-ccf.org>.
202 <barnarj-AT-ccf.org>.
203
203
204 * IPython/Magic.py (Magic.extract_input_slices): added support for
204 * IPython/Magic.py (Magic.extract_input_slices): added support for
205 the slice notation in magics to use N-M to represent numbers N...M
205 the slice notation in magics to use N-M to represent numbers N...M
206 (closed endpoints). This is used by %macro and %save.
206 (closed endpoints). This is used by %macro and %save.
207
207
208 * IPython/completer.py (Completer.attr_matches): for modules which
208 * IPython/completer.py (Completer.attr_matches): for modules which
209 define __all__, complete only on those. After a patch by Jeffrey
209 define __all__, complete only on those. After a patch by Jeffrey
210 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
210 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
211 speed up this routine.
211 speed up this routine.
212
212
213 * IPython/Logger.py (Logger.log): fix a history handling bug. I
213 * IPython/Logger.py (Logger.log): fix a history handling bug. I
214 don't know if this is the end of it, but the behavior now is
214 don't know if this is the end of it, but the behavior now is
215 certainly much more correct. Note that coupled with macros,
215 certainly much more correct. Note that coupled with macros,
216 slightly surprising (at first) behavior may occur: a macro will in
216 slightly surprising (at first) behavior may occur: a macro will in
217 general expand to multiple lines of input, so upon exiting, the
217 general expand to multiple lines of input, so upon exiting, the
218 in/out counters will both be bumped by the corresponding amount
218 in/out counters will both be bumped by the corresponding amount
219 (as if the macro's contents had been typed interactively). Typing
219 (as if the macro's contents had been typed interactively). Typing
220 %hist will reveal the intermediate (silently processed) lines.
220 %hist will reveal the intermediate (silently processed) lines.
221
221
222 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
222 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
223 pickle to fail (%run was overwriting __main__ and not restoring
223 pickle to fail (%run was overwriting __main__ and not restoring
224 it, but pickle relies on __main__ to operate).
224 it, but pickle relies on __main__ to operate).
225
225
226 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
226 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
227 using properties, but forgot to make the main InteractiveShell
227 using properties, but forgot to make the main InteractiveShell
228 class a new-style class. Properties fail silently, and
228 class a new-style class. Properties fail silently, and
229 misteriously, with old-style class (getters work, but
229 misteriously, with old-style class (getters work, but
230 setters don't do anything).
230 setters don't do anything).
231
231
232 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
232 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
233
233
234 * IPython/Magic.py (magic_history): fix history reporting bug (I
234 * IPython/Magic.py (magic_history): fix history reporting bug (I
235 know some nasties are still there, I just can't seem to find a
235 know some nasties are still there, I just can't seem to find a
236 reproducible test case to track them down; the input history is
236 reproducible test case to track them down; the input history is
237 falling out of sync...)
237 falling out of sync...)
238
238
239 * IPython/iplib.py (handle_shell_escape): fix bug where both
239 * IPython/iplib.py (handle_shell_escape): fix bug where both
240 aliases and system accesses where broken for indented code (such
240 aliases and system accesses where broken for indented code (such
241 as loops).
241 as loops).
242
242
243 * IPython/genutils.py (shell): fix small but critical bug for
243 * IPython/genutils.py (shell): fix small but critical bug for
244 win32 system access.
244 win32 system access.
245
245
246 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
246 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
247
247
248 * IPython/iplib.py (showtraceback): remove use of the
248 * IPython/iplib.py (showtraceback): remove use of the
249 sys.last_{type/value/traceback} structures, which are non
249 sys.last_{type/value/traceback} structures, which are non
250 thread-safe.
250 thread-safe.
251 (_prefilter): change control flow to ensure that we NEVER
251 (_prefilter): change control flow to ensure that we NEVER
252 introspect objects when autocall is off. This will guarantee that
252 introspect objects when autocall is off. This will guarantee that
253 having an input line of the form 'x.y', where access to attribute
253 having an input line of the form 'x.y', where access to attribute
254 'y' has side effects, doesn't trigger the side effect TWICE. It
254 'y' has side effects, doesn't trigger the side effect TWICE. It
255 is important to note that, with autocall on, these side effects
255 is important to note that, with autocall on, these side effects
256 can still happen.
256 can still happen.
257 (ipsystem): new builtin, to complete the ip{magic/alias/system}
257 (ipsystem): new builtin, to complete the ip{magic/alias/system}
258 trio. IPython offers these three kinds of special calls which are
258 trio. IPython offers these three kinds of special calls which are
259 not python code, and it's a good thing to have their call method
259 not python code, and it's a good thing to have their call method
260 be accessible as pure python functions (not just special syntax at
260 be accessible as pure python functions (not just special syntax at
261 the command line). It gives us a better internal implementation
261 the command line). It gives us a better internal implementation
262 structure, as well as exposing these for user scripting more
262 structure, as well as exposing these for user scripting more
263 cleanly.
263 cleanly.
264
264
265 * IPython/macro.py (Macro.__init__): moved macros to a standalone
265 * IPython/macro.py (Macro.__init__): moved macros to a standalone
266 file. Now that they'll be more likely to be used with the
266 file. Now that they'll be more likely to be used with the
267 persistance system (%store), I want to make sure their module path
267 persistance system (%store), I want to make sure their module path
268 doesn't change in the future, so that we don't break things for
268 doesn't change in the future, so that we don't break things for
269 users' persisted data.
269 users' persisted data.
270
270
271 * IPython/iplib.py (autoindent_update): move indentation
271 * IPython/iplib.py (autoindent_update): move indentation
272 management into the _text_ processing loop, not the keyboard
272 management into the _text_ processing loop, not the keyboard
273 interactive one. This is necessary to correctly process non-typed
273 interactive one. This is necessary to correctly process non-typed
274 multiline input (such as macros).
274 multiline input (such as macros).
275
275
276 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
276 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
277 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
277 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
278 which was producing problems in the resulting manual.
278 which was producing problems in the resulting manual.
279 (magic_whos): improve reporting of instances (show their class,
279 (magic_whos): improve reporting of instances (show their class,
280 instead of simply printing 'instance' which isn't terribly
280 instead of simply printing 'instance' which isn't terribly
281 informative).
281 informative).
282
282
283 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
283 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
284 (minor mods) to support network shares under win32.
284 (minor mods) to support network shares under win32.
285
285
286 * IPython/winconsole.py (get_console_size): add new winconsole
286 * IPython/winconsole.py (get_console_size): add new winconsole
287 module and fixes to page_dumb() to improve its behavior under
287 module and fixes to page_dumb() to improve its behavior under
288 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
288 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
289
289
290 * IPython/Magic.py (Macro): simplified Macro class to just
290 * IPython/Magic.py (Macro): simplified Macro class to just
291 subclass list. We've had only 2.2 compatibility for a very long
291 subclass list. We've had only 2.2 compatibility for a very long
292 time, yet I was still avoiding subclassing the builtin types. No
292 time, yet I was still avoiding subclassing the builtin types. No
293 more (I'm also starting to use properties, though I won't shift to
293 more (I'm also starting to use properties, though I won't shift to
294 2.3-specific features quite yet).
294 2.3-specific features quite yet).
295 (magic_store): added Ville's patch for lightweight variable
295 (magic_store): added Ville's patch for lightweight variable
296 persistence, after a request on the user list by Matt Wilkie
296 persistence, after a request on the user list by Matt Wilkie
297 <maphew-AT-gmail.com>. The new %store magic's docstring has full
297 <maphew-AT-gmail.com>. The new %store magic's docstring has full
298 details.
298 details.
299
299
300 * IPython/iplib.py (InteractiveShell.post_config_initialization):
300 * IPython/iplib.py (InteractiveShell.post_config_initialization):
301 changed the default logfile name from 'ipython.log' to
301 changed the default logfile name from 'ipython.log' to
302 'ipython_log.py'. These logs are real python files, and now that
302 'ipython_log.py'. These logs are real python files, and now that
303 we have much better multiline support, people are more likely to
303 we have much better multiline support, people are more likely to
304 want to use them as such. Might as well name them correctly.
304 want to use them as such. Might as well name them correctly.
305
305
306 * IPython/Magic.py: substantial cleanup. While we can't stop
306 * IPython/Magic.py: substantial cleanup. While we can't stop
307 using magics as mixins, due to the existing customizations 'out
307 using magics as mixins, due to the existing customizations 'out
308 there' which rely on the mixin naming conventions, at least I
308 there' which rely on the mixin naming conventions, at least I
309 cleaned out all cross-class name usage. So once we are OK with
309 cleaned out all cross-class name usage. So once we are OK with
310 breaking compatibility, the two systems can be separated.
310 breaking compatibility, the two systems can be separated.
311
311
312 * IPython/Logger.py: major cleanup. This one is NOT a mixin
312 * IPython/Logger.py: major cleanup. This one is NOT a mixin
313 anymore, and the class is a fair bit less hideous as well. New
313 anymore, and the class is a fair bit less hideous as well. New
314 features were also introduced: timestamping of input, and logging
314 features were also introduced: timestamping of input, and logging
315 of output results. These are user-visible with the -t and -o
315 of output results. These are user-visible with the -t and -o
316 options to %logstart. Closes
316 options to %logstart. Closes
317 http://www.scipy.net/roundup/ipython/issue11 and a request by
317 http://www.scipy.net/roundup/ipython/issue11 and a request by
318 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
318 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
319
319
320 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
320 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
321
321
322 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
322 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
323 better hadnle backslashes in paths. See the thread 'More Windows
323 better hadnle backslashes in paths. See the thread 'More Windows
324 questions part 2 - \/ characters revisited' on the iypthon user
324 questions part 2 - \/ characters revisited' on the iypthon user
325 list:
325 list:
326 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
326 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
327
327
328 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
328 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
329
329
330 (InteractiveShell.__init__): change threaded shells to not use the
330 (InteractiveShell.__init__): change threaded shells to not use the
331 ipython crash handler. This was causing more problems than not,
331 ipython crash handler. This was causing more problems than not,
332 as exceptions in the main thread (GUI code, typically) would
332 as exceptions in the main thread (GUI code, typically) would
333 always show up as a 'crash', when they really weren't.
333 always show up as a 'crash', when they really weren't.
334
334
335 The colors and exception mode commands (%colors/%xmode) have been
335 The colors and exception mode commands (%colors/%xmode) have been
336 synchronized to also take this into account, so users can get
336 synchronized to also take this into account, so users can get
337 verbose exceptions for their threaded code as well. I also added
337 verbose exceptions for their threaded code as well. I also added
338 support for activating pdb inside this exception handler as well,
338 support for activating pdb inside this exception handler as well,
339 so now GUI authors can use IPython's enhanced pdb at runtime.
339 so now GUI authors can use IPython's enhanced pdb at runtime.
340
340
341 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
341 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
342 true by default, and add it to the shipped ipythonrc file. Since
342 true by default, and add it to the shipped ipythonrc file. Since
343 this asks the user before proceeding, I think it's OK to make it
343 this asks the user before proceeding, I think it's OK to make it
344 true by default.
344 true by default.
345
345
346 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
346 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
347 of the previous special-casing of input in the eval loop. I think
347 of the previous special-casing of input in the eval loop. I think
348 this is cleaner, as they really are commands and shouldn't have
348 this is cleaner, as they really are commands and shouldn't have
349 a special role in the middle of the core code.
349 a special role in the middle of the core code.
350
350
351 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
351 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
352
352
353 * IPython/iplib.py (edit_syntax_error): added support for
353 * IPython/iplib.py (edit_syntax_error): added support for
354 automatically reopening the editor if the file had a syntax error
354 automatically reopening the editor if the file had a syntax error
355 in it. Thanks to scottt who provided the patch at:
355 in it. Thanks to scottt who provided the patch at:
356 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
356 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
357 version committed).
357 version committed).
358
358
359 * IPython/iplib.py (handle_normal): add suport for multi-line
359 * IPython/iplib.py (handle_normal): add suport for multi-line
360 input with emtpy lines. This fixes
360 input with emtpy lines. This fixes
361 http://www.scipy.net/roundup/ipython/issue43 and a similar
361 http://www.scipy.net/roundup/ipython/issue43 and a similar
362 discussion on the user list.
362 discussion on the user list.
363
363
364 WARNING: a behavior change is necessarily introduced to support
364 WARNING: a behavior change is necessarily introduced to support
365 blank lines: now a single blank line with whitespace does NOT
365 blank lines: now a single blank line with whitespace does NOT
366 break the input loop, which means that when autoindent is on, by
366 break the input loop, which means that when autoindent is on, by
367 default hitting return on the next (indented) line does NOT exit.
367 default hitting return on the next (indented) line does NOT exit.
368
368
369 Instead, to exit a multiline input you can either have:
369 Instead, to exit a multiline input you can either have:
370
370
371 - TWO whitespace lines (just hit return again), or
371 - TWO whitespace lines (just hit return again), or
372 - a single whitespace line of a different length than provided
372 - a single whitespace line of a different length than provided
373 by the autoindent (add or remove a space).
373 by the autoindent (add or remove a space).
374
374
375 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
375 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
376 module to better organize all readline-related functionality.
376 module to better organize all readline-related functionality.
377 I've deleted FlexCompleter and put all completion clases here.
377 I've deleted FlexCompleter and put all completion clases here.
378
378
379 * IPython/iplib.py (raw_input): improve indentation management.
379 * IPython/iplib.py (raw_input): improve indentation management.
380 It is now possible to paste indented code with autoindent on, and
380 It is now possible to paste indented code with autoindent on, and
381 the code is interpreted correctly (though it still looks bad on
381 the code is interpreted correctly (though it still looks bad on
382 screen, due to the line-oriented nature of ipython).
382 screen, due to the line-oriented nature of ipython).
383 (MagicCompleter.complete): change behavior so that a TAB key on an
383 (MagicCompleter.complete): change behavior so that a TAB key on an
384 otherwise empty line actually inserts a tab, instead of completing
384 otherwise empty line actually inserts a tab, instead of completing
385 on the entire global namespace. This makes it easier to use the
385 on the entire global namespace. This makes it easier to use the
386 TAB key for indentation. After a request by Hans Meine
386 TAB key for indentation. After a request by Hans Meine
387 <hans_meine-AT-gmx.net>
387 <hans_meine-AT-gmx.net>
388 (_prefilter): add support so that typing plain 'exit' or 'quit'
388 (_prefilter): add support so that typing plain 'exit' or 'quit'
389 does a sensible thing. Originally I tried to deviate as little as
389 does a sensible thing. Originally I tried to deviate as little as
390 possible from the default python behavior, but even that one may
390 possible from the default python behavior, but even that one may
391 change in this direction (thread on python-dev to that effect).
391 change in this direction (thread on python-dev to that effect).
392 Regardless, ipython should do the right thing even if CPython's
392 Regardless, ipython should do the right thing even if CPython's
393 '>>>' prompt doesn't.
393 '>>>' prompt doesn't.
394 (InteractiveShell): removed subclassing code.InteractiveConsole
394 (InteractiveShell): removed subclassing code.InteractiveConsole
395 class. By now we'd overridden just about all of its methods: I've
395 class. By now we'd overridden just about all of its methods: I've
396 copied the remaining two over, and now ipython is a standalone
396 copied the remaining two over, and now ipython is a standalone
397 class. This will provide a clearer picture for the chainsaw
397 class. This will provide a clearer picture for the chainsaw
398 branch refactoring.
398 branch refactoring.
399
399
400 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
400 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
401
401
402 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
402 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
403 failures for objects which break when dir() is called on them.
403 failures for objects which break when dir() is called on them.
404
404
405 * IPython/FlexCompleter.py (Completer.__init__): Added support for
405 * IPython/FlexCompleter.py (Completer.__init__): Added support for
406 distinct local and global namespaces in the completer API. This
406 distinct local and global namespaces in the completer API. This
407 change allows us top properly handle completion with distinct
407 change allows us top properly handle completion with distinct
408 scopes, including in embedded instances (this had never really
408 scopes, including in embedded instances (this had never really
409 worked correctly).
409 worked correctly).
410
410
411 Note: this introduces a change in the constructor for
411 Note: this introduces a change in the constructor for
412 MagicCompleter, as a new global_namespace parameter is now the
412 MagicCompleter, as a new global_namespace parameter is now the
413 second argument (the others were bumped one position).
413 second argument (the others were bumped one position).
414
414
415 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
415 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
416
416
417 * IPython/iplib.py (embed_mainloop): fix tab-completion in
417 * IPython/iplib.py (embed_mainloop): fix tab-completion in
418 embedded instances (which can be done now thanks to Vivian's
418 embedded instances (which can be done now thanks to Vivian's
419 frame-handling fixes for pdb).
419 frame-handling fixes for pdb).
420 (InteractiveShell.__init__): Fix namespace handling problem in
420 (InteractiveShell.__init__): Fix namespace handling problem in
421 embedded instances. We were overwriting __main__ unconditionally,
421 embedded instances. We were overwriting __main__ unconditionally,
422 and this should only be done for 'full' (non-embedded) IPython;
422 and this should only be done for 'full' (non-embedded) IPython;
423 embedded instances must respect the caller's __main__. Thanks to
423 embedded instances must respect the caller's __main__. Thanks to
424 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
424 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
425
425
426 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
426 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
427
427
428 * setup.py: added download_url to setup(). This registers the
428 * setup.py: added download_url to setup(). This registers the
429 download address at PyPI, which is not only useful to humans
429 download address at PyPI, which is not only useful to humans
430 browsing the site, but is also picked up by setuptools (the Eggs
430 browsing the site, but is also picked up by setuptools (the Eggs
431 machinery). Thanks to Ville and R. Kern for the info/discussion
431 machinery). Thanks to Ville and R. Kern for the info/discussion
432 on this.
432 on this.
433
433
434 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
434 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
435
435
436 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
436 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
437 This brings a lot of nice functionality to the pdb mode, which now
437 This brings a lot of nice functionality to the pdb mode, which now
438 has tab-completion, syntax highlighting, and better stack handling
438 has tab-completion, syntax highlighting, and better stack handling
439 than before. Many thanks to Vivian De Smedt
439 than before. Many thanks to Vivian De Smedt
440 <vivian-AT-vdesmedt.com> for the original patches.
440 <vivian-AT-vdesmedt.com> for the original patches.
441
441
442 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
442 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
443
443
444 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
444 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
445 sequence to consistently accept the banner argument. The
445 sequence to consistently accept the banner argument. The
446 inconsistency was tripping SAGE, thanks to Gary Zablackis
446 inconsistency was tripping SAGE, thanks to Gary Zablackis
447 <gzabl-AT-yahoo.com> for the report.
447 <gzabl-AT-yahoo.com> for the report.
448
448
449 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
449 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
450
450
451 * IPython/iplib.py (InteractiveShell.post_config_initialization):
451 * IPython/iplib.py (InteractiveShell.post_config_initialization):
452 Fix bug where a naked 'alias' call in the ipythonrc file would
452 Fix bug where a naked 'alias' call in the ipythonrc file would
453 cause a crash. Bug reported by Jorgen Stenarson.
453 cause a crash. Bug reported by Jorgen Stenarson.
454
454
455 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
455 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
456
456
457 * IPython/ipmaker.py (make_IPython): cleanups which should improve
457 * IPython/ipmaker.py (make_IPython): cleanups which should improve
458 startup time.
458 startup time.
459
459
460 * IPython/iplib.py (runcode): my globals 'fix' for embedded
460 * IPython/iplib.py (runcode): my globals 'fix' for embedded
461 instances had introduced a bug with globals in normal code. Now
461 instances had introduced a bug with globals in normal code. Now
462 it's working in all cases.
462 it's working in all cases.
463
463
464 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
464 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
465 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
465 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
466 has been introduced to set the default case sensitivity of the
466 has been introduced to set the default case sensitivity of the
467 searches. Users can still select either mode at runtime on a
467 searches. Users can still select either mode at runtime on a
468 per-search basis.
468 per-search basis.
469
469
470 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
470 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
471
471
472 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
472 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
473 attributes in wildcard searches for subclasses. Modified version
473 attributes in wildcard searches for subclasses. Modified version
474 of a patch by Jorgen.
474 of a patch by Jorgen.
475
475
476 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
476 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
477
477
478 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
478 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
479 embedded instances. I added a user_global_ns attribute to the
479 embedded instances. I added a user_global_ns attribute to the
480 InteractiveShell class to handle this.
480 InteractiveShell class to handle this.
481
481
482 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
482 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
483
483
484 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
484 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
485 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
485 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
486 (reported under win32, but may happen also in other platforms).
486 (reported under win32, but may happen also in other platforms).
487 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
487 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
488
488
489 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
489 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
490
490
491 * IPython/Magic.py (magic_psearch): new support for wildcard
491 * IPython/Magic.py (magic_psearch): new support for wildcard
492 patterns. Now, typing ?a*b will list all names which begin with a
492 patterns. Now, typing ?a*b will list all names which begin with a
493 and end in b, for example. The %psearch magic has full
493 and end in b, for example. The %psearch magic has full
494 docstrings. Many thanks to JΓΆrgen Stenarson
494 docstrings. Many thanks to JΓΆrgen Stenarson
495 <jorgen.stenarson-AT-bostream.nu>, author of the patches
495 <jorgen.stenarson-AT-bostream.nu>, author of the patches
496 implementing this functionality.
496 implementing this functionality.
497
497
498 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
498 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
499
499
500 * Manual: fixed long-standing annoyance of double-dashes (as in
500 * Manual: fixed long-standing annoyance of double-dashes (as in
501 --prefix=~, for example) being stripped in the HTML version. This
501 --prefix=~, for example) being stripped in the HTML version. This
502 is a latex2html bug, but a workaround was provided. Many thanks
502 is a latex2html bug, but a workaround was provided. Many thanks
503 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
503 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
504 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
504 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
505 rolling. This seemingly small issue had tripped a number of users
505 rolling. This seemingly small issue had tripped a number of users
506 when first installing, so I'm glad to see it gone.
506 when first installing, so I'm glad to see it gone.
507
507
508 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
508 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
509
509
510 * IPython/Extensions/numeric_formats.py: fix missing import,
510 * IPython/Extensions/numeric_formats.py: fix missing import,
511 reported by Stephen Walton.
511 reported by Stephen Walton.
512
512
513 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
513 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
514
514
515 * IPython/demo.py: finish demo module, fully documented now.
515 * IPython/demo.py: finish demo module, fully documented now.
516
516
517 * IPython/genutils.py (file_read): simple little utility to read a
517 * IPython/genutils.py (file_read): simple little utility to read a
518 file and ensure it's closed afterwards.
518 file and ensure it's closed afterwards.
519
519
520 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
520 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
521
521
522 * IPython/demo.py (Demo.__init__): added support for individually
522 * IPython/demo.py (Demo.__init__): added support for individually
523 tagging blocks for automatic execution.
523 tagging blocks for automatic execution.
524
524
525 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
525 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
526 syntax-highlighted python sources, requested by John.
526 syntax-highlighted python sources, requested by John.
527
527
528 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
528 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
529
529
530 * IPython/demo.py (Demo.again): fix bug where again() blocks after
530 * IPython/demo.py (Demo.again): fix bug where again() blocks after
531 finishing.
531 finishing.
532
532
533 * IPython/genutils.py (shlex_split): moved from Magic to here,
533 * IPython/genutils.py (shlex_split): moved from Magic to here,
534 where all 2.2 compatibility stuff lives. I needed it for demo.py.
534 where all 2.2 compatibility stuff lives. I needed it for demo.py.
535
535
536 * IPython/demo.py (Demo.__init__): added support for silent
536 * IPython/demo.py (Demo.__init__): added support for silent
537 blocks, improved marks as regexps, docstrings written.
537 blocks, improved marks as regexps, docstrings written.
538 (Demo.__init__): better docstring, added support for sys.argv.
538 (Demo.__init__): better docstring, added support for sys.argv.
539
539
540 * IPython/genutils.py (marquee): little utility used by the demo
540 * IPython/genutils.py (marquee): little utility used by the demo
541 code, handy in general.
541 code, handy in general.
542
542
543 * IPython/demo.py (Demo.__init__): new class for interactive
543 * IPython/demo.py (Demo.__init__): new class for interactive
544 demos. Not documented yet, I just wrote it in a hurry for
544 demos. Not documented yet, I just wrote it in a hurry for
545 scipy'05. Will docstring later.
545 scipy'05. Will docstring later.
546
546
547 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
547 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
548
548
549 * IPython/Shell.py (sigint_handler): Drastic simplification which
549 * IPython/Shell.py (sigint_handler): Drastic simplification which
550 also seems to make Ctrl-C work correctly across threads! This is
550 also seems to make Ctrl-C work correctly across threads! This is
551 so simple, that I can't beleive I'd missed it before. Needs more
551 so simple, that I can't beleive I'd missed it before. Needs more
552 testing, though.
552 testing, though.
553 (KBINT): Never mind, revert changes. I'm sure I'd tried something
553 (KBINT): Never mind, revert changes. I'm sure I'd tried something
554 like this before...
554 like this before...
555
555
556 * IPython/genutils.py (get_home_dir): add protection against
556 * IPython/genutils.py (get_home_dir): add protection against
557 non-dirs in win32 registry.
557 non-dirs in win32 registry.
558
558
559 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
559 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
560 bug where dict was mutated while iterating (pysh crash).
560 bug where dict was mutated while iterating (pysh crash).
561
561
562 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
562 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
563
563
564 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
564 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
565 spurious newlines added by this routine. After a report by
565 spurious newlines added by this routine. After a report by
566 F. Mantegazza.
566 F. Mantegazza.
567
567
568 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
568 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
569
569
570 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
570 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
571 calls. These were a leftover from the GTK 1.x days, and can cause
571 calls. These were a leftover from the GTK 1.x days, and can cause
572 problems in certain cases (after a report by John Hunter).
572 problems in certain cases (after a report by John Hunter).
573
573
574 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
574 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
575 os.getcwd() fails at init time. Thanks to patch from David Remahl
575 os.getcwd() fails at init time. Thanks to patch from David Remahl
576 <chmod007-AT-mac.com>.
576 <chmod007-AT-mac.com>.
577 (InteractiveShell.__init__): prevent certain special magics from
577 (InteractiveShell.__init__): prevent certain special magics from
578 being shadowed by aliases. Closes
578 being shadowed by aliases. Closes
579 http://www.scipy.net/roundup/ipython/issue41.
579 http://www.scipy.net/roundup/ipython/issue41.
580
580
581 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
581 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
582
582
583 * IPython/iplib.py (InteractiveShell.complete): Added new
583 * IPython/iplib.py (InteractiveShell.complete): Added new
584 top-level completion method to expose the completion mechanism
584 top-level completion method to expose the completion mechanism
585 beyond readline-based environments.
585 beyond readline-based environments.
586
586
587 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
587 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
588
588
589 * tools/ipsvnc (svnversion): fix svnversion capture.
589 * tools/ipsvnc (svnversion): fix svnversion capture.
590
590
591 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
591 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
592 attribute to self, which was missing. Before, it was set by a
592 attribute to self, which was missing. Before, it was set by a
593 routine which in certain cases wasn't being called, so the
593 routine which in certain cases wasn't being called, so the
594 instance could end up missing the attribute. This caused a crash.
594 instance could end up missing the attribute. This caused a crash.
595 Closes http://www.scipy.net/roundup/ipython/issue40.
595 Closes http://www.scipy.net/roundup/ipython/issue40.
596
596
597 2005-08-16 Fernando Perez <fperez@colorado.edu>
597 2005-08-16 Fernando Perez <fperez@colorado.edu>
598
598
599 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
599 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
600 contains non-string attribute. Closes
600 contains non-string attribute. Closes
601 http://www.scipy.net/roundup/ipython/issue38.
601 http://www.scipy.net/roundup/ipython/issue38.
602
602
603 2005-08-14 Fernando Perez <fperez@colorado.edu>
603 2005-08-14 Fernando Perez <fperez@colorado.edu>
604
604
605 * tools/ipsvnc: Minor improvements, to add changeset info.
605 * tools/ipsvnc: Minor improvements, to add changeset info.
606
606
607 2005-08-12 Fernando Perez <fperez@colorado.edu>
607 2005-08-12 Fernando Perez <fperez@colorado.edu>
608
608
609 * IPython/iplib.py (runsource): remove self.code_to_run_src
609 * IPython/iplib.py (runsource): remove self.code_to_run_src
610 attribute. I realized this is nothing more than
610 attribute. I realized this is nothing more than
611 '\n'.join(self.buffer), and having the same data in two different
611 '\n'.join(self.buffer), and having the same data in two different
612 places is just asking for synchronization bugs. This may impact
612 places is just asking for synchronization bugs. This may impact
613 people who have custom exception handlers, so I need to warn
613 people who have custom exception handlers, so I need to warn
614 ipython-dev about it (F. Mantegazza may use them).
614 ipython-dev about it (F. Mantegazza may use them).
615
615
616 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
616 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
617
617
618 * IPython/genutils.py: fix 2.2 compatibility (generators)
618 * IPython/genutils.py: fix 2.2 compatibility (generators)
619
619
620 2005-07-18 Fernando Perez <fperez@colorado.edu>
620 2005-07-18 Fernando Perez <fperez@colorado.edu>
621
621
622 * IPython/genutils.py (get_home_dir): fix to help users with
622 * IPython/genutils.py (get_home_dir): fix to help users with
623 invalid $HOME under win32.
623 invalid $HOME under win32.
624
624
625 2005-07-17 Fernando Perez <fperez@colorado.edu>
625 2005-07-17 Fernando Perez <fperez@colorado.edu>
626
626
627 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
627 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
628 some old hacks and clean up a bit other routines; code should be
628 some old hacks and clean up a bit other routines; code should be
629 simpler and a bit faster.
629 simpler and a bit faster.
630
630
631 * IPython/iplib.py (interact): removed some last-resort attempts
631 * IPython/iplib.py (interact): removed some last-resort attempts
632 to survive broken stdout/stderr. That code was only making it
632 to survive broken stdout/stderr. That code was only making it
633 harder to abstract out the i/o (necessary for gui integration),
633 harder to abstract out the i/o (necessary for gui integration),
634 and the crashes it could prevent were extremely rare in practice
634 and the crashes it could prevent were extremely rare in practice
635 (besides being fully user-induced in a pretty violent manner).
635 (besides being fully user-induced in a pretty violent manner).
636
636
637 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
637 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
638 Nothing major yet, but the code is simpler to read; this should
638 Nothing major yet, but the code is simpler to read; this should
639 make it easier to do more serious modifications in the future.
639 make it easier to do more serious modifications in the future.
640
640
641 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
641 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
642 which broke in .15 (thanks to a report by Ville).
642 which broke in .15 (thanks to a report by Ville).
643
643
644 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
644 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
645 be quite correct, I know next to nothing about unicode). This
645 be quite correct, I know next to nothing about unicode). This
646 will allow unicode strings to be used in prompts, amongst other
646 will allow unicode strings to be used in prompts, amongst other
647 cases. It also will prevent ipython from crashing when unicode
647 cases. It also will prevent ipython from crashing when unicode
648 shows up unexpectedly in many places. If ascii encoding fails, we
648 shows up unexpectedly in many places. If ascii encoding fails, we
649 assume utf_8. Currently the encoding is not a user-visible
649 assume utf_8. Currently the encoding is not a user-visible
650 setting, though it could be made so if there is demand for it.
650 setting, though it could be made so if there is demand for it.
651
651
652 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
652 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
653
653
654 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
654 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
655
655
656 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
656 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
657
657
658 * IPython/genutils.py: Add 2.2 compatibility here, so all other
658 * IPython/genutils.py: Add 2.2 compatibility here, so all other
659 code can work transparently for 2.2/2.3.
659 code can work transparently for 2.2/2.3.
660
660
661 2005-07-16 Fernando Perez <fperez@colorado.edu>
661 2005-07-16 Fernando Perez <fperez@colorado.edu>
662
662
663 * IPython/ultraTB.py (ExceptionColors): Make a global variable
663 * IPython/ultraTB.py (ExceptionColors): Make a global variable
664 out of the color scheme table used for coloring exception
664 out of the color scheme table used for coloring exception
665 tracebacks. This allows user code to add new schemes at runtime.
665 tracebacks. This allows user code to add new schemes at runtime.
666 This is a minimally modified version of the patch at
666 This is a minimally modified version of the patch at
667 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
667 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
668 for the contribution.
668 for the contribution.
669
669
670 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
670 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
671 slightly modified version of the patch in
671 slightly modified version of the patch in
672 http://www.scipy.net/roundup/ipython/issue34, which also allows me
672 http://www.scipy.net/roundup/ipython/issue34, which also allows me
673 to remove the previous try/except solution (which was costlier).
673 to remove the previous try/except solution (which was costlier).
674 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
674 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
675
675
676 2005-06-08 Fernando Perez <fperez@colorado.edu>
676 2005-06-08 Fernando Perez <fperez@colorado.edu>
677
677
678 * IPython/iplib.py (write/write_err): Add methods to abstract all
678 * IPython/iplib.py (write/write_err): Add methods to abstract all
679 I/O a bit more.
679 I/O a bit more.
680
680
681 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
681 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
682 warning, reported by Aric Hagberg, fix by JD Hunter.
682 warning, reported by Aric Hagberg, fix by JD Hunter.
683
683
684 2005-06-02 *** Released version 0.6.15
684 2005-06-02 *** Released version 0.6.15
685
685
686 2005-06-01 Fernando Perez <fperez@colorado.edu>
686 2005-06-01 Fernando Perez <fperez@colorado.edu>
687
687
688 * IPython/iplib.py (MagicCompleter.file_matches): Fix
688 * IPython/iplib.py (MagicCompleter.file_matches): Fix
689 tab-completion of filenames within open-quoted strings. Note that
689 tab-completion of filenames within open-quoted strings. Note that
690 this requires that in ~/.ipython/ipythonrc, users change the
690 this requires that in ~/.ipython/ipythonrc, users change the
691 readline delimiters configuration to read:
691 readline delimiters configuration to read:
692
692
693 readline_remove_delims -/~
693 readline_remove_delims -/~
694
694
695
695
696 2005-05-31 *** Released version 0.6.14
696 2005-05-31 *** Released version 0.6.14
697
697
698 2005-05-29 Fernando Perez <fperez@colorado.edu>
698 2005-05-29 Fernando Perez <fperez@colorado.edu>
699
699
700 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
700 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
701 with files not on the filesystem. Reported by Eliyahu Sandler
701 with files not on the filesystem. Reported by Eliyahu Sandler
702 <eli@gondolin.net>
702 <eli@gondolin.net>
703
703
704 2005-05-22 Fernando Perez <fperez@colorado.edu>
704 2005-05-22 Fernando Perez <fperez@colorado.edu>
705
705
706 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
706 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
707 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
707 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
708
708
709 2005-05-19 Fernando Perez <fperez@colorado.edu>
709 2005-05-19 Fernando Perez <fperez@colorado.edu>
710
710
711 * IPython/iplib.py (safe_execfile): close a file which could be
711 * IPython/iplib.py (safe_execfile): close a file which could be
712 left open (causing problems in win32, which locks open files).
712 left open (causing problems in win32, which locks open files).
713 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
713 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
714
714
715 2005-05-18 Fernando Perez <fperez@colorado.edu>
715 2005-05-18 Fernando Perez <fperez@colorado.edu>
716
716
717 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
717 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
718 keyword arguments correctly to safe_execfile().
718 keyword arguments correctly to safe_execfile().
719
719
720 2005-05-13 Fernando Perez <fperez@colorado.edu>
720 2005-05-13 Fernando Perez <fperez@colorado.edu>
721
721
722 * ipython.1: Added info about Qt to manpage, and threads warning
722 * ipython.1: Added info about Qt to manpage, and threads warning
723 to usage page (invoked with --help).
723 to usage page (invoked with --help).
724
724
725 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
725 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
726 new matcher (it goes at the end of the priority list) to do
726 new matcher (it goes at the end of the priority list) to do
727 tab-completion on named function arguments. Submitted by George
727 tab-completion on named function arguments. Submitted by George
728 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
728 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
729 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
729 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
730 for more details.
730 for more details.
731
731
732 * IPython/Magic.py (magic_run): Added new -e flag to ignore
732 * IPython/Magic.py (magic_run): Added new -e flag to ignore
733 SystemExit exceptions in the script being run. Thanks to a report
733 SystemExit exceptions in the script being run. Thanks to a report
734 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
734 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
735 producing very annoying behavior when running unit tests.
735 producing very annoying behavior when running unit tests.
736
736
737 2005-05-12 Fernando Perez <fperez@colorado.edu>
737 2005-05-12 Fernando Perez <fperez@colorado.edu>
738
738
739 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
739 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
740 which I'd broken (again) due to a changed regexp. In the process,
740 which I'd broken (again) due to a changed regexp. In the process,
741 added ';' as an escape to auto-quote the whole line without
741 added ';' as an escape to auto-quote the whole line without
742 splitting its arguments. Thanks to a report by Jerry McRae
742 splitting its arguments. Thanks to a report by Jerry McRae
743 <qrs0xyc02-AT-sneakemail.com>.
743 <qrs0xyc02-AT-sneakemail.com>.
744
744
745 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
745 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
746 possible crashes caused by a TokenError. Reported by Ed Schofield
746 possible crashes caused by a TokenError. Reported by Ed Schofield
747 <schofield-AT-ftw.at>.
747 <schofield-AT-ftw.at>.
748
748
749 2005-05-06 Fernando Perez <fperez@colorado.edu>
749 2005-05-06 Fernando Perez <fperez@colorado.edu>
750
750
751 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
751 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
752
752
753 2005-04-29 Fernando Perez <fperez@colorado.edu>
753 2005-04-29 Fernando Perez <fperez@colorado.edu>
754
754
755 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
755 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
756 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
756 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
757 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
757 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
758 which provides support for Qt interactive usage (similar to the
758 which provides support for Qt interactive usage (similar to the
759 existing one for WX and GTK). This had been often requested.
759 existing one for WX and GTK). This had been often requested.
760
760
761 2005-04-14 *** Released version 0.6.13
761 2005-04-14 *** Released version 0.6.13
762
762
763 2005-04-08 Fernando Perez <fperez@colorado.edu>
763 2005-04-08 Fernando Perez <fperez@colorado.edu>
764
764
765 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
765 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
766 from _ofind, which gets called on almost every input line. Now,
766 from _ofind, which gets called on almost every input line. Now,
767 we only try to get docstrings if they are actually going to be
767 we only try to get docstrings if they are actually going to be
768 used (the overhead of fetching unnecessary docstrings can be
768 used (the overhead of fetching unnecessary docstrings can be
769 noticeable for certain objects, such as Pyro proxies).
769 noticeable for certain objects, such as Pyro proxies).
770
770
771 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
771 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
772 for completers. For some reason I had been passing them the state
772 for completers. For some reason I had been passing them the state
773 variable, which completers never actually need, and was in
773 variable, which completers never actually need, and was in
774 conflict with the rlcompleter API. Custom completers ONLY need to
774 conflict with the rlcompleter API. Custom completers ONLY need to
775 take the text parameter.
775 take the text parameter.
776
776
777 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
777 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
778 work correctly in pysh. I've also moved all the logic which used
778 work correctly in pysh. I've also moved all the logic which used
779 to be in pysh.py here, which will prevent problems with future
779 to be in pysh.py here, which will prevent problems with future
780 upgrades. However, this time I must warn users to update their
780 upgrades. However, this time I must warn users to update their
781 pysh profile to include the line
781 pysh profile to include the line
782
782
783 import_all IPython.Extensions.InterpreterExec
783 import_all IPython.Extensions.InterpreterExec
784
784
785 because otherwise things won't work for them. They MUST also
785 because otherwise things won't work for them. They MUST also
786 delete pysh.py and the line
786 delete pysh.py and the line
787
787
788 execfile pysh.py
788 execfile pysh.py
789
789
790 from their ipythonrc-pysh.
790 from their ipythonrc-pysh.
791
791
792 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
792 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
793 robust in the face of objects whose dir() returns non-strings
793 robust in the face of objects whose dir() returns non-strings
794 (which it shouldn't, but some broken libs like ITK do). Thanks to
794 (which it shouldn't, but some broken libs like ITK do). Thanks to
795 a patch by John Hunter (implemented differently, though). Also
795 a patch by John Hunter (implemented differently, though). Also
796 minor improvements by using .extend instead of + on lists.
796 minor improvements by using .extend instead of + on lists.
797
797
798 * pysh.py:
798 * pysh.py:
799
799
800 2005-04-06 Fernando Perez <fperez@colorado.edu>
800 2005-04-06 Fernando Perez <fperez@colorado.edu>
801
801
802 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
802 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
803 by default, so that all users benefit from it. Those who don't
803 by default, so that all users benefit from it. Those who don't
804 want it can still turn it off.
804 want it can still turn it off.
805
805
806 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
806 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
807 config file, I'd forgotten about this, so users were getting it
807 config file, I'd forgotten about this, so users were getting it
808 off by default.
808 off by default.
809
809
810 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
810 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
811 consistency. Now magics can be called in multiline statements,
811 consistency. Now magics can be called in multiline statements,
812 and python variables can be expanded in magic calls via $var.
812 and python variables can be expanded in magic calls via $var.
813 This makes the magic system behave just like aliases or !system
813 This makes the magic system behave just like aliases or !system
814 calls.
814 calls.
815
815
816 2005-03-28 Fernando Perez <fperez@colorado.edu>
816 2005-03-28 Fernando Perez <fperez@colorado.edu>
817
817
818 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
818 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
819 expensive string additions for building command. Add support for
819 expensive string additions for building command. Add support for
820 trailing ';' when autocall is used.
820 trailing ';' when autocall is used.
821
821
822 2005-03-26 Fernando Perez <fperez@colorado.edu>
822 2005-03-26 Fernando Perez <fperez@colorado.edu>
823
823
824 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
824 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
825 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
825 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
826 ipython.el robust against prompts with any number of spaces
826 ipython.el robust against prompts with any number of spaces
827 (including 0) after the ':' character.
827 (including 0) after the ':' character.
828
828
829 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
829 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
830 continuation prompt, which misled users to think the line was
830 continuation prompt, which misled users to think the line was
831 already indented. Closes debian Bug#300847, reported to me by
831 already indented. Closes debian Bug#300847, reported to me by
832 Norbert Tretkowski <tretkowski-AT-inittab.de>.
832 Norbert Tretkowski <tretkowski-AT-inittab.de>.
833
833
834 2005-03-23 Fernando Perez <fperez@colorado.edu>
834 2005-03-23 Fernando Perez <fperez@colorado.edu>
835
835
836 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
836 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
837 properly aligned if they have embedded newlines.
837 properly aligned if they have embedded newlines.
838
838
839 * IPython/iplib.py (runlines): Add a public method to expose
839 * IPython/iplib.py (runlines): Add a public method to expose
840 IPython's code execution machinery, so that users can run strings
840 IPython's code execution machinery, so that users can run strings
841 as if they had been typed at the prompt interactively.
841 as if they had been typed at the prompt interactively.
842 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
842 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
843 methods which can call the system shell, but with python variable
843 methods which can call the system shell, but with python variable
844 expansion. The three such methods are: __IPYTHON__.system,
844 expansion. The three such methods are: __IPYTHON__.system,
845 .getoutput and .getoutputerror. These need to be documented in a
845 .getoutput and .getoutputerror. These need to be documented in a
846 'public API' section (to be written) of the manual.
846 'public API' section (to be written) of the manual.
847
847
848 2005-03-20 Fernando Perez <fperez@colorado.edu>
848 2005-03-20 Fernando Perez <fperez@colorado.edu>
849
849
850 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
850 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
851 for custom exception handling. This is quite powerful, and it
851 for custom exception handling. This is quite powerful, and it
852 allows for user-installable exception handlers which can trap
852 allows for user-installable exception handlers which can trap
853 custom exceptions at runtime and treat them separately from
853 custom exceptions at runtime and treat them separately from
854 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
854 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
855 Mantegazza <mantegazza-AT-ill.fr>.
855 Mantegazza <mantegazza-AT-ill.fr>.
856 (InteractiveShell.set_custom_completer): public API function to
856 (InteractiveShell.set_custom_completer): public API function to
857 add new completers at runtime.
857 add new completers at runtime.
858
858
859 2005-03-19 Fernando Perez <fperez@colorado.edu>
859 2005-03-19 Fernando Perez <fperez@colorado.edu>
860
860
861 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
861 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
862 allow objects which provide their docstrings via non-standard
862 allow objects which provide their docstrings via non-standard
863 mechanisms (like Pyro proxies) to still be inspected by ipython's
863 mechanisms (like Pyro proxies) to still be inspected by ipython's
864 ? system.
864 ? system.
865
865
866 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
866 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
867 automatic capture system. I tried quite hard to make it work
867 automatic capture system. I tried quite hard to make it work
868 reliably, and simply failed. I tried many combinations with the
868 reliably, and simply failed. I tried many combinations with the
869 subprocess module, but eventually nothing worked in all needed
869 subprocess module, but eventually nothing worked in all needed
870 cases (not blocking stdin for the child, duplicating stdout
870 cases (not blocking stdin for the child, duplicating stdout
871 without blocking, etc). The new %sc/%sx still do capture to these
871 without blocking, etc). The new %sc/%sx still do capture to these
872 magical list/string objects which make shell use much more
872 magical list/string objects which make shell use much more
873 conveninent, so not all is lost.
873 conveninent, so not all is lost.
874
874
875 XXX - FIX MANUAL for the change above!
875 XXX - FIX MANUAL for the change above!
876
876
877 (runsource): I copied code.py's runsource() into ipython to modify
877 (runsource): I copied code.py's runsource() into ipython to modify
878 it a bit. Now the code object and source to be executed are
878 it a bit. Now the code object and source to be executed are
879 stored in ipython. This makes this info accessible to third-party
879 stored in ipython. This makes this info accessible to third-party
880 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
880 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
881 Mantegazza <mantegazza-AT-ill.fr>.
881 Mantegazza <mantegazza-AT-ill.fr>.
882
882
883 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
883 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
884 history-search via readline (like C-p/C-n). I'd wanted this for a
884 history-search via readline (like C-p/C-n). I'd wanted this for a
885 long time, but only recently found out how to do it. For users
885 long time, but only recently found out how to do it. For users
886 who already have their ipythonrc files made and want this, just
886 who already have their ipythonrc files made and want this, just
887 add:
887 add:
888
888
889 readline_parse_and_bind "\e[A": history-search-backward
889 readline_parse_and_bind "\e[A": history-search-backward
890 readline_parse_and_bind "\e[B": history-search-forward
890 readline_parse_and_bind "\e[B": history-search-forward
891
891
892 2005-03-18 Fernando Perez <fperez@colorado.edu>
892 2005-03-18 Fernando Perez <fperez@colorado.edu>
893
893
894 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
894 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
895 LSString and SList classes which allow transparent conversions
895 LSString and SList classes which allow transparent conversions
896 between list mode and whitespace-separated string.
896 between list mode and whitespace-separated string.
897 (magic_r): Fix recursion problem in %r.
897 (magic_r): Fix recursion problem in %r.
898
898
899 * IPython/genutils.py (LSString): New class to be used for
899 * IPython/genutils.py (LSString): New class to be used for
900 automatic storage of the results of all alias/system calls in _o
900 automatic storage of the results of all alias/system calls in _o
901 and _e (stdout/err). These provide a .l/.list attribute which
901 and _e (stdout/err). These provide a .l/.list attribute which
902 does automatic splitting on newlines. This means that for most
902 does automatic splitting on newlines. This means that for most
903 uses, you'll never need to do capturing of output with %sc/%sx
903 uses, you'll never need to do capturing of output with %sc/%sx
904 anymore, since ipython keeps this always done for you. Note that
904 anymore, since ipython keeps this always done for you. Note that
905 only the LAST results are stored, the _o/e variables are
905 only the LAST results are stored, the _o/e variables are
906 overwritten on each call. If you need to save their contents
906 overwritten on each call. If you need to save their contents
907 further, simply bind them to any other name.
907 further, simply bind them to any other name.
908
908
909 2005-03-17 Fernando Perez <fperez@colorado.edu>
909 2005-03-17 Fernando Perez <fperez@colorado.edu>
910
910
911 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
911 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
912 prompt namespace handling.
912 prompt namespace handling.
913
913
914 2005-03-16 Fernando Perez <fperez@colorado.edu>
914 2005-03-16 Fernando Perez <fperez@colorado.edu>
915
915
916 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
916 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
917 classic prompts to be '>>> ' (final space was missing, and it
917 classic prompts to be '>>> ' (final space was missing, and it
918 trips the emacs python mode).
918 trips the emacs python mode).
919 (BasePrompt.__str__): Added safe support for dynamic prompt
919 (BasePrompt.__str__): Added safe support for dynamic prompt
920 strings. Now you can set your prompt string to be '$x', and the
920 strings. Now you can set your prompt string to be '$x', and the
921 value of x will be printed from your interactive namespace. The
921 value of x will be printed from your interactive namespace. The
922 interpolation syntax includes the full Itpl support, so
922 interpolation syntax includes the full Itpl support, so
923 ${foo()+x+bar()} is a valid prompt string now, and the function
923 ${foo()+x+bar()} is a valid prompt string now, and the function
924 calls will be made at runtime.
924 calls will be made at runtime.
925
925
926 2005-03-15 Fernando Perez <fperez@colorado.edu>
926 2005-03-15 Fernando Perez <fperez@colorado.edu>
927
927
928 * IPython/Magic.py (magic_history): renamed %hist to %history, to
928 * IPython/Magic.py (magic_history): renamed %hist to %history, to
929 avoid name clashes in pylab. %hist still works, it just forwards
929 avoid name clashes in pylab. %hist still works, it just forwards
930 the call to %history.
930 the call to %history.
931
931
932 2005-03-02 *** Released version 0.6.12
932 2005-03-02 *** Released version 0.6.12
933
933
934 2005-03-02 Fernando Perez <fperez@colorado.edu>
934 2005-03-02 Fernando Perez <fperez@colorado.edu>
935
935
936 * IPython/iplib.py (handle_magic): log magic calls properly as
936 * IPython/iplib.py (handle_magic): log magic calls properly as
937 ipmagic() function calls.
937 ipmagic() function calls.
938
938
939 * IPython/Magic.py (magic_time): Improved %time to support
939 * IPython/Magic.py (magic_time): Improved %time to support
940 statements and provide wall-clock as well as CPU time.
940 statements and provide wall-clock as well as CPU time.
941
941
942 2005-02-27 Fernando Perez <fperez@colorado.edu>
942 2005-02-27 Fernando Perez <fperez@colorado.edu>
943
943
944 * IPython/hooks.py: New hooks module, to expose user-modifiable
944 * IPython/hooks.py: New hooks module, to expose user-modifiable
945 IPython functionality in a clean manner. For now only the editor
945 IPython functionality in a clean manner. For now only the editor
946 hook is actually written, and other thigns which I intend to turn
946 hook is actually written, and other thigns which I intend to turn
947 into proper hooks aren't yet there. The display and prefilter
947 into proper hooks aren't yet there. The display and prefilter
948 stuff, for example, should be hooks. But at least now the
948 stuff, for example, should be hooks. But at least now the
949 framework is in place, and the rest can be moved here with more
949 framework is in place, and the rest can be moved here with more
950 time later. IPython had had a .hooks variable for a long time for
950 time later. IPython had had a .hooks variable for a long time for
951 this purpose, but I'd never actually used it for anything.
951 this purpose, but I'd never actually used it for anything.
952
952
953 2005-02-26 Fernando Perez <fperez@colorado.edu>
953 2005-02-26 Fernando Perez <fperez@colorado.edu>
954
954
955 * IPython/ipmaker.py (make_IPython): make the default ipython
955 * IPython/ipmaker.py (make_IPython): make the default ipython
956 directory be called _ipython under win32, to follow more the
956 directory be called _ipython under win32, to follow more the
957 naming peculiarities of that platform (where buggy software like
957 naming peculiarities of that platform (where buggy software like
958 Visual Sourcesafe breaks with .named directories). Reported by
958 Visual Sourcesafe breaks with .named directories). Reported by
959 Ville Vainio.
959 Ville Vainio.
960
960
961 2005-02-23 Fernando Perez <fperez@colorado.edu>
961 2005-02-23 Fernando Perez <fperez@colorado.edu>
962
962
963 * IPython/iplib.py (InteractiveShell.__init__): removed a few
963 * IPython/iplib.py (InteractiveShell.__init__): removed a few
964 auto_aliases for win32 which were causing problems. Users can
964 auto_aliases for win32 which were causing problems. Users can
965 define the ones they personally like.
965 define the ones they personally like.
966
966
967 2005-02-21 Fernando Perez <fperez@colorado.edu>
967 2005-02-21 Fernando Perez <fperez@colorado.edu>
968
968
969 * IPython/Magic.py (magic_time): new magic to time execution of
969 * IPython/Magic.py (magic_time): new magic to time execution of
970 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
970 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
971
971
972 2005-02-19 Fernando Perez <fperez@colorado.edu>
972 2005-02-19 Fernando Perez <fperez@colorado.edu>
973
973
974 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
974 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
975 into keys (for prompts, for example).
975 into keys (for prompts, for example).
976
976
977 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
977 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
978 prompts in case users want them. This introduces a small behavior
978 prompts in case users want them. This introduces a small behavior
979 change: ipython does not automatically add a space to all prompts
979 change: ipython does not automatically add a space to all prompts
980 anymore. To get the old prompts with a space, users should add it
980 anymore. To get the old prompts with a space, users should add it
981 manually to their ipythonrc file, so for example prompt_in1 should
981 manually to their ipythonrc file, so for example prompt_in1 should
982 now read 'In [\#]: ' instead of 'In [\#]:'.
982 now read 'In [\#]: ' instead of 'In [\#]:'.
983 (BasePrompt.__init__): New option prompts_pad_left (only in rc
983 (BasePrompt.__init__): New option prompts_pad_left (only in rc
984 file) to control left-padding of secondary prompts.
984 file) to control left-padding of secondary prompts.
985
985
986 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
986 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
987 the profiler can't be imported. Fix for Debian, which removed
987 the profiler can't be imported. Fix for Debian, which removed
988 profile.py because of License issues. I applied a slightly
988 profile.py because of License issues. I applied a slightly
989 modified version of the original Debian patch at
989 modified version of the original Debian patch at
990 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
990 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
991
991
992 2005-02-17 Fernando Perez <fperez@colorado.edu>
992 2005-02-17 Fernando Perez <fperez@colorado.edu>
993
993
994 * IPython/genutils.py (native_line_ends): Fix bug which would
994 * IPython/genutils.py (native_line_ends): Fix bug which would
995 cause improper line-ends under win32 b/c I was not opening files
995 cause improper line-ends under win32 b/c I was not opening files
996 in binary mode. Bug report and fix thanks to Ville.
996 in binary mode. Bug report and fix thanks to Ville.
997
997
998 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
998 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
999 trying to catch spurious foo[1] autocalls. My fix actually broke
999 trying to catch spurious foo[1] autocalls. My fix actually broke
1000 ',/' autoquote/call with explicit escape (bad regexp).
1000 ',/' autoquote/call with explicit escape (bad regexp).
1001
1001
1002 2005-02-15 *** Released version 0.6.11
1002 2005-02-15 *** Released version 0.6.11
1003
1003
1004 2005-02-14 Fernando Perez <fperez@colorado.edu>
1004 2005-02-14 Fernando Perez <fperez@colorado.edu>
1005
1005
1006 * IPython/background_jobs.py: New background job management
1006 * IPython/background_jobs.py: New background job management
1007 subsystem. This is implemented via a new set of classes, and
1007 subsystem. This is implemented via a new set of classes, and
1008 IPython now provides a builtin 'jobs' object for background job
1008 IPython now provides a builtin 'jobs' object for background job
1009 execution. A convenience %bg magic serves as a lightweight
1009 execution. A convenience %bg magic serves as a lightweight
1010 frontend for starting the more common type of calls. This was
1010 frontend for starting the more common type of calls. This was
1011 inspired by discussions with B. Granger and the BackgroundCommand
1011 inspired by discussions with B. Granger and the BackgroundCommand
1012 class described in the book Python Scripting for Computational
1012 class described in the book Python Scripting for Computational
1013 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1013 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1014 (although ultimately no code from this text was used, as IPython's
1014 (although ultimately no code from this text was used, as IPython's
1015 system is a separate implementation).
1015 system is a separate implementation).
1016
1016
1017 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1017 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1018 to control the completion of single/double underscore names
1018 to control the completion of single/double underscore names
1019 separately. As documented in the example ipytonrc file, the
1019 separately. As documented in the example ipytonrc file, the
1020 readline_omit__names variable can now be set to 2, to omit even
1020 readline_omit__names variable can now be set to 2, to omit even
1021 single underscore names. Thanks to a patch by Brian Wong
1021 single underscore names. Thanks to a patch by Brian Wong
1022 <BrianWong-AT-AirgoNetworks.Com>.
1022 <BrianWong-AT-AirgoNetworks.Com>.
1023 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1023 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1024 be autocalled as foo([1]) if foo were callable. A problem for
1024 be autocalled as foo([1]) if foo were callable. A problem for
1025 things which are both callable and implement __getitem__.
1025 things which are both callable and implement __getitem__.
1026 (init_readline): Fix autoindentation for win32. Thanks to a patch
1026 (init_readline): Fix autoindentation for win32. Thanks to a patch
1027 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1027 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1028
1028
1029 2005-02-12 Fernando Perez <fperez@colorado.edu>
1029 2005-02-12 Fernando Perez <fperez@colorado.edu>
1030
1030
1031 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1031 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1032 which I had written long ago to sort out user error messages which
1032 which I had written long ago to sort out user error messages which
1033 may occur during startup. This seemed like a good idea initially,
1033 may occur during startup. This seemed like a good idea initially,
1034 but it has proven a disaster in retrospect. I don't want to
1034 but it has proven a disaster in retrospect. I don't want to
1035 change much code for now, so my fix is to set the internal 'debug'
1035 change much code for now, so my fix is to set the internal 'debug'
1036 flag to true everywhere, whose only job was precisely to control
1036 flag to true everywhere, whose only job was precisely to control
1037 this subsystem. This closes issue 28 (as well as avoiding all
1037 this subsystem. This closes issue 28 (as well as avoiding all
1038 sorts of strange hangups which occur from time to time).
1038 sorts of strange hangups which occur from time to time).
1039
1039
1040 2005-02-07 Fernando Perez <fperez@colorado.edu>
1040 2005-02-07 Fernando Perez <fperez@colorado.edu>
1041
1041
1042 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1042 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1043 previous call produced a syntax error.
1043 previous call produced a syntax error.
1044
1044
1045 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1045 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1046 classes without constructor.
1046 classes without constructor.
1047
1047
1048 2005-02-06 Fernando Perez <fperez@colorado.edu>
1048 2005-02-06 Fernando Perez <fperez@colorado.edu>
1049
1049
1050 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1050 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1051 completions with the results of each matcher, so we return results
1051 completions with the results of each matcher, so we return results
1052 to the user from all namespaces. This breaks with ipython
1052 to the user from all namespaces. This breaks with ipython
1053 tradition, but I think it's a nicer behavior. Now you get all
1053 tradition, but I think it's a nicer behavior. Now you get all
1054 possible completions listed, from all possible namespaces (python,
1054 possible completions listed, from all possible namespaces (python,
1055 filesystem, magics...) After a request by John Hunter
1055 filesystem, magics...) After a request by John Hunter
1056 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1056 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1057
1057
1058 2005-02-05 Fernando Perez <fperez@colorado.edu>
1058 2005-02-05 Fernando Perez <fperez@colorado.edu>
1059
1059
1060 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1060 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1061 the call had quote characters in it (the quotes were stripped).
1061 the call had quote characters in it (the quotes were stripped).
1062
1062
1063 2005-01-31 Fernando Perez <fperez@colorado.edu>
1063 2005-01-31 Fernando Perez <fperez@colorado.edu>
1064
1064
1065 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1065 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1066 Itpl.itpl() to make the code more robust against psyco
1066 Itpl.itpl() to make the code more robust against psyco
1067 optimizations.
1067 optimizations.
1068
1068
1069 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1069 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1070 of causing an exception. Quicker, cleaner.
1070 of causing an exception. Quicker, cleaner.
1071
1071
1072 2005-01-28 Fernando Perez <fperez@colorado.edu>
1072 2005-01-28 Fernando Perez <fperez@colorado.edu>
1073
1073
1074 * scripts/ipython_win_post_install.py (install): hardcode
1074 * scripts/ipython_win_post_install.py (install): hardcode
1075 sys.prefix+'python.exe' as the executable path. It turns out that
1075 sys.prefix+'python.exe' as the executable path. It turns out that
1076 during the post-installation run, sys.executable resolves to the
1076 during the post-installation run, sys.executable resolves to the
1077 name of the binary installer! I should report this as a distutils
1077 name of the binary installer! I should report this as a distutils
1078 bug, I think. I updated the .10 release with this tiny fix, to
1078 bug, I think. I updated the .10 release with this tiny fix, to
1079 avoid annoying the lists further.
1079 avoid annoying the lists further.
1080
1080
1081 2005-01-27 *** Released version 0.6.10
1081 2005-01-27 *** Released version 0.6.10
1082
1082
1083 2005-01-27 Fernando Perez <fperez@colorado.edu>
1083 2005-01-27 Fernando Perez <fperez@colorado.edu>
1084
1084
1085 * IPython/numutils.py (norm): Added 'inf' as optional name for
1085 * IPython/numutils.py (norm): Added 'inf' as optional name for
1086 L-infinity norm, included references to mathworld.com for vector
1086 L-infinity norm, included references to mathworld.com for vector
1087 norm definitions.
1087 norm definitions.
1088 (amin/amax): added amin/amax for array min/max. Similar to what
1088 (amin/amax): added amin/amax for array min/max. Similar to what
1089 pylab ships with after the recent reorganization of names.
1089 pylab ships with after the recent reorganization of names.
1090 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1090 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1091
1091
1092 * ipython.el: committed Alex's recent fixes and improvements.
1092 * ipython.el: committed Alex's recent fixes and improvements.
1093 Tested with python-mode from CVS, and it looks excellent. Since
1093 Tested with python-mode from CVS, and it looks excellent. Since
1094 python-mode hasn't released anything in a while, I'm temporarily
1094 python-mode hasn't released anything in a while, I'm temporarily
1095 putting a copy of today's CVS (v 4.70) of python-mode in:
1095 putting a copy of today's CVS (v 4.70) of python-mode in:
1096 http://ipython.scipy.org/tmp/python-mode.el
1096 http://ipython.scipy.org/tmp/python-mode.el
1097
1097
1098 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1098 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1099 sys.executable for the executable name, instead of assuming it's
1099 sys.executable for the executable name, instead of assuming it's
1100 called 'python.exe' (the post-installer would have produced broken
1100 called 'python.exe' (the post-installer would have produced broken
1101 setups on systems with a differently named python binary).
1101 setups on systems with a differently named python binary).
1102
1102
1103 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1103 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1104 references to os.linesep, to make the code more
1104 references to os.linesep, to make the code more
1105 platform-independent. This is also part of the win32 coloring
1105 platform-independent. This is also part of the win32 coloring
1106 fixes.
1106 fixes.
1107
1107
1108 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1108 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1109 lines, which actually cause coloring bugs because the length of
1109 lines, which actually cause coloring bugs because the length of
1110 the line is very difficult to correctly compute with embedded
1110 the line is very difficult to correctly compute with embedded
1111 escapes. This was the source of all the coloring problems under
1111 escapes. This was the source of all the coloring problems under
1112 Win32. I think that _finally_, Win32 users have a properly
1112 Win32. I think that _finally_, Win32 users have a properly
1113 working ipython in all respects. This would never have happened
1113 working ipython in all respects. This would never have happened
1114 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1114 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1115
1115
1116 2005-01-26 *** Released version 0.6.9
1116 2005-01-26 *** Released version 0.6.9
1117
1117
1118 2005-01-25 Fernando Perez <fperez@colorado.edu>
1118 2005-01-25 Fernando Perez <fperez@colorado.edu>
1119
1119
1120 * setup.py: finally, we have a true Windows installer, thanks to
1120 * setup.py: finally, we have a true Windows installer, thanks to
1121 the excellent work of Viktor Ransmayr
1121 the excellent work of Viktor Ransmayr
1122 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1122 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1123 Windows users. The setup routine is quite a bit cleaner thanks to
1123 Windows users. The setup routine is quite a bit cleaner thanks to
1124 this, and the post-install script uses the proper functions to
1124 this, and the post-install script uses the proper functions to
1125 allow a clean de-installation using the standard Windows Control
1125 allow a clean de-installation using the standard Windows Control
1126 Panel.
1126 Panel.
1127
1127
1128 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1128 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1129 environment variable under all OSes (including win32) if
1129 environment variable under all OSes (including win32) if
1130 available. This will give consistency to win32 users who have set
1130 available. This will give consistency to win32 users who have set
1131 this variable for any reason. If os.environ['HOME'] fails, the
1131 this variable for any reason. If os.environ['HOME'] fails, the
1132 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1132 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1133
1133
1134 2005-01-24 Fernando Perez <fperez@colorado.edu>
1134 2005-01-24 Fernando Perez <fperez@colorado.edu>
1135
1135
1136 * IPython/numutils.py (empty_like): add empty_like(), similar to
1136 * IPython/numutils.py (empty_like): add empty_like(), similar to
1137 zeros_like() but taking advantage of the new empty() Numeric routine.
1137 zeros_like() but taking advantage of the new empty() Numeric routine.
1138
1138
1139 2005-01-23 *** Released version 0.6.8
1139 2005-01-23 *** Released version 0.6.8
1140
1140
1141 2005-01-22 Fernando Perez <fperez@colorado.edu>
1141 2005-01-22 Fernando Perez <fperez@colorado.edu>
1142
1142
1143 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1143 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1144 automatic show() calls. After discussing things with JDH, it
1144 automatic show() calls. After discussing things with JDH, it
1145 turns out there are too many corner cases where this can go wrong.
1145 turns out there are too many corner cases where this can go wrong.
1146 It's best not to try to be 'too smart', and simply have ipython
1146 It's best not to try to be 'too smart', and simply have ipython
1147 reproduce as much as possible the default behavior of a normal
1147 reproduce as much as possible the default behavior of a normal
1148 python shell.
1148 python shell.
1149
1149
1150 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1150 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1151 line-splitting regexp and _prefilter() to avoid calling getattr()
1151 line-splitting regexp and _prefilter() to avoid calling getattr()
1152 on assignments. This closes
1152 on assignments. This closes
1153 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1153 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1154 readline uses getattr(), so a simple <TAB> keypress is still
1154 readline uses getattr(), so a simple <TAB> keypress is still
1155 enough to trigger getattr() calls on an object.
1155 enough to trigger getattr() calls on an object.
1156
1156
1157 2005-01-21 Fernando Perez <fperez@colorado.edu>
1157 2005-01-21 Fernando Perez <fperez@colorado.edu>
1158
1158
1159 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1159 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1160 docstring under pylab so it doesn't mask the original.
1160 docstring under pylab so it doesn't mask the original.
1161
1161
1162 2005-01-21 *** Released version 0.6.7
1162 2005-01-21 *** Released version 0.6.7
1163
1163
1164 2005-01-21 Fernando Perez <fperez@colorado.edu>
1164 2005-01-21 Fernando Perez <fperez@colorado.edu>
1165
1165
1166 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1166 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1167 signal handling for win32 users in multithreaded mode.
1167 signal handling for win32 users in multithreaded mode.
1168
1168
1169 2005-01-17 Fernando Perez <fperez@colorado.edu>
1169 2005-01-17 Fernando Perez <fperez@colorado.edu>
1170
1170
1171 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1171 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1172 instances with no __init__. After a crash report by Norbert Nemec
1172 instances with no __init__. After a crash report by Norbert Nemec
1173 <Norbert-AT-nemec-online.de>.
1173 <Norbert-AT-nemec-online.de>.
1174
1174
1175 2005-01-14 Fernando Perez <fperez@colorado.edu>
1175 2005-01-14 Fernando Perez <fperez@colorado.edu>
1176
1176
1177 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1177 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1178 names for verbose exceptions, when multiple dotted names and the
1178 names for verbose exceptions, when multiple dotted names and the
1179 'parent' object were present on the same line.
1179 'parent' object were present on the same line.
1180
1180
1181 2005-01-11 Fernando Perez <fperez@colorado.edu>
1181 2005-01-11 Fernando Perez <fperez@colorado.edu>
1182
1182
1183 * IPython/genutils.py (flag_calls): new utility to trap and flag
1183 * IPython/genutils.py (flag_calls): new utility to trap and flag
1184 calls in functions. I need it to clean up matplotlib support.
1184 calls in functions. I need it to clean up matplotlib support.
1185 Also removed some deprecated code in genutils.
1185 Also removed some deprecated code in genutils.
1186
1186
1187 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1187 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1188 that matplotlib scripts called with %run, which don't call show()
1188 that matplotlib scripts called with %run, which don't call show()
1189 themselves, still have their plotting windows open.
1189 themselves, still have their plotting windows open.
1190
1190
1191 2005-01-05 Fernando Perez <fperez@colorado.edu>
1191 2005-01-05 Fernando Perez <fperez@colorado.edu>
1192
1192
1193 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1193 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1194 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1194 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1195
1195
1196 2004-12-19 Fernando Perez <fperez@colorado.edu>
1196 2004-12-19 Fernando Perez <fperez@colorado.edu>
1197
1197
1198 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1198 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1199 parent_runcode, which was an eyesore. The same result can be
1199 parent_runcode, which was an eyesore. The same result can be
1200 obtained with Python's regular superclass mechanisms.
1200 obtained with Python's regular superclass mechanisms.
1201
1201
1202 2004-12-17 Fernando Perez <fperez@colorado.edu>
1202 2004-12-17 Fernando Perez <fperez@colorado.edu>
1203
1203
1204 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1204 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1205 reported by Prabhu.
1205 reported by Prabhu.
1206 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1206 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1207 sys.stderr) instead of explicitly calling sys.stderr. This helps
1207 sys.stderr) instead of explicitly calling sys.stderr. This helps
1208 maintain our I/O abstractions clean, for future GUI embeddings.
1208 maintain our I/O abstractions clean, for future GUI embeddings.
1209
1209
1210 * IPython/genutils.py (info): added new utility for sys.stderr
1210 * IPython/genutils.py (info): added new utility for sys.stderr
1211 unified info message handling (thin wrapper around warn()).
1211 unified info message handling (thin wrapper around warn()).
1212
1212
1213 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1213 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1214 composite (dotted) names on verbose exceptions.
1214 composite (dotted) names on verbose exceptions.
1215 (VerboseTB.nullrepr): harden against another kind of errors which
1215 (VerboseTB.nullrepr): harden against another kind of errors which
1216 Python's inspect module can trigger, and which were crashing
1216 Python's inspect module can trigger, and which were crashing
1217 IPython. Thanks to a report by Marco Lombardi
1217 IPython. Thanks to a report by Marco Lombardi
1218 <mlombard-AT-ma010192.hq.eso.org>.
1218 <mlombard-AT-ma010192.hq.eso.org>.
1219
1219
1220 2004-12-13 *** Released version 0.6.6
1220 2004-12-13 *** Released version 0.6.6
1221
1221
1222 2004-12-12 Fernando Perez <fperez@colorado.edu>
1222 2004-12-12 Fernando Perez <fperez@colorado.edu>
1223
1223
1224 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1224 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1225 generated by pygtk upon initialization if it was built without
1225 generated by pygtk upon initialization if it was built without
1226 threads (for matplotlib users). After a crash reported by
1226 threads (for matplotlib users). After a crash reported by
1227 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1227 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1228
1228
1229 * IPython/ipmaker.py (make_IPython): fix small bug in the
1229 * IPython/ipmaker.py (make_IPython): fix small bug in the
1230 import_some parameter for multiple imports.
1230 import_some parameter for multiple imports.
1231
1231
1232 * IPython/iplib.py (ipmagic): simplified the interface of
1232 * IPython/iplib.py (ipmagic): simplified the interface of
1233 ipmagic() to take a single string argument, just as it would be
1233 ipmagic() to take a single string argument, just as it would be
1234 typed at the IPython cmd line.
1234 typed at the IPython cmd line.
1235 (ipalias): Added new ipalias() with an interface identical to
1235 (ipalias): Added new ipalias() with an interface identical to
1236 ipmagic(). This completes exposing a pure python interface to the
1236 ipmagic(). This completes exposing a pure python interface to the
1237 alias and magic system, which can be used in loops or more complex
1237 alias and magic system, which can be used in loops or more complex
1238 code where IPython's automatic line mangling is not active.
1238 code where IPython's automatic line mangling is not active.
1239
1239
1240 * IPython/genutils.py (timing): changed interface of timing to
1240 * IPython/genutils.py (timing): changed interface of timing to
1241 simply run code once, which is the most common case. timings()
1241 simply run code once, which is the most common case. timings()
1242 remains unchanged, for the cases where you want multiple runs.
1242 remains unchanged, for the cases where you want multiple runs.
1243
1243
1244 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1244 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1245 bug where Python2.2 crashes with exec'ing code which does not end
1245 bug where Python2.2 crashes with exec'ing code which does not end
1246 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1246 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1247 before.
1247 before.
1248
1248
1249 2004-12-10 Fernando Perez <fperez@colorado.edu>
1249 2004-12-10 Fernando Perez <fperez@colorado.edu>
1250
1250
1251 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1251 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1252 -t to -T, to accomodate the new -t flag in %run (the %run and
1252 -t to -T, to accomodate the new -t flag in %run (the %run and
1253 %prun options are kind of intermixed, and it's not easy to change
1253 %prun options are kind of intermixed, and it's not easy to change
1254 this with the limitations of python's getopt).
1254 this with the limitations of python's getopt).
1255
1255
1256 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1256 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1257 the execution of scripts. It's not as fine-tuned as timeit.py,
1257 the execution of scripts. It's not as fine-tuned as timeit.py,
1258 but it works from inside ipython (and under 2.2, which lacks
1258 but it works from inside ipython (and under 2.2, which lacks
1259 timeit.py). Optionally a number of runs > 1 can be given for
1259 timeit.py). Optionally a number of runs > 1 can be given for
1260 timing very short-running code.
1260 timing very short-running code.
1261
1261
1262 * IPython/genutils.py (uniq_stable): new routine which returns a
1262 * IPython/genutils.py (uniq_stable): new routine which returns a
1263 list of unique elements in any iterable, but in stable order of
1263 list of unique elements in any iterable, but in stable order of
1264 appearance. I needed this for the ultraTB fixes, and it's a handy
1264 appearance. I needed this for the ultraTB fixes, and it's a handy
1265 utility.
1265 utility.
1266
1266
1267 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1267 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1268 dotted names in Verbose exceptions. This had been broken since
1268 dotted names in Verbose exceptions. This had been broken since
1269 the very start, now x.y will properly be printed in a Verbose
1269 the very start, now x.y will properly be printed in a Verbose
1270 traceback, instead of x being shown and y appearing always as an
1270 traceback, instead of x being shown and y appearing always as an
1271 'undefined global'. Getting this to work was a bit tricky,
1271 'undefined global'. Getting this to work was a bit tricky,
1272 because by default python tokenizers are stateless. Saved by
1272 because by default python tokenizers are stateless. Saved by
1273 python's ability to easily add a bit of state to an arbitrary
1273 python's ability to easily add a bit of state to an arbitrary
1274 function (without needing to build a full-blown callable object).
1274 function (without needing to build a full-blown callable object).
1275
1275
1276 Also big cleanup of this code, which had horrendous runtime
1276 Also big cleanup of this code, which had horrendous runtime
1277 lookups of zillions of attributes for colorization. Moved all
1277 lookups of zillions of attributes for colorization. Moved all
1278 this code into a few templates, which make it cleaner and quicker.
1278 this code into a few templates, which make it cleaner and quicker.
1279
1279
1280 Printout quality was also improved for Verbose exceptions: one
1280 Printout quality was also improved for Verbose exceptions: one
1281 variable per line, and memory addresses are printed (this can be
1281 variable per line, and memory addresses are printed (this can be
1282 quite handy in nasty debugging situations, which is what Verbose
1282 quite handy in nasty debugging situations, which is what Verbose
1283 is for).
1283 is for).
1284
1284
1285 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1285 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1286 the command line as scripts to be loaded by embedded instances.
1286 the command line as scripts to be loaded by embedded instances.
1287 Doing so has the potential for an infinite recursion if there are
1287 Doing so has the potential for an infinite recursion if there are
1288 exceptions thrown in the process. This fixes a strange crash
1288 exceptions thrown in the process. This fixes a strange crash
1289 reported by Philippe MULLER <muller-AT-irit.fr>.
1289 reported by Philippe MULLER <muller-AT-irit.fr>.
1290
1290
1291 2004-12-09 Fernando Perez <fperez@colorado.edu>
1291 2004-12-09 Fernando Perez <fperez@colorado.edu>
1292
1292
1293 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1293 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1294 to reflect new names in matplotlib, which now expose the
1294 to reflect new names in matplotlib, which now expose the
1295 matlab-compatible interface via a pylab module instead of the
1295 matlab-compatible interface via a pylab module instead of the
1296 'matlab' name. The new code is backwards compatible, so users of
1296 'matlab' name. The new code is backwards compatible, so users of
1297 all matplotlib versions are OK. Patch by J. Hunter.
1297 all matplotlib versions are OK. Patch by J. Hunter.
1298
1298
1299 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1299 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1300 of __init__ docstrings for instances (class docstrings are already
1300 of __init__ docstrings for instances (class docstrings are already
1301 automatically printed). Instances with customized docstrings
1301 automatically printed). Instances with customized docstrings
1302 (indep. of the class) are also recognized and all 3 separate
1302 (indep. of the class) are also recognized and all 3 separate
1303 docstrings are printed (instance, class, constructor). After some
1303 docstrings are printed (instance, class, constructor). After some
1304 comments/suggestions by J. Hunter.
1304 comments/suggestions by J. Hunter.
1305
1305
1306 2004-12-05 Fernando Perez <fperez@colorado.edu>
1306 2004-12-05 Fernando Perez <fperez@colorado.edu>
1307
1307
1308 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1308 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1309 warnings when tab-completion fails and triggers an exception.
1309 warnings when tab-completion fails and triggers an exception.
1310
1310
1311 2004-12-03 Fernando Perez <fperez@colorado.edu>
1311 2004-12-03 Fernando Perez <fperez@colorado.edu>
1312
1312
1313 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1313 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1314 be triggered when using 'run -p'. An incorrect option flag was
1314 be triggered when using 'run -p'. An incorrect option flag was
1315 being set ('d' instead of 'D').
1315 being set ('d' instead of 'D').
1316 (manpage): fix missing escaped \- sign.
1316 (manpage): fix missing escaped \- sign.
1317
1317
1318 2004-11-30 *** Released version 0.6.5
1318 2004-11-30 *** Released version 0.6.5
1319
1319
1320 2004-11-30 Fernando Perez <fperez@colorado.edu>
1320 2004-11-30 Fernando Perez <fperez@colorado.edu>
1321
1321
1322 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1322 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1323 setting with -d option.
1323 setting with -d option.
1324
1324
1325 * setup.py (docfiles): Fix problem where the doc glob I was using
1325 * setup.py (docfiles): Fix problem where the doc glob I was using
1326 was COMPLETELY BROKEN. It was giving the right files by pure
1326 was COMPLETELY BROKEN. It was giving the right files by pure
1327 accident, but failed once I tried to include ipython.el. Note:
1327 accident, but failed once I tried to include ipython.el. Note:
1328 glob() does NOT allow you to do exclusion on multiple endings!
1328 glob() does NOT allow you to do exclusion on multiple endings!
1329
1329
1330 2004-11-29 Fernando Perez <fperez@colorado.edu>
1330 2004-11-29 Fernando Perez <fperez@colorado.edu>
1331
1331
1332 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1332 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1333 the manpage as the source. Better formatting & consistency.
1333 the manpage as the source. Better formatting & consistency.
1334
1334
1335 * IPython/Magic.py (magic_run): Added new -d option, to run
1335 * IPython/Magic.py (magic_run): Added new -d option, to run
1336 scripts under the control of the python pdb debugger. Note that
1336 scripts under the control of the python pdb debugger. Note that
1337 this required changing the %prun option -d to -D, to avoid a clash
1337 this required changing the %prun option -d to -D, to avoid a clash
1338 (since %run must pass options to %prun, and getopt is too dumb to
1338 (since %run must pass options to %prun, and getopt is too dumb to
1339 handle options with string values with embedded spaces). Thanks
1339 handle options with string values with embedded spaces). Thanks
1340 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1340 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1341 (magic_who_ls): added type matching to %who and %whos, so that one
1341 (magic_who_ls): added type matching to %who and %whos, so that one
1342 can filter their output to only include variables of certain
1342 can filter their output to only include variables of certain
1343 types. Another suggestion by Matthew.
1343 types. Another suggestion by Matthew.
1344 (magic_whos): Added memory summaries in kb and Mb for arrays.
1344 (magic_whos): Added memory summaries in kb and Mb for arrays.
1345 (magic_who): Improve formatting (break lines every 9 vars).
1345 (magic_who): Improve formatting (break lines every 9 vars).
1346
1346
1347 2004-11-28 Fernando Perez <fperez@colorado.edu>
1347 2004-11-28 Fernando Perez <fperez@colorado.edu>
1348
1348
1349 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1349 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1350 cache when empty lines were present.
1350 cache when empty lines were present.
1351
1351
1352 2004-11-24 Fernando Perez <fperez@colorado.edu>
1352 2004-11-24 Fernando Perez <fperez@colorado.edu>
1353
1353
1354 * IPython/usage.py (__doc__): document the re-activated threading
1354 * IPython/usage.py (__doc__): document the re-activated threading
1355 options for WX and GTK.
1355 options for WX and GTK.
1356
1356
1357 2004-11-23 Fernando Perez <fperez@colorado.edu>
1357 2004-11-23 Fernando Perez <fperez@colorado.edu>
1358
1358
1359 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1359 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1360 the -wthread and -gthread options, along with a new -tk one to try
1360 the -wthread and -gthread options, along with a new -tk one to try
1361 and coordinate Tk threading with wx/gtk. The tk support is very
1361 and coordinate Tk threading with wx/gtk. The tk support is very
1362 platform dependent, since it seems to require Tcl and Tk to be
1362 platform dependent, since it seems to require Tcl and Tk to be
1363 built with threads (Fedora1/2 appears NOT to have it, but in
1363 built with threads (Fedora1/2 appears NOT to have it, but in
1364 Prabhu's Debian boxes it works OK). But even with some Tk
1364 Prabhu's Debian boxes it works OK). But even with some Tk
1365 limitations, this is a great improvement.
1365 limitations, this is a great improvement.
1366
1366
1367 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1367 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1368 info in user prompts. Patch by Prabhu.
1368 info in user prompts. Patch by Prabhu.
1369
1369
1370 2004-11-18 Fernando Perez <fperez@colorado.edu>
1370 2004-11-18 Fernando Perez <fperez@colorado.edu>
1371
1371
1372 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1372 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1373 EOFErrors and bail, to avoid infinite loops if a non-terminating
1373 EOFErrors and bail, to avoid infinite loops if a non-terminating
1374 file is fed into ipython. Patch submitted in issue 19 by user,
1374 file is fed into ipython. Patch submitted in issue 19 by user,
1375 many thanks.
1375 many thanks.
1376
1376
1377 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1377 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1378 autoquote/parens in continuation prompts, which can cause lots of
1378 autoquote/parens in continuation prompts, which can cause lots of
1379 problems. Closes roundup issue 20.
1379 problems. Closes roundup issue 20.
1380
1380
1381 2004-11-17 Fernando Perez <fperez@colorado.edu>
1381 2004-11-17 Fernando Perez <fperez@colorado.edu>
1382
1382
1383 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1383 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1384 reported as debian bug #280505. I'm not sure my local changelog
1384 reported as debian bug #280505. I'm not sure my local changelog
1385 entry has the proper debian format (Jack?).
1385 entry has the proper debian format (Jack?).
1386
1386
1387 2004-11-08 *** Released version 0.6.4
1387 2004-11-08 *** Released version 0.6.4
1388
1388
1389 2004-11-08 Fernando Perez <fperez@colorado.edu>
1389 2004-11-08 Fernando Perez <fperez@colorado.edu>
1390
1390
1391 * IPython/iplib.py (init_readline): Fix exit message for Windows
1391 * IPython/iplib.py (init_readline): Fix exit message for Windows
1392 when readline is active. Thanks to a report by Eric Jones
1392 when readline is active. Thanks to a report by Eric Jones
1393 <eric-AT-enthought.com>.
1393 <eric-AT-enthought.com>.
1394
1394
1395 2004-11-07 Fernando Perez <fperez@colorado.edu>
1395 2004-11-07 Fernando Perez <fperez@colorado.edu>
1396
1396
1397 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1397 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1398 sometimes seen by win2k/cygwin users.
1398 sometimes seen by win2k/cygwin users.
1399
1399
1400 2004-11-06 Fernando Perez <fperez@colorado.edu>
1400 2004-11-06 Fernando Perez <fperez@colorado.edu>
1401
1401
1402 * IPython/iplib.py (interact): Change the handling of %Exit from
1402 * IPython/iplib.py (interact): Change the handling of %Exit from
1403 trying to propagate a SystemExit to an internal ipython flag.
1403 trying to propagate a SystemExit to an internal ipython flag.
1404 This is less elegant than using Python's exception mechanism, but
1404 This is less elegant than using Python's exception mechanism, but
1405 I can't get that to work reliably with threads, so under -pylab
1405 I can't get that to work reliably with threads, so under -pylab
1406 %Exit was hanging IPython. Cross-thread exception handling is
1406 %Exit was hanging IPython. Cross-thread exception handling is
1407 really a bitch. Thaks to a bug report by Stephen Walton
1407 really a bitch. Thaks to a bug report by Stephen Walton
1408 <stephen.walton-AT-csun.edu>.
1408 <stephen.walton-AT-csun.edu>.
1409
1409
1410 2004-11-04 Fernando Perez <fperez@colorado.edu>
1410 2004-11-04 Fernando Perez <fperez@colorado.edu>
1411
1411
1412 * IPython/iplib.py (raw_input_original): store a pointer to the
1412 * IPython/iplib.py (raw_input_original): store a pointer to the
1413 true raw_input to harden against code which can modify it
1413 true raw_input to harden against code which can modify it
1414 (wx.py.PyShell does this and would otherwise crash ipython).
1414 (wx.py.PyShell does this and would otherwise crash ipython).
1415 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1415 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1416
1416
1417 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1417 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1418 Ctrl-C problem, which does not mess up the input line.
1418 Ctrl-C problem, which does not mess up the input line.
1419
1419
1420 2004-11-03 Fernando Perez <fperez@colorado.edu>
1420 2004-11-03 Fernando Perez <fperez@colorado.edu>
1421
1421
1422 * IPython/Release.py: Changed licensing to BSD, in all files.
1422 * IPython/Release.py: Changed licensing to BSD, in all files.
1423 (name): lowercase name for tarball/RPM release.
1423 (name): lowercase name for tarball/RPM release.
1424
1424
1425 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1425 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1426 use throughout ipython.
1426 use throughout ipython.
1427
1427
1428 * IPython/Magic.py (Magic._ofind): Switch to using the new
1428 * IPython/Magic.py (Magic._ofind): Switch to using the new
1429 OInspect.getdoc() function.
1429 OInspect.getdoc() function.
1430
1430
1431 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1431 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1432 of the line currently being canceled via Ctrl-C. It's extremely
1432 of the line currently being canceled via Ctrl-C. It's extremely
1433 ugly, but I don't know how to do it better (the problem is one of
1433 ugly, but I don't know how to do it better (the problem is one of
1434 handling cross-thread exceptions).
1434 handling cross-thread exceptions).
1435
1435
1436 2004-10-28 Fernando Perez <fperez@colorado.edu>
1436 2004-10-28 Fernando Perez <fperez@colorado.edu>
1437
1437
1438 * IPython/Shell.py (signal_handler): add signal handlers to trap
1438 * IPython/Shell.py (signal_handler): add signal handlers to trap
1439 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1439 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1440 report by Francesc Alted.
1440 report by Francesc Alted.
1441
1441
1442 2004-10-21 Fernando Perez <fperez@colorado.edu>
1442 2004-10-21 Fernando Perez <fperez@colorado.edu>
1443
1443
1444 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1444 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1445 to % for pysh syntax extensions.
1445 to % for pysh syntax extensions.
1446
1446
1447 2004-10-09 Fernando Perez <fperez@colorado.edu>
1447 2004-10-09 Fernando Perez <fperez@colorado.edu>
1448
1448
1449 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
1449 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
1450 arrays to print a more useful summary, without calling str(arr).
1450 arrays to print a more useful summary, without calling str(arr).
1451 This avoids the problem of extremely lengthy computations which
1451 This avoids the problem of extremely lengthy computations which
1452 occur if arr is large, and appear to the user as a system lockup
1452 occur if arr is large, and appear to the user as a system lockup
1453 with 100% cpu activity. After a suggestion by Kristian Sandberg
1453 with 100% cpu activity. After a suggestion by Kristian Sandberg
1454 <Kristian.Sandberg@colorado.edu>.
1454 <Kristian.Sandberg@colorado.edu>.
1455 (Magic.__init__): fix bug in global magic escapes not being
1455 (Magic.__init__): fix bug in global magic escapes not being
1456 correctly set.
1456 correctly set.
1457
1457
1458 2004-10-08 Fernando Perez <fperez@colorado.edu>
1458 2004-10-08 Fernando Perez <fperez@colorado.edu>
1459
1459
1460 * IPython/Magic.py (__license__): change to absolute imports of
1460 * IPython/Magic.py (__license__): change to absolute imports of
1461 ipython's own internal packages, to start adapting to the absolute
1461 ipython's own internal packages, to start adapting to the absolute
1462 import requirement of PEP-328.
1462 import requirement of PEP-328.
1463
1463
1464 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
1464 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
1465 files, and standardize author/license marks through the Release
1465 files, and standardize author/license marks through the Release
1466 module instead of having per/file stuff (except for files with
1466 module instead of having per/file stuff (except for files with
1467 particular licenses, like the MIT/PSF-licensed codes).
1467 particular licenses, like the MIT/PSF-licensed codes).
1468
1468
1469 * IPython/Debugger.py: remove dead code for python 2.1
1469 * IPython/Debugger.py: remove dead code for python 2.1
1470
1470
1471 2004-10-04 Fernando Perez <fperez@colorado.edu>
1471 2004-10-04 Fernando Perez <fperez@colorado.edu>
1472
1472
1473 * IPython/iplib.py (ipmagic): New function for accessing magics
1473 * IPython/iplib.py (ipmagic): New function for accessing magics
1474 via a normal python function call.
1474 via a normal python function call.
1475
1475
1476 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
1476 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
1477 from '@' to '%', to accomodate the new @decorator syntax of python
1477 from '@' to '%', to accomodate the new @decorator syntax of python
1478 2.4.
1478 2.4.
1479
1479
1480 2004-09-29 Fernando Perez <fperez@colorado.edu>
1480 2004-09-29 Fernando Perez <fperez@colorado.edu>
1481
1481
1482 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
1482 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
1483 matplotlib.use to prevent running scripts which try to switch
1483 matplotlib.use to prevent running scripts which try to switch
1484 interactive backends from within ipython. This will just crash
1484 interactive backends from within ipython. This will just crash
1485 the python interpreter, so we can't allow it (but a detailed error
1485 the python interpreter, so we can't allow it (but a detailed error
1486 is given to the user).
1486 is given to the user).
1487
1487
1488 2004-09-28 Fernando Perez <fperez@colorado.edu>
1488 2004-09-28 Fernando Perez <fperez@colorado.edu>
1489
1489
1490 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
1490 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
1491 matplotlib-related fixes so that using @run with non-matplotlib
1491 matplotlib-related fixes so that using @run with non-matplotlib
1492 scripts doesn't pop up spurious plot windows. This requires
1492 scripts doesn't pop up spurious plot windows. This requires
1493 matplotlib >= 0.63, where I had to make some changes as well.
1493 matplotlib >= 0.63, where I had to make some changes as well.
1494
1494
1495 * IPython/ipmaker.py (make_IPython): update version requirement to
1495 * IPython/ipmaker.py (make_IPython): update version requirement to
1496 python 2.2.
1496 python 2.2.
1497
1497
1498 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
1498 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
1499 banner arg for embedded customization.
1499 banner arg for embedded customization.
1500
1500
1501 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
1501 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
1502 explicit uses of __IP as the IPython's instance name. Now things
1502 explicit uses of __IP as the IPython's instance name. Now things
1503 are properly handled via the shell.name value. The actual code
1503 are properly handled via the shell.name value. The actual code
1504 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
1504 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
1505 is much better than before. I'll clean things completely when the
1505 is much better than before. I'll clean things completely when the
1506 magic stuff gets a real overhaul.
1506 magic stuff gets a real overhaul.
1507
1507
1508 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
1508 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
1509 minor changes to debian dir.
1509 minor changes to debian dir.
1510
1510
1511 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
1511 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
1512 pointer to the shell itself in the interactive namespace even when
1512 pointer to the shell itself in the interactive namespace even when
1513 a user-supplied dict is provided. This is needed for embedding
1513 a user-supplied dict is provided. This is needed for embedding
1514 purposes (found by tests with Michel Sanner).
1514 purposes (found by tests with Michel Sanner).
1515
1515
1516 2004-09-27 Fernando Perez <fperez@colorado.edu>
1516 2004-09-27 Fernando Perez <fperez@colorado.edu>
1517
1517
1518 * IPython/UserConfig/ipythonrc: remove []{} from
1518 * IPython/UserConfig/ipythonrc: remove []{} from
1519 readline_remove_delims, so that things like [modname.<TAB> do
1519 readline_remove_delims, so that things like [modname.<TAB> do
1520 proper completion. This disables [].TAB, but that's a less common
1520 proper completion. This disables [].TAB, but that's a less common
1521 case than module names in list comprehensions, for example.
1521 case than module names in list comprehensions, for example.
1522 Thanks to a report by Andrea Riciputi.
1522 Thanks to a report by Andrea Riciputi.
1523
1523
1524 2004-09-09 Fernando Perez <fperez@colorado.edu>
1524 2004-09-09 Fernando Perez <fperez@colorado.edu>
1525
1525
1526 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
1526 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
1527 blocking problems in win32 and osx. Fix by John.
1527 blocking problems in win32 and osx. Fix by John.
1528
1528
1529 2004-09-08 Fernando Perez <fperez@colorado.edu>
1529 2004-09-08 Fernando Perez <fperez@colorado.edu>
1530
1530
1531 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
1531 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
1532 for Win32 and OSX. Fix by John Hunter.
1532 for Win32 and OSX. Fix by John Hunter.
1533
1533
1534 2004-08-30 *** Released version 0.6.3
1534 2004-08-30 *** Released version 0.6.3
1535
1535
1536 2004-08-30 Fernando Perez <fperez@colorado.edu>
1536 2004-08-30 Fernando Perez <fperez@colorado.edu>
1537
1537
1538 * setup.py (isfile): Add manpages to list of dependent files to be
1538 * setup.py (isfile): Add manpages to list of dependent files to be
1539 updated.
1539 updated.
1540
1540
1541 2004-08-27 Fernando Perez <fperez@colorado.edu>
1541 2004-08-27 Fernando Perez <fperez@colorado.edu>
1542
1542
1543 * IPython/Shell.py (start): I've disabled -wthread and -gthread
1543 * IPython/Shell.py (start): I've disabled -wthread and -gthread
1544 for now. They don't really work with standalone WX/GTK code
1544 for now. They don't really work with standalone WX/GTK code
1545 (though matplotlib IS working fine with both of those backends).
1545 (though matplotlib IS working fine with both of those backends).
1546 This will neeed much more testing. I disabled most things with
1546 This will neeed much more testing. I disabled most things with
1547 comments, so turning it back on later should be pretty easy.
1547 comments, so turning it back on later should be pretty easy.
1548
1548
1549 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
1549 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
1550 autocalling of expressions like r'foo', by modifying the line
1550 autocalling of expressions like r'foo', by modifying the line
1551 split regexp. Closes
1551 split regexp. Closes
1552 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
1552 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
1553 Riley <ipythonbugs-AT-sabi.net>.
1553 Riley <ipythonbugs-AT-sabi.net>.
1554 (InteractiveShell.mainloop): honor --nobanner with banner
1554 (InteractiveShell.mainloop): honor --nobanner with banner
1555 extensions.
1555 extensions.
1556
1556
1557 * IPython/Shell.py: Significant refactoring of all classes, so
1557 * IPython/Shell.py: Significant refactoring of all classes, so
1558 that we can really support ALL matplotlib backends and threading
1558 that we can really support ALL matplotlib backends and threading
1559 models (John spotted a bug with Tk which required this). Now we
1559 models (John spotted a bug with Tk which required this). Now we
1560 should support single-threaded, WX-threads and GTK-threads, both
1560 should support single-threaded, WX-threads and GTK-threads, both
1561 for generic code and for matplotlib.
1561 for generic code and for matplotlib.
1562
1562
1563 * IPython/ipmaker.py (__call__): Changed -mpthread option to
1563 * IPython/ipmaker.py (__call__): Changed -mpthread option to
1564 -pylab, to simplify things for users. Will also remove the pylab
1564 -pylab, to simplify things for users. Will also remove the pylab
1565 profile, since now all of matplotlib configuration is directly
1565 profile, since now all of matplotlib configuration is directly
1566 handled here. This also reduces startup time.
1566 handled here. This also reduces startup time.
1567
1567
1568 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
1568 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
1569 shell wasn't being correctly called. Also in IPShellWX.
1569 shell wasn't being correctly called. Also in IPShellWX.
1570
1570
1571 * IPython/iplib.py (InteractiveShell.__init__): Added option to
1571 * IPython/iplib.py (InteractiveShell.__init__): Added option to
1572 fine-tune banner.
1572 fine-tune banner.
1573
1573
1574 * IPython/numutils.py (spike): Deprecate these spike functions,
1574 * IPython/numutils.py (spike): Deprecate these spike functions,
1575 delete (long deprecated) gnuplot_exec handler.
1575 delete (long deprecated) gnuplot_exec handler.
1576
1576
1577 2004-08-26 Fernando Perez <fperez@colorado.edu>
1577 2004-08-26 Fernando Perez <fperez@colorado.edu>
1578
1578
1579 * ipython.1: Update for threading options, plus some others which
1579 * ipython.1: Update for threading options, plus some others which
1580 were missing.
1580 were missing.
1581
1581
1582 * IPython/ipmaker.py (__call__): Added -wthread option for
1582 * IPython/ipmaker.py (__call__): Added -wthread option for
1583 wxpython thread handling. Make sure threading options are only
1583 wxpython thread handling. Make sure threading options are only
1584 valid at the command line.
1584 valid at the command line.
1585
1585
1586 * scripts/ipython: moved shell selection into a factory function
1586 * scripts/ipython: moved shell selection into a factory function
1587 in Shell.py, to keep the starter script to a minimum.
1587 in Shell.py, to keep the starter script to a minimum.
1588
1588
1589 2004-08-25 Fernando Perez <fperez@colorado.edu>
1589 2004-08-25 Fernando Perez <fperez@colorado.edu>
1590
1590
1591 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
1591 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
1592 John. Along with some recent changes he made to matplotlib, the
1592 John. Along with some recent changes he made to matplotlib, the
1593 next versions of both systems should work very well together.
1593 next versions of both systems should work very well together.
1594
1594
1595 2004-08-24 Fernando Perez <fperez@colorado.edu>
1595 2004-08-24 Fernando Perez <fperez@colorado.edu>
1596
1596
1597 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
1597 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
1598 tried to switch the profiling to using hotshot, but I'm getting
1598 tried to switch the profiling to using hotshot, but I'm getting
1599 strange errors from prof.runctx() there. I may be misreading the
1599 strange errors from prof.runctx() there. I may be misreading the
1600 docs, but it looks weird. For now the profiling code will
1600 docs, but it looks weird. For now the profiling code will
1601 continue to use the standard profiler.
1601 continue to use the standard profiler.
1602
1602
1603 2004-08-23 Fernando Perez <fperez@colorado.edu>
1603 2004-08-23 Fernando Perez <fperez@colorado.edu>
1604
1604
1605 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
1605 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
1606 threaded shell, by John Hunter. It's not quite ready yet, but
1606 threaded shell, by John Hunter. It's not quite ready yet, but
1607 close.
1607 close.
1608
1608
1609 2004-08-22 Fernando Perez <fperez@colorado.edu>
1609 2004-08-22 Fernando Perez <fperez@colorado.edu>
1610
1610
1611 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
1611 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
1612 in Magic and ultraTB.
1612 in Magic and ultraTB.
1613
1613
1614 * ipython.1: document threading options in manpage.
1614 * ipython.1: document threading options in manpage.
1615
1615
1616 * scripts/ipython: Changed name of -thread option to -gthread,
1616 * scripts/ipython: Changed name of -thread option to -gthread,
1617 since this is GTK specific. I want to leave the door open for a
1617 since this is GTK specific. I want to leave the door open for a
1618 -wthread option for WX, which will most likely be necessary. This
1618 -wthread option for WX, which will most likely be necessary. This
1619 change affects usage and ipmaker as well.
1619 change affects usage and ipmaker as well.
1620
1620
1621 * IPython/Shell.py (matplotlib_shell): Add a factory function to
1621 * IPython/Shell.py (matplotlib_shell): Add a factory function to
1622 handle the matplotlib shell issues. Code by John Hunter
1622 handle the matplotlib shell issues. Code by John Hunter
1623 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1623 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1624 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
1624 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
1625 broken (and disabled for end users) for now, but it puts the
1625 broken (and disabled for end users) for now, but it puts the
1626 infrastructure in place.
1626 infrastructure in place.
1627
1627
1628 2004-08-21 Fernando Perez <fperez@colorado.edu>
1628 2004-08-21 Fernando Perez <fperez@colorado.edu>
1629
1629
1630 * ipythonrc-pylab: Add matplotlib support.
1630 * ipythonrc-pylab: Add matplotlib support.
1631
1631
1632 * matplotlib_config.py: new files for matplotlib support, part of
1632 * matplotlib_config.py: new files for matplotlib support, part of
1633 the pylab profile.
1633 the pylab profile.
1634
1634
1635 * IPython/usage.py (__doc__): documented the threading options.
1635 * IPython/usage.py (__doc__): documented the threading options.
1636
1636
1637 2004-08-20 Fernando Perez <fperez@colorado.edu>
1637 2004-08-20 Fernando Perez <fperez@colorado.edu>
1638
1638
1639 * ipython: Modified the main calling routine to handle the -thread
1639 * ipython: Modified the main calling routine to handle the -thread
1640 and -mpthread options. This needs to be done as a top-level hack,
1640 and -mpthread options. This needs to be done as a top-level hack,
1641 because it determines which class to instantiate for IPython
1641 because it determines which class to instantiate for IPython
1642 itself.
1642 itself.
1643
1643
1644 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
1644 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
1645 classes to support multithreaded GTK operation without blocking,
1645 classes to support multithreaded GTK operation without blocking,
1646 and matplotlib with all backends. This is a lot of still very
1646 and matplotlib with all backends. This is a lot of still very
1647 experimental code, and threads are tricky. So it may still have a
1647 experimental code, and threads are tricky. So it may still have a
1648 few rough edges... This code owes a lot to
1648 few rough edges... This code owes a lot to
1649 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
1649 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
1650 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
1650 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
1651 to John Hunter for all the matplotlib work.
1651 to John Hunter for all the matplotlib work.
1652
1652
1653 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
1653 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
1654 options for gtk thread and matplotlib support.
1654 options for gtk thread and matplotlib support.
1655
1655
1656 2004-08-16 Fernando Perez <fperez@colorado.edu>
1656 2004-08-16 Fernando Perez <fperez@colorado.edu>
1657
1657
1658 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
1658 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
1659 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
1659 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
1660 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
1660 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
1661
1661
1662 2004-08-11 Fernando Perez <fperez@colorado.edu>
1662 2004-08-11 Fernando Perez <fperez@colorado.edu>
1663
1663
1664 * setup.py (isfile): Fix build so documentation gets updated for
1664 * setup.py (isfile): Fix build so documentation gets updated for
1665 rpms (it was only done for .tgz builds).
1665 rpms (it was only done for .tgz builds).
1666
1666
1667 2004-08-10 Fernando Perez <fperez@colorado.edu>
1667 2004-08-10 Fernando Perez <fperez@colorado.edu>
1668
1668
1669 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
1669 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
1670
1670
1671 * iplib.py : Silence syntax error exceptions in tab-completion.
1671 * iplib.py : Silence syntax error exceptions in tab-completion.
1672
1672
1673 2004-08-05 Fernando Perez <fperez@colorado.edu>
1673 2004-08-05 Fernando Perez <fperez@colorado.edu>
1674
1674
1675 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
1675 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
1676 'color off' mark for continuation prompts. This was causing long
1676 'color off' mark for continuation prompts. This was causing long
1677 continuation lines to mis-wrap.
1677 continuation lines to mis-wrap.
1678
1678
1679 2004-08-01 Fernando Perez <fperez@colorado.edu>
1679 2004-08-01 Fernando Perez <fperez@colorado.edu>
1680
1680
1681 * IPython/ipmaker.py (make_IPython): Allow the shell class used
1681 * IPython/ipmaker.py (make_IPython): Allow the shell class used
1682 for building ipython to be a parameter. All this is necessary
1682 for building ipython to be a parameter. All this is necessary
1683 right now to have a multithreaded version, but this insane
1683 right now to have a multithreaded version, but this insane
1684 non-design will be cleaned up soon. For now, it's a hack that
1684 non-design will be cleaned up soon. For now, it's a hack that
1685 works.
1685 works.
1686
1686
1687 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
1687 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
1688 args in various places. No bugs so far, but it's a dangerous
1688 args in various places. No bugs so far, but it's a dangerous
1689 practice.
1689 practice.
1690
1690
1691 2004-07-31 Fernando Perez <fperez@colorado.edu>
1691 2004-07-31 Fernando Perez <fperez@colorado.edu>
1692
1692
1693 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
1693 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
1694 fix completion of files with dots in their names under most
1694 fix completion of files with dots in their names under most
1695 profiles (pysh was OK because the completion order is different).
1695 profiles (pysh was OK because the completion order is different).
1696
1696
1697 2004-07-27 Fernando Perez <fperez@colorado.edu>
1697 2004-07-27 Fernando Perez <fperez@colorado.edu>
1698
1698
1699 * IPython/iplib.py (InteractiveShell.__init__): build dict of
1699 * IPython/iplib.py (InteractiveShell.__init__): build dict of
1700 keywords manually, b/c the one in keyword.py was removed in python
1700 keywords manually, b/c the one in keyword.py was removed in python
1701 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
1701 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
1702 This is NOT a bug under python 2.3 and earlier.
1702 This is NOT a bug under python 2.3 and earlier.
1703
1703
1704 2004-07-26 Fernando Perez <fperez@colorado.edu>
1704 2004-07-26 Fernando Perez <fperez@colorado.edu>
1705
1705
1706 * IPython/ultraTB.py (VerboseTB.text): Add another
1706 * IPython/ultraTB.py (VerboseTB.text): Add another
1707 linecache.checkcache() call to try to prevent inspect.py from
1707 linecache.checkcache() call to try to prevent inspect.py from
1708 crashing under python 2.3. I think this fixes
1708 crashing under python 2.3. I think this fixes
1709 http://www.scipy.net/roundup/ipython/issue17.
1709 http://www.scipy.net/roundup/ipython/issue17.
1710
1710
1711 2004-07-26 *** Released version 0.6.2
1711 2004-07-26 *** Released version 0.6.2
1712
1712
1713 2004-07-26 Fernando Perez <fperez@colorado.edu>
1713 2004-07-26 Fernando Perez <fperez@colorado.edu>
1714
1714
1715 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
1715 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
1716 fail for any number.
1716 fail for any number.
1717 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
1717 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
1718 empty bookmarks.
1718 empty bookmarks.
1719
1719
1720 2004-07-26 *** Released version 0.6.1
1720 2004-07-26 *** Released version 0.6.1
1721
1721
1722 2004-07-26 Fernando Perez <fperez@colorado.edu>
1722 2004-07-26 Fernando Perez <fperez@colorado.edu>
1723
1723
1724 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
1724 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
1725
1725
1726 * IPython/iplib.py (protect_filename): Applied Ville's patch for
1726 * IPython/iplib.py (protect_filename): Applied Ville's patch for
1727 escaping '()[]{}' in filenames.
1727 escaping '()[]{}' in filenames.
1728
1728
1729 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
1729 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
1730 Python 2.2 users who lack a proper shlex.split.
1730 Python 2.2 users who lack a proper shlex.split.
1731
1731
1732 2004-07-19 Fernando Perez <fperez@colorado.edu>
1732 2004-07-19 Fernando Perez <fperez@colorado.edu>
1733
1733
1734 * IPython/iplib.py (InteractiveShell.init_readline): Add support
1734 * IPython/iplib.py (InteractiveShell.init_readline): Add support
1735 for reading readline's init file. I follow the normal chain:
1735 for reading readline's init file. I follow the normal chain:
1736 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
1736 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
1737 report by Mike Heeter. This closes
1737 report by Mike Heeter. This closes
1738 http://www.scipy.net/roundup/ipython/issue16.
1738 http://www.scipy.net/roundup/ipython/issue16.
1739
1739
1740 2004-07-18 Fernando Perez <fperez@colorado.edu>
1740 2004-07-18 Fernando Perez <fperez@colorado.edu>
1741
1741
1742 * IPython/iplib.py (__init__): Add better handling of '\' under
1742 * IPython/iplib.py (__init__): Add better handling of '\' under
1743 Win32 for filenames. After a patch by Ville.
1743 Win32 for filenames. After a patch by Ville.
1744
1744
1745 2004-07-17 Fernando Perez <fperez@colorado.edu>
1745 2004-07-17 Fernando Perez <fperez@colorado.edu>
1746
1746
1747 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
1747 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
1748 autocalling would be triggered for 'foo is bar' if foo is
1748 autocalling would be triggered for 'foo is bar' if foo is
1749 callable. I also cleaned up the autocall detection code to use a
1749 callable. I also cleaned up the autocall detection code to use a
1750 regexp, which is faster. Bug reported by Alexander Schmolck.
1750 regexp, which is faster. Bug reported by Alexander Schmolck.
1751
1751
1752 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
1752 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
1753 '?' in them would confuse the help system. Reported by Alex
1753 '?' in them would confuse the help system. Reported by Alex
1754 Schmolck.
1754 Schmolck.
1755
1755
1756 2004-07-16 Fernando Perez <fperez@colorado.edu>
1756 2004-07-16 Fernando Perez <fperez@colorado.edu>
1757
1757
1758 * IPython/GnuplotInteractive.py (__all__): added plot2.
1758 * IPython/GnuplotInteractive.py (__all__): added plot2.
1759
1759
1760 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
1760 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
1761 plotting dictionaries, lists or tuples of 1d arrays.
1761 plotting dictionaries, lists or tuples of 1d arrays.
1762
1762
1763 * IPython/Magic.py (Magic.magic_hist): small clenaups and
1763 * IPython/Magic.py (Magic.magic_hist): small clenaups and
1764 optimizations.
1764 optimizations.
1765
1765
1766 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
1766 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
1767 the information which was there from Janko's original IPP code:
1767 the information which was there from Janko's original IPP code:
1768
1768
1769 03.05.99 20:53 porto.ifm.uni-kiel.de
1769 03.05.99 20:53 porto.ifm.uni-kiel.de
1770 --Started changelog.
1770 --Started changelog.
1771 --make clear do what it say it does
1771 --make clear do what it say it does
1772 --added pretty output of lines from inputcache
1772 --added pretty output of lines from inputcache
1773 --Made Logger a mixin class, simplifies handling of switches
1773 --Made Logger a mixin class, simplifies handling of switches
1774 --Added own completer class. .string<TAB> expands to last history
1774 --Added own completer class. .string<TAB> expands to last history
1775 line which starts with string. The new expansion is also present
1775 line which starts with string. The new expansion is also present
1776 with Ctrl-r from the readline library. But this shows, who this
1776 with Ctrl-r from the readline library. But this shows, who this
1777 can be done for other cases.
1777 can be done for other cases.
1778 --Added convention that all shell functions should accept a
1778 --Added convention that all shell functions should accept a
1779 parameter_string This opens the door for different behaviour for
1779 parameter_string This opens the door for different behaviour for
1780 each function. @cd is a good example of this.
1780 each function. @cd is a good example of this.
1781
1781
1782 04.05.99 12:12 porto.ifm.uni-kiel.de
1782 04.05.99 12:12 porto.ifm.uni-kiel.de
1783 --added logfile rotation
1783 --added logfile rotation
1784 --added new mainloop method which freezes first the namespace
1784 --added new mainloop method which freezes first the namespace
1785
1785
1786 07.05.99 21:24 porto.ifm.uni-kiel.de
1786 07.05.99 21:24 porto.ifm.uni-kiel.de
1787 --added the docreader classes. Now there is a help system.
1787 --added the docreader classes. Now there is a help system.
1788 -This is only a first try. Currently it's not easy to put new
1788 -This is only a first try. Currently it's not easy to put new
1789 stuff in the indices. But this is the way to go. Info would be
1789 stuff in the indices. But this is the way to go. Info would be
1790 better, but HTML is every where and not everybody has an info
1790 better, but HTML is every where and not everybody has an info
1791 system installed and it's not so easy to change html-docs to info.
1791 system installed and it's not so easy to change html-docs to info.
1792 --added global logfile option
1792 --added global logfile option
1793 --there is now a hook for object inspection method pinfo needs to
1793 --there is now a hook for object inspection method pinfo needs to
1794 be provided for this. Can be reached by two '??'.
1794 be provided for this. Can be reached by two '??'.
1795
1795
1796 08.05.99 20:51 porto.ifm.uni-kiel.de
1796 08.05.99 20:51 porto.ifm.uni-kiel.de
1797 --added a README
1797 --added a README
1798 --bug in rc file. Something has changed so functions in the rc
1798 --bug in rc file. Something has changed so functions in the rc
1799 file need to reference the shell and not self. Not clear if it's a
1799 file need to reference the shell and not self. Not clear if it's a
1800 bug or feature.
1800 bug or feature.
1801 --changed rc file for new behavior
1801 --changed rc file for new behavior
1802
1802
1803 2004-07-15 Fernando Perez <fperez@colorado.edu>
1803 2004-07-15 Fernando Perez <fperez@colorado.edu>
1804
1804
1805 * IPython/Logger.py (Logger.log): fixed recent bug where the input
1805 * IPython/Logger.py (Logger.log): fixed recent bug where the input
1806 cache was falling out of sync in bizarre manners when multi-line
1806 cache was falling out of sync in bizarre manners when multi-line
1807 input was present. Minor optimizations and cleanup.
1807 input was present. Minor optimizations and cleanup.
1808
1808
1809 (Logger): Remove old Changelog info for cleanup. This is the
1809 (Logger): Remove old Changelog info for cleanup. This is the
1810 information which was there from Janko's original code:
1810 information which was there from Janko's original code:
1811
1811
1812 Changes to Logger: - made the default log filename a parameter
1812 Changes to Logger: - made the default log filename a parameter
1813
1813
1814 - put a check for lines beginning with !@? in log(). Needed
1814 - put a check for lines beginning with !@? in log(). Needed
1815 (even if the handlers properly log their lines) for mid-session
1815 (even if the handlers properly log their lines) for mid-session
1816 logging activation to work properly. Without this, lines logged
1816 logging activation to work properly. Without this, lines logged
1817 in mid session, which get read from the cache, would end up
1817 in mid session, which get read from the cache, would end up
1818 'bare' (with !@? in the open) in the log. Now they are caught
1818 'bare' (with !@? in the open) in the log. Now they are caught
1819 and prepended with a #.
1819 and prepended with a #.
1820
1820
1821 * IPython/iplib.py (InteractiveShell.init_readline): added check
1821 * IPython/iplib.py (InteractiveShell.init_readline): added check
1822 in case MagicCompleter fails to be defined, so we don't crash.
1822 in case MagicCompleter fails to be defined, so we don't crash.
1823
1823
1824 2004-07-13 Fernando Perez <fperez@colorado.edu>
1824 2004-07-13 Fernando Perez <fperez@colorado.edu>
1825
1825
1826 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
1826 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
1827 of EPS if the requested filename ends in '.eps'.
1827 of EPS if the requested filename ends in '.eps'.
1828
1828
1829 2004-07-04 Fernando Perez <fperez@colorado.edu>
1829 2004-07-04 Fernando Perez <fperez@colorado.edu>
1830
1830
1831 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
1831 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
1832 escaping of quotes when calling the shell.
1832 escaping of quotes when calling the shell.
1833
1833
1834 2004-07-02 Fernando Perez <fperez@colorado.edu>
1834 2004-07-02 Fernando Perez <fperez@colorado.edu>
1835
1835
1836 * IPython/Prompts.py (CachedOutput.update): Fix problem with
1836 * IPython/Prompts.py (CachedOutput.update): Fix problem with
1837 gettext not working because we were clobbering '_'. Fixes
1837 gettext not working because we were clobbering '_'. Fixes
1838 http://www.scipy.net/roundup/ipython/issue6.
1838 http://www.scipy.net/roundup/ipython/issue6.
1839
1839
1840 2004-07-01 Fernando Perez <fperez@colorado.edu>
1840 2004-07-01 Fernando Perez <fperez@colorado.edu>
1841
1841
1842 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
1842 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
1843 into @cd. Patch by Ville.
1843 into @cd. Patch by Ville.
1844
1844
1845 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1845 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1846 new function to store things after ipmaker runs. Patch by Ville.
1846 new function to store things after ipmaker runs. Patch by Ville.
1847 Eventually this will go away once ipmaker is removed and the class
1847 Eventually this will go away once ipmaker is removed and the class
1848 gets cleaned up, but for now it's ok. Key functionality here is
1848 gets cleaned up, but for now it's ok. Key functionality here is
1849 the addition of the persistent storage mechanism, a dict for
1849 the addition of the persistent storage mechanism, a dict for
1850 keeping data across sessions (for now just bookmarks, but more can
1850 keeping data across sessions (for now just bookmarks, but more can
1851 be implemented later).
1851 be implemented later).
1852
1852
1853 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
1853 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
1854 persistent across sections. Patch by Ville, I modified it
1854 persistent across sections. Patch by Ville, I modified it
1855 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
1855 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
1856 added a '-l' option to list all bookmarks.
1856 added a '-l' option to list all bookmarks.
1857
1857
1858 * IPython/iplib.py (InteractiveShell.atexit_operations): new
1858 * IPython/iplib.py (InteractiveShell.atexit_operations): new
1859 center for cleanup. Registered with atexit.register(). I moved
1859 center for cleanup. Registered with atexit.register(). I moved
1860 here the old exit_cleanup(). After a patch by Ville.
1860 here the old exit_cleanup(). After a patch by Ville.
1861
1861
1862 * IPython/Magic.py (get_py_filename): added '~' to the accepted
1862 * IPython/Magic.py (get_py_filename): added '~' to the accepted
1863 characters in the hacked shlex_split for python 2.2.
1863 characters in the hacked shlex_split for python 2.2.
1864
1864
1865 * IPython/iplib.py (file_matches): more fixes to filenames with
1865 * IPython/iplib.py (file_matches): more fixes to filenames with
1866 whitespace in them. It's not perfect, but limitations in python's
1866 whitespace in them. It's not perfect, but limitations in python's
1867 readline make it impossible to go further.
1867 readline make it impossible to go further.
1868
1868
1869 2004-06-29 Fernando Perez <fperez@colorado.edu>
1869 2004-06-29 Fernando Perez <fperez@colorado.edu>
1870
1870
1871 * IPython/iplib.py (file_matches): escape whitespace correctly in
1871 * IPython/iplib.py (file_matches): escape whitespace correctly in
1872 filename completions. Bug reported by Ville.
1872 filename completions. Bug reported by Ville.
1873
1873
1874 2004-06-28 Fernando Perez <fperez@colorado.edu>
1874 2004-06-28 Fernando Perez <fperez@colorado.edu>
1875
1875
1876 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
1876 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
1877 the history file will be called 'history-PROFNAME' (or just
1877 the history file will be called 'history-PROFNAME' (or just
1878 'history' if no profile is loaded). I was getting annoyed at
1878 'history' if no profile is loaded). I was getting annoyed at
1879 getting my Numerical work history clobbered by pysh sessions.
1879 getting my Numerical work history clobbered by pysh sessions.
1880
1880
1881 * IPython/iplib.py (InteractiveShell.__init__): Internal
1881 * IPython/iplib.py (InteractiveShell.__init__): Internal
1882 getoutputerror() function so that we can honor the system_verbose
1882 getoutputerror() function so that we can honor the system_verbose
1883 flag for _all_ system calls. I also added escaping of #
1883 flag for _all_ system calls. I also added escaping of #
1884 characters here to avoid confusing Itpl.
1884 characters here to avoid confusing Itpl.
1885
1885
1886 * IPython/Magic.py (shlex_split): removed call to shell in
1886 * IPython/Magic.py (shlex_split): removed call to shell in
1887 parse_options and replaced it with shlex.split(). The annoying
1887 parse_options and replaced it with shlex.split(). The annoying
1888 part was that in Python 2.2, shlex.split() doesn't exist, so I had
1888 part was that in Python 2.2, shlex.split() doesn't exist, so I had
1889 to backport it from 2.3, with several frail hacks (the shlex
1889 to backport it from 2.3, with several frail hacks (the shlex
1890 module is rather limited in 2.2). Thanks to a suggestion by Ville
1890 module is rather limited in 2.2). Thanks to a suggestion by Ville
1891 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
1891 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
1892 problem.
1892 problem.
1893
1893
1894 (Magic.magic_system_verbose): new toggle to print the actual
1894 (Magic.magic_system_verbose): new toggle to print the actual
1895 system calls made by ipython. Mainly for debugging purposes.
1895 system calls made by ipython. Mainly for debugging purposes.
1896
1896
1897 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
1897 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
1898 doesn't support persistence. Reported (and fix suggested) by
1898 doesn't support persistence. Reported (and fix suggested) by
1899 Travis Caldwell <travis_caldwell2000@yahoo.com>.
1899 Travis Caldwell <travis_caldwell2000@yahoo.com>.
1900
1900
1901 2004-06-26 Fernando Perez <fperez@colorado.edu>
1901 2004-06-26 Fernando Perez <fperez@colorado.edu>
1902
1902
1903 * IPython/Logger.py (Logger.log): fix to handle correctly empty
1903 * IPython/Logger.py (Logger.log): fix to handle correctly empty
1904 continue prompts.
1904 continue prompts.
1905
1905
1906 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
1906 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
1907 function (basically a big docstring) and a few more things here to
1907 function (basically a big docstring) and a few more things here to
1908 speedup startup. pysh.py is now very lightweight. We want because
1908 speedup startup. pysh.py is now very lightweight. We want because
1909 it gets execfile'd, while InterpreterExec gets imported, so
1909 it gets execfile'd, while InterpreterExec gets imported, so
1910 byte-compilation saves time.
1910 byte-compilation saves time.
1911
1911
1912 2004-06-25 Fernando Perez <fperez@colorado.edu>
1912 2004-06-25 Fernando Perez <fperez@colorado.edu>
1913
1913
1914 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
1914 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
1915 -NUM', which was recently broken.
1915 -NUM', which was recently broken.
1916
1916
1917 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
1917 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
1918 in multi-line input (but not !!, which doesn't make sense there).
1918 in multi-line input (but not !!, which doesn't make sense there).
1919
1919
1920 * IPython/UserConfig/ipythonrc: made autoindent on by default.
1920 * IPython/UserConfig/ipythonrc: made autoindent on by default.
1921 It's just too useful, and people can turn it off in the less
1921 It's just too useful, and people can turn it off in the less
1922 common cases where it's a problem.
1922 common cases where it's a problem.
1923
1923
1924 2004-06-24 Fernando Perez <fperez@colorado.edu>
1924 2004-06-24 Fernando Perez <fperez@colorado.edu>
1925
1925
1926 * IPython/iplib.py (InteractiveShell._prefilter): big change -
1926 * IPython/iplib.py (InteractiveShell._prefilter): big change -
1927 special syntaxes (like alias calling) is now allied in multi-line
1927 special syntaxes (like alias calling) is now allied in multi-line
1928 input. This is still _very_ experimental, but it's necessary for
1928 input. This is still _very_ experimental, but it's necessary for
1929 efficient shell usage combining python looping syntax with system
1929 efficient shell usage combining python looping syntax with system
1930 calls. For now it's restricted to aliases, I don't think it
1930 calls. For now it's restricted to aliases, I don't think it
1931 really even makes sense to have this for magics.
1931 really even makes sense to have this for magics.
1932
1932
1933 2004-06-23 Fernando Perez <fperez@colorado.edu>
1933 2004-06-23 Fernando Perez <fperez@colorado.edu>
1934
1934
1935 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
1935 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
1936 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
1936 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
1937
1937
1938 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
1938 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
1939 extensions under Windows (after code sent by Gary Bishop). The
1939 extensions under Windows (after code sent by Gary Bishop). The
1940 extensions considered 'executable' are stored in IPython's rc
1940 extensions considered 'executable' are stored in IPython's rc
1941 structure as win_exec_ext.
1941 structure as win_exec_ext.
1942
1942
1943 * IPython/genutils.py (shell): new function, like system() but
1943 * IPython/genutils.py (shell): new function, like system() but
1944 without return value. Very useful for interactive shell work.
1944 without return value. Very useful for interactive shell work.
1945
1945
1946 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
1946 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
1947 delete aliases.
1947 delete aliases.
1948
1948
1949 * IPython/iplib.py (InteractiveShell.alias_table_update): make
1949 * IPython/iplib.py (InteractiveShell.alias_table_update): make
1950 sure that the alias table doesn't contain python keywords.
1950 sure that the alias table doesn't contain python keywords.
1951
1951
1952 2004-06-21 Fernando Perez <fperez@colorado.edu>
1952 2004-06-21 Fernando Perez <fperez@colorado.edu>
1953
1953
1954 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
1954 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
1955 non-existent items are found in $PATH. Reported by Thorsten.
1955 non-existent items are found in $PATH. Reported by Thorsten.
1956
1956
1957 2004-06-20 Fernando Perez <fperez@colorado.edu>
1957 2004-06-20 Fernando Perez <fperez@colorado.edu>
1958
1958
1959 * IPython/iplib.py (complete): modified the completer so that the
1959 * IPython/iplib.py (complete): modified the completer so that the
1960 order of priorities can be easily changed at runtime.
1960 order of priorities can be easily changed at runtime.
1961
1961
1962 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
1962 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
1963 Modified to auto-execute all lines beginning with '~', '/' or '.'.
1963 Modified to auto-execute all lines beginning with '~', '/' or '.'.
1964
1964
1965 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
1965 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
1966 expand Python variables prepended with $ in all system calls. The
1966 expand Python variables prepended with $ in all system calls. The
1967 same was done to InteractiveShell.handle_shell_escape. Now all
1967 same was done to InteractiveShell.handle_shell_escape. Now all
1968 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
1968 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
1969 expansion of python variables and expressions according to the
1969 expansion of python variables and expressions according to the
1970 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
1970 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
1971
1971
1972 Though PEP-215 has been rejected, a similar (but simpler) one
1972 Though PEP-215 has been rejected, a similar (but simpler) one
1973 seems like it will go into Python 2.4, PEP-292 -
1973 seems like it will go into Python 2.4, PEP-292 -
1974 http://www.python.org/peps/pep-0292.html.
1974 http://www.python.org/peps/pep-0292.html.
1975
1975
1976 I'll keep the full syntax of PEP-215, since IPython has since the
1976 I'll keep the full syntax of PEP-215, since IPython has since the
1977 start used Ka-Ping Yee's reference implementation discussed there
1977 start used Ka-Ping Yee's reference implementation discussed there
1978 (Itpl), and I actually like the powerful semantics it offers.
1978 (Itpl), and I actually like the powerful semantics it offers.
1979
1979
1980 In order to access normal shell variables, the $ has to be escaped
1980 In order to access normal shell variables, the $ has to be escaped
1981 via an extra $. For example:
1981 via an extra $. For example:
1982
1982
1983 In [7]: PATH='a python variable'
1983 In [7]: PATH='a python variable'
1984
1984
1985 In [8]: !echo $PATH
1985 In [8]: !echo $PATH
1986 a python variable
1986 a python variable
1987
1987
1988 In [9]: !echo $$PATH
1988 In [9]: !echo $$PATH
1989 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
1989 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
1990
1990
1991 (Magic.parse_options): escape $ so the shell doesn't evaluate
1991 (Magic.parse_options): escape $ so the shell doesn't evaluate
1992 things prematurely.
1992 things prematurely.
1993
1993
1994 * IPython/iplib.py (InteractiveShell.call_alias): added the
1994 * IPython/iplib.py (InteractiveShell.call_alias): added the
1995 ability for aliases to expand python variables via $.
1995 ability for aliases to expand python variables via $.
1996
1996
1997 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
1997 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
1998 system, now there's a @rehash/@rehashx pair of magics. These work
1998 system, now there's a @rehash/@rehashx pair of magics. These work
1999 like the csh rehash command, and can be invoked at any time. They
1999 like the csh rehash command, and can be invoked at any time. They
2000 build a table of aliases to everything in the user's $PATH
2000 build a table of aliases to everything in the user's $PATH
2001 (@rehash uses everything, @rehashx is slower but only adds
2001 (@rehash uses everything, @rehashx is slower but only adds
2002 executable files). With this, the pysh.py-based shell profile can
2002 executable files). With this, the pysh.py-based shell profile can
2003 now simply call rehash upon startup, and full access to all
2003 now simply call rehash upon startup, and full access to all
2004 programs in the user's path is obtained.
2004 programs in the user's path is obtained.
2005
2005
2006 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2006 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2007 functionality is now fully in place. I removed the old dynamic
2007 functionality is now fully in place. I removed the old dynamic
2008 code generation based approach, in favor of a much lighter one
2008 code generation based approach, in favor of a much lighter one
2009 based on a simple dict. The advantage is that this allows me to
2009 based on a simple dict. The advantage is that this allows me to
2010 now have thousands of aliases with negligible cost (unthinkable
2010 now have thousands of aliases with negligible cost (unthinkable
2011 with the old system).
2011 with the old system).
2012
2012
2013 2004-06-19 Fernando Perez <fperez@colorado.edu>
2013 2004-06-19 Fernando Perez <fperez@colorado.edu>
2014
2014
2015 * IPython/iplib.py (__init__): extended MagicCompleter class to
2015 * IPython/iplib.py (__init__): extended MagicCompleter class to
2016 also complete (last in priority) on user aliases.
2016 also complete (last in priority) on user aliases.
2017
2017
2018 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2018 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2019 call to eval.
2019 call to eval.
2020 (ItplNS.__init__): Added a new class which functions like Itpl,
2020 (ItplNS.__init__): Added a new class which functions like Itpl,
2021 but allows configuring the namespace for the evaluation to occur
2021 but allows configuring the namespace for the evaluation to occur
2022 in.
2022 in.
2023
2023
2024 2004-06-18 Fernando Perez <fperez@colorado.edu>
2024 2004-06-18 Fernando Perez <fperez@colorado.edu>
2025
2025
2026 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2026 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2027 better message when 'exit' or 'quit' are typed (a common newbie
2027 better message when 'exit' or 'quit' are typed (a common newbie
2028 confusion).
2028 confusion).
2029
2029
2030 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2030 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2031 check for Windows users.
2031 check for Windows users.
2032
2032
2033 * IPython/iplib.py (InteractiveShell.user_setup): removed
2033 * IPython/iplib.py (InteractiveShell.user_setup): removed
2034 disabling of colors for Windows. I'll test at runtime and issue a
2034 disabling of colors for Windows. I'll test at runtime and issue a
2035 warning if Gary's readline isn't found, as to nudge users to
2035 warning if Gary's readline isn't found, as to nudge users to
2036 download it.
2036 download it.
2037
2037
2038 2004-06-16 Fernando Perez <fperez@colorado.edu>
2038 2004-06-16 Fernando Perez <fperez@colorado.edu>
2039
2039
2040 * IPython/genutils.py (Stream.__init__): changed to print errors
2040 * IPython/genutils.py (Stream.__init__): changed to print errors
2041 to sys.stderr. I had a circular dependency here. Now it's
2041 to sys.stderr. I had a circular dependency here. Now it's
2042 possible to run ipython as IDLE's shell (consider this pre-alpha,
2042 possible to run ipython as IDLE's shell (consider this pre-alpha,
2043 since true stdout things end up in the starting terminal instead
2043 since true stdout things end up in the starting terminal instead
2044 of IDLE's out).
2044 of IDLE's out).
2045
2045
2046 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2046 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2047 users who haven't # updated their prompt_in2 definitions. Remove
2047 users who haven't # updated their prompt_in2 definitions. Remove
2048 eventually.
2048 eventually.
2049 (multiple_replace): added credit to original ASPN recipe.
2049 (multiple_replace): added credit to original ASPN recipe.
2050
2050
2051 2004-06-15 Fernando Perez <fperez@colorado.edu>
2051 2004-06-15 Fernando Perez <fperez@colorado.edu>
2052
2052
2053 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2053 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2054 list of auto-defined aliases.
2054 list of auto-defined aliases.
2055
2055
2056 2004-06-13 Fernando Perez <fperez@colorado.edu>
2056 2004-06-13 Fernando Perez <fperez@colorado.edu>
2057
2057
2058 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2058 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2059 install was really requested (so setup.py can be used for other
2059 install was really requested (so setup.py can be used for other
2060 things under Windows).
2060 things under Windows).
2061
2061
2062 2004-06-10 Fernando Perez <fperez@colorado.edu>
2062 2004-06-10 Fernando Perez <fperez@colorado.edu>
2063
2063
2064 * IPython/Logger.py (Logger.create_log): Manually remove any old
2064 * IPython/Logger.py (Logger.create_log): Manually remove any old
2065 backup, since os.remove may fail under Windows. Fixes bug
2065 backup, since os.remove may fail under Windows. Fixes bug
2066 reported by Thorsten.
2066 reported by Thorsten.
2067
2067
2068 2004-06-09 Fernando Perez <fperez@colorado.edu>
2068 2004-06-09 Fernando Perez <fperez@colorado.edu>
2069
2069
2070 * examples/example-embed.py: fixed all references to %n (replaced
2070 * examples/example-embed.py: fixed all references to %n (replaced
2071 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2071 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2072 for all examples and the manual as well.
2072 for all examples and the manual as well.
2073
2073
2074 2004-06-08 Fernando Perez <fperez@colorado.edu>
2074 2004-06-08 Fernando Perez <fperez@colorado.edu>
2075
2075
2076 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2076 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2077 alignment and color management. All 3 prompt subsystems now
2077 alignment and color management. All 3 prompt subsystems now
2078 inherit from BasePrompt.
2078 inherit from BasePrompt.
2079
2079
2080 * tools/release: updates for windows installer build and tag rpms
2080 * tools/release: updates for windows installer build and tag rpms
2081 with python version (since paths are fixed).
2081 with python version (since paths are fixed).
2082
2082
2083 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2083 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2084 which will become eventually obsolete. Also fixed the default
2084 which will become eventually obsolete. Also fixed the default
2085 prompt_in2 to use \D, so at least new users start with the correct
2085 prompt_in2 to use \D, so at least new users start with the correct
2086 defaults.
2086 defaults.
2087 WARNING: Users with existing ipythonrc files will need to apply
2087 WARNING: Users with existing ipythonrc files will need to apply
2088 this fix manually!
2088 this fix manually!
2089
2089
2090 * setup.py: make windows installer (.exe). This is finally the
2090 * setup.py: make windows installer (.exe). This is finally the
2091 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2091 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2092 which I hadn't included because it required Python 2.3 (or recent
2092 which I hadn't included because it required Python 2.3 (or recent
2093 distutils).
2093 distutils).
2094
2094
2095 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2095 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2096 usage of new '\D' escape.
2096 usage of new '\D' escape.
2097
2097
2098 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2098 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2099 lacks os.getuid())
2099 lacks os.getuid())
2100 (CachedOutput.set_colors): Added the ability to turn coloring
2100 (CachedOutput.set_colors): Added the ability to turn coloring
2101 on/off with @colors even for manually defined prompt colors. It
2101 on/off with @colors even for manually defined prompt colors. It
2102 uses a nasty global, but it works safely and via the generic color
2102 uses a nasty global, but it works safely and via the generic color
2103 handling mechanism.
2103 handling mechanism.
2104 (Prompt2.__init__): Introduced new escape '\D' for continuation
2104 (Prompt2.__init__): Introduced new escape '\D' for continuation
2105 prompts. It represents the counter ('\#') as dots.
2105 prompts. It represents the counter ('\#') as dots.
2106 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2106 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2107 need to update their ipythonrc files and replace '%n' with '\D' in
2107 need to update their ipythonrc files and replace '%n' with '\D' in
2108 their prompt_in2 settings everywhere. Sorry, but there's
2108 their prompt_in2 settings everywhere. Sorry, but there's
2109 otherwise no clean way to get all prompts to properly align. The
2109 otherwise no clean way to get all prompts to properly align. The
2110 ipythonrc shipped with IPython has been updated.
2110 ipythonrc shipped with IPython has been updated.
2111
2111
2112 2004-06-07 Fernando Perez <fperez@colorado.edu>
2112 2004-06-07 Fernando Perez <fperez@colorado.edu>
2113
2113
2114 * setup.py (isfile): Pass local_icons option to latex2html, so the
2114 * setup.py (isfile): Pass local_icons option to latex2html, so the
2115 resulting HTML file is self-contained. Thanks to
2115 resulting HTML file is self-contained. Thanks to
2116 dryice-AT-liu.com.cn for the tip.
2116 dryice-AT-liu.com.cn for the tip.
2117
2117
2118 * pysh.py: I created a new profile 'shell', which implements a
2118 * pysh.py: I created a new profile 'shell', which implements a
2119 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2119 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2120 system shell, nor will it become one anytime soon. It's mainly
2120 system shell, nor will it become one anytime soon. It's mainly
2121 meant to illustrate the use of the new flexible bash-like prompts.
2121 meant to illustrate the use of the new flexible bash-like prompts.
2122 I guess it could be used by hardy souls for true shell management,
2122 I guess it could be used by hardy souls for true shell management,
2123 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2123 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2124 profile. This uses the InterpreterExec extension provided by
2124 profile. This uses the InterpreterExec extension provided by
2125 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2125 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2126
2126
2127 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2127 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2128 auto-align itself with the length of the previous input prompt
2128 auto-align itself with the length of the previous input prompt
2129 (taking into account the invisible color escapes).
2129 (taking into account the invisible color escapes).
2130 (CachedOutput.__init__): Large restructuring of this class. Now
2130 (CachedOutput.__init__): Large restructuring of this class. Now
2131 all three prompts (primary1, primary2, output) are proper objects,
2131 all three prompts (primary1, primary2, output) are proper objects,
2132 managed by the 'parent' CachedOutput class. The code is still a
2132 managed by the 'parent' CachedOutput class. The code is still a
2133 bit hackish (all prompts share state via a pointer to the cache),
2133 bit hackish (all prompts share state via a pointer to the cache),
2134 but it's overall far cleaner than before.
2134 but it's overall far cleaner than before.
2135
2135
2136 * IPython/genutils.py (getoutputerror): modified to add verbose,
2136 * IPython/genutils.py (getoutputerror): modified to add verbose,
2137 debug and header options. This makes the interface of all getout*
2137 debug and header options. This makes the interface of all getout*
2138 functions uniform.
2138 functions uniform.
2139 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2139 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2140
2140
2141 * IPython/Magic.py (Magic.default_option): added a function to
2141 * IPython/Magic.py (Magic.default_option): added a function to
2142 allow registering default options for any magic command. This
2142 allow registering default options for any magic command. This
2143 makes it easy to have profiles which customize the magics globally
2143 makes it easy to have profiles which customize the magics globally
2144 for a certain use. The values set through this function are
2144 for a certain use. The values set through this function are
2145 picked up by the parse_options() method, which all magics should
2145 picked up by the parse_options() method, which all magics should
2146 use to parse their options.
2146 use to parse their options.
2147
2147
2148 * IPython/genutils.py (warn): modified the warnings framework to
2148 * IPython/genutils.py (warn): modified the warnings framework to
2149 use the Term I/O class. I'm trying to slowly unify all of
2149 use the Term I/O class. I'm trying to slowly unify all of
2150 IPython's I/O operations to pass through Term.
2150 IPython's I/O operations to pass through Term.
2151
2151
2152 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2152 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2153 the secondary prompt to correctly match the length of the primary
2153 the secondary prompt to correctly match the length of the primary
2154 one for any prompt. Now multi-line code will properly line up
2154 one for any prompt. Now multi-line code will properly line up
2155 even for path dependent prompts, such as the new ones available
2155 even for path dependent prompts, such as the new ones available
2156 via the prompt_specials.
2156 via the prompt_specials.
2157
2157
2158 2004-06-06 Fernando Perez <fperez@colorado.edu>
2158 2004-06-06 Fernando Perez <fperez@colorado.edu>
2159
2159
2160 * IPython/Prompts.py (prompt_specials): Added the ability to have
2160 * IPython/Prompts.py (prompt_specials): Added the ability to have
2161 bash-like special sequences in the prompts, which get
2161 bash-like special sequences in the prompts, which get
2162 automatically expanded. Things like hostname, current working
2162 automatically expanded. Things like hostname, current working
2163 directory and username are implemented already, but it's easy to
2163 directory and username are implemented already, but it's easy to
2164 add more in the future. Thanks to a patch by W.J. van der Laan
2164 add more in the future. Thanks to a patch by W.J. van der Laan
2165 <gnufnork-AT-hetdigitalegat.nl>
2165 <gnufnork-AT-hetdigitalegat.nl>
2166 (prompt_specials): Added color support for prompt strings, so
2166 (prompt_specials): Added color support for prompt strings, so
2167 users can define arbitrary color setups for their prompts.
2167 users can define arbitrary color setups for their prompts.
2168
2168
2169 2004-06-05 Fernando Perez <fperez@colorado.edu>
2169 2004-06-05 Fernando Perez <fperez@colorado.edu>
2170
2170
2171 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2171 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2172 code to load Gary Bishop's readline and configure it
2172 code to load Gary Bishop's readline and configure it
2173 automatically. Thanks to Gary for help on this.
2173 automatically. Thanks to Gary for help on this.
2174
2174
2175 2004-06-01 Fernando Perez <fperez@colorado.edu>
2175 2004-06-01 Fernando Perez <fperez@colorado.edu>
2176
2176
2177 * IPython/Logger.py (Logger.create_log): fix bug for logging
2177 * IPython/Logger.py (Logger.create_log): fix bug for logging
2178 with no filename (previous fix was incomplete).
2178 with no filename (previous fix was incomplete).
2179
2179
2180 2004-05-25 Fernando Perez <fperez@colorado.edu>
2180 2004-05-25 Fernando Perez <fperez@colorado.edu>
2181
2181
2182 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2182 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2183 parens would get passed to the shell.
2183 parens would get passed to the shell.
2184
2184
2185 2004-05-20 Fernando Perez <fperez@colorado.edu>
2185 2004-05-20 Fernando Perez <fperez@colorado.edu>
2186
2186
2187 * IPython/Magic.py (Magic.magic_prun): changed default profile
2187 * IPython/Magic.py (Magic.magic_prun): changed default profile
2188 sort order to 'time' (the more common profiling need).
2188 sort order to 'time' (the more common profiling need).
2189
2189
2190 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2190 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2191 so that source code shown is guaranteed in sync with the file on
2191 so that source code shown is guaranteed in sync with the file on
2192 disk (also changed in psource). Similar fix to the one for
2192 disk (also changed in psource). Similar fix to the one for
2193 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2193 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2194 <yann.ledu-AT-noos.fr>.
2194 <yann.ledu-AT-noos.fr>.
2195
2195
2196 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2196 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2197 with a single option would not be correctly parsed. Closes
2197 with a single option would not be correctly parsed. Closes
2198 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2198 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2199 introduced in 0.6.0 (on 2004-05-06).
2199 introduced in 0.6.0 (on 2004-05-06).
2200
2200
2201 2004-05-13 *** Released version 0.6.0
2201 2004-05-13 *** Released version 0.6.0
2202
2202
2203 2004-05-13 Fernando Perez <fperez@colorado.edu>
2203 2004-05-13 Fernando Perez <fperez@colorado.edu>
2204
2204
2205 * debian/: Added debian/ directory to CVS, so that debian support
2205 * debian/: Added debian/ directory to CVS, so that debian support
2206 is publicly accessible. The debian package is maintained by Jack
2206 is publicly accessible. The debian package is maintained by Jack
2207 Moffit <jack-AT-xiph.org>.
2207 Moffit <jack-AT-xiph.org>.
2208
2208
2209 * Documentation: included the notes about an ipython-based system
2209 * Documentation: included the notes about an ipython-based system
2210 shell (the hypothetical 'pysh') into the new_design.pdf document,
2210 shell (the hypothetical 'pysh') into the new_design.pdf document,
2211 so that these ideas get distributed to users along with the
2211 so that these ideas get distributed to users along with the
2212 official documentation.
2212 official documentation.
2213
2213
2214 2004-05-10 Fernando Perez <fperez@colorado.edu>
2214 2004-05-10 Fernando Perez <fperez@colorado.edu>
2215
2215
2216 * IPython/Logger.py (Logger.create_log): fix recently introduced
2216 * IPython/Logger.py (Logger.create_log): fix recently introduced
2217 bug (misindented line) where logstart would fail when not given an
2217 bug (misindented line) where logstart would fail when not given an
2218 explicit filename.
2218 explicit filename.
2219
2219
2220 2004-05-09 Fernando Perez <fperez@colorado.edu>
2220 2004-05-09 Fernando Perez <fperez@colorado.edu>
2221
2221
2222 * IPython/Magic.py (Magic.parse_options): skip system call when
2222 * IPython/Magic.py (Magic.parse_options): skip system call when
2223 there are no options to look for. Faster, cleaner for the common
2223 there are no options to look for. Faster, cleaner for the common
2224 case.
2224 case.
2225
2225
2226 * Documentation: many updates to the manual: describing Windows
2226 * Documentation: many updates to the manual: describing Windows
2227 support better, Gnuplot updates, credits, misc small stuff. Also
2227 support better, Gnuplot updates, credits, misc small stuff. Also
2228 updated the new_design doc a bit.
2228 updated the new_design doc a bit.
2229
2229
2230 2004-05-06 *** Released version 0.6.0.rc1
2230 2004-05-06 *** Released version 0.6.0.rc1
2231
2231
2232 2004-05-06 Fernando Perez <fperez@colorado.edu>
2232 2004-05-06 Fernando Perez <fperez@colorado.edu>
2233
2233
2234 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2234 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2235 operations to use the vastly more efficient list/''.join() method.
2235 operations to use the vastly more efficient list/''.join() method.
2236 (FormattedTB.text): Fix
2236 (FormattedTB.text): Fix
2237 http://www.scipy.net/roundup/ipython/issue12 - exception source
2237 http://www.scipy.net/roundup/ipython/issue12 - exception source
2238 extract not updated after reload. Thanks to Mike Salib
2238 extract not updated after reload. Thanks to Mike Salib
2239 <msalib-AT-mit.edu> for pinning the source of the problem.
2239 <msalib-AT-mit.edu> for pinning the source of the problem.
2240 Fortunately, the solution works inside ipython and doesn't require
2240 Fortunately, the solution works inside ipython and doesn't require
2241 any changes to python proper.
2241 any changes to python proper.
2242
2242
2243 * IPython/Magic.py (Magic.parse_options): Improved to process the
2243 * IPython/Magic.py (Magic.parse_options): Improved to process the
2244 argument list as a true shell would (by actually using the
2244 argument list as a true shell would (by actually using the
2245 underlying system shell). This way, all @magics automatically get
2245 underlying system shell). This way, all @magics automatically get
2246 shell expansion for variables. Thanks to a comment by Alex
2246 shell expansion for variables. Thanks to a comment by Alex
2247 Schmolck.
2247 Schmolck.
2248
2248
2249 2004-04-04 Fernando Perez <fperez@colorado.edu>
2249 2004-04-04 Fernando Perez <fperez@colorado.edu>
2250
2250
2251 * IPython/iplib.py (InteractiveShell.interact): Added a special
2251 * IPython/iplib.py (InteractiveShell.interact): Added a special
2252 trap for a debugger quit exception, which is basically impossible
2252 trap for a debugger quit exception, which is basically impossible
2253 to handle by normal mechanisms, given what pdb does to the stack.
2253 to handle by normal mechanisms, given what pdb does to the stack.
2254 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2254 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2255
2255
2256 2004-04-03 Fernando Perez <fperez@colorado.edu>
2256 2004-04-03 Fernando Perez <fperez@colorado.edu>
2257
2257
2258 * IPython/genutils.py (Term): Standardized the names of the Term
2258 * IPython/genutils.py (Term): Standardized the names of the Term
2259 class streams to cin/cout/cerr, following C++ naming conventions
2259 class streams to cin/cout/cerr, following C++ naming conventions
2260 (I can't use in/out/err because 'in' is not a valid attribute
2260 (I can't use in/out/err because 'in' is not a valid attribute
2261 name).
2261 name).
2262
2262
2263 * IPython/iplib.py (InteractiveShell.interact): don't increment
2263 * IPython/iplib.py (InteractiveShell.interact): don't increment
2264 the prompt if there's no user input. By Daniel 'Dang' Griffith
2264 the prompt if there's no user input. By Daniel 'Dang' Griffith
2265 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2265 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2266 Francois Pinard.
2266 Francois Pinard.
2267
2267
2268 2004-04-02 Fernando Perez <fperez@colorado.edu>
2268 2004-04-02 Fernando Perez <fperez@colorado.edu>
2269
2269
2270 * IPython/genutils.py (Stream.__init__): Modified to survive at
2270 * IPython/genutils.py (Stream.__init__): Modified to survive at
2271 least importing in contexts where stdin/out/err aren't true file
2271 least importing in contexts where stdin/out/err aren't true file
2272 objects, such as PyCrust (they lack fileno() and mode). However,
2272 objects, such as PyCrust (they lack fileno() and mode). However,
2273 the recovery facilities which rely on these things existing will
2273 the recovery facilities which rely on these things existing will
2274 not work.
2274 not work.
2275
2275
2276 2004-04-01 Fernando Perez <fperez@colorado.edu>
2276 2004-04-01 Fernando Perez <fperez@colorado.edu>
2277
2277
2278 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2278 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2279 use the new getoutputerror() function, so it properly
2279 use the new getoutputerror() function, so it properly
2280 distinguishes stdout/err.
2280 distinguishes stdout/err.
2281
2281
2282 * IPython/genutils.py (getoutputerror): added a function to
2282 * IPython/genutils.py (getoutputerror): added a function to
2283 capture separately the standard output and error of a command.
2283 capture separately the standard output and error of a command.
2284 After a comment from dang on the mailing lists. This code is
2284 After a comment from dang on the mailing lists. This code is
2285 basically a modified version of commands.getstatusoutput(), from
2285 basically a modified version of commands.getstatusoutput(), from
2286 the standard library.
2286 the standard library.
2287
2287
2288 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2288 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2289 '!!' as a special syntax (shorthand) to access @sx.
2289 '!!' as a special syntax (shorthand) to access @sx.
2290
2290
2291 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2291 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2292 command and return its output as a list split on '\n'.
2292 command and return its output as a list split on '\n'.
2293
2293
2294 2004-03-31 Fernando Perez <fperez@colorado.edu>
2294 2004-03-31 Fernando Perez <fperez@colorado.edu>
2295
2295
2296 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2296 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2297 method to dictionaries used as FakeModule instances if they lack
2297 method to dictionaries used as FakeModule instances if they lack
2298 it. At least pydoc in python2.3 breaks for runtime-defined
2298 it. At least pydoc in python2.3 breaks for runtime-defined
2299 functions without this hack. At some point I need to _really_
2299 functions without this hack. At some point I need to _really_
2300 understand what FakeModule is doing, because it's a gross hack.
2300 understand what FakeModule is doing, because it's a gross hack.
2301 But it solves Arnd's problem for now...
2301 But it solves Arnd's problem for now...
2302
2302
2303 2004-02-27 Fernando Perez <fperez@colorado.edu>
2303 2004-02-27 Fernando Perez <fperez@colorado.edu>
2304
2304
2305 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2305 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2306 mode would behave erratically. Also increased the number of
2306 mode would behave erratically. Also increased the number of
2307 possible logs in rotate mod to 999. Thanks to Rod Holland
2307 possible logs in rotate mod to 999. Thanks to Rod Holland
2308 <rhh@StructureLABS.com> for the report and fixes.
2308 <rhh@StructureLABS.com> for the report and fixes.
2309
2309
2310 2004-02-26 Fernando Perez <fperez@colorado.edu>
2310 2004-02-26 Fernando Perez <fperez@colorado.edu>
2311
2311
2312 * IPython/genutils.py (page): Check that the curses module really
2312 * IPython/genutils.py (page): Check that the curses module really
2313 has the initscr attribute before trying to use it. For some
2313 has the initscr attribute before trying to use it. For some
2314 reason, the Solaris curses module is missing this. I think this
2314 reason, the Solaris curses module is missing this. I think this
2315 should be considered a Solaris python bug, but I'm not sure.
2315 should be considered a Solaris python bug, but I'm not sure.
2316
2316
2317 2004-01-17 Fernando Perez <fperez@colorado.edu>
2317 2004-01-17 Fernando Perez <fperez@colorado.edu>
2318
2318
2319 * IPython/genutils.py (Stream.__init__): Changes to try to make
2319 * IPython/genutils.py (Stream.__init__): Changes to try to make
2320 ipython robust against stdin/out/err being closed by the user.
2320 ipython robust against stdin/out/err being closed by the user.
2321 This is 'user error' (and blocks a normal python session, at least
2321 This is 'user error' (and blocks a normal python session, at least
2322 the stdout case). However, Ipython should be able to survive such
2322 the stdout case). However, Ipython should be able to survive such
2323 instances of abuse as gracefully as possible. To simplify the
2323 instances of abuse as gracefully as possible. To simplify the
2324 coding and maintain compatibility with Gary Bishop's Term
2324 coding and maintain compatibility with Gary Bishop's Term
2325 contributions, I've made use of classmethods for this. I think
2325 contributions, I've made use of classmethods for this. I think
2326 this introduces a dependency on python 2.2.
2326 this introduces a dependency on python 2.2.
2327
2327
2328 2004-01-13 Fernando Perez <fperez@colorado.edu>
2328 2004-01-13 Fernando Perez <fperez@colorado.edu>
2329
2329
2330 * IPython/numutils.py (exp_safe): simplified the code a bit and
2330 * IPython/numutils.py (exp_safe): simplified the code a bit and
2331 removed the need for importing the kinds module altogether.
2331 removed the need for importing the kinds module altogether.
2332
2332
2333 2004-01-06 Fernando Perez <fperez@colorado.edu>
2333 2004-01-06 Fernando Perez <fperez@colorado.edu>
2334
2334
2335 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2335 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2336 a magic function instead, after some community feedback. No
2336 a magic function instead, after some community feedback. No
2337 special syntax will exist for it, but its name is deliberately
2337 special syntax will exist for it, but its name is deliberately
2338 very short.
2338 very short.
2339
2339
2340 2003-12-20 Fernando Perez <fperez@colorado.edu>
2340 2003-12-20 Fernando Perez <fperez@colorado.edu>
2341
2341
2342 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2342 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2343 new functionality, to automagically assign the result of a shell
2343 new functionality, to automagically assign the result of a shell
2344 command to a variable. I'll solicit some community feedback on
2344 command to a variable. I'll solicit some community feedback on
2345 this before making it permanent.
2345 this before making it permanent.
2346
2346
2347 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2347 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2348 requested about callables for which inspect couldn't obtain a
2348 requested about callables for which inspect couldn't obtain a
2349 proper argspec. Thanks to a crash report sent by Etienne
2349 proper argspec. Thanks to a crash report sent by Etienne
2350 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2350 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2351
2351
2352 2003-12-09 Fernando Perez <fperez@colorado.edu>
2352 2003-12-09 Fernando Perez <fperez@colorado.edu>
2353
2353
2354 * IPython/genutils.py (page): patch for the pager to work across
2354 * IPython/genutils.py (page): patch for the pager to work across
2355 various versions of Windows. By Gary Bishop.
2355 various versions of Windows. By Gary Bishop.
2356
2356
2357 2003-12-04 Fernando Perez <fperez@colorado.edu>
2357 2003-12-04 Fernando Perez <fperez@colorado.edu>
2358
2358
2359 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2359 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2360 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2360 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2361 While I tested this and it looks ok, there may still be corner
2361 While I tested this and it looks ok, there may still be corner
2362 cases I've missed.
2362 cases I've missed.
2363
2363
2364 2003-12-01 Fernando Perez <fperez@colorado.edu>
2364 2003-12-01 Fernando Perez <fperez@colorado.edu>
2365
2365
2366 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2366 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2367 where a line like 'p,q=1,2' would fail because the automagic
2367 where a line like 'p,q=1,2' would fail because the automagic
2368 system would be triggered for @p.
2368 system would be triggered for @p.
2369
2369
2370 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2370 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2371 cleanups, code unmodified.
2371 cleanups, code unmodified.
2372
2372
2373 * IPython/genutils.py (Term): added a class for IPython to handle
2373 * IPython/genutils.py (Term): added a class for IPython to handle
2374 output. In most cases it will just be a proxy for stdout/err, but
2374 output. In most cases it will just be a proxy for stdout/err, but
2375 having this allows modifications to be made for some platforms,
2375 having this allows modifications to be made for some platforms,
2376 such as handling color escapes under Windows. All of this code
2376 such as handling color escapes under Windows. All of this code
2377 was contributed by Gary Bishop, with minor modifications by me.
2377 was contributed by Gary Bishop, with minor modifications by me.
2378 The actual changes affect many files.
2378 The actual changes affect many files.
2379
2379
2380 2003-11-30 Fernando Perez <fperez@colorado.edu>
2380 2003-11-30 Fernando Perez <fperez@colorado.edu>
2381
2381
2382 * IPython/iplib.py (file_matches): new completion code, courtesy
2382 * IPython/iplib.py (file_matches): new completion code, courtesy
2383 of Jeff Collins. This enables filename completion again under
2383 of Jeff Collins. This enables filename completion again under
2384 python 2.3, which disabled it at the C level.
2384 python 2.3, which disabled it at the C level.
2385
2385
2386 2003-11-11 Fernando Perez <fperez@colorado.edu>
2386 2003-11-11 Fernando Perez <fperez@colorado.edu>
2387
2387
2388 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2388 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2389 for Numeric.array(map(...)), but often convenient.
2389 for Numeric.array(map(...)), but often convenient.
2390
2390
2391 2003-11-05 Fernando Perez <fperez@colorado.edu>
2391 2003-11-05 Fernando Perez <fperez@colorado.edu>
2392
2392
2393 * IPython/numutils.py (frange): Changed a call from int() to
2393 * IPython/numutils.py (frange): Changed a call from int() to
2394 int(round()) to prevent a problem reported with arange() in the
2394 int(round()) to prevent a problem reported with arange() in the
2395 numpy list.
2395 numpy list.
2396
2396
2397 2003-10-06 Fernando Perez <fperez@colorado.edu>
2397 2003-10-06 Fernando Perez <fperez@colorado.edu>
2398
2398
2399 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2399 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2400 prevent crashes if sys lacks an argv attribute (it happens with
2400 prevent crashes if sys lacks an argv attribute (it happens with
2401 embedded interpreters which build a bare-bones sys module).
2401 embedded interpreters which build a bare-bones sys module).
2402 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2402 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2403
2403
2404 2003-09-24 Fernando Perez <fperez@colorado.edu>
2404 2003-09-24 Fernando Perez <fperez@colorado.edu>
2405
2405
2406 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2406 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2407 to protect against poorly written user objects where __getattr__
2407 to protect against poorly written user objects where __getattr__
2408 raises exceptions other than AttributeError. Thanks to a bug
2408 raises exceptions other than AttributeError. Thanks to a bug
2409 report by Oliver Sander <osander-AT-gmx.de>.
2409 report by Oliver Sander <osander-AT-gmx.de>.
2410
2410
2411 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2411 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2412 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2412 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2413
2413
2414 2003-09-09 Fernando Perez <fperez@colorado.edu>
2414 2003-09-09 Fernando Perez <fperez@colorado.edu>
2415
2415
2416 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2416 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2417 unpacking a list whith a callable as first element would
2417 unpacking a list whith a callable as first element would
2418 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2418 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2419 Collins.
2419 Collins.
2420
2420
2421 2003-08-25 *** Released version 0.5.0
2421 2003-08-25 *** Released version 0.5.0
2422
2422
2423 2003-08-22 Fernando Perez <fperez@colorado.edu>
2423 2003-08-22 Fernando Perez <fperez@colorado.edu>
2424
2424
2425 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2425 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2426 improperly defined user exceptions. Thanks to feedback from Mark
2426 improperly defined user exceptions. Thanks to feedback from Mark
2427 Russell <mrussell-AT-verio.net>.
2427 Russell <mrussell-AT-verio.net>.
2428
2428
2429 2003-08-20 Fernando Perez <fperez@colorado.edu>
2429 2003-08-20 Fernando Perez <fperez@colorado.edu>
2430
2430
2431 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2431 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2432 printing so that it would print multi-line string forms starting
2432 printing so that it would print multi-line string forms starting
2433 with a new line. This way the formatting is better respected for
2433 with a new line. This way the formatting is better respected for
2434 objects which work hard to make nice string forms.
2434 objects which work hard to make nice string forms.
2435
2435
2436 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2436 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2437 autocall would overtake data access for objects with both
2437 autocall would overtake data access for objects with both
2438 __getitem__ and __call__.
2438 __getitem__ and __call__.
2439
2439
2440 2003-08-19 *** Released version 0.5.0-rc1
2440 2003-08-19 *** Released version 0.5.0-rc1
2441
2441
2442 2003-08-19 Fernando Perez <fperez@colorado.edu>
2442 2003-08-19 Fernando Perez <fperez@colorado.edu>
2443
2443
2444 * IPython/deep_reload.py (load_tail): single tiny change here
2444 * IPython/deep_reload.py (load_tail): single tiny change here
2445 seems to fix the long-standing bug of dreload() failing to work
2445 seems to fix the long-standing bug of dreload() failing to work
2446 for dotted names. But this module is pretty tricky, so I may have
2446 for dotted names. But this module is pretty tricky, so I may have
2447 missed some subtlety. Needs more testing!.
2447 missed some subtlety. Needs more testing!.
2448
2448
2449 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
2449 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
2450 exceptions which have badly implemented __str__ methods.
2450 exceptions which have badly implemented __str__ methods.
2451 (VerboseTB.text): harden against inspect.getinnerframes crashing,
2451 (VerboseTB.text): harden against inspect.getinnerframes crashing,
2452 which I've been getting reports about from Python 2.3 users. I
2452 which I've been getting reports about from Python 2.3 users. I
2453 wish I had a simple test case to reproduce the problem, so I could
2453 wish I had a simple test case to reproduce the problem, so I could
2454 either write a cleaner workaround or file a bug report if
2454 either write a cleaner workaround or file a bug report if
2455 necessary.
2455 necessary.
2456
2456
2457 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
2457 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
2458 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
2458 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
2459 a bug report by Tjabo Kloppenburg.
2459 a bug report by Tjabo Kloppenburg.
2460
2460
2461 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
2461 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
2462 crashes. Wrapped the pdb call in a blanket try/except, since pdb
2462 crashes. Wrapped the pdb call in a blanket try/except, since pdb
2463 seems rather unstable. Thanks to a bug report by Tjabo
2463 seems rather unstable. Thanks to a bug report by Tjabo
2464 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
2464 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
2465
2465
2466 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
2466 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
2467 this out soon because of the critical fixes in the inner loop for
2467 this out soon because of the critical fixes in the inner loop for
2468 generators.
2468 generators.
2469
2469
2470 * IPython/Magic.py (Magic.getargspec): removed. This (and
2470 * IPython/Magic.py (Magic.getargspec): removed. This (and
2471 _get_def) have been obsoleted by OInspect for a long time, I
2471 _get_def) have been obsoleted by OInspect for a long time, I
2472 hadn't noticed that they were dead code.
2472 hadn't noticed that they were dead code.
2473 (Magic._ofind): restored _ofind functionality for a few literals
2473 (Magic._ofind): restored _ofind functionality for a few literals
2474 (those in ["''",'""','[]','{}','()']). But it won't work anymore
2474 (those in ["''",'""','[]','{}','()']). But it won't work anymore
2475 for things like "hello".capitalize?, since that would require a
2475 for things like "hello".capitalize?, since that would require a
2476 potentially dangerous eval() again.
2476 potentially dangerous eval() again.
2477
2477
2478 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
2478 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
2479 logic a bit more to clean up the escapes handling and minimize the
2479 logic a bit more to clean up the escapes handling and minimize the
2480 use of _ofind to only necessary cases. The interactive 'feel' of
2480 use of _ofind to only necessary cases. The interactive 'feel' of
2481 IPython should have improved quite a bit with the changes in
2481 IPython should have improved quite a bit with the changes in
2482 _prefilter and _ofind (besides being far safer than before).
2482 _prefilter and _ofind (besides being far safer than before).
2483
2483
2484 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
2484 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
2485 obscure, never reported). Edit would fail to find the object to
2485 obscure, never reported). Edit would fail to find the object to
2486 edit under some circumstances.
2486 edit under some circumstances.
2487 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
2487 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
2488 which were causing double-calling of generators. Those eval calls
2488 which were causing double-calling of generators. Those eval calls
2489 were _very_ dangerous, since code with side effects could be
2489 were _very_ dangerous, since code with side effects could be
2490 triggered. As they say, 'eval is evil'... These were the
2490 triggered. As they say, 'eval is evil'... These were the
2491 nastiest evals in IPython. Besides, _ofind is now far simpler,
2491 nastiest evals in IPython. Besides, _ofind is now far simpler,
2492 and it should also be quite a bit faster. Its use of inspect is
2492 and it should also be quite a bit faster. Its use of inspect is
2493 also safer, so perhaps some of the inspect-related crashes I've
2493 also safer, so perhaps some of the inspect-related crashes I've
2494 seen lately with Python 2.3 might be taken care of. That will
2494 seen lately with Python 2.3 might be taken care of. That will
2495 need more testing.
2495 need more testing.
2496
2496
2497 2003-08-17 Fernando Perez <fperez@colorado.edu>
2497 2003-08-17 Fernando Perez <fperez@colorado.edu>
2498
2498
2499 * IPython/iplib.py (InteractiveShell._prefilter): significant
2499 * IPython/iplib.py (InteractiveShell._prefilter): significant
2500 simplifications to the logic for handling user escapes. Faster
2500 simplifications to the logic for handling user escapes. Faster
2501 and simpler code.
2501 and simpler code.
2502
2502
2503 2003-08-14 Fernando Perez <fperez@colorado.edu>
2503 2003-08-14 Fernando Perez <fperez@colorado.edu>
2504
2504
2505 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
2505 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
2506 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
2506 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
2507 but it should be quite a bit faster. And the recursive version
2507 but it should be quite a bit faster. And the recursive version
2508 generated O(log N) intermediate storage for all rank>1 arrays,
2508 generated O(log N) intermediate storage for all rank>1 arrays,
2509 even if they were contiguous.
2509 even if they were contiguous.
2510 (l1norm): Added this function.
2510 (l1norm): Added this function.
2511 (norm): Added this function for arbitrary norms (including
2511 (norm): Added this function for arbitrary norms (including
2512 l-infinity). l1 and l2 are still special cases for convenience
2512 l-infinity). l1 and l2 are still special cases for convenience
2513 and speed.
2513 and speed.
2514
2514
2515 2003-08-03 Fernando Perez <fperez@colorado.edu>
2515 2003-08-03 Fernando Perez <fperez@colorado.edu>
2516
2516
2517 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
2517 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
2518 exceptions, which now raise PendingDeprecationWarnings in Python
2518 exceptions, which now raise PendingDeprecationWarnings in Python
2519 2.3. There were some in Magic and some in Gnuplot2.
2519 2.3. There were some in Magic and some in Gnuplot2.
2520
2520
2521 2003-06-30 Fernando Perez <fperez@colorado.edu>
2521 2003-06-30 Fernando Perez <fperez@colorado.edu>
2522
2522
2523 * IPython/genutils.py (page): modified to call curses only for
2523 * IPython/genutils.py (page): modified to call curses only for
2524 terminals where TERM=='xterm'. After problems under many other
2524 terminals where TERM=='xterm'. After problems under many other
2525 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
2525 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
2526
2526
2527 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
2527 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
2528 would be triggered when readline was absent. This was just an old
2528 would be triggered when readline was absent. This was just an old
2529 debugging statement I'd forgotten to take out.
2529 debugging statement I'd forgotten to take out.
2530
2530
2531 2003-06-20 Fernando Perez <fperez@colorado.edu>
2531 2003-06-20 Fernando Perez <fperez@colorado.edu>
2532
2532
2533 * IPython/genutils.py (clock): modified to return only user time
2533 * IPython/genutils.py (clock): modified to return only user time
2534 (not counting system time), after a discussion on scipy. While
2534 (not counting system time), after a discussion on scipy. While
2535 system time may be a useful quantity occasionally, it may much
2535 system time may be a useful quantity occasionally, it may much
2536 more easily be skewed by occasional swapping or other similar
2536 more easily be skewed by occasional swapping or other similar
2537 activity.
2537 activity.
2538
2538
2539 2003-06-05 Fernando Perez <fperez@colorado.edu>
2539 2003-06-05 Fernando Perez <fperez@colorado.edu>
2540
2540
2541 * IPython/numutils.py (identity): new function, for building
2541 * IPython/numutils.py (identity): new function, for building
2542 arbitrary rank Kronecker deltas (mostly backwards compatible with
2542 arbitrary rank Kronecker deltas (mostly backwards compatible with
2543 Numeric.identity)
2543 Numeric.identity)
2544
2544
2545 2003-06-03 Fernando Perez <fperez@colorado.edu>
2545 2003-06-03 Fernando Perez <fperez@colorado.edu>
2546
2546
2547 * IPython/iplib.py (InteractiveShell.handle_magic): protect
2547 * IPython/iplib.py (InteractiveShell.handle_magic): protect
2548 arguments passed to magics with spaces, to allow trailing '\' to
2548 arguments passed to magics with spaces, to allow trailing '\' to
2549 work normally (mainly for Windows users).
2549 work normally (mainly for Windows users).
2550
2550
2551 2003-05-29 Fernando Perez <fperez@colorado.edu>
2551 2003-05-29 Fernando Perez <fperez@colorado.edu>
2552
2552
2553 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
2553 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
2554 instead of pydoc.help. This fixes a bizarre behavior where
2554 instead of pydoc.help. This fixes a bizarre behavior where
2555 printing '%s' % locals() would trigger the help system. Now
2555 printing '%s' % locals() would trigger the help system. Now
2556 ipython behaves like normal python does.
2556 ipython behaves like normal python does.
2557
2557
2558 Note that if one does 'from pydoc import help', the bizarre
2558 Note that if one does 'from pydoc import help', the bizarre
2559 behavior returns, but this will also happen in normal python, so
2559 behavior returns, but this will also happen in normal python, so
2560 it's not an ipython bug anymore (it has to do with how pydoc.help
2560 it's not an ipython bug anymore (it has to do with how pydoc.help
2561 is implemented).
2561 is implemented).
2562
2562
2563 2003-05-22 Fernando Perez <fperez@colorado.edu>
2563 2003-05-22 Fernando Perez <fperez@colorado.edu>
2564
2564
2565 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
2565 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
2566 return [] instead of None when nothing matches, also match to end
2566 return [] instead of None when nothing matches, also match to end
2567 of line. Patch by Gary Bishop.
2567 of line. Patch by Gary Bishop.
2568
2568
2569 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
2569 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
2570 protection as before, for files passed on the command line. This
2570 protection as before, for files passed on the command line. This
2571 prevents the CrashHandler from kicking in if user files call into
2571 prevents the CrashHandler from kicking in if user files call into
2572 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
2572 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
2573 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
2573 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
2574
2574
2575 2003-05-20 *** Released version 0.4.0
2575 2003-05-20 *** Released version 0.4.0
2576
2576
2577 2003-05-20 Fernando Perez <fperez@colorado.edu>
2577 2003-05-20 Fernando Perez <fperez@colorado.edu>
2578
2578
2579 * setup.py: added support for manpages. It's a bit hackish b/c of
2579 * setup.py: added support for manpages. It's a bit hackish b/c of
2580 a bug in the way the bdist_rpm distutils target handles gzipped
2580 a bug in the way the bdist_rpm distutils target handles gzipped
2581 manpages, but it works. After a patch by Jack.
2581 manpages, but it works. After a patch by Jack.
2582
2582
2583 2003-05-19 Fernando Perez <fperez@colorado.edu>
2583 2003-05-19 Fernando Perez <fperez@colorado.edu>
2584
2584
2585 * IPython/numutils.py: added a mockup of the kinds module, since
2585 * IPython/numutils.py: added a mockup of the kinds module, since
2586 it was recently removed from Numeric. This way, numutils will
2586 it was recently removed from Numeric. This way, numutils will
2587 work for all users even if they are missing kinds.
2587 work for all users even if they are missing kinds.
2588
2588
2589 * IPython/Magic.py (Magic._ofind): Harden against an inspect
2589 * IPython/Magic.py (Magic._ofind): Harden against an inspect
2590 failure, which can occur with SWIG-wrapped extensions. After a
2590 failure, which can occur with SWIG-wrapped extensions. After a
2591 crash report from Prabhu.
2591 crash report from Prabhu.
2592
2592
2593 2003-05-16 Fernando Perez <fperez@colorado.edu>
2593 2003-05-16 Fernando Perez <fperez@colorado.edu>
2594
2594
2595 * IPython/iplib.py (InteractiveShell.excepthook): New method to
2595 * IPython/iplib.py (InteractiveShell.excepthook): New method to
2596 protect ipython from user code which may call directly
2596 protect ipython from user code which may call directly
2597 sys.excepthook (this looks like an ipython crash to the user, even
2597 sys.excepthook (this looks like an ipython crash to the user, even
2598 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2598 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2599 This is especially important to help users of WxWindows, but may
2599 This is especially important to help users of WxWindows, but may
2600 also be useful in other cases.
2600 also be useful in other cases.
2601
2601
2602 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
2602 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
2603 an optional tb_offset to be specified, and to preserve exception
2603 an optional tb_offset to be specified, and to preserve exception
2604 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2604 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2605
2605
2606 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
2606 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
2607
2607
2608 2003-05-15 Fernando Perez <fperez@colorado.edu>
2608 2003-05-15 Fernando Perez <fperez@colorado.edu>
2609
2609
2610 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
2610 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
2611 installing for a new user under Windows.
2611 installing for a new user under Windows.
2612
2612
2613 2003-05-12 Fernando Perez <fperez@colorado.edu>
2613 2003-05-12 Fernando Perez <fperez@colorado.edu>
2614
2614
2615 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
2615 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
2616 handler for Emacs comint-based lines. Currently it doesn't do
2616 handler for Emacs comint-based lines. Currently it doesn't do
2617 much (but importantly, it doesn't update the history cache). In
2617 much (but importantly, it doesn't update the history cache). In
2618 the future it may be expanded if Alex needs more functionality
2618 the future it may be expanded if Alex needs more functionality
2619 there.
2619 there.
2620
2620
2621 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
2621 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
2622 info to crash reports.
2622 info to crash reports.
2623
2623
2624 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
2624 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
2625 just like Python's -c. Also fixed crash with invalid -color
2625 just like Python's -c. Also fixed crash with invalid -color
2626 option value at startup. Thanks to Will French
2626 option value at startup. Thanks to Will French
2627 <wfrench-AT-bestweb.net> for the bug report.
2627 <wfrench-AT-bestweb.net> for the bug report.
2628
2628
2629 2003-05-09 Fernando Perez <fperez@colorado.edu>
2629 2003-05-09 Fernando Perez <fperez@colorado.edu>
2630
2630
2631 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
2631 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
2632 to EvalDict (it's a mapping, after all) and simplified its code
2632 to EvalDict (it's a mapping, after all) and simplified its code
2633 quite a bit, after a nice discussion on c.l.py where Gustavo
2633 quite a bit, after a nice discussion on c.l.py where Gustavo
2634 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
2634 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
2635
2635
2636 2003-04-30 Fernando Perez <fperez@colorado.edu>
2636 2003-04-30 Fernando Perez <fperez@colorado.edu>
2637
2637
2638 * IPython/genutils.py (timings_out): modified it to reduce its
2638 * IPython/genutils.py (timings_out): modified it to reduce its
2639 overhead in the common reps==1 case.
2639 overhead in the common reps==1 case.
2640
2640
2641 2003-04-29 Fernando Perez <fperez@colorado.edu>
2641 2003-04-29 Fernando Perez <fperez@colorado.edu>
2642
2642
2643 * IPython/genutils.py (timings_out): Modified to use the resource
2643 * IPython/genutils.py (timings_out): Modified to use the resource
2644 module, which avoids the wraparound problems of time.clock().
2644 module, which avoids the wraparound problems of time.clock().
2645
2645
2646 2003-04-17 *** Released version 0.2.15pre4
2646 2003-04-17 *** Released version 0.2.15pre4
2647
2647
2648 2003-04-17 Fernando Perez <fperez@colorado.edu>
2648 2003-04-17 Fernando Perez <fperez@colorado.edu>
2649
2649
2650 * setup.py (scriptfiles): Split windows-specific stuff over to a
2650 * setup.py (scriptfiles): Split windows-specific stuff over to a
2651 separate file, in an attempt to have a Windows GUI installer.
2651 separate file, in an attempt to have a Windows GUI installer.
2652 That didn't work, but part of the groundwork is done.
2652 That didn't work, but part of the groundwork is done.
2653
2653
2654 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
2654 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
2655 indent/unindent with 4 spaces. Particularly useful in combination
2655 indent/unindent with 4 spaces. Particularly useful in combination
2656 with the new auto-indent option.
2656 with the new auto-indent option.
2657
2657
2658 2003-04-16 Fernando Perez <fperez@colorado.edu>
2658 2003-04-16 Fernando Perez <fperez@colorado.edu>
2659
2659
2660 * IPython/Magic.py: various replacements of self.rc for
2660 * IPython/Magic.py: various replacements of self.rc for
2661 self.shell.rc. A lot more remains to be done to fully disentangle
2661 self.shell.rc. A lot more remains to be done to fully disentangle
2662 this class from the main Shell class.
2662 this class from the main Shell class.
2663
2663
2664 * IPython/GnuplotRuntime.py: added checks for mouse support so
2664 * IPython/GnuplotRuntime.py: added checks for mouse support so
2665 that we don't try to enable it if the current gnuplot doesn't
2665 that we don't try to enable it if the current gnuplot doesn't
2666 really support it. Also added checks so that we don't try to
2666 really support it. Also added checks so that we don't try to
2667 enable persist under Windows (where Gnuplot doesn't recognize the
2667 enable persist under Windows (where Gnuplot doesn't recognize the
2668 option).
2668 option).
2669
2669
2670 * IPython/iplib.py (InteractiveShell.interact): Added optional
2670 * IPython/iplib.py (InteractiveShell.interact): Added optional
2671 auto-indenting code, after a patch by King C. Shu
2671 auto-indenting code, after a patch by King C. Shu
2672 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
2672 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
2673 get along well with pasting indented code. If I ever figure out
2673 get along well with pasting indented code. If I ever figure out
2674 how to make that part go well, it will become on by default.
2674 how to make that part go well, it will become on by default.
2675
2675
2676 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
2676 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
2677 crash ipython if there was an unmatched '%' in the user's prompt
2677 crash ipython if there was an unmatched '%' in the user's prompt
2678 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
2678 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
2679
2679
2680 * IPython/iplib.py (InteractiveShell.interact): removed the
2680 * IPython/iplib.py (InteractiveShell.interact): removed the
2681 ability to ask the user whether he wants to crash or not at the
2681 ability to ask the user whether he wants to crash or not at the
2682 'last line' exception handler. Calling functions at that point
2682 'last line' exception handler. Calling functions at that point
2683 changes the stack, and the error reports would have incorrect
2683 changes the stack, and the error reports would have incorrect
2684 tracebacks.
2684 tracebacks.
2685
2685
2686 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
2686 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
2687 pass through a peger a pretty-printed form of any object. After a
2687 pass through a peger a pretty-printed form of any object. After a
2688 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
2688 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
2689
2689
2690 2003-04-14 Fernando Perez <fperez@colorado.edu>
2690 2003-04-14 Fernando Perez <fperez@colorado.edu>
2691
2691
2692 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
2692 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
2693 all files in ~ would be modified at first install (instead of
2693 all files in ~ would be modified at first install (instead of
2694 ~/.ipython). This could be potentially disastrous, as the
2694 ~/.ipython). This could be potentially disastrous, as the
2695 modification (make line-endings native) could damage binary files.
2695 modification (make line-endings native) could damage binary files.
2696
2696
2697 2003-04-10 Fernando Perez <fperez@colorado.edu>
2697 2003-04-10 Fernando Perez <fperez@colorado.edu>
2698
2698
2699 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
2699 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
2700 handle only lines which are invalid python. This now means that
2700 handle only lines which are invalid python. This now means that
2701 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
2701 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
2702 for the bug report.
2702 for the bug report.
2703
2703
2704 2003-04-01 Fernando Perez <fperez@colorado.edu>
2704 2003-04-01 Fernando Perez <fperez@colorado.edu>
2705
2705
2706 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
2706 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
2707 where failing to set sys.last_traceback would crash pdb.pm().
2707 where failing to set sys.last_traceback would crash pdb.pm().
2708 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
2708 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
2709 report.
2709 report.
2710
2710
2711 2003-03-25 Fernando Perez <fperez@colorado.edu>
2711 2003-03-25 Fernando Perez <fperez@colorado.edu>
2712
2712
2713 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
2713 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
2714 before printing it (it had a lot of spurious blank lines at the
2714 before printing it (it had a lot of spurious blank lines at the
2715 end).
2715 end).
2716
2716
2717 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
2717 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
2718 output would be sent 21 times! Obviously people don't use this
2718 output would be sent 21 times! Obviously people don't use this
2719 too often, or I would have heard about it.
2719 too often, or I would have heard about it.
2720
2720
2721 2003-03-24 Fernando Perez <fperez@colorado.edu>
2721 2003-03-24 Fernando Perez <fperez@colorado.edu>
2722
2722
2723 * setup.py (scriptfiles): renamed the data_files parameter from
2723 * setup.py (scriptfiles): renamed the data_files parameter from
2724 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
2724 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
2725 for the patch.
2725 for the patch.
2726
2726
2727 2003-03-20 Fernando Perez <fperez@colorado.edu>
2727 2003-03-20 Fernando Perez <fperez@colorado.edu>
2728
2728
2729 * IPython/genutils.py (error): added error() and fatal()
2729 * IPython/genutils.py (error): added error() and fatal()
2730 functions.
2730 functions.
2731
2731
2732 2003-03-18 *** Released version 0.2.15pre3
2732 2003-03-18 *** Released version 0.2.15pre3
2733
2733
2734 2003-03-18 Fernando Perez <fperez@colorado.edu>
2734 2003-03-18 Fernando Perez <fperez@colorado.edu>
2735
2735
2736 * setupext/install_data_ext.py
2736 * setupext/install_data_ext.py
2737 (install_data_ext.initialize_options): Class contributed by Jack
2737 (install_data_ext.initialize_options): Class contributed by Jack
2738 Moffit for fixing the old distutils hack. He is sending this to
2738 Moffit for fixing the old distutils hack. He is sending this to
2739 the distutils folks so in the future we may not need it as a
2739 the distutils folks so in the future we may not need it as a
2740 private fix.
2740 private fix.
2741
2741
2742 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
2742 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
2743 changes for Debian packaging. See his patch for full details.
2743 changes for Debian packaging. See his patch for full details.
2744 The old distutils hack of making the ipythonrc* files carry a
2744 The old distutils hack of making the ipythonrc* files carry a
2745 bogus .py extension is gone, at last. Examples were moved to a
2745 bogus .py extension is gone, at last. Examples were moved to a
2746 separate subdir under doc/, and the separate executable scripts
2746 separate subdir under doc/, and the separate executable scripts
2747 now live in their own directory. Overall a great cleanup. The
2747 now live in their own directory. Overall a great cleanup. The
2748 manual was updated to use the new files, and setup.py has been
2748 manual was updated to use the new files, and setup.py has been
2749 fixed for this setup.
2749 fixed for this setup.
2750
2750
2751 * IPython/PyColorize.py (Parser.usage): made non-executable and
2751 * IPython/PyColorize.py (Parser.usage): made non-executable and
2752 created a pycolor wrapper around it to be included as a script.
2752 created a pycolor wrapper around it to be included as a script.
2753
2753
2754 2003-03-12 *** Released version 0.2.15pre2
2754 2003-03-12 *** Released version 0.2.15pre2
2755
2755
2756 2003-03-12 Fernando Perez <fperez@colorado.edu>
2756 2003-03-12 Fernando Perez <fperez@colorado.edu>
2757
2757
2758 * IPython/ColorANSI.py (make_color_table): Finally fixed the
2758 * IPython/ColorANSI.py (make_color_table): Finally fixed the
2759 long-standing problem with garbage characters in some terminals.
2759 long-standing problem with garbage characters in some terminals.
2760 The issue was really that the \001 and \002 escapes must _only_ be
2760 The issue was really that the \001 and \002 escapes must _only_ be
2761 passed to input prompts (which call readline), but _never_ to
2761 passed to input prompts (which call readline), but _never_ to
2762 normal text to be printed on screen. I changed ColorANSI to have
2762 normal text to be printed on screen. I changed ColorANSI to have
2763 two classes: TermColors and InputTermColors, each with the
2763 two classes: TermColors and InputTermColors, each with the
2764 appropriate escapes for input prompts or normal text. The code in
2764 appropriate escapes for input prompts or normal text. The code in
2765 Prompts.py got slightly more complicated, but this very old and
2765 Prompts.py got slightly more complicated, but this very old and
2766 annoying bug is finally fixed.
2766 annoying bug is finally fixed.
2767
2767
2768 All the credit for nailing down the real origin of this problem
2768 All the credit for nailing down the real origin of this problem
2769 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
2769 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
2770 *Many* thanks to him for spending quite a bit of effort on this.
2770 *Many* thanks to him for spending quite a bit of effort on this.
2771
2771
2772 2003-03-05 *** Released version 0.2.15pre1
2772 2003-03-05 *** Released version 0.2.15pre1
2773
2773
2774 2003-03-03 Fernando Perez <fperez@colorado.edu>
2774 2003-03-03 Fernando Perez <fperez@colorado.edu>
2775
2775
2776 * IPython/FakeModule.py: Moved the former _FakeModule to a
2776 * IPython/FakeModule.py: Moved the former _FakeModule to a
2777 separate file, because it's also needed by Magic (to fix a similar
2777 separate file, because it's also needed by Magic (to fix a similar
2778 pickle-related issue in @run).
2778 pickle-related issue in @run).
2779
2779
2780 2003-03-02 Fernando Perez <fperez@colorado.edu>
2780 2003-03-02 Fernando Perez <fperez@colorado.edu>
2781
2781
2782 * IPython/Magic.py (Magic.magic_autocall): new magic to control
2782 * IPython/Magic.py (Magic.magic_autocall): new magic to control
2783 the autocall option at runtime.
2783 the autocall option at runtime.
2784 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
2784 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
2785 across Magic.py to start separating Magic from InteractiveShell.
2785 across Magic.py to start separating Magic from InteractiveShell.
2786 (Magic._ofind): Fixed to return proper namespace for dotted
2786 (Magic._ofind): Fixed to return proper namespace for dotted
2787 names. Before, a dotted name would always return 'not currently
2787 names. Before, a dotted name would always return 'not currently
2788 defined', because it would find the 'parent'. s.x would be found,
2788 defined', because it would find the 'parent'. s.x would be found,
2789 but since 'x' isn't defined by itself, it would get confused.
2789 but since 'x' isn't defined by itself, it would get confused.
2790 (Magic.magic_run): Fixed pickling problems reported by Ralf
2790 (Magic.magic_run): Fixed pickling problems reported by Ralf
2791 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
2791 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
2792 that I'd used when Mike Heeter reported similar issues at the
2792 that I'd used when Mike Heeter reported similar issues at the
2793 top-level, but now for @run. It boils down to injecting the
2793 top-level, but now for @run. It boils down to injecting the
2794 namespace where code is being executed with something that looks
2794 namespace where code is being executed with something that looks
2795 enough like a module to fool pickle.dump(). Since a pickle stores
2795 enough like a module to fool pickle.dump(). Since a pickle stores
2796 a named reference to the importing module, we need this for
2796 a named reference to the importing module, we need this for
2797 pickles to save something sensible.
2797 pickles to save something sensible.
2798
2798
2799 * IPython/ipmaker.py (make_IPython): added an autocall option.
2799 * IPython/ipmaker.py (make_IPython): added an autocall option.
2800
2800
2801 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
2801 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
2802 the auto-eval code. Now autocalling is an option, and the code is
2802 the auto-eval code. Now autocalling is an option, and the code is
2803 also vastly safer. There is no more eval() involved at all.
2803 also vastly safer. There is no more eval() involved at all.
2804
2804
2805 2003-03-01 Fernando Perez <fperez@colorado.edu>
2805 2003-03-01 Fernando Perez <fperez@colorado.edu>
2806
2806
2807 * IPython/Magic.py (Magic._ofind): Changed interface to return a
2807 * IPython/Magic.py (Magic._ofind): Changed interface to return a
2808 dict with named keys instead of a tuple.
2808 dict with named keys instead of a tuple.
2809
2809
2810 * IPython: Started using CVS for IPython as of 0.2.15pre1.
2810 * IPython: Started using CVS for IPython as of 0.2.15pre1.
2811
2811
2812 * setup.py (make_shortcut): Fixed message about directories
2812 * setup.py (make_shortcut): Fixed message about directories
2813 created during Windows installation (the directories were ok, just
2813 created during Windows installation (the directories were ok, just
2814 the printed message was misleading). Thanks to Chris Liechti
2814 the printed message was misleading). Thanks to Chris Liechti
2815 <cliechti-AT-gmx.net> for the heads up.
2815 <cliechti-AT-gmx.net> for the heads up.
2816
2816
2817 2003-02-21 Fernando Perez <fperez@colorado.edu>
2817 2003-02-21 Fernando Perez <fperez@colorado.edu>
2818
2818
2819 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
2819 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
2820 of ValueError exception when checking for auto-execution. This
2820 of ValueError exception when checking for auto-execution. This
2821 one is raised by things like Numeric arrays arr.flat when the
2821 one is raised by things like Numeric arrays arr.flat when the
2822 array is non-contiguous.
2822 array is non-contiguous.
2823
2823
2824 2003-01-31 Fernando Perez <fperez@colorado.edu>
2824 2003-01-31 Fernando Perez <fperez@colorado.edu>
2825
2825
2826 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
2826 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
2827 not return any value at all (even though the command would get
2827 not return any value at all (even though the command would get
2828 executed).
2828 executed).
2829 (xsys): Flush stdout right after printing the command to ensure
2829 (xsys): Flush stdout right after printing the command to ensure
2830 proper ordering of commands and command output in the total
2830 proper ordering of commands and command output in the total
2831 output.
2831 output.
2832 (SystemExec/xsys/bq): Switched the names of xsys/bq and
2832 (SystemExec/xsys/bq): Switched the names of xsys/bq and
2833 system/getoutput as defaults. The old ones are kept for
2833 system/getoutput as defaults. The old ones are kept for
2834 compatibility reasons, so no code which uses this library needs
2834 compatibility reasons, so no code which uses this library needs
2835 changing.
2835 changing.
2836
2836
2837 2003-01-27 *** Released version 0.2.14
2837 2003-01-27 *** Released version 0.2.14
2838
2838
2839 2003-01-25 Fernando Perez <fperez@colorado.edu>
2839 2003-01-25 Fernando Perez <fperez@colorado.edu>
2840
2840
2841 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
2841 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
2842 functions defined in previous edit sessions could not be re-edited
2842 functions defined in previous edit sessions could not be re-edited
2843 (because the temp files were immediately removed). Now temp files
2843 (because the temp files were immediately removed). Now temp files
2844 are removed only at IPython's exit.
2844 are removed only at IPython's exit.
2845 (Magic.magic_run): Improved @run to perform shell-like expansions
2845 (Magic.magic_run): Improved @run to perform shell-like expansions
2846 on its arguments (~users and $VARS). With this, @run becomes more
2846 on its arguments (~users and $VARS). With this, @run becomes more
2847 like a normal command-line.
2847 like a normal command-line.
2848
2848
2849 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
2849 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
2850 bugs related to embedding and cleaned up that code. A fairly
2850 bugs related to embedding and cleaned up that code. A fairly
2851 important one was the impossibility to access the global namespace
2851 important one was the impossibility to access the global namespace
2852 through the embedded IPython (only local variables were visible).
2852 through the embedded IPython (only local variables were visible).
2853
2853
2854 2003-01-14 Fernando Perez <fperez@colorado.edu>
2854 2003-01-14 Fernando Perez <fperez@colorado.edu>
2855
2855
2856 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
2856 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
2857 auto-calling to be a bit more conservative. Now it doesn't get
2857 auto-calling to be a bit more conservative. Now it doesn't get
2858 triggered if any of '!=()<>' are in the rest of the input line, to
2858 triggered if any of '!=()<>' are in the rest of the input line, to
2859 allow comparing callables. Thanks to Alex for the heads up.
2859 allow comparing callables. Thanks to Alex for the heads up.
2860
2860
2861 2003-01-07 Fernando Perez <fperez@colorado.edu>
2861 2003-01-07 Fernando Perez <fperez@colorado.edu>
2862
2862
2863 * IPython/genutils.py (page): fixed estimation of the number of
2863 * IPython/genutils.py (page): fixed estimation of the number of
2864 lines in a string to be paged to simply count newlines. This
2864 lines in a string to be paged to simply count newlines. This
2865 prevents over-guessing due to embedded escape sequences. A better
2865 prevents over-guessing due to embedded escape sequences. A better
2866 long-term solution would involve stripping out the control chars
2866 long-term solution would involve stripping out the control chars
2867 for the count, but it's potentially so expensive I just don't
2867 for the count, but it's potentially so expensive I just don't
2868 think it's worth doing.
2868 think it's worth doing.
2869
2869
2870 2002-12-19 *** Released version 0.2.14pre50
2870 2002-12-19 *** Released version 0.2.14pre50
2871
2871
2872 2002-12-19 Fernando Perez <fperez@colorado.edu>
2872 2002-12-19 Fernando Perez <fperez@colorado.edu>
2873
2873
2874 * tools/release (version): Changed release scripts to inform
2874 * tools/release (version): Changed release scripts to inform
2875 Andrea and build a NEWS file with a list of recent changes.
2875 Andrea and build a NEWS file with a list of recent changes.
2876
2876
2877 * IPython/ColorANSI.py (__all__): changed terminal detection
2877 * IPython/ColorANSI.py (__all__): changed terminal detection
2878 code. Seems to work better for xterms without breaking
2878 code. Seems to work better for xterms without breaking
2879 konsole. Will need more testing to determine if WinXP and Mac OSX
2879 konsole. Will need more testing to determine if WinXP and Mac OSX
2880 also work ok.
2880 also work ok.
2881
2881
2882 2002-12-18 *** Released version 0.2.14pre49
2882 2002-12-18 *** Released version 0.2.14pre49
2883
2883
2884 2002-12-18 Fernando Perez <fperez@colorado.edu>
2884 2002-12-18 Fernando Perez <fperez@colorado.edu>
2885
2885
2886 * Docs: added new info about Mac OSX, from Andrea.
2886 * Docs: added new info about Mac OSX, from Andrea.
2887
2887
2888 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
2888 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
2889 allow direct plotting of python strings whose format is the same
2889 allow direct plotting of python strings whose format is the same
2890 of gnuplot data files.
2890 of gnuplot data files.
2891
2891
2892 2002-12-16 Fernando Perez <fperez@colorado.edu>
2892 2002-12-16 Fernando Perez <fperez@colorado.edu>
2893
2893
2894 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
2894 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
2895 value of exit question to be acknowledged.
2895 value of exit question to be acknowledged.
2896
2896
2897 2002-12-03 Fernando Perez <fperez@colorado.edu>
2897 2002-12-03 Fernando Perez <fperez@colorado.edu>
2898
2898
2899 * IPython/ipmaker.py: removed generators, which had been added
2899 * IPython/ipmaker.py: removed generators, which had been added
2900 by mistake in an earlier debugging run. This was causing trouble
2900 by mistake in an earlier debugging run. This was causing trouble
2901 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
2901 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
2902 for pointing this out.
2902 for pointing this out.
2903
2903
2904 2002-11-17 Fernando Perez <fperez@colorado.edu>
2904 2002-11-17 Fernando Perez <fperez@colorado.edu>
2905
2905
2906 * Manual: updated the Gnuplot section.
2906 * Manual: updated the Gnuplot section.
2907
2907
2908 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
2908 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
2909 a much better split of what goes in Runtime and what goes in
2909 a much better split of what goes in Runtime and what goes in
2910 Interactive.
2910 Interactive.
2911
2911
2912 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
2912 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
2913 being imported from iplib.
2913 being imported from iplib.
2914
2914
2915 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
2915 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
2916 for command-passing. Now the global Gnuplot instance is called
2916 for command-passing. Now the global Gnuplot instance is called
2917 'gp' instead of 'g', which was really a far too fragile and
2917 'gp' instead of 'g', which was really a far too fragile and
2918 common name.
2918 common name.
2919
2919
2920 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
2920 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
2921 bounding boxes generated by Gnuplot for square plots.
2921 bounding boxes generated by Gnuplot for square plots.
2922
2922
2923 * IPython/genutils.py (popkey): new function added. I should
2923 * IPython/genutils.py (popkey): new function added. I should
2924 suggest this on c.l.py as a dict method, it seems useful.
2924 suggest this on c.l.py as a dict method, it seems useful.
2925
2925
2926 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
2926 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
2927 to transparently handle PostScript generation. MUCH better than
2927 to transparently handle PostScript generation. MUCH better than
2928 the previous plot_eps/replot_eps (which I removed now). The code
2928 the previous plot_eps/replot_eps (which I removed now). The code
2929 is also fairly clean and well documented now (including
2929 is also fairly clean and well documented now (including
2930 docstrings).
2930 docstrings).
2931
2931
2932 2002-11-13 Fernando Perez <fperez@colorado.edu>
2932 2002-11-13 Fernando Perez <fperez@colorado.edu>
2933
2933
2934 * IPython/Magic.py (Magic.magic_edit): fixed docstring
2934 * IPython/Magic.py (Magic.magic_edit): fixed docstring
2935 (inconsistent with options).
2935 (inconsistent with options).
2936
2936
2937 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
2937 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
2938 manually disabled, I don't know why. Fixed it.
2938 manually disabled, I don't know why. Fixed it.
2939 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
2939 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
2940 eps output.
2940 eps output.
2941
2941
2942 2002-11-12 Fernando Perez <fperez@colorado.edu>
2942 2002-11-12 Fernando Perez <fperez@colorado.edu>
2943
2943
2944 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
2944 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
2945 don't propagate up to caller. Fixes crash reported by François
2945 don't propagate up to caller. Fixes crash reported by François
2946 Pinard.
2946 Pinard.
2947
2947
2948 2002-11-09 Fernando Perez <fperez@colorado.edu>
2948 2002-11-09 Fernando Perez <fperez@colorado.edu>
2949
2949
2950 * IPython/ipmaker.py (make_IPython): fixed problem with writing
2950 * IPython/ipmaker.py (make_IPython): fixed problem with writing
2951 history file for new users.
2951 history file for new users.
2952 (make_IPython): fixed bug where initial install would leave the
2952 (make_IPython): fixed bug where initial install would leave the
2953 user running in the .ipython dir.
2953 user running in the .ipython dir.
2954 (make_IPython): fixed bug where config dir .ipython would be
2954 (make_IPython): fixed bug where config dir .ipython would be
2955 created regardless of the given -ipythondir option. Thanks to Cory
2955 created regardless of the given -ipythondir option. Thanks to Cory
2956 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
2956 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
2957
2957
2958 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
2958 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
2959 type confirmations. Will need to use it in all of IPython's code
2959 type confirmations. Will need to use it in all of IPython's code
2960 consistently.
2960 consistently.
2961
2961
2962 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
2962 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
2963 context to print 31 lines instead of the default 5. This will make
2963 context to print 31 lines instead of the default 5. This will make
2964 the crash reports extremely detailed in case the problem is in
2964 the crash reports extremely detailed in case the problem is in
2965 libraries I don't have access to.
2965 libraries I don't have access to.
2966
2966
2967 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
2967 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
2968 line of defense' code to still crash, but giving users fair
2968 line of defense' code to still crash, but giving users fair
2969 warning. I don't want internal errors to go unreported: if there's
2969 warning. I don't want internal errors to go unreported: if there's
2970 an internal problem, IPython should crash and generate a full
2970 an internal problem, IPython should crash and generate a full
2971 report.
2971 report.
2972
2972
2973 2002-11-08 Fernando Perez <fperez@colorado.edu>
2973 2002-11-08 Fernando Perez <fperez@colorado.edu>
2974
2974
2975 * IPython/iplib.py (InteractiveShell.interact): added code to trap
2975 * IPython/iplib.py (InteractiveShell.interact): added code to trap
2976 otherwise uncaught exceptions which can appear if people set
2976 otherwise uncaught exceptions which can appear if people set
2977 sys.stdout to something badly broken. Thanks to a crash report
2977 sys.stdout to something badly broken. Thanks to a crash report
2978 from henni-AT-mail.brainbot.com.
2978 from henni-AT-mail.brainbot.com.
2979
2979
2980 2002-11-04 Fernando Perez <fperez@colorado.edu>
2980 2002-11-04 Fernando Perez <fperez@colorado.edu>
2981
2981
2982 * IPython/iplib.py (InteractiveShell.interact): added
2982 * IPython/iplib.py (InteractiveShell.interact): added
2983 __IPYTHON__active to the builtins. It's a flag which goes on when
2983 __IPYTHON__active to the builtins. It's a flag which goes on when
2984 the interaction starts and goes off again when it stops. This
2984 the interaction starts and goes off again when it stops. This
2985 allows embedding code to detect being inside IPython. Before this
2985 allows embedding code to detect being inside IPython. Before this
2986 was done via __IPYTHON__, but that only shows that an IPython
2986 was done via __IPYTHON__, but that only shows that an IPython
2987 instance has been created.
2987 instance has been created.
2988
2988
2989 * IPython/Magic.py (Magic.magic_env): I realized that in a
2989 * IPython/Magic.py (Magic.magic_env): I realized that in a
2990 UserDict, instance.data holds the data as a normal dict. So I
2990 UserDict, instance.data holds the data as a normal dict. So I
2991 modified @env to return os.environ.data instead of rebuilding a
2991 modified @env to return os.environ.data instead of rebuilding a
2992 dict by hand.
2992 dict by hand.
2993
2993
2994 2002-11-02 Fernando Perez <fperez@colorado.edu>
2994 2002-11-02 Fernando Perez <fperez@colorado.edu>
2995
2995
2996 * IPython/genutils.py (warn): changed so that level 1 prints no
2996 * IPython/genutils.py (warn): changed so that level 1 prints no
2997 header. Level 2 is now the default (with 'WARNING' header, as
2997 header. Level 2 is now the default (with 'WARNING' header, as
2998 before). I think I tracked all places where changes were needed in
2998 before). I think I tracked all places where changes were needed in
2999 IPython, but outside code using the old level numbering may have
2999 IPython, but outside code using the old level numbering may have
3000 broken.
3000 broken.
3001
3001
3002 * IPython/iplib.py (InteractiveShell.runcode): added this to
3002 * IPython/iplib.py (InteractiveShell.runcode): added this to
3003 handle the tracebacks in SystemExit traps correctly. The previous
3003 handle the tracebacks in SystemExit traps correctly. The previous
3004 code (through interact) was printing more of the stack than
3004 code (through interact) was printing more of the stack than
3005 necessary, showing IPython internal code to the user.
3005 necessary, showing IPython internal code to the user.
3006
3006
3007 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3007 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3008 default. Now that the default at the confirmation prompt is yes,
3008 default. Now that the default at the confirmation prompt is yes,
3009 it's not so intrusive. François' argument that ipython sessions
3009 it's not so intrusive. François' argument that ipython sessions
3010 tend to be complex enough not to lose them from an accidental C-d,
3010 tend to be complex enough not to lose them from an accidental C-d,
3011 is a valid one.
3011 is a valid one.
3012
3012
3013 * IPython/iplib.py (InteractiveShell.interact): added a
3013 * IPython/iplib.py (InteractiveShell.interact): added a
3014 showtraceback() call to the SystemExit trap, and modified the exit
3014 showtraceback() call to the SystemExit trap, and modified the exit
3015 confirmation to have yes as the default.
3015 confirmation to have yes as the default.
3016
3016
3017 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3017 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3018 this file. It's been gone from the code for a long time, this was
3018 this file. It's been gone from the code for a long time, this was
3019 simply leftover junk.
3019 simply leftover junk.
3020
3020
3021 2002-11-01 Fernando Perez <fperez@colorado.edu>
3021 2002-11-01 Fernando Perez <fperez@colorado.edu>
3022
3022
3023 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3023 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3024 added. If set, IPython now traps EOF and asks for
3024 added. If set, IPython now traps EOF and asks for
3025 confirmation. After a request by François Pinard.
3025 confirmation. After a request by François Pinard.
3026
3026
3027 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3027 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3028 of @abort, and with a new (better) mechanism for handling the
3028 of @abort, and with a new (better) mechanism for handling the
3029 exceptions.
3029 exceptions.
3030
3030
3031 2002-10-27 Fernando Perez <fperez@colorado.edu>
3031 2002-10-27 Fernando Perez <fperez@colorado.edu>
3032
3032
3033 * IPython/usage.py (__doc__): updated the --help information and
3033 * IPython/usage.py (__doc__): updated the --help information and
3034 the ipythonrc file to indicate that -log generates
3034 the ipythonrc file to indicate that -log generates
3035 ./ipython.log. Also fixed the corresponding info in @logstart.
3035 ./ipython.log. Also fixed the corresponding info in @logstart.
3036 This and several other fixes in the manuals thanks to reports by
3036 This and several other fixes in the manuals thanks to reports by
3037 François Pinard <pinard-AT-iro.umontreal.ca>.
3037 François Pinard <pinard-AT-iro.umontreal.ca>.
3038
3038
3039 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3039 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3040 refer to @logstart (instead of @log, which doesn't exist).
3040 refer to @logstart (instead of @log, which doesn't exist).
3041
3041
3042 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3042 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3043 AttributeError crash. Thanks to Christopher Armstrong
3043 AttributeError crash. Thanks to Christopher Armstrong
3044 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3044 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3045 introduced recently (in 0.2.14pre37) with the fix to the eval
3045 introduced recently (in 0.2.14pre37) with the fix to the eval
3046 problem mentioned below.
3046 problem mentioned below.
3047
3047
3048 2002-10-17 Fernando Perez <fperez@colorado.edu>
3048 2002-10-17 Fernando Perez <fperez@colorado.edu>
3049
3049
3050 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3050 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3051 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3051 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3052
3052
3053 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3053 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3054 this function to fix a problem reported by Alex Schmolck. He saw
3054 this function to fix a problem reported by Alex Schmolck. He saw
3055 it with list comprehensions and generators, which were getting
3055 it with list comprehensions and generators, which were getting
3056 called twice. The real problem was an 'eval' call in testing for
3056 called twice. The real problem was an 'eval' call in testing for
3057 automagic which was evaluating the input line silently.
3057 automagic which was evaluating the input line silently.
3058
3058
3059 This is a potentially very nasty bug, if the input has side
3059 This is a potentially very nasty bug, if the input has side
3060 effects which must not be repeated. The code is much cleaner now,
3060 effects which must not be repeated. The code is much cleaner now,
3061 without any blanket 'except' left and with a regexp test for
3061 without any blanket 'except' left and with a regexp test for
3062 actual function names.
3062 actual function names.
3063
3063
3064 But an eval remains, which I'm not fully comfortable with. I just
3064 But an eval remains, which I'm not fully comfortable with. I just
3065 don't know how to find out if an expression could be a callable in
3065 don't know how to find out if an expression could be a callable in
3066 the user's namespace without doing an eval on the string. However
3066 the user's namespace without doing an eval on the string. However
3067 that string is now much more strictly checked so that no code
3067 that string is now much more strictly checked so that no code
3068 slips by, so the eval should only happen for things that can
3068 slips by, so the eval should only happen for things that can
3069 really be only function/method names.
3069 really be only function/method names.
3070
3070
3071 2002-10-15 Fernando Perez <fperez@colorado.edu>
3071 2002-10-15 Fernando Perez <fperez@colorado.edu>
3072
3072
3073 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3073 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3074 OSX information to main manual, removed README_Mac_OSX file from
3074 OSX information to main manual, removed README_Mac_OSX file from
3075 distribution. Also updated credits for recent additions.
3075 distribution. Also updated credits for recent additions.
3076
3076
3077 2002-10-10 Fernando Perez <fperez@colorado.edu>
3077 2002-10-10 Fernando Perez <fperez@colorado.edu>
3078
3078
3079 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3079 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3080 terminal-related issues. Many thanks to Andrea Riciputi
3080 terminal-related issues. Many thanks to Andrea Riciputi
3081 <andrea.riciputi-AT-libero.it> for writing it.
3081 <andrea.riciputi-AT-libero.it> for writing it.
3082
3082
3083 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3083 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3084 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3084 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3085
3085
3086 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3086 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3087 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3087 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3088 <syver-en-AT-online.no> who both submitted patches for this problem.
3088 <syver-en-AT-online.no> who both submitted patches for this problem.
3089
3089
3090 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3090 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3091 global embedding to make sure that things don't overwrite user
3091 global embedding to make sure that things don't overwrite user
3092 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3092 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3093
3093
3094 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3094 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3095 compatibility. Thanks to Hayden Callow
3095 compatibility. Thanks to Hayden Callow
3096 <h.callow-AT-elec.canterbury.ac.nz>
3096 <h.callow-AT-elec.canterbury.ac.nz>
3097
3097
3098 2002-10-04 Fernando Perez <fperez@colorado.edu>
3098 2002-10-04 Fernando Perez <fperez@colorado.edu>
3099
3099
3100 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3100 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3101 Gnuplot.File objects.
3101 Gnuplot.File objects.
3102
3102
3103 2002-07-23 Fernando Perez <fperez@colorado.edu>
3103 2002-07-23 Fernando Perez <fperez@colorado.edu>
3104
3104
3105 * IPython/genutils.py (timing): Added timings() and timing() for
3105 * IPython/genutils.py (timing): Added timings() and timing() for
3106 quick access to the most commonly needed data, the execution
3106 quick access to the most commonly needed data, the execution
3107 times. Old timing() renamed to timings_out().
3107 times. Old timing() renamed to timings_out().
3108
3108
3109 2002-07-18 Fernando Perez <fperez@colorado.edu>
3109 2002-07-18 Fernando Perez <fperez@colorado.edu>
3110
3110
3111 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3111 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3112 bug with nested instances disrupting the parent's tab completion.
3112 bug with nested instances disrupting the parent's tab completion.
3113
3113
3114 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3114 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3115 all_completions code to begin the emacs integration.
3115 all_completions code to begin the emacs integration.
3116
3116
3117 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3117 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3118 argument to allow titling individual arrays when plotting.
3118 argument to allow titling individual arrays when plotting.
3119
3119
3120 2002-07-15 Fernando Perez <fperez@colorado.edu>
3120 2002-07-15 Fernando Perez <fperez@colorado.edu>
3121
3121
3122 * setup.py (make_shortcut): changed to retrieve the value of
3122 * setup.py (make_shortcut): changed to retrieve the value of
3123 'Program Files' directory from the registry (this value changes in
3123 'Program Files' directory from the registry (this value changes in
3124 non-english versions of Windows). Thanks to Thomas Fanslau
3124 non-english versions of Windows). Thanks to Thomas Fanslau
3125 <tfanslau-AT-gmx.de> for the report.
3125 <tfanslau-AT-gmx.de> for the report.
3126
3126
3127 2002-07-10 Fernando Perez <fperez@colorado.edu>
3127 2002-07-10 Fernando Perez <fperez@colorado.edu>
3128
3128
3129 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3129 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3130 a bug in pdb, which crashes if a line with only whitespace is
3130 a bug in pdb, which crashes if a line with only whitespace is
3131 entered. Bug report submitted to sourceforge.
3131 entered. Bug report submitted to sourceforge.
3132
3132
3133 2002-07-09 Fernando Perez <fperez@colorado.edu>
3133 2002-07-09 Fernando Perez <fperez@colorado.edu>
3134
3134
3135 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3135 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3136 reporting exceptions (it's a bug in inspect.py, I just set a
3136 reporting exceptions (it's a bug in inspect.py, I just set a
3137 workaround).
3137 workaround).
3138
3138
3139 2002-07-08 Fernando Perez <fperez@colorado.edu>
3139 2002-07-08 Fernando Perez <fperez@colorado.edu>
3140
3140
3141 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3141 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3142 __IPYTHON__ in __builtins__ to show up in user_ns.
3142 __IPYTHON__ in __builtins__ to show up in user_ns.
3143
3143
3144 2002-07-03 Fernando Perez <fperez@colorado.edu>
3144 2002-07-03 Fernando Perez <fperez@colorado.edu>
3145
3145
3146 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3146 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3147 name from @gp_set_instance to @gp_set_default.
3147 name from @gp_set_instance to @gp_set_default.
3148
3148
3149 * IPython/ipmaker.py (make_IPython): default editor value set to
3149 * IPython/ipmaker.py (make_IPython): default editor value set to
3150 '0' (a string), to match the rc file. Otherwise will crash when
3150 '0' (a string), to match the rc file. Otherwise will crash when
3151 .strip() is called on it.
3151 .strip() is called on it.
3152
3152
3153
3153
3154 2002-06-28 Fernando Perez <fperez@colorado.edu>
3154 2002-06-28 Fernando Perez <fperez@colorado.edu>
3155
3155
3156 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3156 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3157 of files in current directory when a file is executed via
3157 of files in current directory when a file is executed via
3158 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3158 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3159
3159
3160 * setup.py (manfiles): fix for rpm builds, submitted by RA
3160 * setup.py (manfiles): fix for rpm builds, submitted by RA
3161 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3161 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3162
3162
3163 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3163 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3164 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3164 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3165 string!). A. Schmolck caught this one.
3165 string!). A. Schmolck caught this one.
3166
3166
3167 2002-06-27 Fernando Perez <fperez@colorado.edu>
3167 2002-06-27 Fernando Perez <fperez@colorado.edu>
3168
3168
3169 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3169 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3170 defined files at the cmd line. __name__ wasn't being set to
3170 defined files at the cmd line. __name__ wasn't being set to
3171 __main__.
3171 __main__.
3172
3172
3173 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3173 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3174 regular lists and tuples besides Numeric arrays.
3174 regular lists and tuples besides Numeric arrays.
3175
3175
3176 * IPython/Prompts.py (CachedOutput.__call__): Added output
3176 * IPython/Prompts.py (CachedOutput.__call__): Added output
3177 supression for input ending with ';'. Similar to Mathematica and
3177 supression for input ending with ';'. Similar to Mathematica and
3178 Matlab. The _* vars and Out[] list are still updated, just like
3178 Matlab. The _* vars and Out[] list are still updated, just like
3179 Mathematica behaves.
3179 Mathematica behaves.
3180
3180
3181 2002-06-25 Fernando Perez <fperez@colorado.edu>
3181 2002-06-25 Fernando Perez <fperez@colorado.edu>
3182
3182
3183 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3183 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3184 .ini extensions for profiels under Windows.
3184 .ini extensions for profiels under Windows.
3185
3185
3186 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3186 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3187 string form. Fix contributed by Alexander Schmolck
3187 string form. Fix contributed by Alexander Schmolck
3188 <a.schmolck-AT-gmx.net>
3188 <a.schmolck-AT-gmx.net>
3189
3189
3190 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3190 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3191 pre-configured Gnuplot instance.
3191 pre-configured Gnuplot instance.
3192
3192
3193 2002-06-21 Fernando Perez <fperez@colorado.edu>
3193 2002-06-21 Fernando Perez <fperez@colorado.edu>
3194
3194
3195 * IPython/numutils.py (exp_safe): new function, works around the
3195 * IPython/numutils.py (exp_safe): new function, works around the
3196 underflow problems in Numeric.
3196 underflow problems in Numeric.
3197 (log2): New fn. Safe log in base 2: returns exact integer answer
3197 (log2): New fn. Safe log in base 2: returns exact integer answer
3198 for exact integer powers of 2.
3198 for exact integer powers of 2.
3199
3199
3200 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3200 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3201 properly.
3201 properly.
3202
3202
3203 2002-06-20 Fernando Perez <fperez@colorado.edu>
3203 2002-06-20 Fernando Perez <fperez@colorado.edu>
3204
3204
3205 * IPython/genutils.py (timing): new function like
3205 * IPython/genutils.py (timing): new function like
3206 Mathematica's. Similar to time_test, but returns more info.
3206 Mathematica's. Similar to time_test, but returns more info.
3207
3207
3208 2002-06-18 Fernando Perez <fperez@colorado.edu>
3208 2002-06-18 Fernando Perez <fperez@colorado.edu>
3209
3209
3210 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3210 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3211 according to Mike Heeter's suggestions.
3211 according to Mike Heeter's suggestions.
3212
3212
3213 2002-06-16 Fernando Perez <fperez@colorado.edu>
3213 2002-06-16 Fernando Perez <fperez@colorado.edu>
3214
3214
3215 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3215 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3216 system. GnuplotMagic is gone as a user-directory option. New files
3216 system. GnuplotMagic is gone as a user-directory option. New files
3217 make it easier to use all the gnuplot stuff both from external
3217 make it easier to use all the gnuplot stuff both from external
3218 programs as well as from IPython. Had to rewrite part of
3218 programs as well as from IPython. Had to rewrite part of
3219 hardcopy() b/c of a strange bug: often the ps files simply don't
3219 hardcopy() b/c of a strange bug: often the ps files simply don't
3220 get created, and require a repeat of the command (often several
3220 get created, and require a repeat of the command (often several
3221 times).
3221 times).
3222
3222
3223 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3223 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3224 resolve output channel at call time, so that if sys.stderr has
3224 resolve output channel at call time, so that if sys.stderr has
3225 been redirected by user this gets honored.
3225 been redirected by user this gets honored.
3226
3226
3227 2002-06-13 Fernando Perez <fperez@colorado.edu>
3227 2002-06-13 Fernando Perez <fperez@colorado.edu>
3228
3228
3229 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3229 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3230 IPShell. Kept a copy with the old names to avoid breaking people's
3230 IPShell. Kept a copy with the old names to avoid breaking people's
3231 embedded code.
3231 embedded code.
3232
3232
3233 * IPython/ipython: simplified it to the bare minimum after
3233 * IPython/ipython: simplified it to the bare minimum after
3234 Holger's suggestions. Added info about how to use it in
3234 Holger's suggestions. Added info about how to use it in
3235 PYTHONSTARTUP.
3235 PYTHONSTARTUP.
3236
3236
3237 * IPython/Shell.py (IPythonShell): changed the options passing
3237 * IPython/Shell.py (IPythonShell): changed the options passing
3238 from a string with funky %s replacements to a straight list. Maybe
3238 from a string with funky %s replacements to a straight list. Maybe
3239 a bit more typing, but it follows sys.argv conventions, so there's
3239 a bit more typing, but it follows sys.argv conventions, so there's
3240 less special-casing to remember.
3240 less special-casing to remember.
3241
3241
3242 2002-06-12 Fernando Perez <fperez@colorado.edu>
3242 2002-06-12 Fernando Perez <fperez@colorado.edu>
3243
3243
3244 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3244 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3245 command. Thanks to a suggestion by Mike Heeter.
3245 command. Thanks to a suggestion by Mike Heeter.
3246 (Magic.magic_pfile): added behavior to look at filenames if given
3246 (Magic.magic_pfile): added behavior to look at filenames if given
3247 arg is not a defined object.
3247 arg is not a defined object.
3248 (Magic.magic_save): New @save function to save code snippets. Also
3248 (Magic.magic_save): New @save function to save code snippets. Also
3249 a Mike Heeter idea.
3249 a Mike Heeter idea.
3250
3250
3251 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3251 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3252 plot() and replot(). Much more convenient now, especially for
3252 plot() and replot(). Much more convenient now, especially for
3253 interactive use.
3253 interactive use.
3254
3254
3255 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3255 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3256 filenames.
3256 filenames.
3257
3257
3258 2002-06-02 Fernando Perez <fperez@colorado.edu>
3258 2002-06-02 Fernando Perez <fperez@colorado.edu>
3259
3259
3260 * IPython/Struct.py (Struct.__init__): modified to admit
3260 * IPython/Struct.py (Struct.__init__): modified to admit
3261 initialization via another struct.
3261 initialization via another struct.
3262
3262
3263 * IPython/genutils.py (SystemExec.__init__): New stateful
3263 * IPython/genutils.py (SystemExec.__init__): New stateful
3264 interface to xsys and bq. Useful for writing system scripts.
3264 interface to xsys and bq. Useful for writing system scripts.
3265
3265
3266 2002-05-30 Fernando Perez <fperez@colorado.edu>
3266 2002-05-30 Fernando Perez <fperez@colorado.edu>
3267
3267
3268 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3268 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3269 documents. This will make the user download smaller (it's getting
3269 documents. This will make the user download smaller (it's getting
3270 too big).
3270 too big).
3271
3271
3272 2002-05-29 Fernando Perez <fperez@colorado.edu>
3272 2002-05-29 Fernando Perez <fperez@colorado.edu>
3273
3273
3274 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3274 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3275 fix problems with shelve and pickle. Seems to work, but I don't
3275 fix problems with shelve and pickle. Seems to work, but I don't
3276 know if corner cases break it. Thanks to Mike Heeter
3276 know if corner cases break it. Thanks to Mike Heeter
3277 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3277 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3278
3278
3279 2002-05-24 Fernando Perez <fperez@colorado.edu>
3279 2002-05-24 Fernando Perez <fperez@colorado.edu>
3280
3280
3281 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3281 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3282 macros having broken.
3282 macros having broken.
3283
3283
3284 2002-05-21 Fernando Perez <fperez@colorado.edu>
3284 2002-05-21 Fernando Perez <fperez@colorado.edu>
3285
3285
3286 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3286 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3287 introduced logging bug: all history before logging started was
3287 introduced logging bug: all history before logging started was
3288 being written one character per line! This came from the redesign
3288 being written one character per line! This came from the redesign
3289 of the input history as a special list which slices to strings,
3289 of the input history as a special list which slices to strings,
3290 not to lists.
3290 not to lists.
3291
3291
3292 2002-05-20 Fernando Perez <fperez@colorado.edu>
3292 2002-05-20 Fernando Perez <fperez@colorado.edu>
3293
3293
3294 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3294 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3295 be an attribute of all classes in this module. The design of these
3295 be an attribute of all classes in this module. The design of these
3296 classes needs some serious overhauling.
3296 classes needs some serious overhauling.
3297
3297
3298 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3298 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3299 which was ignoring '_' in option names.
3299 which was ignoring '_' in option names.
3300
3300
3301 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3301 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3302 'Verbose_novars' to 'Context' and made it the new default. It's a
3302 'Verbose_novars' to 'Context' and made it the new default. It's a
3303 bit more readable and also safer than verbose.
3303 bit more readable and also safer than verbose.
3304
3304
3305 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3305 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3306 triple-quoted strings.
3306 triple-quoted strings.
3307
3307
3308 * IPython/OInspect.py (__all__): new module exposing the object
3308 * IPython/OInspect.py (__all__): new module exposing the object
3309 introspection facilities. Now the corresponding magics are dummy
3309 introspection facilities. Now the corresponding magics are dummy
3310 wrappers around this. Having this module will make it much easier
3310 wrappers around this. Having this module will make it much easier
3311 to put these functions into our modified pdb.
3311 to put these functions into our modified pdb.
3312 This new object inspector system uses the new colorizing module,
3312 This new object inspector system uses the new colorizing module,
3313 so source code and other things are nicely syntax highlighted.
3313 so source code and other things are nicely syntax highlighted.
3314
3314
3315 2002-05-18 Fernando Perez <fperez@colorado.edu>
3315 2002-05-18 Fernando Perez <fperez@colorado.edu>
3316
3316
3317 * IPython/ColorANSI.py: Split the coloring tools into a separate
3317 * IPython/ColorANSI.py: Split the coloring tools into a separate
3318 module so I can use them in other code easier (they were part of
3318 module so I can use them in other code easier (they were part of
3319 ultraTB).
3319 ultraTB).
3320
3320
3321 2002-05-17 Fernando Perez <fperez@colorado.edu>
3321 2002-05-17 Fernando Perez <fperez@colorado.edu>
3322
3322
3323 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3323 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3324 fixed it to set the global 'g' also to the called instance, as
3324 fixed it to set the global 'g' also to the called instance, as
3325 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3325 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3326 user's 'g' variables).
3326 user's 'g' variables).
3327
3327
3328 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3328 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3329 global variables (aliases to _ih,_oh) so that users which expect
3329 global variables (aliases to _ih,_oh) so that users which expect
3330 In[5] or Out[7] to work aren't unpleasantly surprised.
3330 In[5] or Out[7] to work aren't unpleasantly surprised.
3331 (InputList.__getslice__): new class to allow executing slices of
3331 (InputList.__getslice__): new class to allow executing slices of
3332 input history directly. Very simple class, complements the use of
3332 input history directly. Very simple class, complements the use of
3333 macros.
3333 macros.
3334
3334
3335 2002-05-16 Fernando Perez <fperez@colorado.edu>
3335 2002-05-16 Fernando Perez <fperez@colorado.edu>
3336
3336
3337 * setup.py (docdirbase): make doc directory be just doc/IPython
3337 * setup.py (docdirbase): make doc directory be just doc/IPython
3338 without version numbers, it will reduce clutter for users.
3338 without version numbers, it will reduce clutter for users.
3339
3339
3340 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3340 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3341 execfile call to prevent possible memory leak. See for details:
3341 execfile call to prevent possible memory leak. See for details:
3342 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3342 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3343
3343
3344 2002-05-15 Fernando Perez <fperez@colorado.edu>
3344 2002-05-15 Fernando Perez <fperez@colorado.edu>
3345
3345
3346 * IPython/Magic.py (Magic.magic_psource): made the object
3346 * IPython/Magic.py (Magic.magic_psource): made the object
3347 introspection names be more standard: pdoc, pdef, pfile and
3347 introspection names be more standard: pdoc, pdef, pfile and
3348 psource. They all print/page their output, and it makes
3348 psource. They all print/page their output, and it makes
3349 remembering them easier. Kept old names for compatibility as
3349 remembering them easier. Kept old names for compatibility as
3350 aliases.
3350 aliases.
3351
3351
3352 2002-05-14 Fernando Perez <fperez@colorado.edu>
3352 2002-05-14 Fernando Perez <fperez@colorado.edu>
3353
3353
3354 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3354 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3355 what the mouse problem was. The trick is to use gnuplot with temp
3355 what the mouse problem was. The trick is to use gnuplot with temp
3356 files and NOT with pipes (for data communication), because having
3356 files and NOT with pipes (for data communication), because having
3357 both pipes and the mouse on is bad news.
3357 both pipes and the mouse on is bad news.
3358
3358
3359 2002-05-13 Fernando Perez <fperez@colorado.edu>
3359 2002-05-13 Fernando Perez <fperez@colorado.edu>
3360
3360
3361 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3361 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3362 bug. Information would be reported about builtins even when
3362 bug. Information would be reported about builtins even when
3363 user-defined functions overrode them.
3363 user-defined functions overrode them.
3364
3364
3365 2002-05-11 Fernando Perez <fperez@colorado.edu>
3365 2002-05-11 Fernando Perez <fperez@colorado.edu>
3366
3366
3367 * IPython/__init__.py (__all__): removed FlexCompleter from
3367 * IPython/__init__.py (__all__): removed FlexCompleter from
3368 __all__ so that things don't fail in platforms without readline.
3368 __all__ so that things don't fail in platforms without readline.
3369
3369
3370 2002-05-10 Fernando Perez <fperez@colorado.edu>
3370 2002-05-10 Fernando Perez <fperez@colorado.edu>
3371
3371
3372 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3372 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3373 it requires Numeric, effectively making Numeric a dependency for
3373 it requires Numeric, effectively making Numeric a dependency for
3374 IPython.
3374 IPython.
3375
3375
3376 * Released 0.2.13
3376 * Released 0.2.13
3377
3377
3378 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3378 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3379 profiler interface. Now all the major options from the profiler
3379 profiler interface. Now all the major options from the profiler
3380 module are directly supported in IPython, both for single
3380 module are directly supported in IPython, both for single
3381 expressions (@prun) and for full programs (@run -p).
3381 expressions (@prun) and for full programs (@run -p).
3382
3382
3383 2002-05-09 Fernando Perez <fperez@colorado.edu>
3383 2002-05-09 Fernando Perez <fperez@colorado.edu>
3384
3384
3385 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3385 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3386 magic properly formatted for screen.
3386 magic properly formatted for screen.
3387
3387
3388 * setup.py (make_shortcut): Changed things to put pdf version in
3388 * setup.py (make_shortcut): Changed things to put pdf version in
3389 doc/ instead of doc/manual (had to change lyxport a bit).
3389 doc/ instead of doc/manual (had to change lyxport a bit).
3390
3390
3391 * IPython/Magic.py (Profile.string_stats): made profile runs go
3391 * IPython/Magic.py (Profile.string_stats): made profile runs go
3392 through pager (they are long and a pager allows searching, saving,
3392 through pager (they are long and a pager allows searching, saving,
3393 etc.)
3393 etc.)
3394
3394
3395 2002-05-08 Fernando Perez <fperez@colorado.edu>
3395 2002-05-08 Fernando Perez <fperez@colorado.edu>
3396
3396
3397 * Released 0.2.12
3397 * Released 0.2.12
3398
3398
3399 2002-05-06 Fernando Perez <fperez@colorado.edu>
3399 2002-05-06 Fernando Perez <fperez@colorado.edu>
3400
3400
3401 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3401 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3402 introduced); 'hist n1 n2' was broken.
3402 introduced); 'hist n1 n2' was broken.
3403 (Magic.magic_pdb): added optional on/off arguments to @pdb
3403 (Magic.magic_pdb): added optional on/off arguments to @pdb
3404 (Magic.magic_run): added option -i to @run, which executes code in
3404 (Magic.magic_run): added option -i to @run, which executes code in
3405 the IPython namespace instead of a clean one. Also added @irun as
3405 the IPython namespace instead of a clean one. Also added @irun as
3406 an alias to @run -i.
3406 an alias to @run -i.
3407
3407
3408 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3408 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3409 fixed (it didn't really do anything, the namespaces were wrong).
3409 fixed (it didn't really do anything, the namespaces were wrong).
3410
3410
3411 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3411 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3412
3412
3413 * IPython/__init__.py (__all__): Fixed package namespace, now
3413 * IPython/__init__.py (__all__): Fixed package namespace, now
3414 'import IPython' does give access to IPython.<all> as
3414 'import IPython' does give access to IPython.<all> as
3415 expected. Also renamed __release__ to Release.
3415 expected. Also renamed __release__ to Release.
3416
3416
3417 * IPython/Debugger.py (__license__): created new Pdb class which
3417 * IPython/Debugger.py (__license__): created new Pdb class which
3418 functions like a drop-in for the normal pdb.Pdb but does NOT
3418 functions like a drop-in for the normal pdb.Pdb but does NOT
3419 import readline by default. This way it doesn't muck up IPython's
3419 import readline by default. This way it doesn't muck up IPython's
3420 readline handling, and now tab-completion finally works in the
3420 readline handling, and now tab-completion finally works in the
3421 debugger -- sort of. It completes things globally visible, but the
3421 debugger -- sort of. It completes things globally visible, but the
3422 completer doesn't track the stack as pdb walks it. That's a bit
3422 completer doesn't track the stack as pdb walks it. That's a bit
3423 tricky, and I'll have to implement it later.
3423 tricky, and I'll have to implement it later.
3424
3424
3425 2002-05-05 Fernando Perez <fperez@colorado.edu>
3425 2002-05-05 Fernando Perez <fperez@colorado.edu>
3426
3426
3427 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3427 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3428 magic docstrings when printed via ? (explicit \'s were being
3428 magic docstrings when printed via ? (explicit \'s were being
3429 printed).
3429 printed).
3430
3430
3431 * IPython/ipmaker.py (make_IPython): fixed namespace
3431 * IPython/ipmaker.py (make_IPython): fixed namespace
3432 identification bug. Now variables loaded via logs or command-line
3432 identification bug. Now variables loaded via logs or command-line
3433 files are recognized in the interactive namespace by @who.
3433 files are recognized in the interactive namespace by @who.
3434
3434
3435 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3435 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3436 log replay system stemming from the string form of Structs.
3436 log replay system stemming from the string form of Structs.
3437
3437
3438 * IPython/Magic.py (Macro.__init__): improved macros to properly
3438 * IPython/Magic.py (Macro.__init__): improved macros to properly
3439 handle magic commands in them.
3439 handle magic commands in them.
3440 (Magic.magic_logstart): usernames are now expanded so 'logstart
3440 (Magic.magic_logstart): usernames are now expanded so 'logstart
3441 ~/mylog' now works.
3441 ~/mylog' now works.
3442
3442
3443 * IPython/iplib.py (complete): fixed bug where paths starting with
3443 * IPython/iplib.py (complete): fixed bug where paths starting with
3444 '/' would be completed as magic names.
3444 '/' would be completed as magic names.
3445
3445
3446 2002-05-04 Fernando Perez <fperez@colorado.edu>
3446 2002-05-04 Fernando Perez <fperez@colorado.edu>
3447
3447
3448 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
3448 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
3449 allow running full programs under the profiler's control.
3449 allow running full programs under the profiler's control.
3450
3450
3451 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
3451 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
3452 mode to report exceptions verbosely but without formatting
3452 mode to report exceptions verbosely but without formatting
3453 variables. This addresses the issue of ipython 'freezing' (it's
3453 variables. This addresses the issue of ipython 'freezing' (it's
3454 not frozen, but caught in an expensive formatting loop) when huge
3454 not frozen, but caught in an expensive formatting loop) when huge
3455 variables are in the context of an exception.
3455 variables are in the context of an exception.
3456 (VerboseTB.text): Added '--->' markers at line where exception was
3456 (VerboseTB.text): Added '--->' markers at line where exception was
3457 triggered. Much clearer to read, especially in NoColor modes.
3457 triggered. Much clearer to read, especially in NoColor modes.
3458
3458
3459 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
3459 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
3460 implemented in reverse when changing to the new parse_options().
3460 implemented in reverse when changing to the new parse_options().
3461
3461
3462 2002-05-03 Fernando Perez <fperez@colorado.edu>
3462 2002-05-03 Fernando Perez <fperez@colorado.edu>
3463
3463
3464 * IPython/Magic.py (Magic.parse_options): new function so that
3464 * IPython/Magic.py (Magic.parse_options): new function so that
3465 magics can parse options easier.
3465 magics can parse options easier.
3466 (Magic.magic_prun): new function similar to profile.run(),
3466 (Magic.magic_prun): new function similar to profile.run(),
3467 suggested by Chris Hart.
3467 suggested by Chris Hart.
3468 (Magic.magic_cd): fixed behavior so that it only changes if
3468 (Magic.magic_cd): fixed behavior so that it only changes if
3469 directory actually is in history.
3469 directory actually is in history.
3470
3470
3471 * IPython/usage.py (__doc__): added information about potential
3471 * IPython/usage.py (__doc__): added information about potential
3472 slowness of Verbose exception mode when there are huge data
3472 slowness of Verbose exception mode when there are huge data
3473 structures to be formatted (thanks to Archie Paulson).
3473 structures to be formatted (thanks to Archie Paulson).
3474
3474
3475 * IPython/ipmaker.py (make_IPython): Changed default logging
3475 * IPython/ipmaker.py (make_IPython): Changed default logging
3476 (when simply called with -log) to use curr_dir/ipython.log in
3476 (when simply called with -log) to use curr_dir/ipython.log in
3477 rotate mode. Fixed crash which was occuring with -log before
3477 rotate mode. Fixed crash which was occuring with -log before
3478 (thanks to Jim Boyle).
3478 (thanks to Jim Boyle).
3479
3479
3480 2002-05-01 Fernando Perez <fperez@colorado.edu>
3480 2002-05-01 Fernando Perez <fperez@colorado.edu>
3481
3481
3482 * Released 0.2.11 for these fixes (mainly the ultraTB one which
3482 * Released 0.2.11 for these fixes (mainly the ultraTB one which
3483 was nasty -- though somewhat of a corner case).
3483 was nasty -- though somewhat of a corner case).
3484
3484
3485 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
3485 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
3486 text (was a bug).
3486 text (was a bug).
3487
3487
3488 2002-04-30 Fernando Perez <fperez@colorado.edu>
3488 2002-04-30 Fernando Perez <fperez@colorado.edu>
3489
3489
3490 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
3490 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
3491 a print after ^D or ^C from the user so that the In[] prompt
3491 a print after ^D or ^C from the user so that the In[] prompt
3492 doesn't over-run the gnuplot one.
3492 doesn't over-run the gnuplot one.
3493
3493
3494 2002-04-29 Fernando Perez <fperez@colorado.edu>
3494 2002-04-29 Fernando Perez <fperez@colorado.edu>
3495
3495
3496 * Released 0.2.10
3496 * Released 0.2.10
3497
3497
3498 * IPython/__release__.py (version): get date dynamically.
3498 * IPython/__release__.py (version): get date dynamically.
3499
3499
3500 * Misc. documentation updates thanks to Arnd's comments. Also ran
3500 * Misc. documentation updates thanks to Arnd's comments. Also ran
3501 a full spellcheck on the manual (hadn't been done in a while).
3501 a full spellcheck on the manual (hadn't been done in a while).
3502
3502
3503 2002-04-27 Fernando Perez <fperez@colorado.edu>
3503 2002-04-27 Fernando Perez <fperez@colorado.edu>
3504
3504
3505 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
3505 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
3506 starting a log in mid-session would reset the input history list.
3506 starting a log in mid-session would reset the input history list.
3507
3507
3508 2002-04-26 Fernando Perez <fperez@colorado.edu>
3508 2002-04-26 Fernando Perez <fperez@colorado.edu>
3509
3509
3510 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
3510 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
3511 all files were being included in an update. Now anything in
3511 all files were being included in an update. Now anything in
3512 UserConfig that matches [A-Za-z]*.py will go (this excludes
3512 UserConfig that matches [A-Za-z]*.py will go (this excludes
3513 __init__.py)
3513 __init__.py)
3514
3514
3515 2002-04-25 Fernando Perez <fperez@colorado.edu>
3515 2002-04-25 Fernando Perez <fperez@colorado.edu>
3516
3516
3517 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
3517 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
3518 to __builtins__ so that any form of embedded or imported code can
3518 to __builtins__ so that any form of embedded or imported code can
3519 test for being inside IPython.
3519 test for being inside IPython.
3520
3520
3521 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
3521 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
3522 changed to GnuplotMagic because it's now an importable module,
3522 changed to GnuplotMagic because it's now an importable module,
3523 this makes the name follow that of the standard Gnuplot module.
3523 this makes the name follow that of the standard Gnuplot module.
3524 GnuplotMagic can now be loaded at any time in mid-session.
3524 GnuplotMagic can now be loaded at any time in mid-session.
3525
3525
3526 2002-04-24 Fernando Perez <fperez@colorado.edu>
3526 2002-04-24 Fernando Perez <fperez@colorado.edu>
3527
3527
3528 * IPython/numutils.py: removed SIUnits. It doesn't properly set
3528 * IPython/numutils.py: removed SIUnits. It doesn't properly set
3529 the globals (IPython has its own namespace) and the
3529 the globals (IPython has its own namespace) and the
3530 PhysicalQuantity stuff is much better anyway.
3530 PhysicalQuantity stuff is much better anyway.
3531
3531
3532 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
3532 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
3533 embedding example to standard user directory for
3533 embedding example to standard user directory for
3534 distribution. Also put it in the manual.
3534 distribution. Also put it in the manual.
3535
3535
3536 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
3536 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
3537 instance as first argument (so it doesn't rely on some obscure
3537 instance as first argument (so it doesn't rely on some obscure
3538 hidden global).
3538 hidden global).
3539
3539
3540 * IPython/UserConfig/ipythonrc.py: put () back in accepted
3540 * IPython/UserConfig/ipythonrc.py: put () back in accepted
3541 delimiters. While it prevents ().TAB from working, it allows
3541 delimiters. While it prevents ().TAB from working, it allows
3542 completions in open (... expressions. This is by far a more common
3542 completions in open (... expressions. This is by far a more common
3543 case.
3543 case.
3544
3544
3545 2002-04-23 Fernando Perez <fperez@colorado.edu>
3545 2002-04-23 Fernando Perez <fperez@colorado.edu>
3546
3546
3547 * IPython/Extensions/InterpreterPasteInput.py: new
3547 * IPython/Extensions/InterpreterPasteInput.py: new
3548 syntax-processing module for pasting lines with >>> or ... at the
3548 syntax-processing module for pasting lines with >>> or ... at the
3549 start.
3549 start.
3550
3550
3551 * IPython/Extensions/PhysicalQ_Interactive.py
3551 * IPython/Extensions/PhysicalQ_Interactive.py
3552 (PhysicalQuantityInteractive.__int__): fixed to work with either
3552 (PhysicalQuantityInteractive.__int__): fixed to work with either
3553 Numeric or math.
3553 Numeric or math.
3554
3554
3555 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
3555 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
3556 provided profiles. Now we have:
3556 provided profiles. Now we have:
3557 -math -> math module as * and cmath with its own namespace.
3557 -math -> math module as * and cmath with its own namespace.
3558 -numeric -> Numeric as *, plus gnuplot & grace
3558 -numeric -> Numeric as *, plus gnuplot & grace
3559 -physics -> same as before
3559 -physics -> same as before
3560
3560
3561 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
3561 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
3562 user-defined magics wouldn't be found by @magic if they were
3562 user-defined magics wouldn't be found by @magic if they were
3563 defined as class methods. Also cleaned up the namespace search
3563 defined as class methods. Also cleaned up the namespace search
3564 logic and the string building (to use %s instead of many repeated
3564 logic and the string building (to use %s instead of many repeated
3565 string adds).
3565 string adds).
3566
3566
3567 * IPython/UserConfig/example-magic.py (magic_foo): updated example
3567 * IPython/UserConfig/example-magic.py (magic_foo): updated example
3568 of user-defined magics to operate with class methods (cleaner, in
3568 of user-defined magics to operate with class methods (cleaner, in
3569 line with the gnuplot code).
3569 line with the gnuplot code).
3570
3570
3571 2002-04-22 Fernando Perez <fperez@colorado.edu>
3571 2002-04-22 Fernando Perez <fperez@colorado.edu>
3572
3572
3573 * setup.py: updated dependency list so that manual is updated when
3573 * setup.py: updated dependency list so that manual is updated when
3574 all included files change.
3574 all included files change.
3575
3575
3576 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
3576 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
3577 the delimiter removal option (the fix is ugly right now).
3577 the delimiter removal option (the fix is ugly right now).
3578
3578
3579 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
3579 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
3580 all of the math profile (quicker loading, no conflict between
3580 all of the math profile (quicker loading, no conflict between
3581 g-9.8 and g-gnuplot).
3581 g-9.8 and g-gnuplot).
3582
3582
3583 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
3583 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
3584 name of post-mortem files to IPython_crash_report.txt.
3584 name of post-mortem files to IPython_crash_report.txt.
3585
3585
3586 * Cleanup/update of the docs. Added all the new readline info and
3586 * Cleanup/update of the docs. Added all the new readline info and
3587 formatted all lists as 'real lists'.
3587 formatted all lists as 'real lists'.
3588
3588
3589 * IPython/ipmaker.py (make_IPython): removed now-obsolete
3589 * IPython/ipmaker.py (make_IPython): removed now-obsolete
3590 tab-completion options, since the full readline parse_and_bind is
3590 tab-completion options, since the full readline parse_and_bind is
3591 now accessible.
3591 now accessible.
3592
3592
3593 * IPython/iplib.py (InteractiveShell.init_readline): Changed
3593 * IPython/iplib.py (InteractiveShell.init_readline): Changed
3594 handling of readline options. Now users can specify any string to
3594 handling of readline options. Now users can specify any string to
3595 be passed to parse_and_bind(), as well as the delimiters to be
3595 be passed to parse_and_bind(), as well as the delimiters to be
3596 removed.
3596 removed.
3597 (InteractiveShell.__init__): Added __name__ to the global
3597 (InteractiveShell.__init__): Added __name__ to the global
3598 namespace so that things like Itpl which rely on its existence
3598 namespace so that things like Itpl which rely on its existence
3599 don't crash.
3599 don't crash.
3600 (InteractiveShell._prefilter): Defined the default with a _ so
3600 (InteractiveShell._prefilter): Defined the default with a _ so
3601 that prefilter() is easier to override, while the default one
3601 that prefilter() is easier to override, while the default one
3602 remains available.
3602 remains available.
3603
3603
3604 2002-04-18 Fernando Perez <fperez@colorado.edu>
3604 2002-04-18 Fernando Perez <fperez@colorado.edu>
3605
3605
3606 * Added information about pdb in the docs.
3606 * Added information about pdb in the docs.
3607
3607
3608 2002-04-17 Fernando Perez <fperez@colorado.edu>
3608 2002-04-17 Fernando Perez <fperez@colorado.edu>
3609
3609
3610 * IPython/ipmaker.py (make_IPython): added rc_override option to
3610 * IPython/ipmaker.py (make_IPython): added rc_override option to
3611 allow passing config options at creation time which may override
3611 allow passing config options at creation time which may override
3612 anything set in the config files or command line. This is
3612 anything set in the config files or command line. This is
3613 particularly useful for configuring embedded instances.
3613 particularly useful for configuring embedded instances.
3614
3614
3615 2002-04-15 Fernando Perez <fperez@colorado.edu>
3615 2002-04-15 Fernando Perez <fperez@colorado.edu>
3616
3616
3617 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
3617 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
3618 crash embedded instances because of the input cache falling out of
3618 crash embedded instances because of the input cache falling out of
3619 sync with the output counter.
3619 sync with the output counter.
3620
3620
3621 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
3621 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
3622 mode which calls pdb after an uncaught exception in IPython itself.
3622 mode which calls pdb after an uncaught exception in IPython itself.
3623
3623
3624 2002-04-14 Fernando Perez <fperez@colorado.edu>
3624 2002-04-14 Fernando Perez <fperez@colorado.edu>
3625
3625
3626 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
3626 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
3627 readline, fix it back after each call.
3627 readline, fix it back after each call.
3628
3628
3629 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
3629 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
3630 method to force all access via __call__(), which guarantees that
3630 method to force all access via __call__(), which guarantees that
3631 traceback references are properly deleted.
3631 traceback references are properly deleted.
3632
3632
3633 * IPython/Prompts.py (CachedOutput._display): minor fixes to
3633 * IPython/Prompts.py (CachedOutput._display): minor fixes to
3634 improve printing when pprint is in use.
3634 improve printing when pprint is in use.
3635
3635
3636 2002-04-13 Fernando Perez <fperez@colorado.edu>
3636 2002-04-13 Fernando Perez <fperez@colorado.edu>
3637
3637
3638 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
3638 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
3639 exceptions aren't caught anymore. If the user triggers one, he
3639 exceptions aren't caught anymore. If the user triggers one, he
3640 should know why he's doing it and it should go all the way up,
3640 should know why he's doing it and it should go all the way up,
3641 just like any other exception. So now @abort will fully kill the
3641 just like any other exception. So now @abort will fully kill the
3642 embedded interpreter and the embedding code (unless that happens
3642 embedded interpreter and the embedding code (unless that happens
3643 to catch SystemExit).
3643 to catch SystemExit).
3644
3644
3645 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
3645 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
3646 and a debugger() method to invoke the interactive pdb debugger
3646 and a debugger() method to invoke the interactive pdb debugger
3647 after printing exception information. Also added the corresponding
3647 after printing exception information. Also added the corresponding
3648 -pdb option and @pdb magic to control this feature, and updated
3648 -pdb option and @pdb magic to control this feature, and updated
3649 the docs. After a suggestion from Christopher Hart
3649 the docs. After a suggestion from Christopher Hart
3650 (hart-AT-caltech.edu).
3650 (hart-AT-caltech.edu).
3651
3651
3652 2002-04-12 Fernando Perez <fperez@colorado.edu>
3652 2002-04-12 Fernando Perez <fperez@colorado.edu>
3653
3653
3654 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
3654 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
3655 the exception handlers defined by the user (not the CrashHandler)
3655 the exception handlers defined by the user (not the CrashHandler)
3656 so that user exceptions don't trigger an ipython bug report.
3656 so that user exceptions don't trigger an ipython bug report.
3657
3657
3658 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
3658 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
3659 configurable (it should have always been so).
3659 configurable (it should have always been so).
3660
3660
3661 2002-03-26 Fernando Perez <fperez@colorado.edu>
3661 2002-03-26 Fernando Perez <fperez@colorado.edu>
3662
3662
3663 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
3663 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
3664 and there to fix embedding namespace issues. This should all be
3664 and there to fix embedding namespace issues. This should all be
3665 done in a more elegant way.
3665 done in a more elegant way.
3666
3666
3667 2002-03-25 Fernando Perez <fperez@colorado.edu>
3667 2002-03-25 Fernando Perez <fperez@colorado.edu>
3668
3668
3669 * IPython/genutils.py (get_home_dir): Try to make it work under
3669 * IPython/genutils.py (get_home_dir): Try to make it work under
3670 win9x also.
3670 win9x also.
3671
3671
3672 2002-03-20 Fernando Perez <fperez@colorado.edu>
3672 2002-03-20 Fernando Perez <fperez@colorado.edu>
3673
3673
3674 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
3674 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
3675 sys.displayhook untouched upon __init__.
3675 sys.displayhook untouched upon __init__.
3676
3676
3677 2002-03-19 Fernando Perez <fperez@colorado.edu>
3677 2002-03-19 Fernando Perez <fperez@colorado.edu>
3678
3678
3679 * Released 0.2.9 (for embedding bug, basically).
3679 * Released 0.2.9 (for embedding bug, basically).
3680
3680
3681 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
3681 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
3682 exceptions so that enclosing shell's state can be restored.
3682 exceptions so that enclosing shell's state can be restored.
3683
3683
3684 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
3684 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
3685 naming conventions in the .ipython/ dir.
3685 naming conventions in the .ipython/ dir.
3686
3686
3687 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
3687 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
3688 from delimiters list so filenames with - in them get expanded.
3688 from delimiters list so filenames with - in them get expanded.
3689
3689
3690 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
3690 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
3691 sys.displayhook not being properly restored after an embedded call.
3691 sys.displayhook not being properly restored after an embedded call.
3692
3692
3693 2002-03-18 Fernando Perez <fperez@colorado.edu>
3693 2002-03-18 Fernando Perez <fperez@colorado.edu>
3694
3694
3695 * Released 0.2.8
3695 * Released 0.2.8
3696
3696
3697 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
3697 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
3698 some files weren't being included in a -upgrade.
3698 some files weren't being included in a -upgrade.
3699 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
3699 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
3700 on' so that the first tab completes.
3700 on' so that the first tab completes.
3701 (InteractiveShell.handle_magic): fixed bug with spaces around
3701 (InteractiveShell.handle_magic): fixed bug with spaces around
3702 quotes breaking many magic commands.
3702 quotes breaking many magic commands.
3703
3703
3704 * setup.py: added note about ignoring the syntax error messages at
3704 * setup.py: added note about ignoring the syntax error messages at
3705 installation.
3705 installation.
3706
3706
3707 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
3707 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
3708 streamlining the gnuplot interface, now there's only one magic @gp.
3708 streamlining the gnuplot interface, now there's only one magic @gp.
3709
3709
3710 2002-03-17 Fernando Perez <fperez@colorado.edu>
3710 2002-03-17 Fernando Perez <fperez@colorado.edu>
3711
3711
3712 * IPython/UserConfig/magic_gnuplot.py: new name for the
3712 * IPython/UserConfig/magic_gnuplot.py: new name for the
3713 example-magic_pm.py file. Much enhanced system, now with a shell
3713 example-magic_pm.py file. Much enhanced system, now with a shell
3714 for communicating directly with gnuplot, one command at a time.
3714 for communicating directly with gnuplot, one command at a time.
3715
3715
3716 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
3716 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
3717 setting __name__=='__main__'.
3717 setting __name__=='__main__'.
3718
3718
3719 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
3719 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
3720 mini-shell for accessing gnuplot from inside ipython. Should
3720 mini-shell for accessing gnuplot from inside ipython. Should
3721 extend it later for grace access too. Inspired by Arnd's
3721 extend it later for grace access too. Inspired by Arnd's
3722 suggestion.
3722 suggestion.
3723
3723
3724 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
3724 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
3725 calling magic functions with () in their arguments. Thanks to Arnd
3725 calling magic functions with () in their arguments. Thanks to Arnd
3726 Baecker for pointing this to me.
3726 Baecker for pointing this to me.
3727
3727
3728 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
3728 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
3729 infinitely for integer or complex arrays (only worked with floats).
3729 infinitely for integer or complex arrays (only worked with floats).
3730
3730
3731 2002-03-16 Fernando Perez <fperez@colorado.edu>
3731 2002-03-16 Fernando Perez <fperez@colorado.edu>
3732
3732
3733 * setup.py: Merged setup and setup_windows into a single script
3733 * setup.py: Merged setup and setup_windows into a single script
3734 which properly handles things for windows users.
3734 which properly handles things for windows users.
3735
3735
3736 2002-03-15 Fernando Perez <fperez@colorado.edu>
3736 2002-03-15 Fernando Perez <fperez@colorado.edu>
3737
3737
3738 * Big change to the manual: now the magics are all automatically
3738 * Big change to the manual: now the magics are all automatically
3739 documented. This information is generated from their docstrings
3739 documented. This information is generated from their docstrings
3740 and put in a latex file included by the manual lyx file. This way
3740 and put in a latex file included by the manual lyx file. This way
3741 we get always up to date information for the magics. The manual
3741 we get always up to date information for the magics. The manual
3742 now also has proper version information, also auto-synced.
3742 now also has proper version information, also auto-synced.
3743
3743
3744 For this to work, an undocumented --magic_docstrings option was added.
3744 For this to work, an undocumented --magic_docstrings option was added.
3745
3745
3746 2002-03-13 Fernando Perez <fperez@colorado.edu>
3746 2002-03-13 Fernando Perez <fperez@colorado.edu>
3747
3747
3748 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
3748 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
3749 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
3749 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
3750
3750
3751 2002-03-12 Fernando Perez <fperez@colorado.edu>
3751 2002-03-12 Fernando Perez <fperez@colorado.edu>
3752
3752
3753 * IPython/ultraTB.py (TermColors): changed color escapes again to
3753 * IPython/ultraTB.py (TermColors): changed color escapes again to
3754 fix the (old, reintroduced) line-wrapping bug. Basically, if
3754 fix the (old, reintroduced) line-wrapping bug. Basically, if
3755 \001..\002 aren't given in the color escapes, lines get wrapped
3755 \001..\002 aren't given in the color escapes, lines get wrapped
3756 weirdly. But giving those screws up old xterms and emacs terms. So
3756 weirdly. But giving those screws up old xterms and emacs terms. So
3757 I added some logic for emacs terms to be ok, but I can't identify old
3757 I added some logic for emacs terms to be ok, but I can't identify old
3758 xterms separately ($TERM=='xterm' for many terminals, like konsole).
3758 xterms separately ($TERM=='xterm' for many terminals, like konsole).
3759
3759
3760 2002-03-10 Fernando Perez <fperez@colorado.edu>
3760 2002-03-10 Fernando Perez <fperez@colorado.edu>
3761
3761
3762 * IPython/usage.py (__doc__): Various documentation cleanups and
3762 * IPython/usage.py (__doc__): Various documentation cleanups and
3763 updates, both in usage docstrings and in the manual.
3763 updates, both in usage docstrings and in the manual.
3764
3764
3765 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
3765 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
3766 handling of caching. Set minimum acceptabe value for having a
3766 handling of caching. Set minimum acceptabe value for having a
3767 cache at 20 values.
3767 cache at 20 values.
3768
3768
3769 * IPython/iplib.py (InteractiveShell.user_setup): moved the
3769 * IPython/iplib.py (InteractiveShell.user_setup): moved the
3770 install_first_time function to a method, renamed it and added an
3770 install_first_time function to a method, renamed it and added an
3771 'upgrade' mode. Now people can update their config directory with
3771 'upgrade' mode. Now people can update their config directory with
3772 a simple command line switch (-upgrade, also new).
3772 a simple command line switch (-upgrade, also new).
3773
3773
3774 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
3774 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
3775 @file (convenient for automagic users under Python >= 2.2).
3775 @file (convenient for automagic users under Python >= 2.2).
3776 Removed @files (it seemed more like a plural than an abbrev. of
3776 Removed @files (it seemed more like a plural than an abbrev. of
3777 'file show').
3777 'file show').
3778
3778
3779 * IPython/iplib.py (install_first_time): Fixed crash if there were
3779 * IPython/iplib.py (install_first_time): Fixed crash if there were
3780 backup files ('~') in .ipython/ install directory.
3780 backup files ('~') in .ipython/ install directory.
3781
3781
3782 * IPython/ipmaker.py (make_IPython): fixes for new prompt
3782 * IPython/ipmaker.py (make_IPython): fixes for new prompt
3783 system. Things look fine, but these changes are fairly
3783 system. Things look fine, but these changes are fairly
3784 intrusive. Test them for a few days.
3784 intrusive. Test them for a few days.
3785
3785
3786 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
3786 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
3787 the prompts system. Now all in/out prompt strings are user
3787 the prompts system. Now all in/out prompt strings are user
3788 controllable. This is particularly useful for embedding, as one
3788 controllable. This is particularly useful for embedding, as one
3789 can tag embedded instances with particular prompts.
3789 can tag embedded instances with particular prompts.
3790
3790
3791 Also removed global use of sys.ps1/2, which now allows nested
3791 Also removed global use of sys.ps1/2, which now allows nested
3792 embeddings without any problems. Added command-line options for
3792 embeddings without any problems. Added command-line options for
3793 the prompt strings.
3793 the prompt strings.
3794
3794
3795 2002-03-08 Fernando Perez <fperez@colorado.edu>
3795 2002-03-08 Fernando Perez <fperez@colorado.edu>
3796
3796
3797 * IPython/UserConfig/example-embed-short.py (ipshell): added
3797 * IPython/UserConfig/example-embed-short.py (ipshell): added
3798 example file with the bare minimum code for embedding.
3798 example file with the bare minimum code for embedding.
3799
3799
3800 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
3800 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
3801 functionality for the embeddable shell to be activated/deactivated
3801 functionality for the embeddable shell to be activated/deactivated
3802 either globally or at each call.
3802 either globally or at each call.
3803
3803
3804 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
3804 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
3805 rewriting the prompt with '--->' for auto-inputs with proper
3805 rewriting the prompt with '--->' for auto-inputs with proper
3806 coloring. Now the previous UGLY hack in handle_auto() is gone, and
3806 coloring. Now the previous UGLY hack in handle_auto() is gone, and
3807 this is handled by the prompts class itself, as it should.
3807 this is handled by the prompts class itself, as it should.
3808
3808
3809 2002-03-05 Fernando Perez <fperez@colorado.edu>
3809 2002-03-05 Fernando Perez <fperez@colorado.edu>
3810
3810
3811 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
3811 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
3812 @logstart to avoid name clashes with the math log function.
3812 @logstart to avoid name clashes with the math log function.
3813
3813
3814 * Big updates to X/Emacs section of the manual.
3814 * Big updates to X/Emacs section of the manual.
3815
3815
3816 * Removed ipython_emacs. Milan explained to me how to pass
3816 * Removed ipython_emacs. Milan explained to me how to pass
3817 arguments to ipython through Emacs. Some day I'm going to end up
3817 arguments to ipython through Emacs. Some day I'm going to end up
3818 learning some lisp...
3818 learning some lisp...
3819
3819
3820 2002-03-04 Fernando Perez <fperez@colorado.edu>
3820 2002-03-04 Fernando Perez <fperez@colorado.edu>
3821
3821
3822 * IPython/ipython_emacs: Created script to be used as the
3822 * IPython/ipython_emacs: Created script to be used as the
3823 py-python-command Emacs variable so we can pass IPython
3823 py-python-command Emacs variable so we can pass IPython
3824 parameters. I can't figure out how to tell Emacs directly to pass
3824 parameters. I can't figure out how to tell Emacs directly to pass
3825 parameters to IPython, so a dummy shell script will do it.
3825 parameters to IPython, so a dummy shell script will do it.
3826
3826
3827 Other enhancements made for things to work better under Emacs'
3827 Other enhancements made for things to work better under Emacs'
3828 various types of terminals. Many thanks to Milan Zamazal
3828 various types of terminals. Many thanks to Milan Zamazal
3829 <pdm-AT-zamazal.org> for all the suggestions and pointers.
3829 <pdm-AT-zamazal.org> for all the suggestions and pointers.
3830
3830
3831 2002-03-01 Fernando Perez <fperez@colorado.edu>
3831 2002-03-01 Fernando Perez <fperez@colorado.edu>
3832
3832
3833 * IPython/ipmaker.py (make_IPython): added a --readline! option so
3833 * IPython/ipmaker.py (make_IPython): added a --readline! option so
3834 that loading of readline is now optional. This gives better
3834 that loading of readline is now optional. This gives better
3835 control to emacs users.
3835 control to emacs users.
3836
3836
3837 * IPython/ultraTB.py (__date__): Modified color escape sequences
3837 * IPython/ultraTB.py (__date__): Modified color escape sequences
3838 and now things work fine under xterm and in Emacs' term buffers
3838 and now things work fine under xterm and in Emacs' term buffers
3839 (though not shell ones). Well, in emacs you get colors, but all
3839 (though not shell ones). Well, in emacs you get colors, but all
3840 seem to be 'light' colors (no difference between dark and light
3840 seem to be 'light' colors (no difference between dark and light
3841 ones). But the garbage chars are gone, and also in xterms. It
3841 ones). But the garbage chars are gone, and also in xterms. It
3842 seems that now I'm using 'cleaner' ansi sequences.
3842 seems that now I'm using 'cleaner' ansi sequences.
3843
3843
3844 2002-02-21 Fernando Perez <fperez@colorado.edu>
3844 2002-02-21 Fernando Perez <fperez@colorado.edu>
3845
3845
3846 * Released 0.2.7 (mainly to publish the scoping fix).
3846 * Released 0.2.7 (mainly to publish the scoping fix).
3847
3847
3848 * IPython/Logger.py (Logger.logstate): added. A corresponding
3848 * IPython/Logger.py (Logger.logstate): added. A corresponding
3849 @logstate magic was created.
3849 @logstate magic was created.
3850
3850
3851 * IPython/Magic.py: fixed nested scoping problem under Python
3851 * IPython/Magic.py: fixed nested scoping problem under Python
3852 2.1.x (automagic wasn't working).
3852 2.1.x (automagic wasn't working).
3853
3853
3854 2002-02-20 Fernando Perez <fperez@colorado.edu>
3854 2002-02-20 Fernando Perez <fperez@colorado.edu>
3855
3855
3856 * Released 0.2.6.
3856 * Released 0.2.6.
3857
3857
3858 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
3858 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
3859 option so that logs can come out without any headers at all.
3859 option so that logs can come out without any headers at all.
3860
3860
3861 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
3861 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
3862 SciPy.
3862 SciPy.
3863
3863
3864 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
3864 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
3865 that embedded IPython calls don't require vars() to be explicitly
3865 that embedded IPython calls don't require vars() to be explicitly
3866 passed. Now they are extracted from the caller's frame (code
3866 passed. Now they are extracted from the caller's frame (code
3867 snatched from Eric Jones' weave). Added better documentation to
3867 snatched from Eric Jones' weave). Added better documentation to
3868 the section on embedding and the example file.
3868 the section on embedding and the example file.
3869
3869
3870 * IPython/genutils.py (page): Changed so that under emacs, it just
3870 * IPython/genutils.py (page): Changed so that under emacs, it just
3871 prints the string. You can then page up and down in the emacs
3871 prints the string. You can then page up and down in the emacs
3872 buffer itself. This is how the builtin help() works.
3872 buffer itself. This is how the builtin help() works.
3873
3873
3874 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
3874 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
3875 macro scoping: macros need to be executed in the user's namespace
3875 macro scoping: macros need to be executed in the user's namespace
3876 to work as if they had been typed by the user.
3876 to work as if they had been typed by the user.
3877
3877
3878 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
3878 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
3879 execute automatically (no need to type 'exec...'). They then
3879 execute automatically (no need to type 'exec...'). They then
3880 behave like 'true macros'. The printing system was also modified
3880 behave like 'true macros'. The printing system was also modified
3881 for this to work.
3881 for this to work.
3882
3882
3883 2002-02-19 Fernando Perez <fperez@colorado.edu>
3883 2002-02-19 Fernando Perez <fperez@colorado.edu>
3884
3884
3885 * IPython/genutils.py (page_file): new function for paging files
3885 * IPython/genutils.py (page_file): new function for paging files
3886 in an OS-independent way. Also necessary for file viewing to work
3886 in an OS-independent way. Also necessary for file viewing to work
3887 well inside Emacs buffers.
3887 well inside Emacs buffers.
3888 (page): Added checks for being in an emacs buffer.
3888 (page): Added checks for being in an emacs buffer.
3889 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
3889 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
3890 same bug in iplib.
3890 same bug in iplib.
3891
3891
3892 2002-02-18 Fernando Perez <fperez@colorado.edu>
3892 2002-02-18 Fernando Perez <fperez@colorado.edu>
3893
3893
3894 * IPython/iplib.py (InteractiveShell.init_readline): modified use
3894 * IPython/iplib.py (InteractiveShell.init_readline): modified use
3895 of readline so that IPython can work inside an Emacs buffer.
3895 of readline so that IPython can work inside an Emacs buffer.
3896
3896
3897 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
3897 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
3898 method signatures (they weren't really bugs, but it looks cleaner
3898 method signatures (they weren't really bugs, but it looks cleaner
3899 and keeps PyChecker happy).
3899 and keeps PyChecker happy).
3900
3900
3901 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
3901 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
3902 for implementing various user-defined hooks. Currently only
3902 for implementing various user-defined hooks. Currently only
3903 display is done.
3903 display is done.
3904
3904
3905 * IPython/Prompts.py (CachedOutput._display): changed display
3905 * IPython/Prompts.py (CachedOutput._display): changed display
3906 functions so that they can be dynamically changed by users easily.
3906 functions so that they can be dynamically changed by users easily.
3907
3907
3908 * IPython/Extensions/numeric_formats.py (num_display): added an
3908 * IPython/Extensions/numeric_formats.py (num_display): added an
3909 extension for printing NumPy arrays in flexible manners. It
3909 extension for printing NumPy arrays in flexible manners. It
3910 doesn't do anything yet, but all the structure is in
3910 doesn't do anything yet, but all the structure is in
3911 place. Ultimately the plan is to implement output format control
3911 place. Ultimately the plan is to implement output format control
3912 like in Octave.
3912 like in Octave.
3913
3913
3914 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
3914 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
3915 methods are found at run-time by all the automatic machinery.
3915 methods are found at run-time by all the automatic machinery.
3916
3916
3917 2002-02-17 Fernando Perez <fperez@colorado.edu>
3917 2002-02-17 Fernando Perez <fperez@colorado.edu>
3918
3918
3919 * setup_Windows.py (make_shortcut): documented. Cleaned up the
3919 * setup_Windows.py (make_shortcut): documented. Cleaned up the
3920 whole file a little.
3920 whole file a little.
3921
3921
3922 * ToDo: closed this document. Now there's a new_design.lyx
3922 * ToDo: closed this document. Now there's a new_design.lyx
3923 document for all new ideas. Added making a pdf of it for the
3923 document for all new ideas. Added making a pdf of it for the
3924 end-user distro.
3924 end-user distro.
3925
3925
3926 * IPython/Logger.py (Logger.switch_log): Created this to replace
3926 * IPython/Logger.py (Logger.switch_log): Created this to replace
3927 logon() and logoff(). It also fixes a nasty crash reported by
3927 logon() and logoff(). It also fixes a nasty crash reported by
3928 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
3928 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
3929
3929
3930 * IPython/iplib.py (complete): got auto-completion to work with
3930 * IPython/iplib.py (complete): got auto-completion to work with
3931 automagic (I had wanted this for a long time).
3931 automagic (I had wanted this for a long time).
3932
3932
3933 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
3933 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
3934 to @file, since file() is now a builtin and clashes with automagic
3934 to @file, since file() is now a builtin and clashes with automagic
3935 for @file.
3935 for @file.
3936
3936
3937 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
3937 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
3938 of this was previously in iplib, which had grown to more than 2000
3938 of this was previously in iplib, which had grown to more than 2000
3939 lines, way too long. No new functionality, but it makes managing
3939 lines, way too long. No new functionality, but it makes managing
3940 the code a bit easier.
3940 the code a bit easier.
3941
3941
3942 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
3942 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
3943 information to crash reports.
3943 information to crash reports.
3944
3944
3945 2002-02-12 Fernando Perez <fperez@colorado.edu>
3945 2002-02-12 Fernando Perez <fperez@colorado.edu>
3946
3946
3947 * Released 0.2.5.
3947 * Released 0.2.5.
3948
3948
3949 2002-02-11 Fernando Perez <fperez@colorado.edu>
3949 2002-02-11 Fernando Perez <fperez@colorado.edu>
3950
3950
3951 * Wrote a relatively complete Windows installer. It puts
3951 * Wrote a relatively complete Windows installer. It puts
3952 everything in place, creates Start Menu entries and fixes the
3952 everything in place, creates Start Menu entries and fixes the
3953 color issues. Nothing fancy, but it works.
3953 color issues. Nothing fancy, but it works.
3954
3954
3955 2002-02-10 Fernando Perez <fperez@colorado.edu>
3955 2002-02-10 Fernando Perez <fperez@colorado.edu>
3956
3956
3957 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
3957 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
3958 os.path.expanduser() call so that we can type @run ~/myfile.py and
3958 os.path.expanduser() call so that we can type @run ~/myfile.py and
3959 have thigs work as expected.
3959 have thigs work as expected.
3960
3960
3961 * IPython/genutils.py (page): fixed exception handling so things
3961 * IPython/genutils.py (page): fixed exception handling so things
3962 work both in Unix and Windows correctly. Quitting a pager triggers
3962 work both in Unix and Windows correctly. Quitting a pager triggers
3963 an IOError/broken pipe in Unix, and in windows not finding a pager
3963 an IOError/broken pipe in Unix, and in windows not finding a pager
3964 is also an IOError, so I had to actually look at the return value
3964 is also an IOError, so I had to actually look at the return value
3965 of the exception, not just the exception itself. Should be ok now.
3965 of the exception, not just the exception itself. Should be ok now.
3966
3966
3967 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
3967 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
3968 modified to allow case-insensitive color scheme changes.
3968 modified to allow case-insensitive color scheme changes.
3969
3969
3970 2002-02-09 Fernando Perez <fperez@colorado.edu>
3970 2002-02-09 Fernando Perez <fperez@colorado.edu>
3971
3971
3972 * IPython/genutils.py (native_line_ends): new function to leave
3972 * IPython/genutils.py (native_line_ends): new function to leave
3973 user config files with os-native line-endings.
3973 user config files with os-native line-endings.
3974
3974
3975 * README and manual updates.
3975 * README and manual updates.
3976
3976
3977 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
3977 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
3978 instead of StringType to catch Unicode strings.
3978 instead of StringType to catch Unicode strings.
3979
3979
3980 * IPython/genutils.py (filefind): fixed bug for paths with
3980 * IPython/genutils.py (filefind): fixed bug for paths with
3981 embedded spaces (very common in Windows).
3981 embedded spaces (very common in Windows).
3982
3982
3983 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
3983 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
3984 files under Windows, so that they get automatically associated
3984 files under Windows, so that they get automatically associated
3985 with a text editor. Windows makes it a pain to handle
3985 with a text editor. Windows makes it a pain to handle
3986 extension-less files.
3986 extension-less files.
3987
3987
3988 * IPython/iplib.py (InteractiveShell.init_readline): Made the
3988 * IPython/iplib.py (InteractiveShell.init_readline): Made the
3989 warning about readline only occur for Posix. In Windows there's no
3989 warning about readline only occur for Posix. In Windows there's no
3990 way to get readline, so why bother with the warning.
3990 way to get readline, so why bother with the warning.
3991
3991
3992 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
3992 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
3993 for __str__ instead of dir(self), since dir() changed in 2.2.
3993 for __str__ instead of dir(self), since dir() changed in 2.2.
3994
3994
3995 * Ported to Windows! Tested on XP, I suspect it should work fine
3995 * Ported to Windows! Tested on XP, I suspect it should work fine
3996 on NT/2000, but I don't think it will work on 98 et al. That
3996 on NT/2000, but I don't think it will work on 98 et al. That
3997 series of Windows is such a piece of junk anyway that I won't try
3997 series of Windows is such a piece of junk anyway that I won't try
3998 porting it there. The XP port was straightforward, showed a few
3998 porting it there. The XP port was straightforward, showed a few
3999 bugs here and there (fixed all), in particular some string
3999 bugs here and there (fixed all), in particular some string
4000 handling stuff which required considering Unicode strings (which
4000 handling stuff which required considering Unicode strings (which
4001 Windows uses). This is good, but hasn't been too tested :) No
4001 Windows uses). This is good, but hasn't been too tested :) No
4002 fancy installer yet, I'll put a note in the manual so people at
4002 fancy installer yet, I'll put a note in the manual so people at
4003 least make manually a shortcut.
4003 least make manually a shortcut.
4004
4004
4005 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4005 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4006 into a single one, "colors". This now controls both prompt and
4006 into a single one, "colors". This now controls both prompt and
4007 exception color schemes, and can be changed both at startup
4007 exception color schemes, and can be changed both at startup
4008 (either via command-line switches or via ipythonrc files) and at
4008 (either via command-line switches or via ipythonrc files) and at
4009 runtime, with @colors.
4009 runtime, with @colors.
4010 (Magic.magic_run): renamed @prun to @run and removed the old
4010 (Magic.magic_run): renamed @prun to @run and removed the old
4011 @run. The two were too similar to warrant keeping both.
4011 @run. The two were too similar to warrant keeping both.
4012
4012
4013 2002-02-03 Fernando Perez <fperez@colorado.edu>
4013 2002-02-03 Fernando Perez <fperez@colorado.edu>
4014
4014
4015 * IPython/iplib.py (install_first_time): Added comment on how to
4015 * IPython/iplib.py (install_first_time): Added comment on how to
4016 configure the color options for first-time users. Put a <return>
4016 configure the color options for first-time users. Put a <return>
4017 request at the end so that small-terminal users get a chance to
4017 request at the end so that small-terminal users get a chance to
4018 read the startup info.
4018 read the startup info.
4019
4019
4020 2002-01-23 Fernando Perez <fperez@colorado.edu>
4020 2002-01-23 Fernando Perez <fperez@colorado.edu>
4021
4021
4022 * IPython/iplib.py (CachedOutput.update): Changed output memory
4022 * IPython/iplib.py (CachedOutput.update): Changed output memory
4023 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4023 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4024 input history we still use _i. Did this b/c these variable are
4024 input history we still use _i. Did this b/c these variable are
4025 very commonly used in interactive work, so the less we need to
4025 very commonly used in interactive work, so the less we need to
4026 type the better off we are.
4026 type the better off we are.
4027 (Magic.magic_prun): updated @prun to better handle the namespaces
4027 (Magic.magic_prun): updated @prun to better handle the namespaces
4028 the file will run in, including a fix for __name__ not being set
4028 the file will run in, including a fix for __name__ not being set
4029 before.
4029 before.
4030
4030
4031 2002-01-20 Fernando Perez <fperez@colorado.edu>
4031 2002-01-20 Fernando Perez <fperez@colorado.edu>
4032
4032
4033 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4033 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4034 extra garbage for Python 2.2. Need to look more carefully into
4034 extra garbage for Python 2.2. Need to look more carefully into
4035 this later.
4035 this later.
4036
4036
4037 2002-01-19 Fernando Perez <fperez@colorado.edu>
4037 2002-01-19 Fernando Perez <fperez@colorado.edu>
4038
4038
4039 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4039 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4040 display SyntaxError exceptions properly formatted when they occur
4040 display SyntaxError exceptions properly formatted when they occur
4041 (they can be triggered by imported code).
4041 (they can be triggered by imported code).
4042
4042
4043 2002-01-18 Fernando Perez <fperez@colorado.edu>
4043 2002-01-18 Fernando Perez <fperez@colorado.edu>
4044
4044
4045 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4045 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4046 SyntaxError exceptions are reported nicely formatted, instead of
4046 SyntaxError exceptions are reported nicely formatted, instead of
4047 spitting out only offset information as before.
4047 spitting out only offset information as before.
4048 (Magic.magic_prun): Added the @prun function for executing
4048 (Magic.magic_prun): Added the @prun function for executing
4049 programs with command line args inside IPython.
4049 programs with command line args inside IPython.
4050
4050
4051 2002-01-16 Fernando Perez <fperez@colorado.edu>
4051 2002-01-16 Fernando Perez <fperez@colorado.edu>
4052
4052
4053 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4053 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4054 to *not* include the last item given in a range. This brings their
4054 to *not* include the last item given in a range. This brings their
4055 behavior in line with Python's slicing:
4055 behavior in line with Python's slicing:
4056 a[n1:n2] -> a[n1]...a[n2-1]
4056 a[n1:n2] -> a[n1]...a[n2-1]
4057 It may be a bit less convenient, but I prefer to stick to Python's
4057 It may be a bit less convenient, but I prefer to stick to Python's
4058 conventions *everywhere*, so users never have to wonder.
4058 conventions *everywhere*, so users never have to wonder.
4059 (Magic.magic_macro): Added @macro function to ease the creation of
4059 (Magic.magic_macro): Added @macro function to ease the creation of
4060 macros.
4060 macros.
4061
4061
4062 2002-01-05 Fernando Perez <fperez@colorado.edu>
4062 2002-01-05 Fernando Perez <fperez@colorado.edu>
4063
4063
4064 * Released 0.2.4.
4064 * Released 0.2.4.
4065
4065
4066 * IPython/iplib.py (Magic.magic_pdef):
4066 * IPython/iplib.py (Magic.magic_pdef):
4067 (InteractiveShell.safe_execfile): report magic lines and error
4067 (InteractiveShell.safe_execfile): report magic lines and error
4068 lines without line numbers so one can easily copy/paste them for
4068 lines without line numbers so one can easily copy/paste them for
4069 re-execution.
4069 re-execution.
4070
4070
4071 * Updated manual with recent changes.
4071 * Updated manual with recent changes.
4072
4072
4073 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4073 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4074 docstring printing when class? is called. Very handy for knowing
4074 docstring printing when class? is called. Very handy for knowing
4075 how to create class instances (as long as __init__ is well
4075 how to create class instances (as long as __init__ is well
4076 documented, of course :)
4076 documented, of course :)
4077 (Magic.magic_doc): print both class and constructor docstrings.
4077 (Magic.magic_doc): print both class and constructor docstrings.
4078 (Magic.magic_pdef): give constructor info if passed a class and
4078 (Magic.magic_pdef): give constructor info if passed a class and
4079 __call__ info for callable object instances.
4079 __call__ info for callable object instances.
4080
4080
4081 2002-01-04 Fernando Perez <fperez@colorado.edu>
4081 2002-01-04 Fernando Perez <fperez@colorado.edu>
4082
4082
4083 * Made deep_reload() off by default. It doesn't always work
4083 * Made deep_reload() off by default. It doesn't always work
4084 exactly as intended, so it's probably safer to have it off. It's
4084 exactly as intended, so it's probably safer to have it off. It's
4085 still available as dreload() anyway, so nothing is lost.
4085 still available as dreload() anyway, so nothing is lost.
4086
4086
4087 2002-01-02 Fernando Perez <fperez@colorado.edu>
4087 2002-01-02 Fernando Perez <fperez@colorado.edu>
4088
4088
4089 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4089 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4090 so I wanted an updated release).
4090 so I wanted an updated release).
4091
4091
4092 2001-12-27 Fernando Perez <fperez@colorado.edu>
4092 2001-12-27 Fernando Perez <fperez@colorado.edu>
4093
4093
4094 * IPython/iplib.py (InteractiveShell.interact): Added the original
4094 * IPython/iplib.py (InteractiveShell.interact): Added the original
4095 code from 'code.py' for this module in order to change the
4095 code from 'code.py' for this module in order to change the
4096 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4096 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4097 the history cache would break when the user hit Ctrl-C, and
4097 the history cache would break when the user hit Ctrl-C, and
4098 interact() offers no way to add any hooks to it.
4098 interact() offers no way to add any hooks to it.
4099
4099
4100 2001-12-23 Fernando Perez <fperez@colorado.edu>
4100 2001-12-23 Fernando Perez <fperez@colorado.edu>
4101
4101
4102 * setup.py: added check for 'MANIFEST' before trying to remove
4102 * setup.py: added check for 'MANIFEST' before trying to remove
4103 it. Thanks to Sean Reifschneider.
4103 it. Thanks to Sean Reifschneider.
4104
4104
4105 2001-12-22 Fernando Perez <fperez@colorado.edu>
4105 2001-12-22 Fernando Perez <fperez@colorado.edu>
4106
4106
4107 * Released 0.2.2.
4107 * Released 0.2.2.
4108
4108
4109 * Finished (reasonably) writing the manual. Later will add the
4109 * Finished (reasonably) writing the manual. Later will add the
4110 python-standard navigation stylesheets, but for the time being
4110 python-standard navigation stylesheets, but for the time being
4111 it's fairly complete. Distribution will include html and pdf
4111 it's fairly complete. Distribution will include html and pdf
4112 versions.
4112 versions.
4113
4113
4114 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4114 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4115 (MayaVi author).
4115 (MayaVi author).
4116
4116
4117 2001-12-21 Fernando Perez <fperez@colorado.edu>
4117 2001-12-21 Fernando Perez <fperez@colorado.edu>
4118
4118
4119 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4119 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4120 good public release, I think (with the manual and the distutils
4120 good public release, I think (with the manual and the distutils
4121 installer). The manual can use some work, but that can go
4121 installer). The manual can use some work, but that can go
4122 slowly. Otherwise I think it's quite nice for end users. Next
4122 slowly. Otherwise I think it's quite nice for end users. Next
4123 summer, rewrite the guts of it...
4123 summer, rewrite the guts of it...
4124
4124
4125 * Changed format of ipythonrc files to use whitespace as the
4125 * Changed format of ipythonrc files to use whitespace as the
4126 separator instead of an explicit '='. Cleaner.
4126 separator instead of an explicit '='. Cleaner.
4127
4127
4128 2001-12-20 Fernando Perez <fperez@colorado.edu>
4128 2001-12-20 Fernando Perez <fperez@colorado.edu>
4129
4129
4130 * Started a manual in LyX. For now it's just a quick merge of the
4130 * Started a manual in LyX. For now it's just a quick merge of the
4131 various internal docstrings and READMEs. Later it may grow into a
4131 various internal docstrings and READMEs. Later it may grow into a
4132 nice, full-blown manual.
4132 nice, full-blown manual.
4133
4133
4134 * Set up a distutils based installer. Installation should now be
4134 * Set up a distutils based installer. Installation should now be
4135 trivially simple for end-users.
4135 trivially simple for end-users.
4136
4136
4137 2001-12-11 Fernando Perez <fperez@colorado.edu>
4137 2001-12-11 Fernando Perez <fperez@colorado.edu>
4138
4138
4139 * Released 0.2.0. First public release, announced it at
4139 * Released 0.2.0. First public release, announced it at
4140 comp.lang.python. From now on, just bugfixes...
4140 comp.lang.python. From now on, just bugfixes...
4141
4141
4142 * Went through all the files, set copyright/license notices and
4142 * Went through all the files, set copyright/license notices and
4143 cleaned up things. Ready for release.
4143 cleaned up things. Ready for release.
4144
4144
4145 2001-12-10 Fernando Perez <fperez@colorado.edu>
4145 2001-12-10 Fernando Perez <fperez@colorado.edu>
4146
4146
4147 * Changed the first-time installer not to use tarfiles. It's more
4147 * Changed the first-time installer not to use tarfiles. It's more
4148 robust now and less unix-dependent. Also makes it easier for
4148 robust now and less unix-dependent. Also makes it easier for
4149 people to later upgrade versions.
4149 people to later upgrade versions.
4150
4150
4151 * Changed @exit to @abort to reflect the fact that it's pretty
4151 * Changed @exit to @abort to reflect the fact that it's pretty
4152 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4152 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4153 becomes significant only when IPyhton is embedded: in that case,
4153 becomes significant only when IPyhton is embedded: in that case,
4154 C-D closes IPython only, but @abort kills the enclosing program
4154 C-D closes IPython only, but @abort kills the enclosing program
4155 too (unless it had called IPython inside a try catching
4155 too (unless it had called IPython inside a try catching
4156 SystemExit).
4156 SystemExit).
4157
4157
4158 * Created Shell module which exposes the actuall IPython Shell
4158 * Created Shell module which exposes the actuall IPython Shell
4159 classes, currently the normal and the embeddable one. This at
4159 classes, currently the normal and the embeddable one. This at
4160 least offers a stable interface we won't need to change when
4160 least offers a stable interface we won't need to change when
4161 (later) the internals are rewritten. That rewrite will be confined
4161 (later) the internals are rewritten. That rewrite will be confined
4162 to iplib and ipmaker, but the Shell interface should remain as is.
4162 to iplib and ipmaker, but the Shell interface should remain as is.
4163
4163
4164 * Added embed module which offers an embeddable IPShell object,
4164 * Added embed module which offers an embeddable IPShell object,
4165 useful to fire up IPython *inside* a running program. Great for
4165 useful to fire up IPython *inside* a running program. Great for
4166 debugging or dynamical data analysis.
4166 debugging or dynamical data analysis.
4167
4167
4168 2001-12-08 Fernando Perez <fperez@colorado.edu>
4168 2001-12-08 Fernando Perez <fperez@colorado.edu>
4169
4169
4170 * Fixed small bug preventing seeing info from methods of defined
4170 * Fixed small bug preventing seeing info from methods of defined
4171 objects (incorrect namespace in _ofind()).
4171 objects (incorrect namespace in _ofind()).
4172
4172
4173 * Documentation cleanup. Moved the main usage docstrings to a
4173 * Documentation cleanup. Moved the main usage docstrings to a
4174 separate file, usage.py (cleaner to maintain, and hopefully in the
4174 separate file, usage.py (cleaner to maintain, and hopefully in the
4175 future some perlpod-like way of producing interactive, man and
4175 future some perlpod-like way of producing interactive, man and
4176 html docs out of it will be found).
4176 html docs out of it will be found).
4177
4177
4178 * Added @profile to see your profile at any time.
4178 * Added @profile to see your profile at any time.
4179
4179
4180 * Added @p as an alias for 'print'. It's especially convenient if
4180 * Added @p as an alias for 'print'. It's especially convenient if
4181 using automagic ('p x' prints x).
4181 using automagic ('p x' prints x).
4182
4182
4183 * Small cleanups and fixes after a pychecker run.
4183 * Small cleanups and fixes after a pychecker run.
4184
4184
4185 * Changed the @cd command to handle @cd - and @cd -<n> for
4185 * Changed the @cd command to handle @cd - and @cd -<n> for
4186 visiting any directory in _dh.
4186 visiting any directory in _dh.
4187
4187
4188 * Introduced _dh, a history of visited directories. @dhist prints
4188 * Introduced _dh, a history of visited directories. @dhist prints
4189 it out with numbers.
4189 it out with numbers.
4190
4190
4191 2001-12-07 Fernando Perez <fperez@colorado.edu>
4191 2001-12-07 Fernando Perez <fperez@colorado.edu>
4192
4192
4193 * Released 0.1.22
4193 * Released 0.1.22
4194
4194
4195 * Made initialization a bit more robust against invalid color
4195 * Made initialization a bit more robust against invalid color
4196 options in user input (exit, not traceback-crash).
4196 options in user input (exit, not traceback-crash).
4197
4197
4198 * Changed the bug crash reporter to write the report only in the
4198 * Changed the bug crash reporter to write the report only in the
4199 user's .ipython directory. That way IPython won't litter people's
4199 user's .ipython directory. That way IPython won't litter people's
4200 hard disks with crash files all over the place. Also print on
4200 hard disks with crash files all over the place. Also print on
4201 screen the necessary mail command.
4201 screen the necessary mail command.
4202
4202
4203 * With the new ultraTB, implemented LightBG color scheme for light
4203 * With the new ultraTB, implemented LightBG color scheme for light
4204 background terminals. A lot of people like white backgrounds, so I
4204 background terminals. A lot of people like white backgrounds, so I
4205 guess we should at least give them something readable.
4205 guess we should at least give them something readable.
4206
4206
4207 2001-12-06 Fernando Perez <fperez@colorado.edu>
4207 2001-12-06 Fernando Perez <fperez@colorado.edu>
4208
4208
4209 * Modified the structure of ultraTB. Now there's a proper class
4209 * Modified the structure of ultraTB. Now there's a proper class
4210 for tables of color schemes which allow adding schemes easily and
4210 for tables of color schemes which allow adding schemes easily and
4211 switching the active scheme without creating a new instance every
4211 switching the active scheme without creating a new instance every
4212 time (which was ridiculous). The syntax for creating new schemes
4212 time (which was ridiculous). The syntax for creating new schemes
4213 is also cleaner. I think ultraTB is finally done, with a clean
4213 is also cleaner. I think ultraTB is finally done, with a clean
4214 class structure. Names are also much cleaner (now there's proper
4214 class structure. Names are also much cleaner (now there's proper
4215 color tables, no need for every variable to also have 'color' in
4215 color tables, no need for every variable to also have 'color' in
4216 its name).
4216 its name).
4217
4217
4218 * Broke down genutils into separate files. Now genutils only
4218 * Broke down genutils into separate files. Now genutils only
4219 contains utility functions, and classes have been moved to their
4219 contains utility functions, and classes have been moved to their
4220 own files (they had enough independent functionality to warrant
4220 own files (they had enough independent functionality to warrant
4221 it): ConfigLoader, OutputTrap, Struct.
4221 it): ConfigLoader, OutputTrap, Struct.
4222
4222
4223 2001-12-05 Fernando Perez <fperez@colorado.edu>
4223 2001-12-05 Fernando Perez <fperez@colorado.edu>
4224
4224
4225 * IPython turns 21! Released version 0.1.21, as a candidate for
4225 * IPython turns 21! Released version 0.1.21, as a candidate for
4226 public consumption. If all goes well, release in a few days.
4226 public consumption. If all goes well, release in a few days.
4227
4227
4228 * Fixed path bug (files in Extensions/ directory wouldn't be found
4228 * Fixed path bug (files in Extensions/ directory wouldn't be found
4229 unless IPython/ was explicitly in sys.path).
4229 unless IPython/ was explicitly in sys.path).
4230
4230
4231 * Extended the FlexCompleter class as MagicCompleter to allow
4231 * Extended the FlexCompleter class as MagicCompleter to allow
4232 completion of @-starting lines.
4232 completion of @-starting lines.
4233
4233
4234 * Created __release__.py file as a central repository for release
4234 * Created __release__.py file as a central repository for release
4235 info that other files can read from.
4235 info that other files can read from.
4236
4236
4237 * Fixed small bug in logging: when logging was turned on in
4237 * Fixed small bug in logging: when logging was turned on in
4238 mid-session, old lines with special meanings (!@?) were being
4238 mid-session, old lines with special meanings (!@?) were being
4239 logged without the prepended comment, which is necessary since
4239 logged without the prepended comment, which is necessary since
4240 they are not truly valid python syntax. This should make session
4240 they are not truly valid python syntax. This should make session
4241 restores produce less errors.
4241 restores produce less errors.
4242
4242
4243 * The namespace cleanup forced me to make a FlexCompleter class
4243 * The namespace cleanup forced me to make a FlexCompleter class
4244 which is nothing but a ripoff of rlcompleter, but with selectable
4244 which is nothing but a ripoff of rlcompleter, but with selectable
4245 namespace (rlcompleter only works in __main__.__dict__). I'll try
4245 namespace (rlcompleter only works in __main__.__dict__). I'll try
4246 to submit a note to the authors to see if this change can be
4246 to submit a note to the authors to see if this change can be
4247 incorporated in future rlcompleter releases (Dec.6: done)
4247 incorporated in future rlcompleter releases (Dec.6: done)
4248
4248
4249 * More fixes to namespace handling. It was a mess! Now all
4249 * More fixes to namespace handling. It was a mess! Now all
4250 explicit references to __main__.__dict__ are gone (except when
4250 explicit references to __main__.__dict__ are gone (except when
4251 really needed) and everything is handled through the namespace
4251 really needed) and everything is handled through the namespace
4252 dicts in the IPython instance. We seem to be getting somewhere
4252 dicts in the IPython instance. We seem to be getting somewhere
4253 with this, finally...
4253 with this, finally...
4254
4254
4255 * Small documentation updates.
4255 * Small documentation updates.
4256
4256
4257 * Created the Extensions directory under IPython (with an
4257 * Created the Extensions directory under IPython (with an
4258 __init__.py). Put the PhysicalQ stuff there. This directory should
4258 __init__.py). Put the PhysicalQ stuff there. This directory should
4259 be used for all special-purpose extensions.
4259 be used for all special-purpose extensions.
4260
4260
4261 * File renaming:
4261 * File renaming:
4262 ipythonlib --> ipmaker
4262 ipythonlib --> ipmaker
4263 ipplib --> iplib
4263 ipplib --> iplib
4264 This makes a bit more sense in terms of what these files actually do.
4264 This makes a bit more sense in terms of what these files actually do.
4265
4265
4266 * Moved all the classes and functions in ipythonlib to ipplib, so
4266 * Moved all the classes and functions in ipythonlib to ipplib, so
4267 now ipythonlib only has make_IPython(). This will ease up its
4267 now ipythonlib only has make_IPython(). This will ease up its
4268 splitting in smaller functional chunks later.
4268 splitting in smaller functional chunks later.
4269
4269
4270 * Cleaned up (done, I think) output of @whos. Better column
4270 * Cleaned up (done, I think) output of @whos. Better column
4271 formatting, and now shows str(var) for as much as it can, which is
4271 formatting, and now shows str(var) for as much as it can, which is
4272 typically what one gets with a 'print var'.
4272 typically what one gets with a 'print var'.
4273
4273
4274 2001-12-04 Fernando Perez <fperez@colorado.edu>
4274 2001-12-04 Fernando Perez <fperez@colorado.edu>
4275
4275
4276 * Fixed namespace problems. Now builtin/IPyhton/user names get
4276 * Fixed namespace problems. Now builtin/IPyhton/user names get
4277 properly reported in their namespace. Internal namespace handling
4277 properly reported in their namespace. Internal namespace handling
4278 is finally getting decent (not perfect yet, but much better than
4278 is finally getting decent (not perfect yet, but much better than
4279 the ad-hoc mess we had).
4279 the ad-hoc mess we had).
4280
4280
4281 * Removed -exit option. If people just want to run a python
4281 * Removed -exit option. If people just want to run a python
4282 script, that's what the normal interpreter is for. Less
4282 script, that's what the normal interpreter is for. Less
4283 unnecessary options, less chances for bugs.
4283 unnecessary options, less chances for bugs.
4284
4284
4285 * Added a crash handler which generates a complete post-mortem if
4285 * Added a crash handler which generates a complete post-mortem if
4286 IPython crashes. This will help a lot in tracking bugs down the
4286 IPython crashes. This will help a lot in tracking bugs down the
4287 road.
4287 road.
4288
4288
4289 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4289 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4290 which were boud to functions being reassigned would bypass the
4290 which were boud to functions being reassigned would bypass the
4291 logger, breaking the sync of _il with the prompt counter. This
4291 logger, breaking the sync of _il with the prompt counter. This
4292 would then crash IPython later when a new line was logged.
4292 would then crash IPython later when a new line was logged.
4293
4293
4294 2001-12-02 Fernando Perez <fperez@colorado.edu>
4294 2001-12-02 Fernando Perez <fperez@colorado.edu>
4295
4295
4296 * Made IPython a package. This means people don't have to clutter
4296 * Made IPython a package. This means people don't have to clutter
4297 their sys.path with yet another directory. Changed the INSTALL
4297 their sys.path with yet another directory. Changed the INSTALL
4298 file accordingly.
4298 file accordingly.
4299
4299
4300 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4300 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4301 sorts its output (so @who shows it sorted) and @whos formats the
4301 sorts its output (so @who shows it sorted) and @whos formats the
4302 table according to the width of the first column. Nicer, easier to
4302 table according to the width of the first column. Nicer, easier to
4303 read. Todo: write a generic table_format() which takes a list of
4303 read. Todo: write a generic table_format() which takes a list of
4304 lists and prints it nicely formatted, with optional row/column
4304 lists and prints it nicely formatted, with optional row/column
4305 separators and proper padding and justification.
4305 separators and proper padding and justification.
4306
4306
4307 * Released 0.1.20
4307 * Released 0.1.20
4308
4308
4309 * Fixed bug in @log which would reverse the inputcache list (a
4309 * Fixed bug in @log which would reverse the inputcache list (a
4310 copy operation was missing).
4310 copy operation was missing).
4311
4311
4312 * Code cleanup. @config was changed to use page(). Better, since
4312 * Code cleanup. @config was changed to use page(). Better, since
4313 its output is always quite long.
4313 its output is always quite long.
4314
4314
4315 * Itpl is back as a dependency. I was having too many problems
4315 * Itpl is back as a dependency. I was having too many problems
4316 getting the parametric aliases to work reliably, and it's just
4316 getting the parametric aliases to work reliably, and it's just
4317 easier to code weird string operations with it than playing %()s
4317 easier to code weird string operations with it than playing %()s
4318 games. It's only ~6k, so I don't think it's too big a deal.
4318 games. It's only ~6k, so I don't think it's too big a deal.
4319
4319
4320 * Found (and fixed) a very nasty bug with history. !lines weren't
4320 * Found (and fixed) a very nasty bug with history. !lines weren't
4321 getting cached, and the out of sync caches would crash
4321 getting cached, and the out of sync caches would crash
4322 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4322 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4323 division of labor a bit better. Bug fixed, cleaner structure.
4323 division of labor a bit better. Bug fixed, cleaner structure.
4324
4324
4325 2001-12-01 Fernando Perez <fperez@colorado.edu>
4325 2001-12-01 Fernando Perez <fperez@colorado.edu>
4326
4326
4327 * Released 0.1.19
4327 * Released 0.1.19
4328
4328
4329 * Added option -n to @hist to prevent line number printing. Much
4329 * Added option -n to @hist to prevent line number printing. Much
4330 easier to copy/paste code this way.
4330 easier to copy/paste code this way.
4331
4331
4332 * Created global _il to hold the input list. Allows easy
4332 * Created global _il to hold the input list. Allows easy
4333 re-execution of blocks of code by slicing it (inspired by Janko's
4333 re-execution of blocks of code by slicing it (inspired by Janko's
4334 comment on 'macros').
4334 comment on 'macros').
4335
4335
4336 * Small fixes and doc updates.
4336 * Small fixes and doc updates.
4337
4337
4338 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4338 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4339 much too fragile with automagic. Handles properly multi-line
4339 much too fragile with automagic. Handles properly multi-line
4340 statements and takes parameters.
4340 statements and takes parameters.
4341
4341
4342 2001-11-30 Fernando Perez <fperez@colorado.edu>
4342 2001-11-30 Fernando Perez <fperez@colorado.edu>
4343
4343
4344 * Version 0.1.18 released.
4344 * Version 0.1.18 released.
4345
4345
4346 * Fixed nasty namespace bug in initial module imports.
4346 * Fixed nasty namespace bug in initial module imports.
4347
4347
4348 * Added copyright/license notes to all code files (except
4348 * Added copyright/license notes to all code files (except
4349 DPyGetOpt). For the time being, LGPL. That could change.
4349 DPyGetOpt). For the time being, LGPL. That could change.
4350
4350
4351 * Rewrote a much nicer README, updated INSTALL, cleaned up
4351 * Rewrote a much nicer README, updated INSTALL, cleaned up
4352 ipythonrc-* samples.
4352 ipythonrc-* samples.
4353
4353
4354 * Overall code/documentation cleanup. Basically ready for
4354 * Overall code/documentation cleanup. Basically ready for
4355 release. Only remaining thing: licence decision (LGPL?).
4355 release. Only remaining thing: licence decision (LGPL?).
4356
4356
4357 * Converted load_config to a class, ConfigLoader. Now recursion
4357 * Converted load_config to a class, ConfigLoader. Now recursion
4358 control is better organized. Doesn't include the same file twice.
4358 control is better organized. Doesn't include the same file twice.
4359
4359
4360 2001-11-29 Fernando Perez <fperez@colorado.edu>
4360 2001-11-29 Fernando Perez <fperez@colorado.edu>
4361
4361
4362 * Got input history working. Changed output history variables from
4362 * Got input history working. Changed output history variables from
4363 _p to _o so that _i is for input and _o for output. Just cleaner
4363 _p to _o so that _i is for input and _o for output. Just cleaner
4364 convention.
4364 convention.
4365
4365
4366 * Implemented parametric aliases. This pretty much allows the
4366 * Implemented parametric aliases. This pretty much allows the
4367 alias system to offer full-blown shell convenience, I think.
4367 alias system to offer full-blown shell convenience, I think.
4368
4368
4369 * Version 0.1.17 released, 0.1.18 opened.
4369 * Version 0.1.17 released, 0.1.18 opened.
4370
4370
4371 * dot_ipython/ipythonrc (alias): added documentation.
4371 * dot_ipython/ipythonrc (alias): added documentation.
4372 (xcolor): Fixed small bug (xcolors -> xcolor)
4372 (xcolor): Fixed small bug (xcolors -> xcolor)
4373
4373
4374 * Changed the alias system. Now alias is a magic command to define
4374 * Changed the alias system. Now alias is a magic command to define
4375 aliases just like the shell. Rationale: the builtin magics should
4375 aliases just like the shell. Rationale: the builtin magics should
4376 be there for things deeply connected to IPython's
4376 be there for things deeply connected to IPython's
4377 architecture. And this is a much lighter system for what I think
4377 architecture. And this is a much lighter system for what I think
4378 is the really important feature: allowing users to define quickly
4378 is the really important feature: allowing users to define quickly
4379 magics that will do shell things for them, so they can customize
4379 magics that will do shell things for them, so they can customize
4380 IPython easily to match their work habits. If someone is really
4380 IPython easily to match their work habits. If someone is really
4381 desperate to have another name for a builtin alias, they can
4381 desperate to have another name for a builtin alias, they can
4382 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4382 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4383 works.
4383 works.
4384
4384
4385 2001-11-28 Fernando Perez <fperez@colorado.edu>
4385 2001-11-28 Fernando Perez <fperez@colorado.edu>
4386
4386
4387 * Changed @file so that it opens the source file at the proper
4387 * Changed @file so that it opens the source file at the proper
4388 line. Since it uses less, if your EDITOR environment is
4388 line. Since it uses less, if your EDITOR environment is
4389 configured, typing v will immediately open your editor of choice
4389 configured, typing v will immediately open your editor of choice
4390 right at the line where the object is defined. Not as quick as
4390 right at the line where the object is defined. Not as quick as
4391 having a direct @edit command, but for all intents and purposes it
4391 having a direct @edit command, but for all intents and purposes it
4392 works. And I don't have to worry about writing @edit to deal with
4392 works. And I don't have to worry about writing @edit to deal with
4393 all the editors, less does that.
4393 all the editors, less does that.
4394
4394
4395 * Version 0.1.16 released, 0.1.17 opened.
4395 * Version 0.1.16 released, 0.1.17 opened.
4396
4396
4397 * Fixed some nasty bugs in the page/page_dumb combo that could
4397 * Fixed some nasty bugs in the page/page_dumb combo that could
4398 crash IPython.
4398 crash IPython.
4399
4399
4400 2001-11-27 Fernando Perez <fperez@colorado.edu>
4400 2001-11-27 Fernando Perez <fperez@colorado.edu>
4401
4401
4402 * Version 0.1.15 released, 0.1.16 opened.
4402 * Version 0.1.15 released, 0.1.16 opened.
4403
4403
4404 * Finally got ? and ?? to work for undefined things: now it's
4404 * Finally got ? and ?? to work for undefined things: now it's
4405 possible to type {}.get? and get information about the get method
4405 possible to type {}.get? and get information about the get method
4406 of dicts, or os.path? even if only os is defined (so technically
4406 of dicts, or os.path? even if only os is defined (so technically
4407 os.path isn't). Works at any level. For example, after import os,
4407 os.path isn't). Works at any level. For example, after import os,
4408 os?, os.path?, os.path.abspath? all work. This is great, took some
4408 os?, os.path?, os.path.abspath? all work. This is great, took some
4409 work in _ofind.
4409 work in _ofind.
4410
4410
4411 * Fixed more bugs with logging. The sanest way to do it was to add
4411 * Fixed more bugs with logging. The sanest way to do it was to add
4412 to @log a 'mode' parameter. Killed two in one shot (this mode
4412 to @log a 'mode' parameter. Killed two in one shot (this mode
4413 option was a request of Janko's). I think it's finally clean
4413 option was a request of Janko's). I think it's finally clean
4414 (famous last words).
4414 (famous last words).
4415
4415
4416 * Added a page_dumb() pager which does a decent job of paging on
4416 * Added a page_dumb() pager which does a decent job of paging on
4417 screen, if better things (like less) aren't available. One less
4417 screen, if better things (like less) aren't available. One less
4418 unix dependency (someday maybe somebody will port this to
4418 unix dependency (someday maybe somebody will port this to
4419 windows).
4419 windows).
4420
4420
4421 * Fixed problem in magic_log: would lock of logging out if log
4421 * Fixed problem in magic_log: would lock of logging out if log
4422 creation failed (because it would still think it had succeeded).
4422 creation failed (because it would still think it had succeeded).
4423
4423
4424 * Improved the page() function using curses to auto-detect screen
4424 * Improved the page() function using curses to auto-detect screen
4425 size. Now it can make a much better decision on whether to print
4425 size. Now it can make a much better decision on whether to print
4426 or page a string. Option screen_length was modified: a value 0
4426 or page a string. Option screen_length was modified: a value 0
4427 means auto-detect, and that's the default now.
4427 means auto-detect, and that's the default now.
4428
4428
4429 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4429 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4430 go out. I'll test it for a few days, then talk to Janko about
4430 go out. I'll test it for a few days, then talk to Janko about
4431 licences and announce it.
4431 licences and announce it.
4432
4432
4433 * Fixed the length of the auto-generated ---> prompt which appears
4433 * Fixed the length of the auto-generated ---> prompt which appears
4434 for auto-parens and auto-quotes. Getting this right isn't trivial,
4434 for auto-parens and auto-quotes. Getting this right isn't trivial,
4435 with all the color escapes, different prompt types and optional
4435 with all the color escapes, different prompt types and optional
4436 separators. But it seems to be working in all the combinations.
4436 separators. But it seems to be working in all the combinations.
4437
4437
4438 2001-11-26 Fernando Perez <fperez@colorado.edu>
4438 2001-11-26 Fernando Perez <fperez@colorado.edu>
4439
4439
4440 * Wrote a regexp filter to get option types from the option names
4440 * Wrote a regexp filter to get option types from the option names
4441 string. This eliminates the need to manually keep two duplicate
4441 string. This eliminates the need to manually keep two duplicate
4442 lists.
4442 lists.
4443
4443
4444 * Removed the unneeded check_option_names. Now options are handled
4444 * Removed the unneeded check_option_names. Now options are handled
4445 in a much saner manner and it's easy to visually check that things
4445 in a much saner manner and it's easy to visually check that things
4446 are ok.
4446 are ok.
4447
4447
4448 * Updated version numbers on all files I modified to carry a
4448 * Updated version numbers on all files I modified to carry a
4449 notice so Janko and Nathan have clear version markers.
4449 notice so Janko and Nathan have clear version markers.
4450
4450
4451 * Updated docstring for ultraTB with my changes. I should send
4451 * Updated docstring for ultraTB with my changes. I should send
4452 this to Nathan.
4452 this to Nathan.
4453
4453
4454 * Lots of small fixes. Ran everything through pychecker again.
4454 * Lots of small fixes. Ran everything through pychecker again.
4455
4455
4456 * Made loading of deep_reload an cmd line option. If it's not too
4456 * Made loading of deep_reload an cmd line option. If it's not too
4457 kosher, now people can just disable it. With -nodeep_reload it's
4457 kosher, now people can just disable it. With -nodeep_reload it's
4458 still available as dreload(), it just won't overwrite reload().
4458 still available as dreload(), it just won't overwrite reload().
4459
4459
4460 * Moved many options to the no| form (-opt and -noopt
4460 * Moved many options to the no| form (-opt and -noopt
4461 accepted). Cleaner.
4461 accepted). Cleaner.
4462
4462
4463 * Changed magic_log so that if called with no parameters, it uses
4463 * Changed magic_log so that if called with no parameters, it uses
4464 'rotate' mode. That way auto-generated logs aren't automatically
4464 'rotate' mode. That way auto-generated logs aren't automatically
4465 over-written. For normal logs, now a backup is made if it exists
4465 over-written. For normal logs, now a backup is made if it exists
4466 (only 1 level of backups). A new 'backup' mode was added to the
4466 (only 1 level of backups). A new 'backup' mode was added to the
4467 Logger class to support this. This was a request by Janko.
4467 Logger class to support this. This was a request by Janko.
4468
4468
4469 * Added @logoff/@logon to stop/restart an active log.
4469 * Added @logoff/@logon to stop/restart an active log.
4470
4470
4471 * Fixed a lot of bugs in log saving/replay. It was pretty
4471 * Fixed a lot of bugs in log saving/replay. It was pretty
4472 broken. Now special lines (!@,/) appear properly in the command
4472 broken. Now special lines (!@,/) appear properly in the command
4473 history after a log replay.
4473 history after a log replay.
4474
4474
4475 * Tried and failed to implement full session saving via pickle. My
4475 * Tried and failed to implement full session saving via pickle. My
4476 idea was to pickle __main__.__dict__, but modules can't be
4476 idea was to pickle __main__.__dict__, but modules can't be
4477 pickled. This would be a better alternative to replaying logs, but
4477 pickled. This would be a better alternative to replaying logs, but
4478 seems quite tricky to get to work. Changed -session to be called
4478 seems quite tricky to get to work. Changed -session to be called
4479 -logplay, which more accurately reflects what it does. And if we
4479 -logplay, which more accurately reflects what it does. And if we
4480 ever get real session saving working, -session is now available.
4480 ever get real session saving working, -session is now available.
4481
4481
4482 * Implemented color schemes for prompts also. As for tracebacks,
4482 * Implemented color schemes for prompts also. As for tracebacks,
4483 currently only NoColor and Linux are supported. But now the
4483 currently only NoColor and Linux are supported. But now the
4484 infrastructure is in place, based on a generic ColorScheme
4484 infrastructure is in place, based on a generic ColorScheme
4485 class. So writing and activating new schemes both for the prompts
4485 class. So writing and activating new schemes both for the prompts
4486 and the tracebacks should be straightforward.
4486 and the tracebacks should be straightforward.
4487
4487
4488 * Version 0.1.13 released, 0.1.14 opened.
4488 * Version 0.1.13 released, 0.1.14 opened.
4489
4489
4490 * Changed handling of options for output cache. Now counter is
4490 * Changed handling of options for output cache. Now counter is
4491 hardwired starting at 1 and one specifies the maximum number of
4491 hardwired starting at 1 and one specifies the maximum number of
4492 entries *in the outcache* (not the max prompt counter). This is
4492 entries *in the outcache* (not the max prompt counter). This is
4493 much better, since many statements won't increase the cache
4493 much better, since many statements won't increase the cache
4494 count. It also eliminated some confusing options, now there's only
4494 count. It also eliminated some confusing options, now there's only
4495 one: cache_size.
4495 one: cache_size.
4496
4496
4497 * Added 'alias' magic function and magic_alias option in the
4497 * Added 'alias' magic function and magic_alias option in the
4498 ipythonrc file. Now the user can easily define whatever names he
4498 ipythonrc file. Now the user can easily define whatever names he
4499 wants for the magic functions without having to play weird
4499 wants for the magic functions without having to play weird
4500 namespace games. This gives IPython a real shell-like feel.
4500 namespace games. This gives IPython a real shell-like feel.
4501
4501
4502 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
4502 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
4503 @ or not).
4503 @ or not).
4504
4504
4505 This was one of the last remaining 'visible' bugs (that I know
4505 This was one of the last remaining 'visible' bugs (that I know
4506 of). I think if I can clean up the session loading so it works
4506 of). I think if I can clean up the session loading so it works
4507 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
4507 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
4508 about licensing).
4508 about licensing).
4509
4509
4510 2001-11-25 Fernando Perez <fperez@colorado.edu>
4510 2001-11-25 Fernando Perez <fperez@colorado.edu>
4511
4511
4512 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
4512 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
4513 there's a cleaner distinction between what ? and ?? show.
4513 there's a cleaner distinction between what ? and ?? show.
4514
4514
4515 * Added screen_length option. Now the user can define his own
4515 * Added screen_length option. Now the user can define his own
4516 screen size for page() operations.
4516 screen size for page() operations.
4517
4517
4518 * Implemented magic shell-like functions with automatic code
4518 * Implemented magic shell-like functions with automatic code
4519 generation. Now adding another function is just a matter of adding
4519 generation. Now adding another function is just a matter of adding
4520 an entry to a dict, and the function is dynamically generated at
4520 an entry to a dict, and the function is dynamically generated at
4521 run-time. Python has some really cool features!
4521 run-time. Python has some really cool features!
4522
4522
4523 * Renamed many options to cleanup conventions a little. Now all
4523 * Renamed many options to cleanup conventions a little. Now all
4524 are lowercase, and only underscores where needed. Also in the code
4524 are lowercase, and only underscores where needed. Also in the code
4525 option name tables are clearer.
4525 option name tables are clearer.
4526
4526
4527 * Changed prompts a little. Now input is 'In [n]:' instead of
4527 * Changed prompts a little. Now input is 'In [n]:' instead of
4528 'In[n]:='. This allows it the numbers to be aligned with the
4528 'In[n]:='. This allows it the numbers to be aligned with the
4529 Out[n] numbers, and removes usage of ':=' which doesn't exist in
4529 Out[n] numbers, and removes usage of ':=' which doesn't exist in
4530 Python (it was a Mathematica thing). The '...' continuation prompt
4530 Python (it was a Mathematica thing). The '...' continuation prompt
4531 was also changed a little to align better.
4531 was also changed a little to align better.
4532
4532
4533 * Fixed bug when flushing output cache. Not all _p<n> variables
4533 * Fixed bug when flushing output cache. Not all _p<n> variables
4534 exist, so their deletion needs to be wrapped in a try:
4534 exist, so their deletion needs to be wrapped in a try:
4535
4535
4536 * Figured out how to properly use inspect.formatargspec() (it
4536 * Figured out how to properly use inspect.formatargspec() (it
4537 requires the args preceded by *). So I removed all the code from
4537 requires the args preceded by *). So I removed all the code from
4538 _get_pdef in Magic, which was just replicating that.
4538 _get_pdef in Magic, which was just replicating that.
4539
4539
4540 * Added test to prefilter to allow redefining magic function names
4540 * Added test to prefilter to allow redefining magic function names
4541 as variables. This is ok, since the @ form is always available,
4541 as variables. This is ok, since the @ form is always available,
4542 but whe should allow the user to define a variable called 'ls' if
4542 but whe should allow the user to define a variable called 'ls' if
4543 he needs it.
4543 he needs it.
4544
4544
4545 * Moved the ToDo information from README into a separate ToDo.
4545 * Moved the ToDo information from README into a separate ToDo.
4546
4546
4547 * General code cleanup and small bugfixes. I think it's close to a
4547 * General code cleanup and small bugfixes. I think it's close to a
4548 state where it can be released, obviously with a big 'beta'
4548 state where it can be released, obviously with a big 'beta'
4549 warning on it.
4549 warning on it.
4550
4550
4551 * Got the magic function split to work. Now all magics are defined
4551 * Got the magic function split to work. Now all magics are defined
4552 in a separate class. It just organizes things a bit, and now
4552 in a separate class. It just organizes things a bit, and now
4553 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
4553 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
4554 was too long).
4554 was too long).
4555
4555
4556 * Changed @clear to @reset to avoid potential confusions with
4556 * Changed @clear to @reset to avoid potential confusions with
4557 the shell command clear. Also renamed @cl to @clear, which does
4557 the shell command clear. Also renamed @cl to @clear, which does
4558 exactly what people expect it to from their shell experience.
4558 exactly what people expect it to from their shell experience.
4559
4559
4560 Added a check to the @reset command (since it's so
4560 Added a check to the @reset command (since it's so
4561 destructive, it's probably a good idea to ask for confirmation).
4561 destructive, it's probably a good idea to ask for confirmation).
4562 But now reset only works for full namespace resetting. Since the
4562 But now reset only works for full namespace resetting. Since the
4563 del keyword is already there for deleting a few specific
4563 del keyword is already there for deleting a few specific
4564 variables, I don't see the point of having a redundant magic
4564 variables, I don't see the point of having a redundant magic
4565 function for the same task.
4565 function for the same task.
4566
4566
4567 2001-11-24 Fernando Perez <fperez@colorado.edu>
4567 2001-11-24 Fernando Perez <fperez@colorado.edu>
4568
4568
4569 * Updated the builtin docs (esp. the ? ones).
4569 * Updated the builtin docs (esp. the ? ones).
4570
4570
4571 * Ran all the code through pychecker. Not terribly impressed with
4571 * Ran all the code through pychecker. Not terribly impressed with
4572 it: lots of spurious warnings and didn't really find anything of
4572 it: lots of spurious warnings and didn't really find anything of
4573 substance (just a few modules being imported and not used).
4573 substance (just a few modules being imported and not used).
4574
4574
4575 * Implemented the new ultraTB functionality into IPython. New
4575 * Implemented the new ultraTB functionality into IPython. New
4576 option: xcolors. This chooses color scheme. xmode now only selects
4576 option: xcolors. This chooses color scheme. xmode now only selects
4577 between Plain and Verbose. Better orthogonality.
4577 between Plain and Verbose. Better orthogonality.
4578
4578
4579 * Large rewrite of ultraTB. Much cleaner now, with a separation of
4579 * Large rewrite of ultraTB. Much cleaner now, with a separation of
4580 mode and color scheme for the exception handlers. Now it's
4580 mode and color scheme for the exception handlers. Now it's
4581 possible to have the verbose traceback with no coloring.
4581 possible to have the verbose traceback with no coloring.
4582
4582
4583 2001-11-23 Fernando Perez <fperez@colorado.edu>
4583 2001-11-23 Fernando Perez <fperez@colorado.edu>
4584
4584
4585 * Version 0.1.12 released, 0.1.13 opened.
4585 * Version 0.1.12 released, 0.1.13 opened.
4586
4586
4587 * Removed option to set auto-quote and auto-paren escapes by
4587 * Removed option to set auto-quote and auto-paren escapes by
4588 user. The chances of breaking valid syntax are just too high. If
4588 user. The chances of breaking valid syntax are just too high. If
4589 someone *really* wants, they can always dig into the code.
4589 someone *really* wants, they can always dig into the code.
4590
4590
4591 * Made prompt separators configurable.
4591 * Made prompt separators configurable.
4592
4592
4593 2001-11-22 Fernando Perez <fperez@colorado.edu>
4593 2001-11-22 Fernando Perez <fperez@colorado.edu>
4594
4594
4595 * Small bugfixes in many places.
4595 * Small bugfixes in many places.
4596
4596
4597 * Removed the MyCompleter class from ipplib. It seemed redundant
4597 * Removed the MyCompleter class from ipplib. It seemed redundant
4598 with the C-p,C-n history search functionality. Less code to
4598 with the C-p,C-n history search functionality. Less code to
4599 maintain.
4599 maintain.
4600
4600
4601 * Moved all the original ipython.py code into ipythonlib.py. Right
4601 * Moved all the original ipython.py code into ipythonlib.py. Right
4602 now it's just one big dump into a function called make_IPython, so
4602 now it's just one big dump into a function called make_IPython, so
4603 no real modularity has been gained. But at least it makes the
4603 no real modularity has been gained. But at least it makes the
4604 wrapper script tiny, and since ipythonlib is a module, it gets
4604 wrapper script tiny, and since ipythonlib is a module, it gets
4605 compiled and startup is much faster.
4605 compiled and startup is much faster.
4606
4606
4607 This is a reasobably 'deep' change, so we should test it for a
4607 This is a reasobably 'deep' change, so we should test it for a
4608 while without messing too much more with the code.
4608 while without messing too much more with the code.
4609
4609
4610 2001-11-21 Fernando Perez <fperez@colorado.edu>
4610 2001-11-21 Fernando Perez <fperez@colorado.edu>
4611
4611
4612 * Version 0.1.11 released, 0.1.12 opened for further work.
4612 * Version 0.1.11 released, 0.1.12 opened for further work.
4613
4613
4614 * Removed dependency on Itpl. It was only needed in one place. It
4614 * Removed dependency on Itpl. It was only needed in one place. It
4615 would be nice if this became part of python, though. It makes life
4615 would be nice if this became part of python, though. It makes life
4616 *a lot* easier in some cases.
4616 *a lot* easier in some cases.
4617
4617
4618 * Simplified the prefilter code a bit. Now all handlers are
4618 * Simplified the prefilter code a bit. Now all handlers are
4619 expected to explicitly return a value (at least a blank string).
4619 expected to explicitly return a value (at least a blank string).
4620
4620
4621 * Heavy edits in ipplib. Removed the help system altogether. Now
4621 * Heavy edits in ipplib. Removed the help system altogether. Now
4622 obj?/?? is used for inspecting objects, a magic @doc prints
4622 obj?/?? is used for inspecting objects, a magic @doc prints
4623 docstrings, and full-blown Python help is accessed via the 'help'
4623 docstrings, and full-blown Python help is accessed via the 'help'
4624 keyword. This cleans up a lot of code (less to maintain) and does
4624 keyword. This cleans up a lot of code (less to maintain) and does
4625 the job. Since 'help' is now a standard Python component, might as
4625 the job. Since 'help' is now a standard Python component, might as
4626 well use it and remove duplicate functionality.
4626 well use it and remove duplicate functionality.
4627
4627
4628 Also removed the option to use ipplib as a standalone program. By
4628 Also removed the option to use ipplib as a standalone program. By
4629 now it's too dependent on other parts of IPython to function alone.
4629 now it's too dependent on other parts of IPython to function alone.
4630
4630
4631 * Fixed bug in genutils.pager. It would crash if the pager was
4631 * Fixed bug in genutils.pager. It would crash if the pager was
4632 exited immediately after opening (broken pipe).
4632 exited immediately after opening (broken pipe).
4633
4633
4634 * Trimmed down the VerboseTB reporting a little. The header is
4634 * Trimmed down the VerboseTB reporting a little. The header is
4635 much shorter now and the repeated exception arguments at the end
4635 much shorter now and the repeated exception arguments at the end
4636 have been removed. For interactive use the old header seemed a bit
4636 have been removed. For interactive use the old header seemed a bit
4637 excessive.
4637 excessive.
4638
4638
4639 * Fixed small bug in output of @whos for variables with multi-word
4639 * Fixed small bug in output of @whos for variables with multi-word
4640 types (only first word was displayed).
4640 types (only first word was displayed).
4641
4641
4642 2001-11-17 Fernando Perez <fperez@colorado.edu>
4642 2001-11-17 Fernando Perez <fperez@colorado.edu>
4643
4643
4644 * Version 0.1.10 released, 0.1.11 opened for further work.
4644 * Version 0.1.10 released, 0.1.11 opened for further work.
4645
4645
4646 * Modified dirs and friends. dirs now *returns* the stack (not
4646 * Modified dirs and friends. dirs now *returns* the stack (not
4647 prints), so one can manipulate it as a variable. Convenient to
4647 prints), so one can manipulate it as a variable. Convenient to
4648 travel along many directories.
4648 travel along many directories.
4649
4649
4650 * Fixed bug in magic_pdef: would only work with functions with
4650 * Fixed bug in magic_pdef: would only work with functions with
4651 arguments with default values.
4651 arguments with default values.
4652
4652
4653 2001-11-14 Fernando Perez <fperez@colorado.edu>
4653 2001-11-14 Fernando Perez <fperez@colorado.edu>
4654
4654
4655 * Added the PhysicsInput stuff to dot_ipython so it ships as an
4655 * Added the PhysicsInput stuff to dot_ipython so it ships as an
4656 example with IPython. Various other minor fixes and cleanups.
4656 example with IPython. Various other minor fixes and cleanups.
4657
4657
4658 * Version 0.1.9 released, 0.1.10 opened for further work.
4658 * Version 0.1.9 released, 0.1.10 opened for further work.
4659
4659
4660 * Added sys.path to the list of directories searched in the
4660 * Added sys.path to the list of directories searched in the
4661 execfile= option. It used to be the current directory and the
4661 execfile= option. It used to be the current directory and the
4662 user's IPYTHONDIR only.
4662 user's IPYTHONDIR only.
4663
4663
4664 2001-11-13 Fernando Perez <fperez@colorado.edu>
4664 2001-11-13 Fernando Perez <fperez@colorado.edu>
4665
4665
4666 * Reinstated the raw_input/prefilter separation that Janko had
4666 * Reinstated the raw_input/prefilter separation that Janko had
4667 initially. This gives a more convenient setup for extending the
4667 initially. This gives a more convenient setup for extending the
4668 pre-processor from the outside: raw_input always gets a string,
4668 pre-processor from the outside: raw_input always gets a string,
4669 and prefilter has to process it. We can then redefine prefilter
4669 and prefilter has to process it. We can then redefine prefilter
4670 from the outside and implement extensions for special
4670 from the outside and implement extensions for special
4671 purposes.
4671 purposes.
4672
4672
4673 Today I got one for inputting PhysicalQuantity objects
4673 Today I got one for inputting PhysicalQuantity objects
4674 (from Scientific) without needing any function calls at
4674 (from Scientific) without needing any function calls at
4675 all. Extremely convenient, and it's all done as a user-level
4675 all. Extremely convenient, and it's all done as a user-level
4676 extension (no IPython code was touched). Now instead of:
4676 extension (no IPython code was touched). Now instead of:
4677 a = PhysicalQuantity(4.2,'m/s**2')
4677 a = PhysicalQuantity(4.2,'m/s**2')
4678 one can simply say
4678 one can simply say
4679 a = 4.2 m/s**2
4679 a = 4.2 m/s**2
4680 or even
4680 or even
4681 a = 4.2 m/s^2
4681 a = 4.2 m/s^2
4682
4682
4683 I use this, but it's also a proof of concept: IPython really is
4683 I use this, but it's also a proof of concept: IPython really is
4684 fully user-extensible, even at the level of the parsing of the
4684 fully user-extensible, even at the level of the parsing of the
4685 command line. It's not trivial, but it's perfectly doable.
4685 command line. It's not trivial, but it's perfectly doable.
4686
4686
4687 * Added 'add_flip' method to inclusion conflict resolver. Fixes
4687 * Added 'add_flip' method to inclusion conflict resolver. Fixes
4688 the problem of modules being loaded in the inverse order in which
4688 the problem of modules being loaded in the inverse order in which
4689 they were defined in
4689 they were defined in
4690
4690
4691 * Version 0.1.8 released, 0.1.9 opened for further work.
4691 * Version 0.1.8 released, 0.1.9 opened for further work.
4692
4692
4693 * Added magics pdef, source and file. They respectively show the
4693 * Added magics pdef, source and file. They respectively show the
4694 definition line ('prototype' in C), source code and full python
4694 definition line ('prototype' in C), source code and full python
4695 file for any callable object. The object inspector oinfo uses
4695 file for any callable object. The object inspector oinfo uses
4696 these to show the same information.
4696 these to show the same information.
4697
4697
4698 * Version 0.1.7 released, 0.1.8 opened for further work.
4698 * Version 0.1.7 released, 0.1.8 opened for further work.
4699
4699
4700 * Separated all the magic functions into a class called Magic. The
4700 * Separated all the magic functions into a class called Magic. The
4701 InteractiveShell class was becoming too big for Xemacs to handle
4701 InteractiveShell class was becoming too big for Xemacs to handle
4702 (de-indenting a line would lock it up for 10 seconds while it
4702 (de-indenting a line would lock it up for 10 seconds while it
4703 backtracked on the whole class!)
4703 backtracked on the whole class!)
4704
4704
4705 FIXME: didn't work. It can be done, but right now namespaces are
4705 FIXME: didn't work. It can be done, but right now namespaces are
4706 all messed up. Do it later (reverted it for now, so at least
4706 all messed up. Do it later (reverted it for now, so at least
4707 everything works as before).
4707 everything works as before).
4708
4708
4709 * Got the object introspection system (magic_oinfo) working! I
4709 * Got the object introspection system (magic_oinfo) working! I
4710 think this is pretty much ready for release to Janko, so he can
4710 think this is pretty much ready for release to Janko, so he can
4711 test it for a while and then announce it. Pretty much 100% of what
4711 test it for a while and then announce it. Pretty much 100% of what
4712 I wanted for the 'phase 1' release is ready. Happy, tired.
4712 I wanted for the 'phase 1' release is ready. Happy, tired.
4713
4713
4714 2001-11-12 Fernando Perez <fperez@colorado.edu>
4714 2001-11-12 Fernando Perez <fperez@colorado.edu>
4715
4715
4716 * Version 0.1.6 released, 0.1.7 opened for further work.
4716 * Version 0.1.6 released, 0.1.7 opened for further work.
4717
4717
4718 * Fixed bug in printing: it used to test for truth before
4718 * Fixed bug in printing: it used to test for truth before
4719 printing, so 0 wouldn't print. Now checks for None.
4719 printing, so 0 wouldn't print. Now checks for None.
4720
4720
4721 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
4721 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
4722 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
4722 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
4723 reaches by hand into the outputcache. Think of a better way to do
4723 reaches by hand into the outputcache. Think of a better way to do
4724 this later.
4724 this later.
4725
4725
4726 * Various small fixes thanks to Nathan's comments.
4726 * Various small fixes thanks to Nathan's comments.
4727
4727
4728 * Changed magic_pprint to magic_Pprint. This way it doesn't
4728 * Changed magic_pprint to magic_Pprint. This way it doesn't
4729 collide with pprint() and the name is consistent with the command
4729 collide with pprint() and the name is consistent with the command
4730 line option.
4730 line option.
4731
4731
4732 * Changed prompt counter behavior to be fully like
4732 * Changed prompt counter behavior to be fully like
4733 Mathematica's. That is, even input that doesn't return a result
4733 Mathematica's. That is, even input that doesn't return a result
4734 raises the prompt counter. The old behavior was kind of confusing
4734 raises the prompt counter. The old behavior was kind of confusing
4735 (getting the same prompt number several times if the operation
4735 (getting the same prompt number several times if the operation
4736 didn't return a result).
4736 didn't return a result).
4737
4737
4738 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
4738 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
4739
4739
4740 * Fixed -Classic mode (wasn't working anymore).
4740 * Fixed -Classic mode (wasn't working anymore).
4741
4741
4742 * Added colored prompts using Nathan's new code. Colors are
4742 * Added colored prompts using Nathan's new code. Colors are
4743 currently hardwired, they can be user-configurable. For
4743 currently hardwired, they can be user-configurable. For
4744 developers, they can be chosen in file ipythonlib.py, at the
4744 developers, they can be chosen in file ipythonlib.py, at the
4745 beginning of the CachedOutput class def.
4745 beginning of the CachedOutput class def.
4746
4746
4747 2001-11-11 Fernando Perez <fperez@colorado.edu>
4747 2001-11-11 Fernando Perez <fperez@colorado.edu>
4748
4748
4749 * Version 0.1.5 released, 0.1.6 opened for further work.
4749 * Version 0.1.5 released, 0.1.6 opened for further work.
4750
4750
4751 * Changed magic_env to *return* the environment as a dict (not to
4751 * Changed magic_env to *return* the environment as a dict (not to
4752 print it). This way it prints, but it can also be processed.
4752 print it). This way it prints, but it can also be processed.
4753
4753
4754 * Added Verbose exception reporting to interactive
4754 * Added Verbose exception reporting to interactive
4755 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
4755 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
4756 traceback. Had to make some changes to the ultraTB file. This is
4756 traceback. Had to make some changes to the ultraTB file. This is
4757 probably the last 'big' thing in my mental todo list. This ties
4757 probably the last 'big' thing in my mental todo list. This ties
4758 in with the next entry:
4758 in with the next entry:
4759
4759
4760 * Changed -Xi and -Xf to a single -xmode option. Now all the user
4760 * Changed -Xi and -Xf to a single -xmode option. Now all the user
4761 has to specify is Plain, Color or Verbose for all exception
4761 has to specify is Plain, Color or Verbose for all exception
4762 handling.
4762 handling.
4763
4763
4764 * Removed ShellServices option. All this can really be done via
4764 * Removed ShellServices option. All this can really be done via
4765 the magic system. It's easier to extend, cleaner and has automatic
4765 the magic system. It's easier to extend, cleaner and has automatic
4766 namespace protection and documentation.
4766 namespace protection and documentation.
4767
4767
4768 2001-11-09 Fernando Perez <fperez@colorado.edu>
4768 2001-11-09 Fernando Perez <fperez@colorado.edu>
4769
4769
4770 * Fixed bug in output cache flushing (missing parameter to
4770 * Fixed bug in output cache flushing (missing parameter to
4771 __init__). Other small bugs fixed (found using pychecker).
4771 __init__). Other small bugs fixed (found using pychecker).
4772
4772
4773 * Version 0.1.4 opened for bugfixing.
4773 * Version 0.1.4 opened for bugfixing.
4774
4774
4775 2001-11-07 Fernando Perez <fperez@colorado.edu>
4775 2001-11-07 Fernando Perez <fperez@colorado.edu>
4776
4776
4777 * Version 0.1.3 released, mainly because of the raw_input bug.
4777 * Version 0.1.3 released, mainly because of the raw_input bug.
4778
4778
4779 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
4779 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
4780 and when testing for whether things were callable, a call could
4780 and when testing for whether things were callable, a call could
4781 actually be made to certain functions. They would get called again
4781 actually be made to certain functions. They would get called again
4782 once 'really' executed, with a resulting double call. A disaster
4782 once 'really' executed, with a resulting double call. A disaster
4783 in many cases (list.reverse() would never work!).
4783 in many cases (list.reverse() would never work!).
4784
4784
4785 * Removed prefilter() function, moved its code to raw_input (which
4785 * Removed prefilter() function, moved its code to raw_input (which
4786 after all was just a near-empty caller for prefilter). This saves
4786 after all was just a near-empty caller for prefilter). This saves
4787 a function call on every prompt, and simplifies the class a tiny bit.
4787 a function call on every prompt, and simplifies the class a tiny bit.
4788
4788
4789 * Fix _ip to __ip name in magic example file.
4789 * Fix _ip to __ip name in magic example file.
4790
4790
4791 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
4791 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
4792 work with non-gnu versions of tar.
4792 work with non-gnu versions of tar.
4793
4793
4794 2001-11-06 Fernando Perez <fperez@colorado.edu>
4794 2001-11-06 Fernando Perez <fperez@colorado.edu>
4795
4795
4796 * Version 0.1.2. Just to keep track of the recent changes.
4796 * Version 0.1.2. Just to keep track of the recent changes.
4797
4797
4798 * Fixed nasty bug in output prompt routine. It used to check 'if
4798 * Fixed nasty bug in output prompt routine. It used to check 'if
4799 arg != None...'. Problem is, this fails if arg implements a
4799 arg != None...'. Problem is, this fails if arg implements a
4800 special comparison (__cmp__) which disallows comparing to
4800 special comparison (__cmp__) which disallows comparing to
4801 None. Found it when trying to use the PhysicalQuantity module from
4801 None. Found it when trying to use the PhysicalQuantity module from
4802 ScientificPython.
4802 ScientificPython.
4803
4803
4804 2001-11-05 Fernando Perez <fperez@colorado.edu>
4804 2001-11-05 Fernando Perez <fperez@colorado.edu>
4805
4805
4806 * Also added dirs. Now the pushd/popd/dirs family functions
4806 * Also added dirs. Now the pushd/popd/dirs family functions
4807 basically like the shell, with the added convenience of going home
4807 basically like the shell, with the added convenience of going home
4808 when called with no args.
4808 when called with no args.
4809
4809
4810 * pushd/popd slightly modified to mimic shell behavior more
4810 * pushd/popd slightly modified to mimic shell behavior more
4811 closely.
4811 closely.
4812
4812
4813 * Added env,pushd,popd from ShellServices as magic functions. I
4813 * Added env,pushd,popd from ShellServices as magic functions. I
4814 think the cleanest will be to port all desired functions from
4814 think the cleanest will be to port all desired functions from
4815 ShellServices as magics and remove ShellServices altogether. This
4815 ShellServices as magics and remove ShellServices altogether. This
4816 will provide a single, clean way of adding functionality
4816 will provide a single, clean way of adding functionality
4817 (shell-type or otherwise) to IP.
4817 (shell-type or otherwise) to IP.
4818
4818
4819 2001-11-04 Fernando Perez <fperez@colorado.edu>
4819 2001-11-04 Fernando Perez <fperez@colorado.edu>
4820
4820
4821 * Added .ipython/ directory to sys.path. This way users can keep
4821 * Added .ipython/ directory to sys.path. This way users can keep
4822 customizations there and access them via import.
4822 customizations there and access them via import.
4823
4823
4824 2001-11-03 Fernando Perez <fperez@colorado.edu>
4824 2001-11-03 Fernando Perez <fperez@colorado.edu>
4825
4825
4826 * Opened version 0.1.1 for new changes.
4826 * Opened version 0.1.1 for new changes.
4827
4827
4828 * Changed version number to 0.1.0: first 'public' release, sent to
4828 * Changed version number to 0.1.0: first 'public' release, sent to
4829 Nathan and Janko.
4829 Nathan and Janko.
4830
4830
4831 * Lots of small fixes and tweaks.
4831 * Lots of small fixes and tweaks.
4832
4832
4833 * Minor changes to whos format. Now strings are shown, snipped if
4833 * Minor changes to whos format. Now strings are shown, snipped if
4834 too long.
4834 too long.
4835
4835
4836 * Changed ShellServices to work on __main__ so they show up in @who
4836 * Changed ShellServices to work on __main__ so they show up in @who
4837
4837
4838 * Help also works with ? at the end of a line:
4838 * Help also works with ? at the end of a line:
4839 ?sin and sin?
4839 ?sin and sin?
4840 both produce the same effect. This is nice, as often I use the
4840 both produce the same effect. This is nice, as often I use the
4841 tab-complete to find the name of a method, but I used to then have
4841 tab-complete to find the name of a method, but I used to then have
4842 to go to the beginning of the line to put a ? if I wanted more
4842 to go to the beginning of the line to put a ? if I wanted more
4843 info. Now I can just add the ? and hit return. Convenient.
4843 info. Now I can just add the ? and hit return. Convenient.
4844
4844
4845 2001-11-02 Fernando Perez <fperez@colorado.edu>
4845 2001-11-02 Fernando Perez <fperez@colorado.edu>
4846
4846
4847 * Python version check (>=2.1) added.
4847 * Python version check (>=2.1) added.
4848
4848
4849 * Added LazyPython documentation. At this point the docs are quite
4849 * Added LazyPython documentation. At this point the docs are quite
4850 a mess. A cleanup is in order.
4850 a mess. A cleanup is in order.
4851
4851
4852 * Auto-installer created. For some bizarre reason, the zipfiles
4852 * Auto-installer created. For some bizarre reason, the zipfiles
4853 module isn't working on my system. So I made a tar version
4853 module isn't working on my system. So I made a tar version
4854 (hopefully the command line options in various systems won't kill
4854 (hopefully the command line options in various systems won't kill
4855 me).
4855 me).
4856
4856
4857 * Fixes to Struct in genutils. Now all dictionary-like methods are
4857 * Fixes to Struct in genutils. Now all dictionary-like methods are
4858 protected (reasonably).
4858 protected (reasonably).
4859
4859
4860 * Added pager function to genutils and changed ? to print usage
4860 * Added pager function to genutils and changed ? to print usage
4861 note through it (it was too long).
4861 note through it (it was too long).
4862
4862
4863 * Added the LazyPython functionality. Works great! I changed the
4863 * Added the LazyPython functionality. Works great! I changed the
4864 auto-quote escape to ';', it's on home row and next to '. But
4864 auto-quote escape to ';', it's on home row and next to '. But
4865 both auto-quote and auto-paren (still /) escapes are command-line
4865 both auto-quote and auto-paren (still /) escapes are command-line
4866 parameters.
4866 parameters.
4867
4867
4868
4868
4869 2001-11-01 Fernando Perez <fperez@colorado.edu>
4869 2001-11-01 Fernando Perez <fperez@colorado.edu>
4870
4870
4871 * Version changed to 0.0.7. Fairly large change: configuration now
4871 * Version changed to 0.0.7. Fairly large change: configuration now
4872 is all stored in a directory, by default .ipython. There, all
4872 is all stored in a directory, by default .ipython. There, all
4873 config files have normal looking names (not .names)
4873 config files have normal looking names (not .names)
4874
4874
4875 * Version 0.0.6 Released first to Lucas and Archie as a test
4875 * Version 0.0.6 Released first to Lucas and Archie as a test
4876 run. Since it's the first 'semi-public' release, change version to
4876 run. Since it's the first 'semi-public' release, change version to
4877 > 0.0.6 for any changes now.
4877 > 0.0.6 for any changes now.
4878
4878
4879 * Stuff I had put in the ipplib.py changelog:
4879 * Stuff I had put in the ipplib.py changelog:
4880
4880
4881 Changes to InteractiveShell:
4881 Changes to InteractiveShell:
4882
4882
4883 - Made the usage message a parameter.
4883 - Made the usage message a parameter.
4884
4884
4885 - Require the name of the shell variable to be given. It's a bit
4885 - Require the name of the shell variable to be given. It's a bit
4886 of a hack, but allows the name 'shell' not to be hardwire in the
4886 of a hack, but allows the name 'shell' not to be hardwire in the
4887 magic (@) handler, which is problematic b/c it requires
4887 magic (@) handler, which is problematic b/c it requires
4888 polluting the global namespace with 'shell'. This in turn is
4888 polluting the global namespace with 'shell'. This in turn is
4889 fragile: if a user redefines a variable called shell, things
4889 fragile: if a user redefines a variable called shell, things
4890 break.
4890 break.
4891
4891
4892 - magic @: all functions available through @ need to be defined
4892 - magic @: all functions available through @ need to be defined
4893 as magic_<name>, even though they can be called simply as
4893 as magic_<name>, even though they can be called simply as
4894 @<name>. This allows the special command @magic to gather
4894 @<name>. This allows the special command @magic to gather
4895 information automatically about all existing magic functions,
4895 information automatically about all existing magic functions,
4896 even if they are run-time user extensions, by parsing the shell
4896 even if they are run-time user extensions, by parsing the shell
4897 instance __dict__ looking for special magic_ names.
4897 instance __dict__ looking for special magic_ names.
4898
4898
4899 - mainloop: added *two* local namespace parameters. This allows
4899 - mainloop: added *two* local namespace parameters. This allows
4900 the class to differentiate between parameters which were there
4900 the class to differentiate between parameters which were there
4901 before and after command line initialization was processed. This
4901 before and after command line initialization was processed. This
4902 way, later @who can show things loaded at startup by the
4902 way, later @who can show things loaded at startup by the
4903 user. This trick was necessary to make session saving/reloading
4903 user. This trick was necessary to make session saving/reloading
4904 really work: ideally after saving/exiting/reloading a session,
4904 really work: ideally after saving/exiting/reloading a session,
4905 *everythin* should look the same, including the output of @who. I
4905 *everythin* should look the same, including the output of @who. I
4906 was only able to make this work with this double namespace
4906 was only able to make this work with this double namespace
4907 trick.
4907 trick.
4908
4908
4909 - added a header to the logfile which allows (almost) full
4909 - added a header to the logfile which allows (almost) full
4910 session restoring.
4910 session restoring.
4911
4911
4912 - prepend lines beginning with @ or !, with a and log
4912 - prepend lines beginning with @ or !, with a and log
4913 them. Why? !lines: may be useful to know what you did @lines:
4913 them. Why? !lines: may be useful to know what you did @lines:
4914 they may affect session state. So when restoring a session, at
4914 they may affect session state. So when restoring a session, at
4915 least inform the user of their presence. I couldn't quite get
4915 least inform the user of their presence. I couldn't quite get
4916 them to properly re-execute, but at least the user is warned.
4916 them to properly re-execute, but at least the user is warned.
4917
4917
4918 * Started ChangeLog.
4918 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now