##// END OF EJS Templates
- Add \N escape for the actual prompt number, without any coloring.
fperez -
Show More

The requested changes are too big and content was truncated. Show full diff

@@ -1,588 +1,595 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 1850 2006-10-28 19:48:13Z fptest $"""
5 $Id: Prompts.py 2192 2007-04-01 20:51:06Z fperez $"""
6
6
7 #*****************************************************************************
7 #*****************************************************************************
8 # Copyright (C) 2001-2006 Fernando Perez <fperez@colorado.edu>
8 # Copyright (C) 2001-2006 Fernando Perez <fperez@colorado.edu>
9 #
9 #
10 # Distributed under the terms of the BSD License. The full license is in
10 # Distributed under the terms of the BSD License. The full license is in
11 # the file COPYING, distributed as part of this software.
11 # the file COPYING, distributed as part of this software.
12 #*****************************************************************************
12 #*****************************************************************************
13
13
14 from IPython import Release
14 from IPython import Release
15 __author__ = '%s <%s>' % Release.authors['Fernando']
15 __author__ = '%s <%s>' % Release.authors['Fernando']
16 __license__ = Release.license
16 __license__ = Release.license
17 __version__ = Release.version
17 __version__ = Release.version
18
18
19 #****************************************************************************
19 #****************************************************************************
20 # Required modules
20 # Required modules
21 import __builtin__
21 import __builtin__
22 import os
22 import os
23 import socket
23 import socket
24 import sys
24 import sys
25 import time
25 import time
26
26
27 # IPython's own
27 # IPython's own
28 from IPython import ColorANSI
28 from IPython import ColorANSI
29 from IPython.Itpl import ItplNS
29 from IPython.Itpl import ItplNS
30 from IPython.ipstruct import Struct
30 from IPython.ipstruct import Struct
31 from IPython.macro import Macro
31 from IPython.macro import Macro
32 from IPython.genutils import *
32 from IPython.genutils import *
33
33
34 #****************************************************************************
34 #****************************************************************************
35 #Color schemes for Prompts.
35 #Color schemes for Prompts.
36
36
37 PromptColors = ColorANSI.ColorSchemeTable()
37 PromptColors = ColorANSI.ColorSchemeTable()
38 InputColors = ColorANSI.InputTermColors # just a shorthand
38 InputColors = ColorANSI.InputTermColors # just a shorthand
39 Colors = ColorANSI.TermColors # just a shorthand
39 Colors = ColorANSI.TermColors # just a shorthand
40
40
41 PromptColors.add_scheme(ColorANSI.ColorScheme(
41 PromptColors.add_scheme(ColorANSI.ColorScheme(
42 'NoColor',
42 'NoColor',
43 in_prompt = InputColors.NoColor, # Input prompt
43 in_prompt = InputColors.NoColor, # Input prompt
44 in_number = InputColors.NoColor, # Input prompt number
44 in_number = InputColors.NoColor, # Input prompt number
45 in_prompt2 = InputColors.NoColor, # Continuation prompt
45 in_prompt2 = InputColors.NoColor, # Continuation prompt
46 in_normal = InputColors.NoColor, # color off (usu. Colors.Normal)
46 in_normal = InputColors.NoColor, # color off (usu. Colors.Normal)
47
47
48 out_prompt = Colors.NoColor, # Output prompt
48 out_prompt = Colors.NoColor, # Output prompt
49 out_number = Colors.NoColor, # Output prompt number
49 out_number = Colors.NoColor, # Output prompt number
50
50
51 normal = Colors.NoColor # color off (usu. Colors.Normal)
51 normal = Colors.NoColor # color off (usu. Colors.Normal)
52 ))
52 ))
53
53
54 # make some schemes as instances so we can copy them for modification easily:
54 # make some schemes as instances so we can copy them for modification easily:
55 __PColLinux = ColorANSI.ColorScheme(
55 __PColLinux = ColorANSI.ColorScheme(
56 'Linux',
56 'Linux',
57 in_prompt = InputColors.Green,
57 in_prompt = InputColors.Green,
58 in_number = InputColors.LightGreen,
58 in_number = InputColors.LightGreen,
59 in_prompt2 = InputColors.Green,
59 in_prompt2 = InputColors.Green,
60 in_normal = InputColors.Normal, # color off (usu. Colors.Normal)
60 in_normal = InputColors.Normal, # color off (usu. Colors.Normal)
61
61
62 out_prompt = Colors.Red,
62 out_prompt = Colors.Red,
63 out_number = Colors.LightRed,
63 out_number = Colors.LightRed,
64
64
65 normal = Colors.Normal
65 normal = Colors.Normal
66 )
66 )
67 # Don't forget to enter it into the table!
67 # Don't forget to enter it into the table!
68 PromptColors.add_scheme(__PColLinux)
68 PromptColors.add_scheme(__PColLinux)
69
69
70 # Slightly modified Linux for light backgrounds
70 # Slightly modified Linux for light backgrounds
71 __PColLightBG = __PColLinux.copy('LightBG')
71 __PColLightBG = __PColLinux.copy('LightBG')
72
72
73 __PColLightBG.colors.update(
73 __PColLightBG.colors.update(
74 in_prompt = InputColors.Blue,
74 in_prompt = InputColors.Blue,
75 in_number = InputColors.LightBlue,
75 in_number = InputColors.LightBlue,
76 in_prompt2 = InputColors.Blue
76 in_prompt2 = InputColors.Blue
77 )
77 )
78 PromptColors.add_scheme(__PColLightBG)
78 PromptColors.add_scheme(__PColLightBG)
79
79
80 del Colors,InputColors
80 del Colors,InputColors
81
81
82 #-----------------------------------------------------------------------------
82 #-----------------------------------------------------------------------------
83 def multiple_replace(dict, text):
83 def multiple_replace(dict, text):
84 """ Replace in 'text' all occurences of any key in the given
84 """ Replace in 'text' all occurences of any key in the given
85 dictionary by its corresponding value. Returns the new string."""
85 dictionary by its corresponding value. Returns the new string."""
86
86
87 # Function by Xavier Defrang, originally found at:
87 # Function by Xavier Defrang, originally found at:
88 # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/81330
88 # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/81330
89
89
90 # Create a regular expression from the dictionary keys
90 # Create a regular expression from the dictionary keys
91 regex = re.compile("(%s)" % "|".join(map(re.escape, dict.keys())))
91 regex = re.compile("(%s)" % "|".join(map(re.escape, dict.keys())))
92 # For each match, look-up corresponding value in dictionary
92 # For each match, look-up corresponding value in dictionary
93 return regex.sub(lambda mo: dict[mo.string[mo.start():mo.end()]], text)
93 return regex.sub(lambda mo: dict[mo.string[mo.start():mo.end()]], text)
94
94
95 #-----------------------------------------------------------------------------
95 #-----------------------------------------------------------------------------
96 # Special characters that can be used in prompt templates, mainly bash-like
96 # Special characters that can be used in prompt templates, mainly bash-like
97
97
98 # If $HOME isn't defined (Windows), make it an absurd string so that it can
98 # If $HOME isn't defined (Windows), make it an absurd string so that it can
99 # never be expanded out into '~'. Basically anything which can never be a
99 # never be expanded out into '~'. Basically anything which can never be a
100 # reasonable directory name will do, we just want the $HOME -> '~' operation
100 # reasonable directory name will do, we just want the $HOME -> '~' operation
101 # to become a no-op. We pre-compute $HOME here so it's not done on every
101 # to become a no-op. We pre-compute $HOME here so it's not done on every
102 # prompt call.
102 # prompt call.
103
103
104 # FIXME:
104 # FIXME:
105
105
106 # - This should be turned into a class which does proper namespace management,
106 # - This should be turned into a class which does proper namespace management,
107 # since the prompt specials need to be evaluated in a certain namespace.
107 # since the prompt specials need to be evaluated in a certain namespace.
108 # Currently it's just globals, which need to be managed manually by code
108 # Currently it's just globals, which need to be managed manually by code
109 # below.
109 # below.
110
110
111 # - I also need to split up the color schemes from the prompt specials
111 # - I also need to split up the color schemes from the prompt specials
112 # somehow. I don't have a clean design for that quite yet.
112 # somehow. I don't have a clean design for that quite yet.
113
113
114 HOME = os.environ.get("HOME","//////:::::ZZZZZ,,,~~~")
114 HOME = os.environ.get("HOME","//////:::::ZZZZZ,,,~~~")
115
115
116 # We precompute a few more strings here for the prompt_specials, which are
116 # We precompute a few more strings here for the prompt_specials, which are
117 # fixed once ipython starts. This reduces the runtime overhead of computing
117 # fixed once ipython starts. This reduces the runtime overhead of computing
118 # prompt strings.
118 # prompt strings.
119 USER = os.environ.get("USER")
119 USER = os.environ.get("USER")
120 HOSTNAME = socket.gethostname()
120 HOSTNAME = socket.gethostname()
121 HOSTNAME_SHORT = HOSTNAME.split(".")[0]
121 HOSTNAME_SHORT = HOSTNAME.split(".")[0]
122 ROOT_SYMBOL = "$#"[os.name=='nt' or os.getuid()==0]
122 ROOT_SYMBOL = "$#"[os.name=='nt' or os.getuid()==0]
123
123
124 prompt_specials_color = {
124 prompt_specials_color = {
125 # Prompt/history count
125 # Prompt/history count
126 '%n' : '${self.col_num}' '${self.cache.prompt_count}' '${self.col_p}',
126 '%n' : '${self.col_num}' '${self.cache.prompt_count}' '${self.col_p}',
127 '\\#': '${self.col_num}' '${self.cache.prompt_count}' '${self.col_p}',
127 r'\#': '${self.col_num}' '${self.cache.prompt_count}' '${self.col_p}',
128 # Just the prompt counter number, WITHOUT any coloring wrappers, so users
129 # can get numbers displayed in whatever color they want.
130 r'\N': '${self.cache.prompt_count}',
128 # Prompt/history count, with the actual digits replaced by dots. Used
131 # Prompt/history count, with the actual digits replaced by dots. Used
129 # mainly in continuation prompts (prompt_in2)
132 # mainly in continuation prompts (prompt_in2)
130 '\\D': '${"."*len(str(self.cache.prompt_count))}',
133 r'\D': '${"."*len(str(self.cache.prompt_count))}',
131 # Current working directory
134 # Current working directory
132 '\\w': '${os.getcwd()}',
135 r'\w': '${os.getcwd()}',
133 # Current time
136 # Current time
134 '\\t' : '${time.strftime("%H:%M:%S")}',
137 r'\t' : '${time.strftime("%H:%M:%S")}',
135 # Basename of current working directory.
138 # Basename of current working directory.
136 # (use os.sep to make this portable across OSes)
139 # (use os.sep to make this portable across OSes)
137 '\\W' : '${os.getcwd().split("%s")[-1]}' % os.sep,
140 r'\W' : '${os.getcwd().split("%s")[-1]}' % os.sep,
138 # These X<N> are an extension to the normal bash prompts. They return
141 # These X<N> are an extension to the normal bash prompts. They return
139 # N terms of the path, after replacing $HOME with '~'
142 # N terms of the path, after replacing $HOME with '~'
140 '\\X0': '${os.getcwd().replace("%s","~")}' % HOME,
143 r'\X0': '${os.getcwd().replace("%s","~")}' % HOME,
141 '\\X1': '${self.cwd_filt(1)}',
144 r'\X1': '${self.cwd_filt(1)}',
142 '\\X2': '${self.cwd_filt(2)}',
145 r'\X2': '${self.cwd_filt(2)}',
143 '\\X3': '${self.cwd_filt(3)}',
146 r'\X3': '${self.cwd_filt(3)}',
144 '\\X4': '${self.cwd_filt(4)}',
147 r'\X4': '${self.cwd_filt(4)}',
145 '\\X5': '${self.cwd_filt(5)}',
148 r'\X5': '${self.cwd_filt(5)}',
146 # Y<N> are similar to X<N>, but they show '~' if it's the directory
149 # Y<N> are similar to X<N>, but they show '~' if it's the directory
147 # N+1 in the list. Somewhat like %cN in tcsh.
150 # N+1 in the list. Somewhat like %cN in tcsh.
148 '\\Y0': '${self.cwd_filt2(0)}',
151 r'\Y0': '${self.cwd_filt2(0)}',
149 '\\Y1': '${self.cwd_filt2(1)}',
152 r'\Y1': '${self.cwd_filt2(1)}',
150 '\\Y2': '${self.cwd_filt2(2)}',
153 r'\Y2': '${self.cwd_filt2(2)}',
151 '\\Y3': '${self.cwd_filt2(3)}',
154 r'\Y3': '${self.cwd_filt2(3)}',
152 '\\Y4': '${self.cwd_filt2(4)}',
155 r'\Y4': '${self.cwd_filt2(4)}',
153 '\\Y5': '${self.cwd_filt2(5)}',
156 r'\Y5': '${self.cwd_filt2(5)}',
154 # Hostname up to first .
157 # Hostname up to first .
155 '\\h': HOSTNAME_SHORT,
158 r'\h': HOSTNAME_SHORT,
156 # Full hostname
159 # Full hostname
157 '\\H': HOSTNAME,
160 r'\H': HOSTNAME,
158 # Username of current user
161 # Username of current user
159 '\\u': USER,
162 r'\u': USER,
160 # Escaped '\'
163 # Escaped '\'
161 '\\\\': '\\',
164 '\\\\': '\\',
162 # Newline
165 # Newline
163 '\\n': '\n',
166 r'\n': '\n',
164 # Carriage return
167 # Carriage return
165 '\\r': '\r',
168 r'\r': '\r',
166 # Release version
169 # Release version
167 '\\v': __version__,
170 r'\v': __version__,
168 # Root symbol ($ or #)
171 # Root symbol ($ or #)
169 '\\$': ROOT_SYMBOL,
172 r'\$': ROOT_SYMBOL,
170 }
173 }
171
174
172 # A copy of the prompt_specials dictionary but with all color escapes removed,
175 # A copy of the prompt_specials dictionary but with all color escapes removed,
173 # so we can correctly compute the prompt length for the auto_rewrite method.
176 # so we can correctly compute the prompt length for the auto_rewrite method.
174 prompt_specials_nocolor = prompt_specials_color.copy()
177 prompt_specials_nocolor = prompt_specials_color.copy()
175 prompt_specials_nocolor['%n'] = '${self.cache.prompt_count}'
178 prompt_specials_nocolor['%n'] = '${self.cache.prompt_count}'
176 prompt_specials_nocolor['\\#'] = '${self.cache.prompt_count}'
179 prompt_specials_nocolor[r'\#'] = '${self.cache.prompt_count}'
177
180
178 # Add in all the InputTermColors color escapes as valid prompt characters.
181 # Add in all the InputTermColors color escapes as valid prompt characters.
179 # They all get added as \\C_COLORNAME, so that we don't have any conflicts
182 # They all get added as \\C_COLORNAME, so that we don't have any conflicts
180 # with a color name which may begin with a letter used by any other of the
183 # with a color name which may begin with a letter used by any other of the
181 # allowed specials. This of course means that \\C will never be allowed for
184 # allowed specials. This of course means that \\C will never be allowed for
182 # anything else.
185 # anything else.
183 input_colors = ColorANSI.InputTermColors
186 input_colors = ColorANSI.InputTermColors
184 for _color in dir(input_colors):
187 for _color in dir(input_colors):
185 if _color[0] != '_':
188 if _color[0] != '_':
186 c_name = '\\C_'+_color
189 c_name = r'\C_'+_color
187 prompt_specials_color[c_name] = getattr(input_colors,_color)
190 prompt_specials_color[c_name] = getattr(input_colors,_color)
188 prompt_specials_nocolor[c_name] = ''
191 prompt_specials_nocolor[c_name] = ''
189
192
190 # we default to no color for safety. Note that prompt_specials is a global
193 # we default to no color for safety. Note that prompt_specials is a global
191 # variable used by all prompt objects.
194 # variable used by all prompt objects.
192 prompt_specials = prompt_specials_nocolor
195 prompt_specials = prompt_specials_nocolor
193
196
194 #-----------------------------------------------------------------------------
197 #-----------------------------------------------------------------------------
195 def str_safe(arg):
198 def str_safe(arg):
196 """Convert to a string, without ever raising an exception.
199 """Convert to a string, without ever raising an exception.
197
200
198 If str(arg) fails, <ERROR: ... > is returned, where ... is the exception
201 If str(arg) fails, <ERROR: ... > is returned, where ... is the exception
199 error message."""
202 error message."""
200
203
201 try:
204 try:
202 out = str(arg)
205 out = str(arg)
203 except UnicodeError:
206 except UnicodeError:
204 try:
207 try:
205 out = arg.encode('utf_8','replace')
208 out = arg.encode('utf_8','replace')
206 except Exception,msg:
209 except Exception,msg:
207 # let's keep this little duplication here, so that the most common
210 # let's keep this little duplication here, so that the most common
208 # case doesn't suffer from a double try wrapping.
211 # case doesn't suffer from a double try wrapping.
209 out = '<ERROR: %s>' % msg
212 out = '<ERROR: %s>' % msg
210 except Exception,msg:
213 except Exception,msg:
211 out = '<ERROR: %s>' % msg
214 out = '<ERROR: %s>' % msg
212 return out
215 return out
213
216
214 class BasePrompt:
217 class BasePrompt:
215 """Interactive prompt similar to Mathematica's."""
218 """Interactive prompt similar to Mathematica's."""
216 def __init__(self,cache,sep,prompt,pad_left=False):
219 def __init__(self,cache,sep,prompt,pad_left=False):
217
220
218 # Hack: we access information about the primary prompt through the
221 # Hack: we access information about the primary prompt through the
219 # cache argument. We need this, because we want the secondary prompt
222 # cache argument. We need this, because we want the secondary prompt
220 # to be aligned with the primary one. Color table info is also shared
223 # to be aligned with the primary one. Color table info is also shared
221 # by all prompt classes through the cache. Nice OO spaghetti code!
224 # by all prompt classes through the cache. Nice OO spaghetti code!
222 self.cache = cache
225 self.cache = cache
223 self.sep = sep
226 self.sep = sep
224
227
225 # regexp to count the number of spaces at the end of a prompt
228 # regexp to count the number of spaces at the end of a prompt
226 # expression, useful for prompt auto-rewriting
229 # expression, useful for prompt auto-rewriting
227 self.rspace = re.compile(r'(\s*)$')
230 self.rspace = re.compile(r'(\s*)$')
228 # Flag to left-pad prompt strings to match the length of the primary
231 # Flag to left-pad prompt strings to match the length of the primary
229 # prompt
232 # prompt
230 self.pad_left = pad_left
233 self.pad_left = pad_left
231 # Set template to create each actual prompt (where numbers change)
234 # Set template to create each actual prompt (where numbers change)
232 self.p_template = prompt
235 self.p_template = prompt
233 self.set_p_str()
236 self.set_p_str()
234
237
235 def set_p_str(self):
238 def set_p_str(self):
236 """ Set the interpolating prompt strings.
239 """ Set the interpolating prompt strings.
237
240
238 This must be called every time the color settings change, because the
241 This must be called every time the color settings change, because the
239 prompt_specials global may have changed."""
242 prompt_specials global may have changed."""
240
243
241 import os,time # needed in locals for prompt string handling
244 import os,time # needed in locals for prompt string handling
242 loc = locals()
245 loc = locals()
243 self.p_str = ItplNS('%s%s%s' %
246 self.p_str = ItplNS('%s%s%s' %
244 ('${self.sep}${self.col_p}',
247 ('${self.sep}${self.col_p}',
245 multiple_replace(prompt_specials, self.p_template),
248 multiple_replace(prompt_specials, self.p_template),
246 '${self.col_norm}'),self.cache.user_ns,loc)
249 '${self.col_norm}'),self.cache.user_ns,loc)
247
250
248 self.p_str_nocolor = ItplNS(multiple_replace(prompt_specials_nocolor,
251 self.p_str_nocolor = ItplNS(multiple_replace(prompt_specials_nocolor,
249 self.p_template),
252 self.p_template),
250 self.cache.user_ns,loc)
253 self.cache.user_ns,loc)
251
254
252 def write(self,msg): # dbg
255 def write(self,msg): # dbg
253 sys.stdout.write(msg)
256 sys.stdout.write(msg)
254 return ''
257 return ''
255
258
256 def __str__(self):
259 def __str__(self):
257 """Return a string form of the prompt.
260 """Return a string form of the prompt.
258
261
259 This for is useful for continuation and output prompts, since it is
262 This for is useful for continuation and output prompts, since it is
260 left-padded to match lengths with the primary one (if the
263 left-padded to match lengths with the primary one (if the
261 self.pad_left attribute is set)."""
264 self.pad_left attribute is set)."""
262
265
263 out_str = str_safe(self.p_str)
266 out_str = str_safe(self.p_str)
264 if self.pad_left:
267 if self.pad_left:
265 # We must find the amount of padding required to match lengths,
268 # We must find the amount of padding required to match lengths,
266 # taking the color escapes (which are invisible on-screen) into
269 # taking the color escapes (which are invisible on-screen) into
267 # account.
270 # account.
268 esc_pad = len(out_str) - len(str_safe(self.p_str_nocolor))
271 esc_pad = len(out_str) - len(str_safe(self.p_str_nocolor))
269 format = '%%%ss' % (len(str(self.cache.last_prompt))+esc_pad)
272 format = '%%%ss' % (len(str(self.cache.last_prompt))+esc_pad)
270 return format % out_str
273 return format % out_str
271 else:
274 else:
272 return out_str
275 return out_str
273
276
274 # these path filters are put in as methods so that we can control the
277 # these path filters are put in as methods so that we can control the
275 # namespace where the prompt strings get evaluated
278 # namespace where the prompt strings get evaluated
276 def cwd_filt(self,depth):
279 def cwd_filt(self,depth):
277 """Return the last depth elements of the current working directory.
280 """Return the last depth elements of the current working directory.
278
281
279 $HOME is always replaced with '~'.
282 $HOME is always replaced with '~'.
280 If depth==0, the full path is returned."""
283 If depth==0, the full path is returned."""
281
284
282 cwd = os.getcwd().replace(HOME,"~")
285 cwd = os.getcwd().replace(HOME,"~")
283 out = os.sep.join(cwd.split(os.sep)[-depth:])
286 out = os.sep.join(cwd.split(os.sep)[-depth:])
284 if out:
287 if out:
285 return out
288 return out
286 else:
289 else:
287 return os.sep
290 return os.sep
288
291
289 def cwd_filt2(self,depth):
292 def cwd_filt2(self,depth):
290 """Return the last depth elements of the current working directory.
293 """Return the last depth elements of the current working directory.
291
294
292 $HOME is always replaced with '~'.
295 $HOME is always replaced with '~'.
293 If depth==0, the full path is returned."""
296 If depth==0, the full path is returned."""
294
297
295 cwd = os.getcwd().replace(HOME,"~").split(os.sep)
298 cwd = os.getcwd().replace(HOME,"~").split(os.sep)
296 if '~' in cwd and len(cwd) == depth+1:
299 if '~' in cwd and len(cwd) == depth+1:
297 depth += 1
300 depth += 1
298 out = os.sep.join(cwd[-depth:])
301 out = os.sep.join(cwd[-depth:])
299 if out:
302 if out:
300 return out
303 return out
301 else:
304 else:
302 return os.sep
305 return os.sep
303
306
304 class Prompt1(BasePrompt):
307 class Prompt1(BasePrompt):
305 """Input interactive prompt similar to Mathematica's."""
308 """Input interactive prompt similar to Mathematica's."""
306
309
307 def __init__(self,cache,sep='\n',prompt='In [\\#]: ',pad_left=True):
310 def __init__(self,cache,sep='\n',prompt='In [\\#]: ',pad_left=True):
308 BasePrompt.__init__(self,cache,sep,prompt,pad_left)
311 BasePrompt.__init__(self,cache,sep,prompt,pad_left)
309
312
310 def set_colors(self):
313 def set_colors(self):
311 self.set_p_str()
314 self.set_p_str()
312 Colors = self.cache.color_table.active_colors # shorthand
315 Colors = self.cache.color_table.active_colors # shorthand
313 self.col_p = Colors.in_prompt
316 self.col_p = Colors.in_prompt
314 self.col_num = Colors.in_number
317 self.col_num = Colors.in_number
315 self.col_norm = Colors.in_normal
318 self.col_norm = Colors.in_normal
316 # We need a non-input version of these escapes for the '--->'
319 # We need a non-input version of these escapes for the '--->'
317 # auto-call prompts used in the auto_rewrite() method.
320 # auto-call prompts used in the auto_rewrite() method.
318 self.col_p_ni = self.col_p.replace('\001','').replace('\002','')
321 self.col_p_ni = self.col_p.replace('\001','').replace('\002','')
319 self.col_norm_ni = Colors.normal
322 self.col_norm_ni = Colors.normal
320
323
321 def __str__(self):
324 def __str__(self):
322 self.cache.prompt_count += 1
325 self.cache.prompt_count += 1
323 self.cache.last_prompt = str_safe(self.p_str_nocolor).split('\n')[-1]
326 self.cache.last_prompt = str_safe(self.p_str_nocolor).split('\n')[-1]
324 return str_safe(self.p_str)
327 return str_safe(self.p_str)
325
328
326 def auto_rewrite(self):
329 def auto_rewrite(self):
327 """Print a string of the form '--->' which lines up with the previous
330 """Print a string of the form '--->' which lines up with the previous
328 input string. Useful for systems which re-write the user input when
331 input string. Useful for systems which re-write the user input when
329 handling automatically special syntaxes."""
332 handling automatically special syntaxes."""
330
333
331 curr = str(self.cache.last_prompt)
334 curr = str(self.cache.last_prompt)
332 nrspaces = len(self.rspace.search(curr).group())
335 nrspaces = len(self.rspace.search(curr).group())
333 return '%s%s>%s%s' % (self.col_p_ni,'-'*(len(curr)-nrspaces-1),
336 return '%s%s>%s%s' % (self.col_p_ni,'-'*(len(curr)-nrspaces-1),
334 ' '*nrspaces,self.col_norm_ni)
337 ' '*nrspaces,self.col_norm_ni)
335
338
336 class PromptOut(BasePrompt):
339 class PromptOut(BasePrompt):
337 """Output interactive prompt similar to Mathematica's."""
340 """Output interactive prompt similar to Mathematica's."""
338
341
339 def __init__(self,cache,sep='',prompt='Out[\\#]: ',pad_left=True):
342 def __init__(self,cache,sep='',prompt='Out[\\#]: ',pad_left=True):
340 BasePrompt.__init__(self,cache,sep,prompt,pad_left)
343 BasePrompt.__init__(self,cache,sep,prompt,pad_left)
341 if not self.p_template:
344 if not self.p_template:
342 self.__str__ = lambda: ''
345 self.__str__ = lambda: ''
343
346
344 def set_colors(self):
347 def set_colors(self):
345 self.set_p_str()
348 self.set_p_str()
346 Colors = self.cache.color_table.active_colors # shorthand
349 Colors = self.cache.color_table.active_colors # shorthand
347 self.col_p = Colors.out_prompt
350 self.col_p = Colors.out_prompt
348 self.col_num = Colors.out_number
351 self.col_num = Colors.out_number
349 self.col_norm = Colors.normal
352 self.col_norm = Colors.normal
350
353
351 class Prompt2(BasePrompt):
354 class Prompt2(BasePrompt):
352 """Interactive continuation prompt."""
355 """Interactive continuation prompt."""
353
356
354 def __init__(self,cache,prompt=' .\\D.: ',pad_left=True):
357 def __init__(self,cache,prompt=' .\\D.: ',pad_left=True):
355 self.cache = cache
358 self.cache = cache
356 self.p_template = prompt
359 self.p_template = prompt
357 self.pad_left = pad_left
360 self.pad_left = pad_left
358 self.set_p_str()
361 self.set_p_str()
359
362
360 def set_p_str(self):
363 def set_p_str(self):
361 import os,time # needed in locals for prompt string handling
364 import os,time # needed in locals for prompt string handling
362 loc = locals()
365 loc = locals()
363 self.p_str = ItplNS('%s%s%s' %
366 self.p_str = ItplNS('%s%s%s' %
364 ('${self.col_p2}',
367 ('${self.col_p2}',
365 multiple_replace(prompt_specials, self.p_template),
368 multiple_replace(prompt_specials, self.p_template),
366 '$self.col_norm'),
369 '$self.col_norm'),
367 self.cache.user_ns,loc)
370 self.cache.user_ns,loc)
368 self.p_str_nocolor = ItplNS(multiple_replace(prompt_specials_nocolor,
371 self.p_str_nocolor = ItplNS(multiple_replace(prompt_specials_nocolor,
369 self.p_template),
372 self.p_template),
370 self.cache.user_ns,loc)
373 self.cache.user_ns,loc)
371
374
372 def set_colors(self):
375 def set_colors(self):
373 self.set_p_str()
376 self.set_p_str()
374 Colors = self.cache.color_table.active_colors
377 Colors = self.cache.color_table.active_colors
375 self.col_p2 = Colors.in_prompt2
378 self.col_p2 = Colors.in_prompt2
376 self.col_norm = Colors.in_normal
379 self.col_norm = Colors.in_normal
377 # FIXME (2004-06-16) HACK: prevent crashes for users who haven't
380 # FIXME (2004-06-16) HACK: prevent crashes for users who haven't
378 # updated their prompt_in2 definitions. Remove eventually.
381 # updated their prompt_in2 definitions. Remove eventually.
379 self.col_p = Colors.out_prompt
382 self.col_p = Colors.out_prompt
380 self.col_num = Colors.out_number
383 self.col_num = Colors.out_number
381
384
382
385
383 #-----------------------------------------------------------------------------
386 #-----------------------------------------------------------------------------
384 class CachedOutput:
387 class CachedOutput:
385 """Class for printing output from calculations while keeping a cache of
388 """Class for printing output from calculations while keeping a cache of
386 reults. It dynamically creates global variables prefixed with _ which
389 reults. It dynamically creates global variables prefixed with _ which
387 contain these results.
390 contain these results.
388
391
389 Meant to be used as a sys.displayhook replacement, providing numbered
392 Meant to be used as a sys.displayhook replacement, providing numbered
390 prompts and cache services.
393 prompts and cache services.
391
394
392 Initialize with initial and final values for cache counter (this defines
395 Initialize with initial and final values for cache counter (this defines
393 the maximum size of the cache."""
396 the maximum size of the cache."""
394
397
395 def __init__(self,shell,cache_size,Pprint,
398 def __init__(self,shell,cache_size,Pprint,
396 colors='NoColor',input_sep='\n',
399 colors='NoColor',input_sep='\n',
397 output_sep='\n',output_sep2='',
400 output_sep='\n',output_sep2='',
398 ps1 = None, ps2 = None,ps_out = None,pad_left=True):
401 ps1 = None, ps2 = None,ps_out = None,pad_left=True):
399
402
400 cache_size_min = 3
403 cache_size_min = 3
401 if cache_size <= 0:
404 if cache_size <= 0:
402 self.do_full_cache = 0
405 self.do_full_cache = 0
403 cache_size = 0
406 cache_size = 0
404 elif cache_size < cache_size_min:
407 elif cache_size < cache_size_min:
405 self.do_full_cache = 0
408 self.do_full_cache = 0
406 cache_size = 0
409 cache_size = 0
407 warn('caching was disabled (min value for cache size is %s).' %
410 warn('caching was disabled (min value for cache size is %s).' %
408 cache_size_min,level=3)
411 cache_size_min,level=3)
409 else:
412 else:
410 self.do_full_cache = 1
413 self.do_full_cache = 1
411
414
412 self.cache_size = cache_size
415 self.cache_size = cache_size
413 self.input_sep = input_sep
416 self.input_sep = input_sep
414
417
415 # we need a reference to the user-level namespace
418 # we need a reference to the user-level namespace
416 self.shell = shell
419 self.shell = shell
417 self.user_ns = shell.user_ns
420 self.user_ns = shell.user_ns
418 # and to the user's input
421 # and to the user's input
419 self.input_hist = shell.input_hist
422 self.input_hist = shell.input_hist
420 # and to the user's logger, for logging output
423 # and to the user's logger, for logging output
421 self.logger = shell.logger
424 self.logger = shell.logger
422
425
423 # Set input prompt strings and colors
426 # Set input prompt strings and colors
424 if cache_size == 0:
427 if cache_size == 0:
425 if ps1.find('%n') > -1 or ps1.find('\\#') > -1: ps1 = '>>> '
428 if ps1.find('%n') > -1 or ps1.find(r'\#') > -1 \
426 if ps2.find('%n') > -1 or ps2.find('\\#') > -1: ps2 = '... '
429 or ps1.find(r'\N') > -1:
430 ps1 = '>>> '
431 if ps2.find('%n') > -1 or ps2.find(r'\#') > -1 \
432 or ps2.find(r'\N') > -1:
433 ps2 = '... '
427 self.ps1_str = self._set_prompt_str(ps1,'In [\\#]: ','>>> ')
434 self.ps1_str = self._set_prompt_str(ps1,'In [\\#]: ','>>> ')
428 self.ps2_str = self._set_prompt_str(ps2,' .\\D.: ','... ')
435 self.ps2_str = self._set_prompt_str(ps2,' .\\D.: ','... ')
429 self.ps_out_str = self._set_prompt_str(ps_out,'Out[\\#]: ','')
436 self.ps_out_str = self._set_prompt_str(ps_out,'Out[\\#]: ','')
430
437
431 self.color_table = PromptColors
438 self.color_table = PromptColors
432 self.prompt1 = Prompt1(self,sep=input_sep,prompt=self.ps1_str,
439 self.prompt1 = Prompt1(self,sep=input_sep,prompt=self.ps1_str,
433 pad_left=pad_left)
440 pad_left=pad_left)
434 self.prompt2 = Prompt2(self,prompt=self.ps2_str,pad_left=pad_left)
441 self.prompt2 = Prompt2(self,prompt=self.ps2_str,pad_left=pad_left)
435 self.prompt_out = PromptOut(self,sep='',prompt=self.ps_out_str,
442 self.prompt_out = PromptOut(self,sep='',prompt=self.ps_out_str,
436 pad_left=pad_left)
443 pad_left=pad_left)
437 self.set_colors(colors)
444 self.set_colors(colors)
438
445
439 # other more normal stuff
446 # other more normal stuff
440 # b/c each call to the In[] prompt raises it by 1, even the first.
447 # b/c each call to the In[] prompt raises it by 1, even the first.
441 self.prompt_count = 0
448 self.prompt_count = 0
442 # Store the last prompt string each time, we need it for aligning
449 # Store the last prompt string each time, we need it for aligning
443 # continuation and auto-rewrite prompts
450 # continuation and auto-rewrite prompts
444 self.last_prompt = ''
451 self.last_prompt = ''
445 self.Pprint = Pprint
452 self.Pprint = Pprint
446 self.output_sep = output_sep
453 self.output_sep = output_sep
447 self.output_sep2 = output_sep2
454 self.output_sep2 = output_sep2
448 self._,self.__,self.___ = '','',''
455 self._,self.__,self.___ = '','',''
449 self.pprint_types = map(type,[(),[],{}])
456 self.pprint_types = map(type,[(),[],{}])
450
457
451 # these are deliberately global:
458 # these are deliberately global:
452 to_user_ns = {'_':self._,'__':self.__,'___':self.___}
459 to_user_ns = {'_':self._,'__':self.__,'___':self.___}
453 self.user_ns.update(to_user_ns)
460 self.user_ns.update(to_user_ns)
454
461
455 def _set_prompt_str(self,p_str,cache_def,no_cache_def):
462 def _set_prompt_str(self,p_str,cache_def,no_cache_def):
456 if p_str is None:
463 if p_str is None:
457 if self.do_full_cache:
464 if self.do_full_cache:
458 return cache_def
465 return cache_def
459 else:
466 else:
460 return no_cache_def
467 return no_cache_def
461 else:
468 else:
462 return p_str
469 return p_str
463
470
464 def set_colors(self,colors):
471 def set_colors(self,colors):
465 """Set the active color scheme and configure colors for the three
472 """Set the active color scheme and configure colors for the three
466 prompt subsystems."""
473 prompt subsystems."""
467
474
468 # FIXME: the prompt_specials global should be gobbled inside this
475 # FIXME: the prompt_specials global should be gobbled inside this
469 # class instead. Do it when cleaning up the whole 3-prompt system.
476 # class instead. Do it when cleaning up the whole 3-prompt system.
470 global prompt_specials
477 global prompt_specials
471 if colors.lower()=='nocolor':
478 if colors.lower()=='nocolor':
472 prompt_specials = prompt_specials_nocolor
479 prompt_specials = prompt_specials_nocolor
473 else:
480 else:
474 prompt_specials = prompt_specials_color
481 prompt_specials = prompt_specials_color
475
482
476 self.color_table.set_active_scheme(colors)
483 self.color_table.set_active_scheme(colors)
477 self.prompt1.set_colors()
484 self.prompt1.set_colors()
478 self.prompt2.set_colors()
485 self.prompt2.set_colors()
479 self.prompt_out.set_colors()
486 self.prompt_out.set_colors()
480
487
481 def __call__(self,arg=None):
488 def __call__(self,arg=None):
482 """Printing with history cache management.
489 """Printing with history cache management.
483
490
484 This is invoked everytime the interpreter needs to print, and is
491 This is invoked everytime the interpreter needs to print, and is
485 activated by setting the variable sys.displayhook to it."""
492 activated by setting the variable sys.displayhook to it."""
486
493
487 # If something injected a '_' variable in __builtin__, delete
494 # If something injected a '_' variable in __builtin__, delete
488 # ipython's automatic one so we don't clobber that. gettext() in
495 # ipython's automatic one so we don't clobber that. gettext() in
489 # particular uses _, so we need to stay away from it.
496 # particular uses _, so we need to stay away from it.
490 if '_' in __builtin__.__dict__:
497 if '_' in __builtin__.__dict__:
491 try:
498 try:
492 del self.user_ns['_']
499 del self.user_ns['_']
493 except KeyError:
500 except KeyError:
494 pass
501 pass
495 if arg is not None:
502 if arg is not None:
496 cout_write = Term.cout.write # fast lookup
503 cout_write = Term.cout.write # fast lookup
497 # first handle the cache and counters
504 # first handle the cache and counters
498
505
499 # do not print output if input ends in ';'
506 # do not print output if input ends in ';'
500 if self.input_hist[self.prompt_count].endswith(';\n'):
507 if self.input_hist[self.prompt_count].endswith(';\n'):
501 return
508 return
502 # don't use print, puts an extra space
509 # don't use print, puts an extra space
503 cout_write(self.output_sep)
510 cout_write(self.output_sep)
504 outprompt = self.shell.hooks.generate_output_prompt()
511 outprompt = self.shell.hooks.generate_output_prompt()
505 if self.do_full_cache:
512 if self.do_full_cache:
506 cout_write(outprompt)
513 cout_write(outprompt)
507
514
508 if isinstance(arg,Macro):
515 if isinstance(arg,Macro):
509 print 'Executing Macro...'
516 print 'Executing Macro...'
510 # in case the macro takes a long time to execute
517 # in case the macro takes a long time to execute
511 Term.cout.flush()
518 Term.cout.flush()
512 self.shell.runlines(arg.value)
519 self.shell.runlines(arg.value)
513 return None
520 return None
514
521
515 # and now call a possibly user-defined print mechanism
522 # and now call a possibly user-defined print mechanism
516 manipulated_val = self.display(arg)
523 manipulated_val = self.display(arg)
517
524
518 # user display hooks can change the variable to be stored in
525 # user display hooks can change the variable to be stored in
519 # output history
526 # output history
520
527
521 if manipulated_val is not None:
528 if manipulated_val is not None:
522 arg = manipulated_val
529 arg = manipulated_val
523
530
524 # avoid recursive reference when displaying _oh/Out
531 # avoid recursive reference when displaying _oh/Out
525 if arg is not self.user_ns['_oh']:
532 if arg is not self.user_ns['_oh']:
526 self.update(arg)
533 self.update(arg)
527
534
528 if self.logger.log_output:
535 if self.logger.log_output:
529 self.logger.log_write(repr(arg),'output')
536 self.logger.log_write(repr(arg),'output')
530 cout_write(self.output_sep2)
537 cout_write(self.output_sep2)
531 Term.cout.flush()
538 Term.cout.flush()
532
539
533 def _display(self,arg):
540 def _display(self,arg):
534 """Default printer method, uses pprint.
541 """Default printer method, uses pprint.
535
542
536 Do ip.set_hook("result_display", my_displayhook) for custom result
543 Do ip.set_hook("result_display", my_displayhook) for custom result
537 display, e.g. when your own objects need special formatting.
544 display, e.g. when your own objects need special formatting.
538 """
545 """
539
546
540 return self.shell.hooks.result_display(arg)
547 return self.shell.hooks.result_display(arg)
541
548
542 # Assign the default display method:
549 # Assign the default display method:
543 display = _display
550 display = _display
544
551
545 def update(self,arg):
552 def update(self,arg):
546 #print '***cache_count', self.cache_count # dbg
553 #print '***cache_count', self.cache_count # dbg
547 if len(self.user_ns['_oh']) >= self.cache_size and self.do_full_cache:
554 if len(self.user_ns['_oh']) >= self.cache_size and self.do_full_cache:
548 warn('Output cache limit (currently '+
555 warn('Output cache limit (currently '+
549 `self.cache_size`+' entries) hit.\n'
556 `self.cache_size`+' entries) hit.\n'
550 'Flushing cache and resetting history counter...\n'
557 'Flushing cache and resetting history counter...\n'
551 'The only history variables available will be _,__,___ and _1\n'
558 'The only history variables available will be _,__,___ and _1\n'
552 'with the current result.')
559 'with the current result.')
553
560
554 self.flush()
561 self.flush()
555 # Don't overwrite '_' and friends if '_' is in __builtin__ (otherwise
562 # Don't overwrite '_' and friends if '_' is in __builtin__ (otherwise
556 # we cause buggy behavior for things like gettext).
563 # we cause buggy behavior for things like gettext).
557 if '_' not in __builtin__.__dict__:
564 if '_' not in __builtin__.__dict__:
558 self.___ = self.__
565 self.___ = self.__
559 self.__ = self._
566 self.__ = self._
560 self._ = arg
567 self._ = arg
561 self.user_ns.update({'_':self._,'__':self.__,'___':self.___})
568 self.user_ns.update({'_':self._,'__':self.__,'___':self.___})
562
569
563 # hackish access to top-level namespace to create _1,_2... dynamically
570 # hackish access to top-level namespace to create _1,_2... dynamically
564 to_main = {}
571 to_main = {}
565 if self.do_full_cache:
572 if self.do_full_cache:
566 new_result = '_'+`self.prompt_count`
573 new_result = '_'+`self.prompt_count`
567 to_main[new_result] = arg
574 to_main[new_result] = arg
568 self.user_ns.update(to_main)
575 self.user_ns.update(to_main)
569 self.user_ns['_oh'][self.prompt_count] = arg
576 self.user_ns['_oh'][self.prompt_count] = arg
570
577
571 def flush(self):
578 def flush(self):
572 if not self.do_full_cache:
579 if not self.do_full_cache:
573 raise ValueError,"You shouldn't have reached the cache flush "\
580 raise ValueError,"You shouldn't have reached the cache flush "\
574 "if full caching is not enabled!"
581 "if full caching is not enabled!"
575 # delete auto-generated vars from global namespace
582 # delete auto-generated vars from global namespace
576
583
577 for n in range(1,self.prompt_count + 1):
584 for n in range(1,self.prompt_count + 1):
578 key = '_'+`n`
585 key = '_'+`n`
579 try:
586 try:
580 del self.user_ns[key]
587 del self.user_ns[key]
581 except: pass
588 except: pass
582 self.user_ns['_oh'].clear()
589 self.user_ns['_oh'].clear()
583
590
584 if '_' not in __builtin__.__dict__:
591 if '_' not in __builtin__.__dict__:
585 self.user_ns.update({'_':None,'__':None, '___':None})
592 self.user_ns.update({'_':None,'__':None, '___':None})
586 import gc
593 import gc
587 gc.collect() # xxx needed?
594 gc.collect() # xxx needed?
588
595
@@ -1,85 +1,85 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """Release data for the IPython project.
2 """Release data for the IPython project.
3
3
4 $Id: Release.py 2160 2007-03-19 05:40:59Z fperez $"""
4 $Id: Release.py 2192 2007-04-01 20:51:06Z fperez $"""
5
5
6 #*****************************************************************************
6 #*****************************************************************************
7 # Copyright (C) 2001-2006 Fernando Perez <fperez@colorado.edu>
7 # Copyright (C) 2001-2006 Fernando Perez <fperez@colorado.edu>
8 #
8 #
9 # Copyright (c) 2001 Janko Hauser <jhauser@zscout.de> and Nathaniel Gray
9 # Copyright (c) 2001 Janko Hauser <jhauser@zscout.de> and Nathaniel Gray
10 # <n8gray@caltech.edu>
10 # <n8gray@caltech.edu>
11 #
11 #
12 # Distributed under the terms of the BSD License. The full license is in
12 # Distributed under the terms of the BSD License. The full license is in
13 # the file COPYING, distributed as part of this software.
13 # the file COPYING, distributed as part of this software.
14 #*****************************************************************************
14 #*****************************************************************************
15
15
16 # Name of the package for release purposes. This is the name which labels
16 # Name of the package for release purposes. This is the name which labels
17 # the tarballs and RPMs made by distutils, so it's best to lowercase it.
17 # the tarballs and RPMs made by distutils, so it's best to lowercase it.
18 name = 'ipython'
18 name = 'ipython'
19
19
20 # For versions with substrings (like 0.6.16.svn), use an extra . to separate
20 # For versions with substrings (like 0.6.16.svn), use an extra . to separate
21 # the new substring. We have to avoid using either dashes or underscores,
21 # the new substring. We have to avoid using either dashes or underscores,
22 # because bdist_rpm does not accept dashes (an RPM) convention, and
22 # because bdist_rpm does not accept dashes (an RPM) convention, and
23 # bdist_deb does not accept underscores (a Debian convention).
23 # bdist_deb does not accept underscores (a Debian convention).
24
24
25 revision = '2159'
25 revision = '2191'
26
26
27 #version = '0.7.3'
27 #version = '0.7.3'
28
28
29 version = '0.7.4.svn.r' + revision.rstrip('M')
29 version = '0.7.4.svn.r' + revision.rstrip('M')
30
30
31 description = "An enhanced interactive Python shell."
31 description = "An enhanced interactive Python shell."
32
32
33 long_description = \
33 long_description = \
34 """
34 """
35 IPython provides a replacement for the interactive Python interpreter with
35 IPython provides a replacement for the interactive Python interpreter with
36 extra functionality.
36 extra functionality.
37
37
38 Main features:
38 Main features:
39
39
40 * Comprehensive object introspection.
40 * Comprehensive object introspection.
41
41
42 * Input history, persistent across sessions.
42 * Input history, persistent across sessions.
43
43
44 * Caching of output results during a session with automatically generated
44 * Caching of output results during a session with automatically generated
45 references.
45 references.
46
46
47 * Readline based name completion.
47 * Readline based name completion.
48
48
49 * Extensible system of 'magic' commands for controlling the environment and
49 * Extensible system of 'magic' commands for controlling the environment and
50 performing many tasks related either to IPython or the operating system.
50 performing many tasks related either to IPython or the operating system.
51
51
52 * Configuration system with easy switching between different setups (simpler
52 * Configuration system with easy switching between different setups (simpler
53 than changing $PYTHONSTARTUP environment variables every time).
53 than changing $PYTHONSTARTUP environment variables every time).
54
54
55 * Session logging and reloading.
55 * Session logging and reloading.
56
56
57 * Extensible syntax processing for special purpose situations.
57 * Extensible syntax processing for special purpose situations.
58
58
59 * Access to the system shell with user-extensible alias system.
59 * Access to the system shell with user-extensible alias system.
60
60
61 * Easily embeddable in other Python programs.
61 * Easily embeddable in other Python programs.
62
62
63 * Integrated access to the pdb debugger and the Python profiler.
63 * Integrated access to the pdb debugger and the Python profiler.
64
64
65 The latest development version is always available at the IPython subversion
65 The latest development version is always available at the IPython subversion
66 repository_.
66 repository_.
67
67
68 .. _repository: http://ipython.scipy.org/svn/ipython/ipython/trunk#egg=ipython-dev
68 .. _repository: http://ipython.scipy.org/svn/ipython/ipython/trunk#egg=ipython-dev
69 """
69 """
70
70
71 license = 'BSD'
71 license = 'BSD'
72
72
73 authors = {'Fernando' : ('Fernando Perez','fperez@colorado.edu'),
73 authors = {'Fernando' : ('Fernando Perez','fperez@colorado.edu'),
74 'Janko' : ('Janko Hauser','jhauser@zscout.de'),
74 'Janko' : ('Janko Hauser','jhauser@zscout.de'),
75 'Nathan' : ('Nathaniel Gray','n8gray@caltech.edu'),
75 'Nathan' : ('Nathaniel Gray','n8gray@caltech.edu'),
76 'Ville' : ('Ville Vainio','vivainio@gmail.com')
76 'Ville' : ('Ville Vainio','vivainio@gmail.com')
77 }
77 }
78
78
79 url = 'http://ipython.scipy.org'
79 url = 'http://ipython.scipy.org'
80
80
81 download_url = 'http://ipython.scipy.org/dist'
81 download_url = 'http://ipython.scipy.org/dist'
82
82
83 platforms = ['Linux','Mac OSX','Windows XP/2000/NT','Windows 95/98/ME']
83 platforms = ['Linux','Mac OSX','Windows XP/2000/NT','Windows 95/98/ME']
84
84
85 keywords = ['Interactive','Interpreter','Shell']
85 keywords = ['Interactive','Interpreter','Shell']
@@ -1,6419 +1,6426 b''
1 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
2
3 * IPython/Prompts.py (prompt_specials_color): Add \N for the
4 actual prompt number, without any coloring. This allows users to
5 produce numbered prompts with their own colors. Added after a
6 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
7
1 2007-03-31 Walter Doerwald <walter@livinglogic.de>
8 2007-03-31 Walter Doerwald <walter@livinglogic.de>
2
9
3 * IPython/Extensions/igrid.py: Map the return key
10 * IPython/Extensions/igrid.py: Map the return key
4 to enter() and shift-return to enterattr().
11 to enter() and shift-return to enterattr().
5
12
6 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
13 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
7
14
8 * IPython/Magic.py (magic_psearch): add unicode support by
15 * IPython/Magic.py (magic_psearch): add unicode support by
9 encoding to ascii the input, since this routine also only deals
16 encoding to ascii the input, since this routine also only deals
10 with valid Python names. Fixes a bug reported by Stefan.
17 with valid Python names. Fixes a bug reported by Stefan.
11
18
12 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
19 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
13
20
14 * IPython/Magic.py (_inspect): convert unicode input into ascii
21 * IPython/Magic.py (_inspect): convert unicode input into ascii
15 before trying to evaluate it as a Python identifier. This fixes a
22 before trying to evaluate it as a Python identifier. This fixes a
16 problem that the new unicode support had introduced when analyzing
23 problem that the new unicode support had introduced when analyzing
17 long definition lines for functions.
24 long definition lines for functions.
18
25
19 2007-03-24 Walter Doerwald <walter@livinglogic.de>
26 2007-03-24 Walter Doerwald <walter@livinglogic.de>
20
27
21 * IPython/Extensions/igrid.py: Fix picking. Using
28 * IPython/Extensions/igrid.py: Fix picking. Using
22 igrid with wxPython 2.6 and -wthread should work now.
29 igrid with wxPython 2.6 and -wthread should work now.
23 igrid.display() simply tries to create a frame without
30 igrid.display() simply tries to create a frame without
24 an application. Only if this fails an application is created.
31 an application. Only if this fails an application is created.
25
32
26 2007-03-23 Walter Doerwald <walter@livinglogic.de>
33 2007-03-23 Walter Doerwald <walter@livinglogic.de>
27
34
28 * IPython/Extensions/path.py: Updated to version 2.2.
35 * IPython/Extensions/path.py: Updated to version 2.2.
29
36
30 2007-03-23 Ville Vainio <vivainio@gmail.com>
37 2007-03-23 Ville Vainio <vivainio@gmail.com>
31
38
32 * iplib.py: recursive alias expansion now works better, so that
39 * iplib.py: recursive alias expansion now works better, so that
33 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
40 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
34 doesn't trip up the process, if 'd' has been aliased to 'ls'.
41 doesn't trip up the process, if 'd' has been aliased to 'ls'.
35
42
36 * Extensions/ipy_gnuglobal.py added, provides %global magic
43 * Extensions/ipy_gnuglobal.py added, provides %global magic
37 for users of http://www.gnu.org/software/global
44 for users of http://www.gnu.org/software/global
38
45
39 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
46 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
40 Closes #52. Patch by Stefan van der Walt.
47 Closes #52. Patch by Stefan van der Walt.
41
48
42 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
49 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
43
50
44 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
51 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
45 respect the __file__ attribute when using %run. Thanks to a bug
52 respect the __file__ attribute when using %run. Thanks to a bug
46 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
53 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
47
54
48 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
55 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
49
56
50 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
57 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
51 input. Patch sent by Stefan.
58 input. Patch sent by Stefan.
52
59
53 2007-03-20 J�rgen Stenarson <jorgen.stenarson@bostream.nu>
60 2007-03-20 J�rgen Stenarson <jorgen.stenarson@bostream.nu>
54 * IPython/Extensions/ipy_stock_completer.py
61 * IPython/Extensions/ipy_stock_completer.py
55 shlex_split, fix bug in shlex_split. len function
62 shlex_split, fix bug in shlex_split. len function
56 call was missing in if statement. Caused shlex_split to
63 call was missing in if statement. Caused shlex_split to
57 sometimes return "" as last element.
64 sometimes return "" as last element.
58
65
59 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
66 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
60
67
61 * IPython/completer.py
68 * IPython/completer.py
62 (IPCompleter.file_matches.single_dir_expand): fix a problem
69 (IPCompleter.file_matches.single_dir_expand): fix a problem
63 reported by Stefan, where directories containign a single subdir
70 reported by Stefan, where directories containign a single subdir
64 would be completed too early.
71 would be completed too early.
65
72
66 * IPython/Shell.py (_load_pylab): Make the execution of 'from
73 * IPython/Shell.py (_load_pylab): Make the execution of 'from
67 pylab import *' when -pylab is given be optional. A new flag,
74 pylab import *' when -pylab is given be optional. A new flag,
68 pylab_import_all controls this behavior, the default is True for
75 pylab_import_all controls this behavior, the default is True for
69 backwards compatibility.
76 backwards compatibility.
70
77
71 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
78 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
72 modified) R. Bernstein's patch for fully syntax highlighted
79 modified) R. Bernstein's patch for fully syntax highlighted
73 tracebacks. The functionality is also available under ultraTB for
80 tracebacks. The functionality is also available under ultraTB for
74 non-ipython users (someone using ultraTB but outside an ipython
81 non-ipython users (someone using ultraTB but outside an ipython
75 session). They can select the color scheme by setting the
82 session). They can select the color scheme by setting the
76 module-level global DEFAULT_SCHEME. The highlight functionality
83 module-level global DEFAULT_SCHEME. The highlight functionality
77 also works when debugging.
84 also works when debugging.
78
85
79 * IPython/genutils.py (IOStream.close): small patch by
86 * IPython/genutils.py (IOStream.close): small patch by
80 R. Bernstein for improved pydb support.
87 R. Bernstein for improved pydb support.
81
88
82 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
89 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
83 DaveS <davls@telus.net> to improve support of debugging under
90 DaveS <davls@telus.net> to improve support of debugging under
84 NTEmacs, including improved pydb behavior.
91 NTEmacs, including improved pydb behavior.
85
92
86 * IPython/Magic.py (magic_prun): Fix saving of profile info for
93 * IPython/Magic.py (magic_prun): Fix saving of profile info for
87 Python 2.5, where the stats object API changed a little. Thanks
94 Python 2.5, where the stats object API changed a little. Thanks
88 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
95 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
89
96
90 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
97 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
91 Pernetty's patch to improve support for (X)Emacs under Win32.
98 Pernetty's patch to improve support for (X)Emacs under Win32.
92
99
93 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
100 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
94
101
95 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
102 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
96 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
103 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
97 a report by Nik Tautenhahn.
104 a report by Nik Tautenhahn.
98
105
99 2007-03-16 Walter Doerwald <walter@livinglogic.de>
106 2007-03-16 Walter Doerwald <walter@livinglogic.de>
100
107
101 * setup.py: Add the igrid help files to the list of data files
108 * setup.py: Add the igrid help files to the list of data files
102 to be installed alongside igrid.
109 to be installed alongside igrid.
103 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
110 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
104 Show the input object of the igrid browser as the window tile.
111 Show the input object of the igrid browser as the window tile.
105 Show the object the cursor is on in the statusbar.
112 Show the object the cursor is on in the statusbar.
106
113
107 2007-03-15 Ville Vainio <vivainio@gmail.com>
114 2007-03-15 Ville Vainio <vivainio@gmail.com>
108
115
109 * Extensions/ipy_stock_completers.py: Fixed exception
116 * Extensions/ipy_stock_completers.py: Fixed exception
110 on mismatching quotes in %run completer. Patch by
117 on mismatching quotes in %run completer. Patch by
111 J�rgen Stenarson. Closes #127.
118 J�rgen Stenarson. Closes #127.
112
119
113 2007-03-14 Ville Vainio <vivainio@gmail.com>
120 2007-03-14 Ville Vainio <vivainio@gmail.com>
114
121
115 * Extensions/ext_rehashdir.py: Do not do auto_alias
122 * Extensions/ext_rehashdir.py: Do not do auto_alias
116 in %rehashdir, it clobbers %store'd aliases.
123 in %rehashdir, it clobbers %store'd aliases.
117
124
118 * UserConfig/ipy_profile_sh.py: envpersist.py extension
125 * UserConfig/ipy_profile_sh.py: envpersist.py extension
119 (beefed up %env) imported for sh profile.
126 (beefed up %env) imported for sh profile.
120
127
121 2007-03-10 Walter Doerwald <walter@livinglogic.de>
128 2007-03-10 Walter Doerwald <walter@livinglogic.de>
122
129
123 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
130 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
124 as the default browser.
131 as the default browser.
125 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
132 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
126 As igrid displays all attributes it ever encounters, fetch() (which has
133 As igrid displays all attributes it ever encounters, fetch() (which has
127 been renamed to _fetch()) doesn't have to recalculate the display attributes
134 been renamed to _fetch()) doesn't have to recalculate the display attributes
128 every time a new item is fetched. This should speed up scrolling.
135 every time a new item is fetched. This should speed up scrolling.
129
136
130 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
137 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
131
138
132 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
139 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
133 Schmolck's recently reported tab-completion bug (my previous one
140 Schmolck's recently reported tab-completion bug (my previous one
134 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
141 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
135
142
136 2007-03-09 Walter Doerwald <walter@livinglogic.de>
143 2007-03-09 Walter Doerwald <walter@livinglogic.de>
137
144
138 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
145 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
139 Close help window if exiting igrid.
146 Close help window if exiting igrid.
140
147
141 2007-03-02 J�rgen Stenarson <jorgen.stenarson@bostream.nu>
148 2007-03-02 J�rgen Stenarson <jorgen.stenarson@bostream.nu>
142
149
143 * IPython/Extensions/ipy_defaults.py: Check if readline is available
150 * IPython/Extensions/ipy_defaults.py: Check if readline is available
144 before calling functions from readline.
151 before calling functions from readline.
145
152
146 2007-03-02 Walter Doerwald <walter@livinglogic.de>
153 2007-03-02 Walter Doerwald <walter@livinglogic.de>
147
154
148 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
155 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
149 igrid is a wxPython-based display object for ipipe. If your system has
156 igrid is a wxPython-based display object for ipipe. If your system has
150 wx installed igrid will be the default display. Without wx ipipe falls
157 wx installed igrid will be the default display. Without wx ipipe falls
151 back to ibrowse (which needs curses). If no curses is installed ipipe
158 back to ibrowse (which needs curses). If no curses is installed ipipe
152 falls back to idump.
159 falls back to idump.
153
160
154 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
161 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
155
162
156 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
163 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
157 my changes from yesterday, they introduced bugs. Will reactivate
164 my changes from yesterday, they introduced bugs. Will reactivate
158 once I get a correct solution, which will be much easier thanks to
165 once I get a correct solution, which will be much easier thanks to
159 Dan Milstein's new prefilter test suite.
166 Dan Milstein's new prefilter test suite.
160
167
161 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
168 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
162
169
163 * IPython/iplib.py (split_user_input): fix input splitting so we
170 * IPython/iplib.py (split_user_input): fix input splitting so we
164 don't attempt attribute accesses on things that can't possibly be
171 don't attempt attribute accesses on things that can't possibly be
165 valid Python attributes. After a bug report by Alex Schmolck.
172 valid Python attributes. After a bug report by Alex Schmolck.
166 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
173 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
167 %magic with explicit % prefix.
174 %magic with explicit % prefix.
168
175
169 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
176 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
170
177
171 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
178 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
172 avoid a DeprecationWarning from GTK.
179 avoid a DeprecationWarning from GTK.
173
180
174 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
181 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
175
182
176 * IPython/genutils.py (clock): I modified clock() to return total
183 * IPython/genutils.py (clock): I modified clock() to return total
177 time, user+system. This is a more commonly needed metric. I also
184 time, user+system. This is a more commonly needed metric. I also
178 introduced the new clocku/clocks to get only user/system time if
185 introduced the new clocku/clocks to get only user/system time if
179 one wants those instead.
186 one wants those instead.
180
187
181 ***WARNING: API CHANGE*** clock() used to return only user time,
188 ***WARNING: API CHANGE*** clock() used to return only user time,
182 so if you want exactly the same results as before, use clocku
189 so if you want exactly the same results as before, use clocku
183 instead.
190 instead.
184
191
185 2007-02-22 Ville Vainio <vivainio@gmail.com>
192 2007-02-22 Ville Vainio <vivainio@gmail.com>
186
193
187 * IPython/Extensions/ipy_p4.py: Extension for improved
194 * IPython/Extensions/ipy_p4.py: Extension for improved
188 p4 (perforce version control system) experience.
195 p4 (perforce version control system) experience.
189 Adds %p4 magic with p4 command completion and
196 Adds %p4 magic with p4 command completion and
190 automatic -G argument (marshall output as python dict)
197 automatic -G argument (marshall output as python dict)
191
198
192 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
199 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
193
200
194 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
201 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
195 stop marks.
202 stop marks.
196 (ClearingMixin): a simple mixin to easily make a Demo class clear
203 (ClearingMixin): a simple mixin to easily make a Demo class clear
197 the screen in between blocks and have empty marquees. The
204 the screen in between blocks and have empty marquees. The
198 ClearDemo and ClearIPDemo classes that use it are included.
205 ClearDemo and ClearIPDemo classes that use it are included.
199
206
200 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
207 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
201
208
202 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
209 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
203 protect against exceptions at Python shutdown time. Patch
210 protect against exceptions at Python shutdown time. Patch
204 sumbmitted to upstream.
211 sumbmitted to upstream.
205
212
206 2007-02-14 Walter Doerwald <walter@livinglogic.de>
213 2007-02-14 Walter Doerwald <walter@livinglogic.de>
207
214
208 * IPython/Extensions/ibrowse.py: If entering the first object level
215 * IPython/Extensions/ibrowse.py: If entering the first object level
209 (i.e. the object for which the browser has been started) fails,
216 (i.e. the object for which the browser has been started) fails,
210 now the error is raised directly (aborting the browser) instead of
217 now the error is raised directly (aborting the browser) instead of
211 running into an empty levels list later.
218 running into an empty levels list later.
212
219
213 2007-02-03 Walter Doerwald <walter@livinglogic.de>
220 2007-02-03 Walter Doerwald <walter@livinglogic.de>
214
221
215 * IPython/Extensions/ipipe.py: Add an xrepr implementation
222 * IPython/Extensions/ipipe.py: Add an xrepr implementation
216 for the noitem object.
223 for the noitem object.
217
224
218 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
225 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
219
226
220 * IPython/completer.py (Completer.attr_matches): Fix small
227 * IPython/completer.py (Completer.attr_matches): Fix small
221 tab-completion bug with Enthought Traits objects with units.
228 tab-completion bug with Enthought Traits objects with units.
222 Thanks to a bug report by Tom Denniston
229 Thanks to a bug report by Tom Denniston
223 <tom.denniston-AT-alum.dartmouth.org>.
230 <tom.denniston-AT-alum.dartmouth.org>.
224
231
225 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
232 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
226
233
227 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
234 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
228 bug where only .ipy or .py would be completed. Once the first
235 bug where only .ipy or .py would be completed. Once the first
229 argument to %run has been given, all completions are valid because
236 argument to %run has been given, all completions are valid because
230 they are the arguments to the script, which may well be non-python
237 they are the arguments to the script, which may well be non-python
231 filenames.
238 filenames.
232
239
233 * IPython/irunner.py (InteractiveRunner.run_source): major updates
240 * IPython/irunner.py (InteractiveRunner.run_source): major updates
234 to irunner to allow it to correctly support real doctesting of
241 to irunner to allow it to correctly support real doctesting of
235 out-of-process ipython code.
242 out-of-process ipython code.
236
243
237 * IPython/Magic.py (magic_cd): Make the setting of the terminal
244 * IPython/Magic.py (magic_cd): Make the setting of the terminal
238 title an option (-noterm_title) because it completely breaks
245 title an option (-noterm_title) because it completely breaks
239 doctesting.
246 doctesting.
240
247
241 * IPython/demo.py: fix IPythonDemo class that was not actually working.
248 * IPython/demo.py: fix IPythonDemo class that was not actually working.
242
249
243 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
250 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
244
251
245 * IPython/irunner.py (main): fix small bug where extensions were
252 * IPython/irunner.py (main): fix small bug where extensions were
246 not being correctly recognized.
253 not being correctly recognized.
247
254
248 2007-01-23 Walter Doerwald <walter@livinglogic.de>
255 2007-01-23 Walter Doerwald <walter@livinglogic.de>
249
256
250 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
257 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
251 a string containing a single line yields the string itself as the
258 a string containing a single line yields the string itself as the
252 only item.
259 only item.
253
260
254 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
261 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
255 object if it's the same as the one on the last level (This avoids
262 object if it's the same as the one on the last level (This avoids
256 infinite recursion for one line strings).
263 infinite recursion for one line strings).
257
264
258 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
265 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
259
266
260 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
267 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
261 all output streams before printing tracebacks. This ensures that
268 all output streams before printing tracebacks. This ensures that
262 user output doesn't end up interleaved with traceback output.
269 user output doesn't end up interleaved with traceback output.
263
270
264 2007-01-10 Ville Vainio <vivainio@gmail.com>
271 2007-01-10 Ville Vainio <vivainio@gmail.com>
265
272
266 * Extensions/envpersist.py: Turbocharged %env that remembers
273 * Extensions/envpersist.py: Turbocharged %env that remembers
267 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
274 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
268 "%env VISUAL=jed".
275 "%env VISUAL=jed".
269
276
270 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
277 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
271
278
272 * IPython/iplib.py (showtraceback): ensure that we correctly call
279 * IPython/iplib.py (showtraceback): ensure that we correctly call
273 custom handlers in all cases (some with pdb were slipping through,
280 custom handlers in all cases (some with pdb were slipping through,
274 but I'm not exactly sure why).
281 but I'm not exactly sure why).
275
282
276 * IPython/Debugger.py (Tracer.__init__): added new class to
283 * IPython/Debugger.py (Tracer.__init__): added new class to
277 support set_trace-like usage of IPython's enhanced debugger.
284 support set_trace-like usage of IPython's enhanced debugger.
278
285
279 2006-12-24 Ville Vainio <vivainio@gmail.com>
286 2006-12-24 Ville Vainio <vivainio@gmail.com>
280
287
281 * ipmaker.py: more informative message when ipy_user_conf
288 * ipmaker.py: more informative message when ipy_user_conf
282 import fails (suggest running %upgrade).
289 import fails (suggest running %upgrade).
283
290
284 * tools/run_ipy_in_profiler.py: Utility to see where
291 * tools/run_ipy_in_profiler.py: Utility to see where
285 the time during IPython startup is spent.
292 the time during IPython startup is spent.
286
293
287 2006-12-20 Ville Vainio <vivainio@gmail.com>
294 2006-12-20 Ville Vainio <vivainio@gmail.com>
288
295
289 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
296 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
290
297
291 * ipapi.py: Add new ipapi method, expand_alias.
298 * ipapi.py: Add new ipapi method, expand_alias.
292
299
293 * Release.py: Bump up version to 0.7.4.svn
300 * Release.py: Bump up version to 0.7.4.svn
294
301
295 2006-12-17 Ville Vainio <vivainio@gmail.com>
302 2006-12-17 Ville Vainio <vivainio@gmail.com>
296
303
297 * Extensions/jobctrl.py: Fixed &cmd arg arg...
304 * Extensions/jobctrl.py: Fixed &cmd arg arg...
298 to work properly on posix too
305 to work properly on posix too
299
306
300 * Release.py: Update revnum (version is still just 0.7.3).
307 * Release.py: Update revnum (version is still just 0.7.3).
301
308
302 2006-12-15 Ville Vainio <vivainio@gmail.com>
309 2006-12-15 Ville Vainio <vivainio@gmail.com>
303
310
304 * scripts/ipython_win_post_install: create ipython.py in
311 * scripts/ipython_win_post_install: create ipython.py in
305 prefix + "/scripts".
312 prefix + "/scripts".
306
313
307 * Release.py: Update version to 0.7.3.
314 * Release.py: Update version to 0.7.3.
308
315
309 2006-12-14 Ville Vainio <vivainio@gmail.com>
316 2006-12-14 Ville Vainio <vivainio@gmail.com>
310
317
311 * scripts/ipython_win_post_install: Overwrite old shortcuts
318 * scripts/ipython_win_post_install: Overwrite old shortcuts
312 if they already exist
319 if they already exist
313
320
314 * Release.py: release 0.7.3rc2
321 * Release.py: release 0.7.3rc2
315
322
316 2006-12-13 Ville Vainio <vivainio@gmail.com>
323 2006-12-13 Ville Vainio <vivainio@gmail.com>
317
324
318 * Branch and update Release.py for 0.7.3rc1
325 * Branch and update Release.py for 0.7.3rc1
319
326
320 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
327 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
321
328
322 * IPython/Shell.py (IPShellWX): update for current WX naming
329 * IPython/Shell.py (IPShellWX): update for current WX naming
323 conventions, to avoid a deprecation warning with current WX
330 conventions, to avoid a deprecation warning with current WX
324 versions. Thanks to a report by Danny Shevitz.
331 versions. Thanks to a report by Danny Shevitz.
325
332
326 2006-12-12 Ville Vainio <vivainio@gmail.com>
333 2006-12-12 Ville Vainio <vivainio@gmail.com>
327
334
328 * ipmaker.py: apply david cournapeau's patch to make
335 * ipmaker.py: apply david cournapeau's patch to make
329 import_some work properly even when ipythonrc does
336 import_some work properly even when ipythonrc does
330 import_some on empty list (it was an old bug!).
337 import_some on empty list (it was an old bug!).
331
338
332 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
339 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
333 Add deprecation note to ipythonrc and a url to wiki
340 Add deprecation note to ipythonrc and a url to wiki
334 in ipy_user_conf.py
341 in ipy_user_conf.py
335
342
336
343
337 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
344 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
338 as if it was typed on IPython command prompt, i.e.
345 as if it was typed on IPython command prompt, i.e.
339 as IPython script.
346 as IPython script.
340
347
341 * example-magic.py, magic_grepl.py: remove outdated examples
348 * example-magic.py, magic_grepl.py: remove outdated examples
342
349
343 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
350 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
344
351
345 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
352 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
346 is called before any exception has occurred.
353 is called before any exception has occurred.
347
354
348 2006-12-08 Ville Vainio <vivainio@gmail.com>
355 2006-12-08 Ville Vainio <vivainio@gmail.com>
349
356
350 * Extensions/ipy_stock_completers.py: fix cd completer
357 * Extensions/ipy_stock_completers.py: fix cd completer
351 to translate /'s to \'s again.
358 to translate /'s to \'s again.
352
359
353 * completer.py: prevent traceback on file completions w/
360 * completer.py: prevent traceback on file completions w/
354 backslash.
361 backslash.
355
362
356 * Release.py: Update release number to 0.7.3b3 for release
363 * Release.py: Update release number to 0.7.3b3 for release
357
364
358 2006-12-07 Ville Vainio <vivainio@gmail.com>
365 2006-12-07 Ville Vainio <vivainio@gmail.com>
359
366
360 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
367 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
361 while executing external code. Provides more shell-like behaviour
368 while executing external code. Provides more shell-like behaviour
362 and overall better response to ctrl + C / ctrl + break.
369 and overall better response to ctrl + C / ctrl + break.
363
370
364 * tools/make_tarball.py: new script to create tarball straight from svn
371 * tools/make_tarball.py: new script to create tarball straight from svn
365 (setup.py sdist doesn't work on win32).
372 (setup.py sdist doesn't work on win32).
366
373
367 * Extensions/ipy_stock_completers.py: fix cd completer to give up
374 * Extensions/ipy_stock_completers.py: fix cd completer to give up
368 on dirnames with spaces and use the default completer instead.
375 on dirnames with spaces and use the default completer instead.
369
376
370 * Revision.py: Change version to 0.7.3b2 for release.
377 * Revision.py: Change version to 0.7.3b2 for release.
371
378
372 2006-12-05 Ville Vainio <vivainio@gmail.com>
379 2006-12-05 Ville Vainio <vivainio@gmail.com>
373
380
374 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
381 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
375 pydb patch 4 (rm debug printing, py 2.5 checking)
382 pydb patch 4 (rm debug printing, py 2.5 checking)
376
383
377 2006-11-30 Walter Doerwald <walter@livinglogic.de>
384 2006-11-30 Walter Doerwald <walter@livinglogic.de>
378 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
385 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
379 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
386 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
380 "refreshfind" (mapped to "R") does the same but tries to go back to the same
387 "refreshfind" (mapped to "R") does the same but tries to go back to the same
381 object the cursor was on before the refresh. The command "markrange" is
388 object the cursor was on before the refresh. The command "markrange" is
382 mapped to "%" now.
389 mapped to "%" now.
383 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
390 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
384
391
385 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
392 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
386
393
387 * IPython/Magic.py (magic_debug): new %debug magic to activate the
394 * IPython/Magic.py (magic_debug): new %debug magic to activate the
388 interactive debugger on the last traceback, without having to call
395 interactive debugger on the last traceback, without having to call
389 %pdb and rerun your code. Made minor changes in various modules,
396 %pdb and rerun your code. Made minor changes in various modules,
390 should automatically recognize pydb if available.
397 should automatically recognize pydb if available.
391
398
392 2006-11-28 Ville Vainio <vivainio@gmail.com>
399 2006-11-28 Ville Vainio <vivainio@gmail.com>
393
400
394 * completer.py: If the text start with !, show file completions
401 * completer.py: If the text start with !, show file completions
395 properly. This helps when trying to complete command name
402 properly. This helps when trying to complete command name
396 for shell escapes.
403 for shell escapes.
397
404
398 2006-11-27 Ville Vainio <vivainio@gmail.com>
405 2006-11-27 Ville Vainio <vivainio@gmail.com>
399
406
400 * ipy_stock_completers.py: bzr completer submitted by Stefan van
407 * ipy_stock_completers.py: bzr completer submitted by Stefan van
401 der Walt. Clean up svn and hg completers by using a common
408 der Walt. Clean up svn and hg completers by using a common
402 vcs_completer.
409 vcs_completer.
403
410
404 2006-11-26 Ville Vainio <vivainio@gmail.com>
411 2006-11-26 Ville Vainio <vivainio@gmail.com>
405
412
406 * Remove ipconfig and %config; you should use _ip.options structure
413 * Remove ipconfig and %config; you should use _ip.options structure
407 directly instead!
414 directly instead!
408
415
409 * genutils.py: add wrap_deprecated function for deprecating callables
416 * genutils.py: add wrap_deprecated function for deprecating callables
410
417
411 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
418 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
412 _ip.system instead. ipalias is redundant.
419 _ip.system instead. ipalias is redundant.
413
420
414 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
421 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
415 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
422 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
416 explicit.
423 explicit.
417
424
418 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
425 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
419 completer. Try it by entering 'hg ' and pressing tab.
426 completer. Try it by entering 'hg ' and pressing tab.
420
427
421 * macro.py: Give Macro a useful __repr__ method
428 * macro.py: Give Macro a useful __repr__ method
422
429
423 * Magic.py: %whos abbreviates the typename of Macro for brevity.
430 * Magic.py: %whos abbreviates the typename of Macro for brevity.
424
431
425 2006-11-24 Walter Doerwald <walter@livinglogic.de>
432 2006-11-24 Walter Doerwald <walter@livinglogic.de>
426 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
433 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
427 we don't get a duplicate ipipe module, where registration of the xrepr
434 we don't get a duplicate ipipe module, where registration of the xrepr
428 implementation for Text is useless.
435 implementation for Text is useless.
429
436
430 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
437 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
431
438
432 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
439 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
433
440
434 2006-11-24 Ville Vainio <vivainio@gmail.com>
441 2006-11-24 Ville Vainio <vivainio@gmail.com>
435
442
436 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
443 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
437 try to use "cProfile" instead of the slower pure python
444 try to use "cProfile" instead of the slower pure python
438 "profile"
445 "profile"
439
446
440 2006-11-23 Ville Vainio <vivainio@gmail.com>
447 2006-11-23 Ville Vainio <vivainio@gmail.com>
441
448
442 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
449 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
443 Qt+IPython+Designer link in documentation.
450 Qt+IPython+Designer link in documentation.
444
451
445 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
452 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
446 correct Pdb object to %pydb.
453 correct Pdb object to %pydb.
447
454
448
455
449 2006-11-22 Walter Doerwald <walter@livinglogic.de>
456 2006-11-22 Walter Doerwald <walter@livinglogic.de>
450 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
457 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
451 generic xrepr(), otherwise the list implementation would kick in.
458 generic xrepr(), otherwise the list implementation would kick in.
452
459
453 2006-11-21 Ville Vainio <vivainio@gmail.com>
460 2006-11-21 Ville Vainio <vivainio@gmail.com>
454
461
455 * upgrade_dir.py: Now actually overwrites a nonmodified user file
462 * upgrade_dir.py: Now actually overwrites a nonmodified user file
456 with one from UserConfig.
463 with one from UserConfig.
457
464
458 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
465 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
459 it was missing which broke the sh profile.
466 it was missing which broke the sh profile.
460
467
461 * completer.py: file completer now uses explicit '/' instead
468 * completer.py: file completer now uses explicit '/' instead
462 of os.path.join, expansion of 'foo' was broken on win32
469 of os.path.join, expansion of 'foo' was broken on win32
463 if there was one directory with name 'foobar'.
470 if there was one directory with name 'foobar'.
464
471
465 * A bunch of patches from Kirill Smelkov:
472 * A bunch of patches from Kirill Smelkov:
466
473
467 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
474 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
468
475
469 * [patch 7/9] Implement %page -r (page in raw mode) -
476 * [patch 7/9] Implement %page -r (page in raw mode) -
470
477
471 * [patch 5/9] ScientificPython webpage has moved
478 * [patch 5/9] ScientificPython webpage has moved
472
479
473 * [patch 4/9] The manual mentions %ds, should be %dhist
480 * [patch 4/9] The manual mentions %ds, should be %dhist
474
481
475 * [patch 3/9] Kill old bits from %prun doc.
482 * [patch 3/9] Kill old bits from %prun doc.
476
483
477 * [patch 1/9] Fix typos here and there.
484 * [patch 1/9] Fix typos here and there.
478
485
479 2006-11-08 Ville Vainio <vivainio@gmail.com>
486 2006-11-08 Ville Vainio <vivainio@gmail.com>
480
487
481 * completer.py (attr_matches): catch all exceptions raised
488 * completer.py (attr_matches): catch all exceptions raised
482 by eval of expr with dots.
489 by eval of expr with dots.
483
490
484 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
491 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
485
492
486 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
493 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
487 input if it starts with whitespace. This allows you to paste
494 input if it starts with whitespace. This allows you to paste
488 indented input from any editor without manually having to type in
495 indented input from any editor without manually having to type in
489 the 'if 1:', which is convenient when working interactively.
496 the 'if 1:', which is convenient when working interactively.
490 Slightly modifed version of a patch by Bo Peng
497 Slightly modifed version of a patch by Bo Peng
491 <bpeng-AT-rice.edu>.
498 <bpeng-AT-rice.edu>.
492
499
493 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
500 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
494
501
495 * IPython/irunner.py (main): modified irunner so it automatically
502 * IPython/irunner.py (main): modified irunner so it automatically
496 recognizes the right runner to use based on the extension (.py for
503 recognizes the right runner to use based on the extension (.py for
497 python, .ipy for ipython and .sage for sage).
504 python, .ipy for ipython and .sage for sage).
498
505
499 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
506 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
500 visible in ipapi as ip.config(), to programatically control the
507 visible in ipapi as ip.config(), to programatically control the
501 internal rc object. There's an accompanying %config magic for
508 internal rc object. There's an accompanying %config magic for
502 interactive use, which has been enhanced to match the
509 interactive use, which has been enhanced to match the
503 funtionality in ipconfig.
510 funtionality in ipconfig.
504
511
505 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
512 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
506 so it's not just a toggle, it now takes an argument. Add support
513 so it's not just a toggle, it now takes an argument. Add support
507 for a customizable header when making system calls, as the new
514 for a customizable header when making system calls, as the new
508 system_header variable in the ipythonrc file.
515 system_header variable in the ipythonrc file.
509
516
510 2006-11-03 Walter Doerwald <walter@livinglogic.de>
517 2006-11-03 Walter Doerwald <walter@livinglogic.de>
511
518
512 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
519 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
513 generic functions (using Philip J. Eby's simplegeneric package).
520 generic functions (using Philip J. Eby's simplegeneric package).
514 This makes it possible to customize the display of third-party classes
521 This makes it possible to customize the display of third-party classes
515 without having to monkeypatch them. xiter() no longer supports a mode
522 without having to monkeypatch them. xiter() no longer supports a mode
516 argument and the XMode class has been removed. The same functionality can
523 argument and the XMode class has been removed. The same functionality can
517 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
524 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
518 One consequence of the switch to generic functions is that xrepr() and
525 One consequence of the switch to generic functions is that xrepr() and
519 xattrs() implementation must define the default value for the mode
526 xattrs() implementation must define the default value for the mode
520 argument themselves and xattrs() implementations must return real
527 argument themselves and xattrs() implementations must return real
521 descriptors.
528 descriptors.
522
529
523 * IPython/external: This new subpackage will contain all third-party
530 * IPython/external: This new subpackage will contain all third-party
524 packages that are bundled with IPython. (The first one is simplegeneric).
531 packages that are bundled with IPython. (The first one is simplegeneric).
525
532
526 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
533 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
527 directory which as been dropped in r1703.
534 directory which as been dropped in r1703.
528
535
529 * IPython/Extensions/ipipe.py (iless): Fixed.
536 * IPython/Extensions/ipipe.py (iless): Fixed.
530
537
531 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
538 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
532
539
533 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
540 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
534
541
535 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
542 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
536 handling in variable expansion so that shells and magics recognize
543 handling in variable expansion so that shells and magics recognize
537 function local scopes correctly. Bug reported by Brian.
544 function local scopes correctly. Bug reported by Brian.
538
545
539 * scripts/ipython: remove the very first entry in sys.path which
546 * scripts/ipython: remove the very first entry in sys.path which
540 Python auto-inserts for scripts, so that sys.path under IPython is
547 Python auto-inserts for scripts, so that sys.path under IPython is
541 as similar as possible to that under plain Python.
548 as similar as possible to that under plain Python.
542
549
543 * IPython/completer.py (IPCompleter.file_matches): Fix
550 * IPython/completer.py (IPCompleter.file_matches): Fix
544 tab-completion so that quotes are not closed unless the completion
551 tab-completion so that quotes are not closed unless the completion
545 is unambiguous. After a request by Stefan. Minor cleanups in
552 is unambiguous. After a request by Stefan. Minor cleanups in
546 ipy_stock_completers.
553 ipy_stock_completers.
547
554
548 2006-11-02 Ville Vainio <vivainio@gmail.com>
555 2006-11-02 Ville Vainio <vivainio@gmail.com>
549
556
550 * ipy_stock_completers.py: Add %run and %cd completers.
557 * ipy_stock_completers.py: Add %run and %cd completers.
551
558
552 * completer.py: Try running custom completer for both
559 * completer.py: Try running custom completer for both
553 "foo" and "%foo" if the command is just "foo". Ignore case
560 "foo" and "%foo" if the command is just "foo". Ignore case
554 when filtering possible completions.
561 when filtering possible completions.
555
562
556 * UserConfig/ipy_user_conf.py: install stock completers as default
563 * UserConfig/ipy_user_conf.py: install stock completers as default
557
564
558 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
565 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
559 simplified readline history save / restore through a wrapper
566 simplified readline history save / restore through a wrapper
560 function
567 function
561
568
562
569
563 2006-10-31 Ville Vainio <vivainio@gmail.com>
570 2006-10-31 Ville Vainio <vivainio@gmail.com>
564
571
565 * strdispatch.py, completer.py, ipy_stock_completers.py:
572 * strdispatch.py, completer.py, ipy_stock_completers.py:
566 Allow str_key ("command") in completer hooks. Implement
573 Allow str_key ("command") in completer hooks. Implement
567 trivial completer for 'import' (stdlib modules only). Rename
574 trivial completer for 'import' (stdlib modules only). Rename
568 ipy_linux_package_managers.py to ipy_stock_completers.py.
575 ipy_linux_package_managers.py to ipy_stock_completers.py.
569 SVN completer.
576 SVN completer.
570
577
571 * Extensions/ledit.py: %magic line editor for easily and
578 * Extensions/ledit.py: %magic line editor for easily and
572 incrementally manipulating lists of strings. The magic command
579 incrementally manipulating lists of strings. The magic command
573 name is %led.
580 name is %led.
574
581
575 2006-10-30 Ville Vainio <vivainio@gmail.com>
582 2006-10-30 Ville Vainio <vivainio@gmail.com>
576
583
577 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
584 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
578 Bernsteins's patches for pydb integration.
585 Bernsteins's patches for pydb integration.
579 http://bashdb.sourceforge.net/pydb/
586 http://bashdb.sourceforge.net/pydb/
580
587
581 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
588 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
582 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
589 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
583 custom completer hook to allow the users to implement their own
590 custom completer hook to allow the users to implement their own
584 completers. See ipy_linux_package_managers.py for example. The
591 completers. See ipy_linux_package_managers.py for example. The
585 hook name is 'complete_command'.
592 hook name is 'complete_command'.
586
593
587 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
594 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
588
595
589 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
596 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
590 Numeric leftovers.
597 Numeric leftovers.
591
598
592 * ipython.el (py-execute-region): apply Stefan's patch to fix
599 * ipython.el (py-execute-region): apply Stefan's patch to fix
593 garbled results if the python shell hasn't been previously started.
600 garbled results if the python shell hasn't been previously started.
594
601
595 * IPython/genutils.py (arg_split): moved to genutils, since it's a
602 * IPython/genutils.py (arg_split): moved to genutils, since it's a
596 pretty generic function and useful for other things.
603 pretty generic function and useful for other things.
597
604
598 * IPython/OInspect.py (getsource): Add customizable source
605 * IPython/OInspect.py (getsource): Add customizable source
599 extractor. After a request/patch form W. Stein (SAGE).
606 extractor. After a request/patch form W. Stein (SAGE).
600
607
601 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
608 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
602 window size to a more reasonable value from what pexpect does,
609 window size to a more reasonable value from what pexpect does,
603 since their choice causes wrapping bugs with long input lines.
610 since their choice causes wrapping bugs with long input lines.
604
611
605 2006-10-28 Ville Vainio <vivainio@gmail.com>
612 2006-10-28 Ville Vainio <vivainio@gmail.com>
606
613
607 * Magic.py (%run): Save and restore the readline history from
614 * Magic.py (%run): Save and restore the readline history from
608 file around %run commands to prevent side effects from
615 file around %run commands to prevent side effects from
609 %runned programs that might use readline (e.g. pydb).
616 %runned programs that might use readline (e.g. pydb).
610
617
611 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
618 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
612 invoking the pydb enhanced debugger.
619 invoking the pydb enhanced debugger.
613
620
614 2006-10-23 Walter Doerwald <walter@livinglogic.de>
621 2006-10-23 Walter Doerwald <walter@livinglogic.de>
615
622
616 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
623 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
617 call the base class method and propagate the return value to
624 call the base class method and propagate the return value to
618 ifile. This is now done by path itself.
625 ifile. This is now done by path itself.
619
626
620 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
627 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
621
628
622 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
629 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
623 api: set_crash_handler(), to expose the ability to change the
630 api: set_crash_handler(), to expose the ability to change the
624 internal crash handler.
631 internal crash handler.
625
632
626 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
633 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
627 the various parameters of the crash handler so that apps using
634 the various parameters of the crash handler so that apps using
628 IPython as their engine can customize crash handling. Ipmlemented
635 IPython as their engine can customize crash handling. Ipmlemented
629 at the request of SAGE.
636 at the request of SAGE.
630
637
631 2006-10-14 Ville Vainio <vivainio@gmail.com>
638 2006-10-14 Ville Vainio <vivainio@gmail.com>
632
639
633 * Magic.py, ipython.el: applied first "safe" part of Rocky
640 * Magic.py, ipython.el: applied first "safe" part of Rocky
634 Bernstein's patch set for pydb integration.
641 Bernstein's patch set for pydb integration.
635
642
636 * Magic.py (%unalias, %alias): %store'd aliases can now be
643 * Magic.py (%unalias, %alias): %store'd aliases can now be
637 removed with '%unalias'. %alias w/o args now shows most
644 removed with '%unalias'. %alias w/o args now shows most
638 interesting (stored / manually defined) aliases last
645 interesting (stored / manually defined) aliases last
639 where they catch the eye w/o scrolling.
646 where they catch the eye w/o scrolling.
640
647
641 * Magic.py (%rehashx), ext_rehashdir.py: files with
648 * Magic.py (%rehashx), ext_rehashdir.py: files with
642 'py' extension are always considered executable, even
649 'py' extension are always considered executable, even
643 when not in PATHEXT environment variable.
650 when not in PATHEXT environment variable.
644
651
645 2006-10-12 Ville Vainio <vivainio@gmail.com>
652 2006-10-12 Ville Vainio <vivainio@gmail.com>
646
653
647 * jobctrl.py: Add new "jobctrl" extension for spawning background
654 * jobctrl.py: Add new "jobctrl" extension for spawning background
648 processes with "&find /". 'import jobctrl' to try it out. Requires
655 processes with "&find /". 'import jobctrl' to try it out. Requires
649 'subprocess' module, standard in python 2.4+.
656 'subprocess' module, standard in python 2.4+.
650
657
651 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
658 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
652 so if foo -> bar and bar -> baz, then foo -> baz.
659 so if foo -> bar and bar -> baz, then foo -> baz.
653
660
654 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
661 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
655
662
656 * IPython/Magic.py (Magic.parse_options): add a new posix option
663 * IPython/Magic.py (Magic.parse_options): add a new posix option
657 to allow parsing of input args in magics that doesn't strip quotes
664 to allow parsing of input args in magics that doesn't strip quotes
658 (if posix=False). This also closes %timeit bug reported by
665 (if posix=False). This also closes %timeit bug reported by
659 Stefan.
666 Stefan.
660
667
661 2006-10-03 Ville Vainio <vivainio@gmail.com>
668 2006-10-03 Ville Vainio <vivainio@gmail.com>
662
669
663 * iplib.py (raw_input, interact): Return ValueError catching for
670 * iplib.py (raw_input, interact): Return ValueError catching for
664 raw_input. Fixes infinite loop for sys.stdin.close() or
671 raw_input. Fixes infinite loop for sys.stdin.close() or
665 sys.stdout.close().
672 sys.stdout.close().
666
673
667 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
674 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
668
675
669 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
676 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
670 to help in handling doctests. irunner is now pretty useful for
677 to help in handling doctests. irunner is now pretty useful for
671 running standalone scripts and simulate a full interactive session
678 running standalone scripts and simulate a full interactive session
672 in a format that can be then pasted as a doctest.
679 in a format that can be then pasted as a doctest.
673
680
674 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
681 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
675 on top of the default (useless) ones. This also fixes the nasty
682 on top of the default (useless) ones. This also fixes the nasty
676 way in which 2.5's Quitter() exits (reverted [1785]).
683 way in which 2.5's Quitter() exits (reverted [1785]).
677
684
678 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
685 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
679 2.5.
686 2.5.
680
687
681 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
688 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
682 color scheme is updated as well when color scheme is changed
689 color scheme is updated as well when color scheme is changed
683 interactively.
690 interactively.
684
691
685 2006-09-27 Ville Vainio <vivainio@gmail.com>
692 2006-09-27 Ville Vainio <vivainio@gmail.com>
686
693
687 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
694 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
688 infinite loop and just exit. It's a hack, but will do for a while.
695 infinite loop and just exit. It's a hack, but will do for a while.
689
696
690 2006-08-25 Walter Doerwald <walter@livinglogic.de>
697 2006-08-25 Walter Doerwald <walter@livinglogic.de>
691
698
692 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
699 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
693 the constructor, this makes it possible to get a list of only directories
700 the constructor, this makes it possible to get a list of only directories
694 or only files.
701 or only files.
695
702
696 2006-08-12 Ville Vainio <vivainio@gmail.com>
703 2006-08-12 Ville Vainio <vivainio@gmail.com>
697
704
698 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
705 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
699 they broke unittest
706 they broke unittest
700
707
701 2006-08-11 Ville Vainio <vivainio@gmail.com>
708 2006-08-11 Ville Vainio <vivainio@gmail.com>
702
709
703 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
710 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
704 by resolving issue properly, i.e. by inheriting FakeModule
711 by resolving issue properly, i.e. by inheriting FakeModule
705 from types.ModuleType. Pickling ipython interactive data
712 from types.ModuleType. Pickling ipython interactive data
706 should still work as usual (testing appreciated).
713 should still work as usual (testing appreciated).
707
714
708 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
715 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
709
716
710 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
717 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
711 running under python 2.3 with code from 2.4 to fix a bug with
718 running under python 2.3 with code from 2.4 to fix a bug with
712 help(). Reported by the Debian maintainers, Norbert Tretkowski
719 help(). Reported by the Debian maintainers, Norbert Tretkowski
713 <norbert-AT-tretkowski.de> and Alexandre Fayolle
720 <norbert-AT-tretkowski.de> and Alexandre Fayolle
714 <afayolle-AT-debian.org>.
721 <afayolle-AT-debian.org>.
715
722
716 2006-08-04 Walter Doerwald <walter@livinglogic.de>
723 2006-08-04 Walter Doerwald <walter@livinglogic.de>
717
724
718 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
725 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
719 (which was displaying "quit" twice).
726 (which was displaying "quit" twice).
720
727
721 2006-07-28 Walter Doerwald <walter@livinglogic.de>
728 2006-07-28 Walter Doerwald <walter@livinglogic.de>
722
729
723 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
730 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
724 the mode argument).
731 the mode argument).
725
732
726 2006-07-27 Walter Doerwald <walter@livinglogic.de>
733 2006-07-27 Walter Doerwald <walter@livinglogic.de>
727
734
728 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
735 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
729 not running under IPython.
736 not running under IPython.
730
737
731 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
738 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
732 and make it iterable (iterating over the attribute itself). Add two new
739 and make it iterable (iterating over the attribute itself). Add two new
733 magic strings for __xattrs__(): If the string starts with "-", the attribute
740 magic strings for __xattrs__(): If the string starts with "-", the attribute
734 will not be displayed in ibrowse's detail view (but it can still be
741 will not be displayed in ibrowse's detail view (but it can still be
735 iterated over). This makes it possible to add attributes that are large
742 iterated over). This makes it possible to add attributes that are large
736 lists or generator methods to the detail view. Replace magic attribute names
743 lists or generator methods to the detail view. Replace magic attribute names
737 and _attrname() and _getattr() with "descriptors": For each type of magic
744 and _attrname() and _getattr() with "descriptors": For each type of magic
738 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
745 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
739 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
746 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
740 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
747 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
741 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
748 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
742 are still supported.
749 are still supported.
743
750
744 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
751 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
745 fails in ibrowse.fetch(), the exception object is added as the last item
752 fails in ibrowse.fetch(), the exception object is added as the last item
746 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
753 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
747 a generator throws an exception midway through execution.
754 a generator throws an exception midway through execution.
748
755
749 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
756 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
750 encoding into methods.
757 encoding into methods.
751
758
752 2006-07-26 Ville Vainio <vivainio@gmail.com>
759 2006-07-26 Ville Vainio <vivainio@gmail.com>
753
760
754 * iplib.py: history now stores multiline input as single
761 * iplib.py: history now stores multiline input as single
755 history entries. Patch by Jorgen Cederlof.
762 history entries. Patch by Jorgen Cederlof.
756
763
757 2006-07-18 Walter Doerwald <walter@livinglogic.de>
764 2006-07-18 Walter Doerwald <walter@livinglogic.de>
758
765
759 * IPython/Extensions/ibrowse.py: Make cursor visible over
766 * IPython/Extensions/ibrowse.py: Make cursor visible over
760 non existing attributes.
767 non existing attributes.
761
768
762 2006-07-14 Walter Doerwald <walter@livinglogic.de>
769 2006-07-14 Walter Doerwald <walter@livinglogic.de>
763
770
764 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
771 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
765 error output of the running command doesn't mess up the screen.
772 error output of the running command doesn't mess up the screen.
766
773
767 2006-07-13 Walter Doerwald <walter@livinglogic.de>
774 2006-07-13 Walter Doerwald <walter@livinglogic.de>
768
775
769 * IPython/Extensions/ipipe.py (isort): Make isort usable without
776 * IPython/Extensions/ipipe.py (isort): Make isort usable without
770 argument. This sorts the items themselves.
777 argument. This sorts the items themselves.
771
778
772 2006-07-12 Walter Doerwald <walter@livinglogic.de>
779 2006-07-12 Walter Doerwald <walter@livinglogic.de>
773
780
774 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
781 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
775 Compile expression strings into code objects. This should speed
782 Compile expression strings into code objects. This should speed
776 up ifilter and friends somewhat.
783 up ifilter and friends somewhat.
777
784
778 2006-07-08 Ville Vainio <vivainio@gmail.com>
785 2006-07-08 Ville Vainio <vivainio@gmail.com>
779
786
780 * Magic.py: %cpaste now strips > from the beginning of lines
787 * Magic.py: %cpaste now strips > from the beginning of lines
781 to ease pasting quoted code from emails. Contributed by
788 to ease pasting quoted code from emails. Contributed by
782 Stefan van der Walt.
789 Stefan van der Walt.
783
790
784 2006-06-29 Ville Vainio <vivainio@gmail.com>
791 2006-06-29 Ville Vainio <vivainio@gmail.com>
785
792
786 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
793 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
787 mode, patch contributed by Darren Dale. NEEDS TESTING!
794 mode, patch contributed by Darren Dale. NEEDS TESTING!
788
795
789 2006-06-28 Walter Doerwald <walter@livinglogic.de>
796 2006-06-28 Walter Doerwald <walter@livinglogic.de>
790
797
791 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
798 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
792 a blue background. Fix fetching new display rows when the browser
799 a blue background. Fix fetching new display rows when the browser
793 scrolls more than a screenful (e.g. by using the goto command).
800 scrolls more than a screenful (e.g. by using the goto command).
794
801
795 2006-06-27 Ville Vainio <vivainio@gmail.com>
802 2006-06-27 Ville Vainio <vivainio@gmail.com>
796
803
797 * Magic.py (_inspect, _ofind) Apply David Huard's
804 * Magic.py (_inspect, _ofind) Apply David Huard's
798 patch for displaying the correct docstring for 'property'
805 patch for displaying the correct docstring for 'property'
799 attributes.
806 attributes.
800
807
801 2006-06-23 Walter Doerwald <walter@livinglogic.de>
808 2006-06-23 Walter Doerwald <walter@livinglogic.de>
802
809
803 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
810 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
804 commands into the methods implementing them.
811 commands into the methods implementing them.
805
812
806 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
813 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
807
814
808 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
815 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
809 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
816 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
810 autoindent support was authored by Jin Liu.
817 autoindent support was authored by Jin Liu.
811
818
812 2006-06-22 Walter Doerwald <walter@livinglogic.de>
819 2006-06-22 Walter Doerwald <walter@livinglogic.de>
813
820
814 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
821 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
815 for keymaps with a custom class that simplifies handling.
822 for keymaps with a custom class that simplifies handling.
816
823
817 2006-06-19 Walter Doerwald <walter@livinglogic.de>
824 2006-06-19 Walter Doerwald <walter@livinglogic.de>
818
825
819 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
826 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
820 resizing. This requires Python 2.5 to work.
827 resizing. This requires Python 2.5 to work.
821
828
822 2006-06-16 Walter Doerwald <walter@livinglogic.de>
829 2006-06-16 Walter Doerwald <walter@livinglogic.de>
823
830
824 * IPython/Extensions/ibrowse.py: Add two new commands to
831 * IPython/Extensions/ibrowse.py: Add two new commands to
825 ibrowse: "hideattr" (mapped to "h") hides the attribute under
832 ibrowse: "hideattr" (mapped to "h") hides the attribute under
826 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
833 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
827 attributes again. Remapped the help command to "?". Display
834 attributes again. Remapped the help command to "?". Display
828 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
835 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
829 as keys for the "home" and "end" commands. Add three new commands
836 as keys for the "home" and "end" commands. Add three new commands
830 to the input mode for "find" and friends: "delend" (CTRL-K)
837 to the input mode for "find" and friends: "delend" (CTRL-K)
831 deletes to the end of line. "incsearchup" searches upwards in the
838 deletes to the end of line. "incsearchup" searches upwards in the
832 command history for an input that starts with the text before the cursor.
839 command history for an input that starts with the text before the cursor.
833 "incsearchdown" does the same downwards. Removed a bogus mapping of
840 "incsearchdown" does the same downwards. Removed a bogus mapping of
834 the x key to "delete".
841 the x key to "delete".
835
842
836 2006-06-15 Ville Vainio <vivainio@gmail.com>
843 2006-06-15 Ville Vainio <vivainio@gmail.com>
837
844
838 * iplib.py, hooks.py: Added new generate_prompt hook that can be
845 * iplib.py, hooks.py: Added new generate_prompt hook that can be
839 used to create prompts dynamically, instead of the "old" way of
846 used to create prompts dynamically, instead of the "old" way of
840 assigning "magic" strings to prompt_in1 and prompt_in2. The old
847 assigning "magic" strings to prompt_in1 and prompt_in2. The old
841 way still works (it's invoked by the default hook), of course.
848 way still works (it's invoked by the default hook), of course.
842
849
843 * Prompts.py: added generate_output_prompt hook for altering output
850 * Prompts.py: added generate_output_prompt hook for altering output
844 prompt
851 prompt
845
852
846 * Release.py: Changed version string to 0.7.3.svn.
853 * Release.py: Changed version string to 0.7.3.svn.
847
854
848 2006-06-15 Walter Doerwald <walter@livinglogic.de>
855 2006-06-15 Walter Doerwald <walter@livinglogic.de>
849
856
850 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
857 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
851 the call to fetch() always tries to fetch enough data for at least one
858 the call to fetch() always tries to fetch enough data for at least one
852 full screen. This makes it possible to simply call moveto(0,0,True) in
859 full screen. This makes it possible to simply call moveto(0,0,True) in
853 the constructor. Fix typos and removed the obsolete goto attribute.
860 the constructor. Fix typos and removed the obsolete goto attribute.
854
861
855 2006-06-12 Ville Vainio <vivainio@gmail.com>
862 2006-06-12 Ville Vainio <vivainio@gmail.com>
856
863
857 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
864 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
858 allowing $variable interpolation within multiline statements,
865 allowing $variable interpolation within multiline statements,
859 though so far only with "sh" profile for a testing period.
866 though so far only with "sh" profile for a testing period.
860 The patch also enables splitting long commands with \ but it
867 The patch also enables splitting long commands with \ but it
861 doesn't work properly yet.
868 doesn't work properly yet.
862
869
863 2006-06-12 Walter Doerwald <walter@livinglogic.de>
870 2006-06-12 Walter Doerwald <walter@livinglogic.de>
864
871
865 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
872 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
866 input history and the position of the cursor in the input history for
873 input history and the position of the cursor in the input history for
867 the find, findbackwards and goto command.
874 the find, findbackwards and goto command.
868
875
869 2006-06-10 Walter Doerwald <walter@livinglogic.de>
876 2006-06-10 Walter Doerwald <walter@livinglogic.de>
870
877
871 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
878 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
872 implements the basic functionality of browser commands that require
879 implements the basic functionality of browser commands that require
873 input. Reimplement the goto, find and findbackwards commands as
880 input. Reimplement the goto, find and findbackwards commands as
874 subclasses of _CommandInput. Add an input history and keymaps to those
881 subclasses of _CommandInput. Add an input history and keymaps to those
875 commands. Add "\r" as a keyboard shortcut for the enterdefault and
882 commands. Add "\r" as a keyboard shortcut for the enterdefault and
876 execute commands.
883 execute commands.
877
884
878 2006-06-07 Ville Vainio <vivainio@gmail.com>
885 2006-06-07 Ville Vainio <vivainio@gmail.com>
879
886
880 * iplib.py: ipython mybatch.ipy exits ipython immediately after
887 * iplib.py: ipython mybatch.ipy exits ipython immediately after
881 running the batch files instead of leaving the session open.
888 running the batch files instead of leaving the session open.
882
889
883 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
890 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
884
891
885 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
892 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
886 the original fix was incomplete. Patch submitted by W. Maier.
893 the original fix was incomplete. Patch submitted by W. Maier.
887
894
888 2006-06-07 Ville Vainio <vivainio@gmail.com>
895 2006-06-07 Ville Vainio <vivainio@gmail.com>
889
896
890 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
897 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
891 Confirmation prompts can be supressed by 'quiet' option.
898 Confirmation prompts can be supressed by 'quiet' option.
892 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
899 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
893
900
894 2006-06-06 *** Released version 0.7.2
901 2006-06-06 *** Released version 0.7.2
895
902
896 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
903 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
897
904
898 * IPython/Release.py (version): Made 0.7.2 final for release.
905 * IPython/Release.py (version): Made 0.7.2 final for release.
899 Repo tagged and release cut.
906 Repo tagged and release cut.
900
907
901 2006-06-05 Ville Vainio <vivainio@gmail.com>
908 2006-06-05 Ville Vainio <vivainio@gmail.com>
902
909
903 * Magic.py (magic_rehashx): Honor no_alias list earlier in
910 * Magic.py (magic_rehashx): Honor no_alias list earlier in
904 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
911 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
905
912
906 * upgrade_dir.py: try import 'path' module a bit harder
913 * upgrade_dir.py: try import 'path' module a bit harder
907 (for %upgrade)
914 (for %upgrade)
908
915
909 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
916 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
910
917
911 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
918 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
912 instead of looping 20 times.
919 instead of looping 20 times.
913
920
914 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
921 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
915 correctly at initialization time. Bug reported by Krishna Mohan
922 correctly at initialization time. Bug reported by Krishna Mohan
916 Gundu <gkmohan-AT-gmail.com> on the user list.
923 Gundu <gkmohan-AT-gmail.com> on the user list.
917
924
918 * IPython/Release.py (version): Mark 0.7.2 version to start
925 * IPython/Release.py (version): Mark 0.7.2 version to start
919 testing for release on 06/06.
926 testing for release on 06/06.
920
927
921 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
928 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
922
929
923 * scripts/irunner: thin script interface so users don't have to
930 * scripts/irunner: thin script interface so users don't have to
924 find the module and call it as an executable, since modules rarely
931 find the module and call it as an executable, since modules rarely
925 live in people's PATH.
932 live in people's PATH.
926
933
927 * IPython/irunner.py (InteractiveRunner.__init__): added
934 * IPython/irunner.py (InteractiveRunner.__init__): added
928 delaybeforesend attribute to control delays with newer versions of
935 delaybeforesend attribute to control delays with newer versions of
929 pexpect. Thanks to detailed help from pexpect's author, Noah
936 pexpect. Thanks to detailed help from pexpect's author, Noah
930 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
937 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
931 correctly (it works in NoColor mode).
938 correctly (it works in NoColor mode).
932
939
933 * IPython/iplib.py (handle_normal): fix nasty crash reported on
940 * IPython/iplib.py (handle_normal): fix nasty crash reported on
934 SAGE list, from improper log() calls.
941 SAGE list, from improper log() calls.
935
942
936 2006-05-31 Ville Vainio <vivainio@gmail.com>
943 2006-05-31 Ville Vainio <vivainio@gmail.com>
937
944
938 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
945 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
939 with args in parens to work correctly with dirs that have spaces.
946 with args in parens to work correctly with dirs that have spaces.
940
947
941 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
948 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
942
949
943 * IPython/Logger.py (Logger.logstart): add option to log raw input
950 * IPython/Logger.py (Logger.logstart): add option to log raw input
944 instead of the processed one. A -r flag was added to the
951 instead of the processed one. A -r flag was added to the
945 %logstart magic used for controlling logging.
952 %logstart magic used for controlling logging.
946
953
947 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
954 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
948
955
949 * IPython/iplib.py (InteractiveShell.__init__): add check for the
956 * IPython/iplib.py (InteractiveShell.__init__): add check for the
950 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
957 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
951 recognize the option. After a bug report by Will Maier. This
958 recognize the option. After a bug report by Will Maier. This
952 closes #64 (will do it after confirmation from W. Maier).
959 closes #64 (will do it after confirmation from W. Maier).
953
960
954 * IPython/irunner.py: New module to run scripts as if manually
961 * IPython/irunner.py: New module to run scripts as if manually
955 typed into an interactive environment, based on pexpect. After a
962 typed into an interactive environment, based on pexpect. After a
956 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
963 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
957 ipython-user list. Simple unittests in the tests/ directory.
964 ipython-user list. Simple unittests in the tests/ directory.
958
965
959 * tools/release: add Will Maier, OpenBSD port maintainer, to
966 * tools/release: add Will Maier, OpenBSD port maintainer, to
960 recepients list. We are now officially part of the OpenBSD ports:
967 recepients list. We are now officially part of the OpenBSD ports:
961 http://www.openbsd.org/ports.html ! Many thanks to Will for the
968 http://www.openbsd.org/ports.html ! Many thanks to Will for the
962 work.
969 work.
963
970
964 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
971 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
965
972
966 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
973 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
967 so that it doesn't break tkinter apps.
974 so that it doesn't break tkinter apps.
968
975
969 * IPython/iplib.py (_prefilter): fix bug where aliases would
976 * IPython/iplib.py (_prefilter): fix bug where aliases would
970 shadow variables when autocall was fully off. Reported by SAGE
977 shadow variables when autocall was fully off. Reported by SAGE
971 author William Stein.
978 author William Stein.
972
979
973 * IPython/OInspect.py (Inspector.__init__): add a flag to control
980 * IPython/OInspect.py (Inspector.__init__): add a flag to control
974 at what detail level strings are computed when foo? is requested.
981 at what detail level strings are computed when foo? is requested.
975 This allows users to ask for example that the string form of an
982 This allows users to ask for example that the string form of an
976 object is only computed when foo?? is called, or even never, by
983 object is only computed when foo?? is called, or even never, by
977 setting the object_info_string_level >= 2 in the configuration
984 setting the object_info_string_level >= 2 in the configuration
978 file. This new option has been added and documented. After a
985 file. This new option has been added and documented. After a
979 request by SAGE to be able to control the printing of very large
986 request by SAGE to be able to control the printing of very large
980 objects more easily.
987 objects more easily.
981
988
982 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
989 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
983
990
984 * IPython/ipmaker.py (make_IPython): remove the ipython call path
991 * IPython/ipmaker.py (make_IPython): remove the ipython call path
985 from sys.argv, to be 100% consistent with how Python itself works
992 from sys.argv, to be 100% consistent with how Python itself works
986 (as seen for example with python -i file.py). After a bug report
993 (as seen for example with python -i file.py). After a bug report
987 by Jeffrey Collins.
994 by Jeffrey Collins.
988
995
989 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
996 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
990 nasty bug which was preventing custom namespaces with -pylab,
997 nasty bug which was preventing custom namespaces with -pylab,
991 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
998 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
992 compatibility (long gone from mpl).
999 compatibility (long gone from mpl).
993
1000
994 * IPython/ipapi.py (make_session): name change: create->make. We
1001 * IPython/ipapi.py (make_session): name change: create->make. We
995 use make in other places (ipmaker,...), it's shorter and easier to
1002 use make in other places (ipmaker,...), it's shorter and easier to
996 type and say, etc. I'm trying to clean things before 0.7.2 so
1003 type and say, etc. I'm trying to clean things before 0.7.2 so
997 that I can keep things stable wrt to ipapi in the chainsaw branch.
1004 that I can keep things stable wrt to ipapi in the chainsaw branch.
998
1005
999 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1006 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1000 python-mode recognizes our debugger mode. Add support for
1007 python-mode recognizes our debugger mode. Add support for
1001 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1008 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1002 <m.liu.jin-AT-gmail.com> originally written by
1009 <m.liu.jin-AT-gmail.com> originally written by
1003 doxgen-AT-newsmth.net (with minor modifications for xemacs
1010 doxgen-AT-newsmth.net (with minor modifications for xemacs
1004 compatibility)
1011 compatibility)
1005
1012
1006 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1013 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1007 tracebacks when walking the stack so that the stack tracking system
1014 tracebacks when walking the stack so that the stack tracking system
1008 in emacs' python-mode can identify the frames correctly.
1015 in emacs' python-mode can identify the frames correctly.
1009
1016
1010 * IPython/ipmaker.py (make_IPython): make the internal (and
1017 * IPython/ipmaker.py (make_IPython): make the internal (and
1011 default config) autoedit_syntax value false by default. Too many
1018 default config) autoedit_syntax value false by default. Too many
1012 users have complained to me (both on and off-list) about problems
1019 users have complained to me (both on and off-list) about problems
1013 with this option being on by default, so I'm making it default to
1020 with this option being on by default, so I'm making it default to
1014 off. It can still be enabled by anyone via the usual mechanisms.
1021 off. It can still be enabled by anyone via the usual mechanisms.
1015
1022
1016 * IPython/completer.py (Completer.attr_matches): add support for
1023 * IPython/completer.py (Completer.attr_matches): add support for
1017 PyCrust-style _getAttributeNames magic method. Patch contributed
1024 PyCrust-style _getAttributeNames magic method. Patch contributed
1018 by <mscott-AT-goldenspud.com>. Closes #50.
1025 by <mscott-AT-goldenspud.com>. Closes #50.
1019
1026
1020 * IPython/iplib.py (InteractiveShell.__init__): remove the
1027 * IPython/iplib.py (InteractiveShell.__init__): remove the
1021 deletion of exit/quit from __builtin__, which can break
1028 deletion of exit/quit from __builtin__, which can break
1022 third-party tools like the Zope debugging console. The
1029 third-party tools like the Zope debugging console. The
1023 %exit/%quit magics remain. In general, it's probably a good idea
1030 %exit/%quit magics remain. In general, it's probably a good idea
1024 not to delete anything from __builtin__, since we never know what
1031 not to delete anything from __builtin__, since we never know what
1025 that will break. In any case, python now (for 2.5) will support
1032 that will break. In any case, python now (for 2.5) will support
1026 'real' exit/quit, so this issue is moot. Closes #55.
1033 'real' exit/quit, so this issue is moot. Closes #55.
1027
1034
1028 * IPython/genutils.py (with_obj): rename the 'with' function to
1035 * IPython/genutils.py (with_obj): rename the 'with' function to
1029 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1036 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1030 becomes a language keyword. Closes #53.
1037 becomes a language keyword. Closes #53.
1031
1038
1032 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1039 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1033 __file__ attribute to this so it fools more things into thinking
1040 __file__ attribute to this so it fools more things into thinking
1034 it is a real module. Closes #59.
1041 it is a real module. Closes #59.
1035
1042
1036 * IPython/Magic.py (magic_edit): add -n option to open the editor
1043 * IPython/Magic.py (magic_edit): add -n option to open the editor
1037 at a specific line number. After a patch by Stefan van der Walt.
1044 at a specific line number. After a patch by Stefan van der Walt.
1038
1045
1039 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1046 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1040
1047
1041 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1048 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1042 reason the file could not be opened. After automatic crash
1049 reason the file could not be opened. After automatic crash
1043 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1050 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1044 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1051 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1045 (_should_recompile): Don't fire editor if using %bg, since there
1052 (_should_recompile): Don't fire editor if using %bg, since there
1046 is no file in the first place. From the same report as above.
1053 is no file in the first place. From the same report as above.
1047 (raw_input): protect against faulty third-party prefilters. After
1054 (raw_input): protect against faulty third-party prefilters. After
1048 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1055 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1049 while running under SAGE.
1056 while running under SAGE.
1050
1057
1051 2006-05-23 Ville Vainio <vivainio@gmail.com>
1058 2006-05-23 Ville Vainio <vivainio@gmail.com>
1052
1059
1053 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1060 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1054 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1061 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1055 now returns None (again), unless dummy is specifically allowed by
1062 now returns None (again), unless dummy is specifically allowed by
1056 ipapi.get(allow_dummy=True).
1063 ipapi.get(allow_dummy=True).
1057
1064
1058 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1065 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1059
1066
1060 * IPython: remove all 2.2-compatibility objects and hacks from
1067 * IPython: remove all 2.2-compatibility objects and hacks from
1061 everywhere, since we only support 2.3 at this point. Docs
1068 everywhere, since we only support 2.3 at this point. Docs
1062 updated.
1069 updated.
1063
1070
1064 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1071 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1065 Anything requiring extra validation can be turned into a Python
1072 Anything requiring extra validation can be turned into a Python
1066 property in the future. I used a property for the db one b/c
1073 property in the future. I used a property for the db one b/c
1067 there was a nasty circularity problem with the initialization
1074 there was a nasty circularity problem with the initialization
1068 order, which right now I don't have time to clean up.
1075 order, which right now I don't have time to clean up.
1069
1076
1070 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1077 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1071 another locking bug reported by Jorgen. I'm not 100% sure though,
1078 another locking bug reported by Jorgen. I'm not 100% sure though,
1072 so more testing is needed...
1079 so more testing is needed...
1073
1080
1074 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1081 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1075
1082
1076 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1083 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1077 local variables from any routine in user code (typically executed
1084 local variables from any routine in user code (typically executed
1078 with %run) directly into the interactive namespace. Very useful
1085 with %run) directly into the interactive namespace. Very useful
1079 when doing complex debugging.
1086 when doing complex debugging.
1080 (IPythonNotRunning): Changed the default None object to a dummy
1087 (IPythonNotRunning): Changed the default None object to a dummy
1081 whose attributes can be queried as well as called without
1088 whose attributes can be queried as well as called without
1082 exploding, to ease writing code which works transparently both in
1089 exploding, to ease writing code which works transparently both in
1083 and out of ipython and uses some of this API.
1090 and out of ipython and uses some of this API.
1084
1091
1085 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1092 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1086
1093
1087 * IPython/hooks.py (result_display): Fix the fact that our display
1094 * IPython/hooks.py (result_display): Fix the fact that our display
1088 hook was using str() instead of repr(), as the default python
1095 hook was using str() instead of repr(), as the default python
1089 console does. This had gone unnoticed b/c it only happened if
1096 console does. This had gone unnoticed b/c it only happened if
1090 %Pprint was off, but the inconsistency was there.
1097 %Pprint was off, but the inconsistency was there.
1091
1098
1092 2006-05-15 Ville Vainio <vivainio@gmail.com>
1099 2006-05-15 Ville Vainio <vivainio@gmail.com>
1093
1100
1094 * Oinspect.py: Only show docstring for nonexisting/binary files
1101 * Oinspect.py: Only show docstring for nonexisting/binary files
1095 when doing object??, closing ticket #62
1102 when doing object??, closing ticket #62
1096
1103
1097 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1104 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1098
1105
1099 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1106 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1100 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1107 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1101 was being released in a routine which hadn't checked if it had
1108 was being released in a routine which hadn't checked if it had
1102 been the one to acquire it.
1109 been the one to acquire it.
1103
1110
1104 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1111 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1105
1112
1106 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1113 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1107
1114
1108 2006-04-11 Ville Vainio <vivainio@gmail.com>
1115 2006-04-11 Ville Vainio <vivainio@gmail.com>
1109
1116
1110 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1117 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1111 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1118 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1112 prefilters, allowing stuff like magics and aliases in the file.
1119 prefilters, allowing stuff like magics and aliases in the file.
1113
1120
1114 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1121 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1115 added. Supported now are "%clear in" and "%clear out" (clear input and
1122 added. Supported now are "%clear in" and "%clear out" (clear input and
1116 output history, respectively). Also fixed CachedOutput.flush to
1123 output history, respectively). Also fixed CachedOutput.flush to
1117 properly flush the output cache.
1124 properly flush the output cache.
1118
1125
1119 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1126 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1120 half-success (and fail explicitly).
1127 half-success (and fail explicitly).
1121
1128
1122 2006-03-28 Ville Vainio <vivainio@gmail.com>
1129 2006-03-28 Ville Vainio <vivainio@gmail.com>
1123
1130
1124 * iplib.py: Fix quoting of aliases so that only argless ones
1131 * iplib.py: Fix quoting of aliases so that only argless ones
1125 are quoted
1132 are quoted
1126
1133
1127 2006-03-28 Ville Vainio <vivainio@gmail.com>
1134 2006-03-28 Ville Vainio <vivainio@gmail.com>
1128
1135
1129 * iplib.py: Quote aliases with spaces in the name.
1136 * iplib.py: Quote aliases with spaces in the name.
1130 "c:\program files\blah\bin" is now legal alias target.
1137 "c:\program files\blah\bin" is now legal alias target.
1131
1138
1132 * ext_rehashdir.py: Space no longer allowed as arg
1139 * ext_rehashdir.py: Space no longer allowed as arg
1133 separator, since space is legal in path names.
1140 separator, since space is legal in path names.
1134
1141
1135 2006-03-16 Ville Vainio <vivainio@gmail.com>
1142 2006-03-16 Ville Vainio <vivainio@gmail.com>
1136
1143
1137 * upgrade_dir.py: Take path.py from Extensions, correcting
1144 * upgrade_dir.py: Take path.py from Extensions, correcting
1138 %upgrade magic
1145 %upgrade magic
1139
1146
1140 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1147 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1141
1148
1142 * hooks.py: Only enclose editor binary in quotes if legal and
1149 * hooks.py: Only enclose editor binary in quotes if legal and
1143 necessary (space in the name, and is an existing file). Fixes a bug
1150 necessary (space in the name, and is an existing file). Fixes a bug
1144 reported by Zachary Pincus.
1151 reported by Zachary Pincus.
1145
1152
1146 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1153 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1147
1154
1148 * Manual: thanks to a tip on proper color handling for Emacs, by
1155 * Manual: thanks to a tip on proper color handling for Emacs, by
1149 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1156 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1150
1157
1151 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1158 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1152 by applying the provided patch. Thanks to Liu Jin
1159 by applying the provided patch. Thanks to Liu Jin
1153 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1160 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1154 XEmacs/Linux, I'm trusting the submitter that it actually helps
1161 XEmacs/Linux, I'm trusting the submitter that it actually helps
1155 under win32/GNU Emacs. Will revisit if any problems are reported.
1162 under win32/GNU Emacs. Will revisit if any problems are reported.
1156
1163
1157 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1164 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1158
1165
1159 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1166 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1160 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1167 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1161
1168
1162 2006-03-12 Ville Vainio <vivainio@gmail.com>
1169 2006-03-12 Ville Vainio <vivainio@gmail.com>
1163
1170
1164 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1171 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1165 Torsten Marek.
1172 Torsten Marek.
1166
1173
1167 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1174 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1168
1175
1169 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1176 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1170 line ranges works again.
1177 line ranges works again.
1171
1178
1172 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1179 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1173
1180
1174 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1181 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1175 and friends, after a discussion with Zach Pincus on ipython-user.
1182 and friends, after a discussion with Zach Pincus on ipython-user.
1176 I'm not 100% sure, but after thinking about it quite a bit, it may
1183 I'm not 100% sure, but after thinking about it quite a bit, it may
1177 be OK. Testing with the multithreaded shells didn't reveal any
1184 be OK. Testing with the multithreaded shells didn't reveal any
1178 problems, but let's keep an eye out.
1185 problems, but let's keep an eye out.
1179
1186
1180 In the process, I fixed a few things which were calling
1187 In the process, I fixed a few things which were calling
1181 self.InteractiveTB() directly (like safe_execfile), which is a
1188 self.InteractiveTB() directly (like safe_execfile), which is a
1182 mistake: ALL exception reporting should be done by calling
1189 mistake: ALL exception reporting should be done by calling
1183 self.showtraceback(), which handles state and tab-completion and
1190 self.showtraceback(), which handles state and tab-completion and
1184 more.
1191 more.
1185
1192
1186 2006-03-01 Ville Vainio <vivainio@gmail.com>
1193 2006-03-01 Ville Vainio <vivainio@gmail.com>
1187
1194
1188 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1195 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1189 To use, do "from ipipe import *".
1196 To use, do "from ipipe import *".
1190
1197
1191 2006-02-24 Ville Vainio <vivainio@gmail.com>
1198 2006-02-24 Ville Vainio <vivainio@gmail.com>
1192
1199
1193 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1200 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1194 "cleanly" and safely than the older upgrade mechanism.
1201 "cleanly" and safely than the older upgrade mechanism.
1195
1202
1196 2006-02-21 Ville Vainio <vivainio@gmail.com>
1203 2006-02-21 Ville Vainio <vivainio@gmail.com>
1197
1204
1198 * Magic.py: %save works again.
1205 * Magic.py: %save works again.
1199
1206
1200 2006-02-15 Ville Vainio <vivainio@gmail.com>
1207 2006-02-15 Ville Vainio <vivainio@gmail.com>
1201
1208
1202 * Magic.py: %Pprint works again
1209 * Magic.py: %Pprint works again
1203
1210
1204 * Extensions/ipy_sane_defaults.py: Provide everything provided
1211 * Extensions/ipy_sane_defaults.py: Provide everything provided
1205 in default ipythonrc, to make it possible to have a completely empty
1212 in default ipythonrc, to make it possible to have a completely empty
1206 ipythonrc (and thus completely rc-file free configuration)
1213 ipythonrc (and thus completely rc-file free configuration)
1207
1214
1208 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1215 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1209
1216
1210 * IPython/hooks.py (editor): quote the call to the editor command,
1217 * IPython/hooks.py (editor): quote the call to the editor command,
1211 to allow commands with spaces in them. Problem noted by watching
1218 to allow commands with spaces in them. Problem noted by watching
1212 Ian Oswald's video about textpad under win32 at
1219 Ian Oswald's video about textpad under win32 at
1213 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1220 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1214
1221
1215 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1222 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1216 describing magics (we haven't used @ for a loong time).
1223 describing magics (we haven't used @ for a loong time).
1217
1224
1218 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1225 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1219 contributed by marienz to close
1226 contributed by marienz to close
1220 http://www.scipy.net/roundup/ipython/issue53.
1227 http://www.scipy.net/roundup/ipython/issue53.
1221
1228
1222 2006-02-10 Ville Vainio <vivainio@gmail.com>
1229 2006-02-10 Ville Vainio <vivainio@gmail.com>
1223
1230
1224 * genutils.py: getoutput now works in win32 too
1231 * genutils.py: getoutput now works in win32 too
1225
1232
1226 * completer.py: alias and magic completion only invoked
1233 * completer.py: alias and magic completion only invoked
1227 at the first "item" in the line, to avoid "cd %store"
1234 at the first "item" in the line, to avoid "cd %store"
1228 nonsense.
1235 nonsense.
1229
1236
1230 2006-02-09 Ville Vainio <vivainio@gmail.com>
1237 2006-02-09 Ville Vainio <vivainio@gmail.com>
1231
1238
1232 * test/*: Added a unit testing framework (finally).
1239 * test/*: Added a unit testing framework (finally).
1233 '%run runtests.py' to run test_*.
1240 '%run runtests.py' to run test_*.
1234
1241
1235 * ipapi.py: Exposed runlines and set_custom_exc
1242 * ipapi.py: Exposed runlines and set_custom_exc
1236
1243
1237 2006-02-07 Ville Vainio <vivainio@gmail.com>
1244 2006-02-07 Ville Vainio <vivainio@gmail.com>
1238
1245
1239 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1246 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1240 instead use "f(1 2)" as before.
1247 instead use "f(1 2)" as before.
1241
1248
1242 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1249 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1243
1250
1244 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1251 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1245 facilities, for demos processed by the IPython input filter
1252 facilities, for demos processed by the IPython input filter
1246 (IPythonDemo), and for running a script one-line-at-a-time as a
1253 (IPythonDemo), and for running a script one-line-at-a-time as a
1247 demo, both for pure Python (LineDemo) and for IPython-processed
1254 demo, both for pure Python (LineDemo) and for IPython-processed
1248 input (IPythonLineDemo). After a request by Dave Kohel, from the
1255 input (IPythonLineDemo). After a request by Dave Kohel, from the
1249 SAGE team.
1256 SAGE team.
1250 (Demo.edit): added an edit() method to the demo objects, to edit
1257 (Demo.edit): added an edit() method to the demo objects, to edit
1251 the in-memory copy of the last executed block.
1258 the in-memory copy of the last executed block.
1252
1259
1253 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1260 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1254 processing to %edit, %macro and %save. These commands can now be
1261 processing to %edit, %macro and %save. These commands can now be
1255 invoked on the unprocessed input as it was typed by the user
1262 invoked on the unprocessed input as it was typed by the user
1256 (without any prefilters applied). After requests by the SAGE team
1263 (without any prefilters applied). After requests by the SAGE team
1257 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1264 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1258
1265
1259 2006-02-01 Ville Vainio <vivainio@gmail.com>
1266 2006-02-01 Ville Vainio <vivainio@gmail.com>
1260
1267
1261 * setup.py, eggsetup.py: easy_install ipython==dev works
1268 * setup.py, eggsetup.py: easy_install ipython==dev works
1262 correctly now (on Linux)
1269 correctly now (on Linux)
1263
1270
1264 * ipy_user_conf,ipmaker: user config changes, removed spurious
1271 * ipy_user_conf,ipmaker: user config changes, removed spurious
1265 warnings
1272 warnings
1266
1273
1267 * iplib: if rc.banner is string, use it as is.
1274 * iplib: if rc.banner is string, use it as is.
1268
1275
1269 * Magic: %pycat accepts a string argument and pages it's contents.
1276 * Magic: %pycat accepts a string argument and pages it's contents.
1270
1277
1271
1278
1272 2006-01-30 Ville Vainio <vivainio@gmail.com>
1279 2006-01-30 Ville Vainio <vivainio@gmail.com>
1273
1280
1274 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1281 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1275 Now %store and bookmarks work through PickleShare, meaning that
1282 Now %store and bookmarks work through PickleShare, meaning that
1276 concurrent access is possible and all ipython sessions see the
1283 concurrent access is possible and all ipython sessions see the
1277 same database situation all the time, instead of snapshot of
1284 same database situation all the time, instead of snapshot of
1278 the situation when the session was started. Hence, %bookmark
1285 the situation when the session was started. Hence, %bookmark
1279 results are immediately accessible from othes sessions. The database
1286 results are immediately accessible from othes sessions. The database
1280 is also available for use by user extensions. See:
1287 is also available for use by user extensions. See:
1281 http://www.python.org/pypi/pickleshare
1288 http://www.python.org/pypi/pickleshare
1282
1289
1283 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1290 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1284
1291
1285 * aliases can now be %store'd
1292 * aliases can now be %store'd
1286
1293
1287 * path.py moved to Extensions so that pickleshare does not need
1294 * path.py moved to Extensions so that pickleshare does not need
1288 IPython-specific import. Extensions added to pythonpath right
1295 IPython-specific import. Extensions added to pythonpath right
1289 at __init__.
1296 at __init__.
1290
1297
1291 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1298 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1292 called with _ip.system and the pre-transformed command string.
1299 called with _ip.system and the pre-transformed command string.
1293
1300
1294 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1301 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1295
1302
1296 * IPython/iplib.py (interact): Fix that we were not catching
1303 * IPython/iplib.py (interact): Fix that we were not catching
1297 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1304 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1298 logic here had to change, but it's fixed now.
1305 logic here had to change, but it's fixed now.
1299
1306
1300 2006-01-29 Ville Vainio <vivainio@gmail.com>
1307 2006-01-29 Ville Vainio <vivainio@gmail.com>
1301
1308
1302 * iplib.py: Try to import pyreadline on Windows.
1309 * iplib.py: Try to import pyreadline on Windows.
1303
1310
1304 2006-01-27 Ville Vainio <vivainio@gmail.com>
1311 2006-01-27 Ville Vainio <vivainio@gmail.com>
1305
1312
1306 * iplib.py: Expose ipapi as _ip in builtin namespace.
1313 * iplib.py: Expose ipapi as _ip in builtin namespace.
1307 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1314 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1308 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1315 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1309 syntax now produce _ip.* variant of the commands.
1316 syntax now produce _ip.* variant of the commands.
1310
1317
1311 * "_ip.options().autoedit_syntax = 2" automatically throws
1318 * "_ip.options().autoedit_syntax = 2" automatically throws
1312 user to editor for syntax error correction without prompting.
1319 user to editor for syntax error correction without prompting.
1313
1320
1314 2006-01-27 Ville Vainio <vivainio@gmail.com>
1321 2006-01-27 Ville Vainio <vivainio@gmail.com>
1315
1322
1316 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1323 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1317 'ipython' at argv[0]) executed through command line.
1324 'ipython' at argv[0]) executed through command line.
1318 NOTE: this DEPRECATES calling ipython with multiple scripts
1325 NOTE: this DEPRECATES calling ipython with multiple scripts
1319 ("ipython a.py b.py c.py")
1326 ("ipython a.py b.py c.py")
1320
1327
1321 * iplib.py, hooks.py: Added configurable input prefilter,
1328 * iplib.py, hooks.py: Added configurable input prefilter,
1322 named 'input_prefilter'. See ext_rescapture.py for example
1329 named 'input_prefilter'. See ext_rescapture.py for example
1323 usage.
1330 usage.
1324
1331
1325 * ext_rescapture.py, Magic.py: Better system command output capture
1332 * ext_rescapture.py, Magic.py: Better system command output capture
1326 through 'var = !ls' (deprecates user-visible %sc). Same notation
1333 through 'var = !ls' (deprecates user-visible %sc). Same notation
1327 applies for magics, 'var = %alias' assigns alias list to var.
1334 applies for magics, 'var = %alias' assigns alias list to var.
1328
1335
1329 * ipapi.py: added meta() for accessing extension-usable data store.
1336 * ipapi.py: added meta() for accessing extension-usable data store.
1330
1337
1331 * iplib.py: added InteractiveShell.getapi(). New magics should be
1338 * iplib.py: added InteractiveShell.getapi(). New magics should be
1332 written doing self.getapi() instead of using the shell directly.
1339 written doing self.getapi() instead of using the shell directly.
1333
1340
1334 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1341 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1335 %store foo >> ~/myfoo.txt to store variables to files (in clean
1342 %store foo >> ~/myfoo.txt to store variables to files (in clean
1336 textual form, not a restorable pickle).
1343 textual form, not a restorable pickle).
1337
1344
1338 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1345 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1339
1346
1340 * usage.py, Magic.py: added %quickref
1347 * usage.py, Magic.py: added %quickref
1341
1348
1342 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1349 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1343
1350
1344 * GetoptErrors when invoking magics etc. with wrong args
1351 * GetoptErrors when invoking magics etc. with wrong args
1345 are now more helpful:
1352 are now more helpful:
1346 GetoptError: option -l not recognized (allowed: "qb" )
1353 GetoptError: option -l not recognized (allowed: "qb" )
1347
1354
1348 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1355 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1349
1356
1350 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1357 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1351 computationally intensive blocks don't appear to stall the demo.
1358 computationally intensive blocks don't appear to stall the demo.
1352
1359
1353 2006-01-24 Ville Vainio <vivainio@gmail.com>
1360 2006-01-24 Ville Vainio <vivainio@gmail.com>
1354
1361
1355 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1362 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1356 value to manipulate resulting history entry.
1363 value to manipulate resulting history entry.
1357
1364
1358 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1365 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1359 to instance methods of IPApi class, to make extending an embedded
1366 to instance methods of IPApi class, to make extending an embedded
1360 IPython feasible. See ext_rehashdir.py for example usage.
1367 IPython feasible. See ext_rehashdir.py for example usage.
1361
1368
1362 * Merged 1071-1076 from branches/0.7.1
1369 * Merged 1071-1076 from branches/0.7.1
1363
1370
1364
1371
1365 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
1372 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
1366
1373
1367 * tools/release (daystamp): Fix build tools to use the new
1374 * tools/release (daystamp): Fix build tools to use the new
1368 eggsetup.py script to build lightweight eggs.
1375 eggsetup.py script to build lightweight eggs.
1369
1376
1370 * Applied changesets 1062 and 1064 before 0.7.1 release.
1377 * Applied changesets 1062 and 1064 before 0.7.1 release.
1371
1378
1372 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
1379 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
1373 see the raw input history (without conversions like %ls ->
1380 see the raw input history (without conversions like %ls ->
1374 ipmagic("ls")). After a request from W. Stein, SAGE
1381 ipmagic("ls")). After a request from W. Stein, SAGE
1375 (http://modular.ucsd.edu/sage) developer. This information is
1382 (http://modular.ucsd.edu/sage) developer. This information is
1376 stored in the input_hist_raw attribute of the IPython instance, so
1383 stored in the input_hist_raw attribute of the IPython instance, so
1377 developers can access it if needed (it's an InputList instance).
1384 developers can access it if needed (it's an InputList instance).
1378
1385
1379 * Versionstring = 0.7.2.svn
1386 * Versionstring = 0.7.2.svn
1380
1387
1381 * eggsetup.py: A separate script for constructing eggs, creates
1388 * eggsetup.py: A separate script for constructing eggs, creates
1382 proper launch scripts even on Windows (an .exe file in
1389 proper launch scripts even on Windows (an .exe file in
1383 \python24\scripts).
1390 \python24\scripts).
1384
1391
1385 * ipapi.py: launch_new_instance, launch entry point needed for the
1392 * ipapi.py: launch_new_instance, launch entry point needed for the
1386 egg.
1393 egg.
1387
1394
1388 2006-01-23 Ville Vainio <vivainio@gmail.com>
1395 2006-01-23 Ville Vainio <vivainio@gmail.com>
1389
1396
1390 * Added %cpaste magic for pasting python code
1397 * Added %cpaste magic for pasting python code
1391
1398
1392 2006-01-22 Ville Vainio <vivainio@gmail.com>
1399 2006-01-22 Ville Vainio <vivainio@gmail.com>
1393
1400
1394 * Merge from branches/0.7.1 into trunk, revs 1052-1057
1401 * Merge from branches/0.7.1 into trunk, revs 1052-1057
1395
1402
1396 * Versionstring = 0.7.2.svn
1403 * Versionstring = 0.7.2.svn
1397
1404
1398 * eggsetup.py: A separate script for constructing eggs, creates
1405 * eggsetup.py: A separate script for constructing eggs, creates
1399 proper launch scripts even on Windows (an .exe file in
1406 proper launch scripts even on Windows (an .exe file in
1400 \python24\scripts).
1407 \python24\scripts).
1401
1408
1402 * ipapi.py: launch_new_instance, launch entry point needed for the
1409 * ipapi.py: launch_new_instance, launch entry point needed for the
1403 egg.
1410 egg.
1404
1411
1405 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
1412 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
1406
1413
1407 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
1414 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
1408 %pfile foo would print the file for foo even if it was a binary.
1415 %pfile foo would print the file for foo even if it was a binary.
1409 Now, extensions '.so' and '.dll' are skipped.
1416 Now, extensions '.so' and '.dll' are skipped.
1410
1417
1411 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
1418 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
1412 bug, where macros would fail in all threaded modes. I'm not 100%
1419 bug, where macros would fail in all threaded modes. I'm not 100%
1413 sure, so I'm going to put out an rc instead of making a release
1420 sure, so I'm going to put out an rc instead of making a release
1414 today, and wait for feedback for at least a few days.
1421 today, and wait for feedback for at least a few days.
1415
1422
1416 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
1423 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
1417 it...) the handling of pasting external code with autoindent on.
1424 it...) the handling of pasting external code with autoindent on.
1418 To get out of a multiline input, the rule will appear for most
1425 To get out of a multiline input, the rule will appear for most
1419 users unchanged: two blank lines or change the indent level
1426 users unchanged: two blank lines or change the indent level
1420 proposed by IPython. But there is a twist now: you can
1427 proposed by IPython. But there is a twist now: you can
1421 add/subtract only *one or two spaces*. If you add/subtract three
1428 add/subtract only *one or two spaces*. If you add/subtract three
1422 or more (unless you completely delete the line), IPython will
1429 or more (unless you completely delete the line), IPython will
1423 accept that line, and you'll need to enter a second one of pure
1430 accept that line, and you'll need to enter a second one of pure
1424 whitespace. I know it sounds complicated, but I can't find a
1431 whitespace. I know it sounds complicated, but I can't find a
1425 different solution that covers all the cases, with the right
1432 different solution that covers all the cases, with the right
1426 heuristics. Hopefully in actual use, nobody will really notice
1433 heuristics. Hopefully in actual use, nobody will really notice
1427 all these strange rules and things will 'just work'.
1434 all these strange rules and things will 'just work'.
1428
1435
1429 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
1436 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
1430
1437
1431 * IPython/iplib.py (interact): catch exceptions which can be
1438 * IPython/iplib.py (interact): catch exceptions which can be
1432 triggered asynchronously by signal handlers. Thanks to an
1439 triggered asynchronously by signal handlers. Thanks to an
1433 automatic crash report, submitted by Colin Kingsley
1440 automatic crash report, submitted by Colin Kingsley
1434 <tercel-AT-gentoo.org>.
1441 <tercel-AT-gentoo.org>.
1435
1442
1436 2006-01-20 Ville Vainio <vivainio@gmail.com>
1443 2006-01-20 Ville Vainio <vivainio@gmail.com>
1437
1444
1438 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
1445 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
1439 (%rehashdir, very useful, try it out) of how to extend ipython
1446 (%rehashdir, very useful, try it out) of how to extend ipython
1440 with new magics. Also added Extensions dir to pythonpath to make
1447 with new magics. Also added Extensions dir to pythonpath to make
1441 importing extensions easy.
1448 importing extensions easy.
1442
1449
1443 * %store now complains when trying to store interactively declared
1450 * %store now complains when trying to store interactively declared
1444 classes / instances of those classes.
1451 classes / instances of those classes.
1445
1452
1446 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
1453 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
1447 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
1454 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
1448 if they exist, and ipy_user_conf.py with some defaults is created for
1455 if they exist, and ipy_user_conf.py with some defaults is created for
1449 the user.
1456 the user.
1450
1457
1451 * Startup rehashing done by the config file, not InterpreterExec.
1458 * Startup rehashing done by the config file, not InterpreterExec.
1452 This means system commands are available even without selecting the
1459 This means system commands are available even without selecting the
1453 pysh profile. It's the sensible default after all.
1460 pysh profile. It's the sensible default after all.
1454
1461
1455 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
1462 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
1456
1463
1457 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
1464 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
1458 multiline code with autoindent on working. But I am really not
1465 multiline code with autoindent on working. But I am really not
1459 sure, so this needs more testing. Will commit a debug-enabled
1466 sure, so this needs more testing. Will commit a debug-enabled
1460 version for now, while I test it some more, so that Ville and
1467 version for now, while I test it some more, so that Ville and
1461 others may also catch any problems. Also made
1468 others may also catch any problems. Also made
1462 self.indent_current_str() a method, to ensure that there's no
1469 self.indent_current_str() a method, to ensure that there's no
1463 chance of the indent space count and the corresponding string
1470 chance of the indent space count and the corresponding string
1464 falling out of sync. All code needing the string should just call
1471 falling out of sync. All code needing the string should just call
1465 the method.
1472 the method.
1466
1473
1467 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
1474 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
1468
1475
1469 * IPython/Magic.py (magic_edit): fix check for when users don't
1476 * IPython/Magic.py (magic_edit): fix check for when users don't
1470 save their output files, the try/except was in the wrong section.
1477 save their output files, the try/except was in the wrong section.
1471
1478
1472 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1479 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1473
1480
1474 * IPython/Magic.py (magic_run): fix __file__ global missing from
1481 * IPython/Magic.py (magic_run): fix __file__ global missing from
1475 script's namespace when executed via %run. After a report by
1482 script's namespace when executed via %run. After a report by
1476 Vivian.
1483 Vivian.
1477
1484
1478 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
1485 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
1479 when using python 2.4. The parent constructor changed in 2.4, and
1486 when using python 2.4. The parent constructor changed in 2.4, and
1480 we need to track it directly (we can't call it, as it messes up
1487 we need to track it directly (we can't call it, as it messes up
1481 readline and tab-completion inside our pdb would stop working).
1488 readline and tab-completion inside our pdb would stop working).
1482 After a bug report by R. Bernstein <rocky-AT-panix.com>.
1489 After a bug report by R. Bernstein <rocky-AT-panix.com>.
1483
1490
1484 2006-01-16 Ville Vainio <vivainio@gmail.com>
1491 2006-01-16 Ville Vainio <vivainio@gmail.com>
1485
1492
1486 * Ipython/magic.py: Reverted back to old %edit functionality
1493 * Ipython/magic.py: Reverted back to old %edit functionality
1487 that returns file contents on exit.
1494 that returns file contents on exit.
1488
1495
1489 * IPython/path.py: Added Jason Orendorff's "path" module to
1496 * IPython/path.py: Added Jason Orendorff's "path" module to
1490 IPython tree, http://www.jorendorff.com/articles/python/path/.
1497 IPython tree, http://www.jorendorff.com/articles/python/path/.
1491 You can get path objects conveniently through %sc, and !!, e.g.:
1498 You can get path objects conveniently through %sc, and !!, e.g.:
1492 sc files=ls
1499 sc files=ls
1493 for p in files.paths: # or files.p
1500 for p in files.paths: # or files.p
1494 print p,p.mtime
1501 print p,p.mtime
1495
1502
1496 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
1503 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
1497 now work again without considering the exclusion regexp -
1504 now work again without considering the exclusion regexp -
1498 hence, things like ',foo my/path' turn to 'foo("my/path")'
1505 hence, things like ',foo my/path' turn to 'foo("my/path")'
1499 instead of syntax error.
1506 instead of syntax error.
1500
1507
1501
1508
1502 2006-01-14 Ville Vainio <vivainio@gmail.com>
1509 2006-01-14 Ville Vainio <vivainio@gmail.com>
1503
1510
1504 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
1511 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
1505 ipapi decorators for python 2.4 users, options() provides access to rc
1512 ipapi decorators for python 2.4 users, options() provides access to rc
1506 data.
1513 data.
1507
1514
1508 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
1515 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
1509 as path separators (even on Linux ;-). Space character after
1516 as path separators (even on Linux ;-). Space character after
1510 backslash (as yielded by tab completer) is still space;
1517 backslash (as yielded by tab completer) is still space;
1511 "%cd long\ name" works as expected.
1518 "%cd long\ name" works as expected.
1512
1519
1513 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
1520 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
1514 as "chain of command", with priority. API stays the same,
1521 as "chain of command", with priority. API stays the same,
1515 TryNext exception raised by a hook function signals that
1522 TryNext exception raised by a hook function signals that
1516 current hook failed and next hook should try handling it, as
1523 current hook failed and next hook should try handling it, as
1517 suggested by Walter Dörwald <walter@livinglogic.de>. Walter also
1524 suggested by Walter Dörwald <walter@livinglogic.de>. Walter also
1518 requested configurable display hook, which is now implemented.
1525 requested configurable display hook, which is now implemented.
1519
1526
1520 2006-01-13 Ville Vainio <vivainio@gmail.com>
1527 2006-01-13 Ville Vainio <vivainio@gmail.com>
1521
1528
1522 * IPython/platutils*.py: platform specific utility functions,
1529 * IPython/platutils*.py: platform specific utility functions,
1523 so far only set_term_title is implemented (change terminal
1530 so far only set_term_title is implemented (change terminal
1524 label in windowing systems). %cd now changes the title to
1531 label in windowing systems). %cd now changes the title to
1525 current dir.
1532 current dir.
1526
1533
1527 * IPython/Release.py: Added myself to "authors" list,
1534 * IPython/Release.py: Added myself to "authors" list,
1528 had to create new files.
1535 had to create new files.
1529
1536
1530 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
1537 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
1531 shell escape; not a known bug but had potential to be one in the
1538 shell escape; not a known bug but had potential to be one in the
1532 future.
1539 future.
1533
1540
1534 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
1541 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
1535 extension API for IPython! See the module for usage example. Fix
1542 extension API for IPython! See the module for usage example. Fix
1536 OInspect for docstring-less magic functions.
1543 OInspect for docstring-less magic functions.
1537
1544
1538
1545
1539 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
1546 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
1540
1547
1541 * IPython/iplib.py (raw_input): temporarily deactivate all
1548 * IPython/iplib.py (raw_input): temporarily deactivate all
1542 attempts at allowing pasting of code with autoindent on. It
1549 attempts at allowing pasting of code with autoindent on. It
1543 introduced bugs (reported by Prabhu) and I can't seem to find a
1550 introduced bugs (reported by Prabhu) and I can't seem to find a
1544 robust combination which works in all cases. Will have to revisit
1551 robust combination which works in all cases. Will have to revisit
1545 later.
1552 later.
1546
1553
1547 * IPython/genutils.py: remove isspace() function. We've dropped
1554 * IPython/genutils.py: remove isspace() function. We've dropped
1548 2.2 compatibility, so it's OK to use the string method.
1555 2.2 compatibility, so it's OK to use the string method.
1549
1556
1550 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1557 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1551
1558
1552 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1559 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1553 matching what NOT to autocall on, to include all python binary
1560 matching what NOT to autocall on, to include all python binary
1554 operators (including things like 'and', 'or', 'is' and 'in').
1561 operators (including things like 'and', 'or', 'is' and 'in').
1555 Prompted by a bug report on 'foo & bar', but I realized we had
1562 Prompted by a bug report on 'foo & bar', but I realized we had
1556 many more potential bug cases with other operators. The regexp is
1563 many more potential bug cases with other operators. The regexp is
1557 self.re_exclude_auto, it's fairly commented.
1564 self.re_exclude_auto, it's fairly commented.
1558
1565
1559 2006-01-12 Ville Vainio <vivainio@gmail.com>
1566 2006-01-12 Ville Vainio <vivainio@gmail.com>
1560
1567
1561 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1568 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1562 Prettified and hardened string/backslash quoting with ipsystem(),
1569 Prettified and hardened string/backslash quoting with ipsystem(),
1563 ipalias() and ipmagic(). Now even \ characters are passed to
1570 ipalias() and ipmagic(). Now even \ characters are passed to
1564 %magics, !shell escapes and aliases exactly as they are in the
1571 %magics, !shell escapes and aliases exactly as they are in the
1565 ipython command line. Should improve backslash experience,
1572 ipython command line. Should improve backslash experience,
1566 particularly in Windows (path delimiter for some commands that
1573 particularly in Windows (path delimiter for some commands that
1567 won't understand '/'), but Unix benefits as well (regexps). %cd
1574 won't understand '/'), but Unix benefits as well (regexps). %cd
1568 magic still doesn't support backslash path delimiters, though. Also
1575 magic still doesn't support backslash path delimiters, though. Also
1569 deleted all pretense of supporting multiline command strings in
1576 deleted all pretense of supporting multiline command strings in
1570 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1577 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1571
1578
1572 * doc/build_doc_instructions.txt added. Documentation on how to
1579 * doc/build_doc_instructions.txt added. Documentation on how to
1573 use doc/update_manual.py, added yesterday. Both files contributed
1580 use doc/update_manual.py, added yesterday. Both files contributed
1574 by Jörgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1581 by Jörgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1575 doc/*.sh for deprecation at a later date.
1582 doc/*.sh for deprecation at a later date.
1576
1583
1577 * /ipython.py Added ipython.py to root directory for
1584 * /ipython.py Added ipython.py to root directory for
1578 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1585 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1579 ipython.py) and development convenience (no need to keep doing
1586 ipython.py) and development convenience (no need to keep doing
1580 "setup.py install" between changes).
1587 "setup.py install" between changes).
1581
1588
1582 * Made ! and !! shell escapes work (again) in multiline expressions:
1589 * Made ! and !! shell escapes work (again) in multiline expressions:
1583 if 1:
1590 if 1:
1584 !ls
1591 !ls
1585 !!ls
1592 !!ls
1586
1593
1587 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1594 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1588
1595
1589 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1596 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1590 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1597 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1591 module in case-insensitive installation. Was causing crashes
1598 module in case-insensitive installation. Was causing crashes
1592 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1599 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1593
1600
1594 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1601 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1595 <marienz-AT-gentoo.org>, closes
1602 <marienz-AT-gentoo.org>, closes
1596 http://www.scipy.net/roundup/ipython/issue51.
1603 http://www.scipy.net/roundup/ipython/issue51.
1597
1604
1598 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1605 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1599
1606
1600 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1607 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1601 problem of excessive CPU usage under *nix and keyboard lag under
1608 problem of excessive CPU usage under *nix and keyboard lag under
1602 win32.
1609 win32.
1603
1610
1604 2006-01-10 *** Released version 0.7.0
1611 2006-01-10 *** Released version 0.7.0
1605
1612
1606 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1613 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1607
1614
1608 * IPython/Release.py (revision): tag version number to 0.7.0,
1615 * IPython/Release.py (revision): tag version number to 0.7.0,
1609 ready for release.
1616 ready for release.
1610
1617
1611 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1618 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1612 it informs the user of the name of the temp. file used. This can
1619 it informs the user of the name of the temp. file used. This can
1613 help if you decide later to reuse that same file, so you know
1620 help if you decide later to reuse that same file, so you know
1614 where to copy the info from.
1621 where to copy the info from.
1615
1622
1616 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1623 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1617
1624
1618 * setup_bdist_egg.py: little script to build an egg. Added
1625 * setup_bdist_egg.py: little script to build an egg. Added
1619 support in the release tools as well.
1626 support in the release tools as well.
1620
1627
1621 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1628 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1622
1629
1623 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1630 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1624 version selection (new -wxversion command line and ipythonrc
1631 version selection (new -wxversion command line and ipythonrc
1625 parameter). Patch contributed by Arnd Baecker
1632 parameter). Patch contributed by Arnd Baecker
1626 <arnd.baecker-AT-web.de>.
1633 <arnd.baecker-AT-web.de>.
1627
1634
1628 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1635 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1629 embedded instances, for variables defined at the interactive
1636 embedded instances, for variables defined at the interactive
1630 prompt of the embedded ipython. Reported by Arnd.
1637 prompt of the embedded ipython. Reported by Arnd.
1631
1638
1632 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1639 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1633 it can be used as a (stateful) toggle, or with a direct parameter.
1640 it can be used as a (stateful) toggle, or with a direct parameter.
1634
1641
1635 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1642 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1636 could be triggered in certain cases and cause the traceback
1643 could be triggered in certain cases and cause the traceback
1637 printer not to work.
1644 printer not to work.
1638
1645
1639 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1646 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1640
1647
1641 * IPython/iplib.py (_should_recompile): Small fix, closes
1648 * IPython/iplib.py (_should_recompile): Small fix, closes
1642 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1649 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1643
1650
1644 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1651 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1645
1652
1646 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1653 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1647 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1654 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1648 Moad for help with tracking it down.
1655 Moad for help with tracking it down.
1649
1656
1650 * IPython/iplib.py (handle_auto): fix autocall handling for
1657 * IPython/iplib.py (handle_auto): fix autocall handling for
1651 objects which support BOTH __getitem__ and __call__ (so that f [x]
1658 objects which support BOTH __getitem__ and __call__ (so that f [x]
1652 is left alone, instead of becoming f([x]) automatically).
1659 is left alone, instead of becoming f([x]) automatically).
1653
1660
1654 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1661 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1655 Ville's patch.
1662 Ville's patch.
1656
1663
1657 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1664 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1658
1665
1659 * IPython/iplib.py (handle_auto): changed autocall semantics to
1666 * IPython/iplib.py (handle_auto): changed autocall semantics to
1660 include 'smart' mode, where the autocall transformation is NOT
1667 include 'smart' mode, where the autocall transformation is NOT
1661 applied if there are no arguments on the line. This allows you to
1668 applied if there are no arguments on the line. This allows you to
1662 just type 'foo' if foo is a callable to see its internal form,
1669 just type 'foo' if foo is a callable to see its internal form,
1663 instead of having it called with no arguments (typically a
1670 instead of having it called with no arguments (typically a
1664 mistake). The old 'full' autocall still exists: for that, you
1671 mistake). The old 'full' autocall still exists: for that, you
1665 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1672 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1666
1673
1667 * IPython/completer.py (Completer.attr_matches): add
1674 * IPython/completer.py (Completer.attr_matches): add
1668 tab-completion support for Enthoughts' traits. After a report by
1675 tab-completion support for Enthoughts' traits. After a report by
1669 Arnd and a patch by Prabhu.
1676 Arnd and a patch by Prabhu.
1670
1677
1671 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1678 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1672
1679
1673 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1680 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1674 Schmolck's patch to fix inspect.getinnerframes().
1681 Schmolck's patch to fix inspect.getinnerframes().
1675
1682
1676 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1683 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1677 for embedded instances, regarding handling of namespaces and items
1684 for embedded instances, regarding handling of namespaces and items
1678 added to the __builtin__ one. Multiple embedded instances and
1685 added to the __builtin__ one. Multiple embedded instances and
1679 recursive embeddings should work better now (though I'm not sure
1686 recursive embeddings should work better now (though I'm not sure
1680 I've got all the corner cases fixed, that code is a bit of a brain
1687 I've got all the corner cases fixed, that code is a bit of a brain
1681 twister).
1688 twister).
1682
1689
1683 * IPython/Magic.py (magic_edit): added support to edit in-memory
1690 * IPython/Magic.py (magic_edit): added support to edit in-memory
1684 macros (automatically creates the necessary temp files). %edit
1691 macros (automatically creates the necessary temp files). %edit
1685 also doesn't return the file contents anymore, it's just noise.
1692 also doesn't return the file contents anymore, it's just noise.
1686
1693
1687 * IPython/completer.py (Completer.attr_matches): revert change to
1694 * IPython/completer.py (Completer.attr_matches): revert change to
1688 complete only on attributes listed in __all__. I realized it
1695 complete only on attributes listed in __all__. I realized it
1689 cripples the tab-completion system as a tool for exploring the
1696 cripples the tab-completion system as a tool for exploring the
1690 internals of unknown libraries (it renders any non-__all__
1697 internals of unknown libraries (it renders any non-__all__
1691 attribute off-limits). I got bit by this when trying to see
1698 attribute off-limits). I got bit by this when trying to see
1692 something inside the dis module.
1699 something inside the dis module.
1693
1700
1694 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1701 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1695
1702
1696 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1703 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1697 namespace for users and extension writers to hold data in. This
1704 namespace for users and extension writers to hold data in. This
1698 follows the discussion in
1705 follows the discussion in
1699 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1706 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1700
1707
1701 * IPython/completer.py (IPCompleter.complete): small patch to help
1708 * IPython/completer.py (IPCompleter.complete): small patch to help
1702 tab-completion under Emacs, after a suggestion by John Barnard
1709 tab-completion under Emacs, after a suggestion by John Barnard
1703 <barnarj-AT-ccf.org>.
1710 <barnarj-AT-ccf.org>.
1704
1711
1705 * IPython/Magic.py (Magic.extract_input_slices): added support for
1712 * IPython/Magic.py (Magic.extract_input_slices): added support for
1706 the slice notation in magics to use N-M to represent numbers N...M
1713 the slice notation in magics to use N-M to represent numbers N...M
1707 (closed endpoints). This is used by %macro and %save.
1714 (closed endpoints). This is used by %macro and %save.
1708
1715
1709 * IPython/completer.py (Completer.attr_matches): for modules which
1716 * IPython/completer.py (Completer.attr_matches): for modules which
1710 define __all__, complete only on those. After a patch by Jeffrey
1717 define __all__, complete only on those. After a patch by Jeffrey
1711 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1718 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1712 speed up this routine.
1719 speed up this routine.
1713
1720
1714 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1721 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1715 don't know if this is the end of it, but the behavior now is
1722 don't know if this is the end of it, but the behavior now is
1716 certainly much more correct. Note that coupled with macros,
1723 certainly much more correct. Note that coupled with macros,
1717 slightly surprising (at first) behavior may occur: a macro will in
1724 slightly surprising (at first) behavior may occur: a macro will in
1718 general expand to multiple lines of input, so upon exiting, the
1725 general expand to multiple lines of input, so upon exiting, the
1719 in/out counters will both be bumped by the corresponding amount
1726 in/out counters will both be bumped by the corresponding amount
1720 (as if the macro's contents had been typed interactively). Typing
1727 (as if the macro's contents had been typed interactively). Typing
1721 %hist will reveal the intermediate (silently processed) lines.
1728 %hist will reveal the intermediate (silently processed) lines.
1722
1729
1723 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1730 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1724 pickle to fail (%run was overwriting __main__ and not restoring
1731 pickle to fail (%run was overwriting __main__ and not restoring
1725 it, but pickle relies on __main__ to operate).
1732 it, but pickle relies on __main__ to operate).
1726
1733
1727 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1734 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1728 using properties, but forgot to make the main InteractiveShell
1735 using properties, but forgot to make the main InteractiveShell
1729 class a new-style class. Properties fail silently, and
1736 class a new-style class. Properties fail silently, and
1730 mysteriously, with old-style class (getters work, but
1737 mysteriously, with old-style class (getters work, but
1731 setters don't do anything).
1738 setters don't do anything).
1732
1739
1733 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1740 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1734
1741
1735 * IPython/Magic.py (magic_history): fix history reporting bug (I
1742 * IPython/Magic.py (magic_history): fix history reporting bug (I
1736 know some nasties are still there, I just can't seem to find a
1743 know some nasties are still there, I just can't seem to find a
1737 reproducible test case to track them down; the input history is
1744 reproducible test case to track them down; the input history is
1738 falling out of sync...)
1745 falling out of sync...)
1739
1746
1740 * IPython/iplib.py (handle_shell_escape): fix bug where both
1747 * IPython/iplib.py (handle_shell_escape): fix bug where both
1741 aliases and system accesses where broken for indented code (such
1748 aliases and system accesses where broken for indented code (such
1742 as loops).
1749 as loops).
1743
1750
1744 * IPython/genutils.py (shell): fix small but critical bug for
1751 * IPython/genutils.py (shell): fix small but critical bug for
1745 win32 system access.
1752 win32 system access.
1746
1753
1747 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1754 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1748
1755
1749 * IPython/iplib.py (showtraceback): remove use of the
1756 * IPython/iplib.py (showtraceback): remove use of the
1750 sys.last_{type/value/traceback} structures, which are non
1757 sys.last_{type/value/traceback} structures, which are non
1751 thread-safe.
1758 thread-safe.
1752 (_prefilter): change control flow to ensure that we NEVER
1759 (_prefilter): change control flow to ensure that we NEVER
1753 introspect objects when autocall is off. This will guarantee that
1760 introspect objects when autocall is off. This will guarantee that
1754 having an input line of the form 'x.y', where access to attribute
1761 having an input line of the form 'x.y', where access to attribute
1755 'y' has side effects, doesn't trigger the side effect TWICE. It
1762 'y' has side effects, doesn't trigger the side effect TWICE. It
1756 is important to note that, with autocall on, these side effects
1763 is important to note that, with autocall on, these side effects
1757 can still happen.
1764 can still happen.
1758 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1765 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1759 trio. IPython offers these three kinds of special calls which are
1766 trio. IPython offers these three kinds of special calls which are
1760 not python code, and it's a good thing to have their call method
1767 not python code, and it's a good thing to have their call method
1761 be accessible as pure python functions (not just special syntax at
1768 be accessible as pure python functions (not just special syntax at
1762 the command line). It gives us a better internal implementation
1769 the command line). It gives us a better internal implementation
1763 structure, as well as exposing these for user scripting more
1770 structure, as well as exposing these for user scripting more
1764 cleanly.
1771 cleanly.
1765
1772
1766 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1773 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1767 file. Now that they'll be more likely to be used with the
1774 file. Now that they'll be more likely to be used with the
1768 persistance system (%store), I want to make sure their module path
1775 persistance system (%store), I want to make sure their module path
1769 doesn't change in the future, so that we don't break things for
1776 doesn't change in the future, so that we don't break things for
1770 users' persisted data.
1777 users' persisted data.
1771
1778
1772 * IPython/iplib.py (autoindent_update): move indentation
1779 * IPython/iplib.py (autoindent_update): move indentation
1773 management into the _text_ processing loop, not the keyboard
1780 management into the _text_ processing loop, not the keyboard
1774 interactive one. This is necessary to correctly process non-typed
1781 interactive one. This is necessary to correctly process non-typed
1775 multiline input (such as macros).
1782 multiline input (such as macros).
1776
1783
1777 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1784 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1778 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1785 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1779 which was producing problems in the resulting manual.
1786 which was producing problems in the resulting manual.
1780 (magic_whos): improve reporting of instances (show their class,
1787 (magic_whos): improve reporting of instances (show their class,
1781 instead of simply printing 'instance' which isn't terribly
1788 instead of simply printing 'instance' which isn't terribly
1782 informative).
1789 informative).
1783
1790
1784 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1791 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1785 (minor mods) to support network shares under win32.
1792 (minor mods) to support network shares under win32.
1786
1793
1787 * IPython/winconsole.py (get_console_size): add new winconsole
1794 * IPython/winconsole.py (get_console_size): add new winconsole
1788 module and fixes to page_dumb() to improve its behavior under
1795 module and fixes to page_dumb() to improve its behavior under
1789 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1796 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1790
1797
1791 * IPython/Magic.py (Macro): simplified Macro class to just
1798 * IPython/Magic.py (Macro): simplified Macro class to just
1792 subclass list. We've had only 2.2 compatibility for a very long
1799 subclass list. We've had only 2.2 compatibility for a very long
1793 time, yet I was still avoiding subclassing the builtin types. No
1800 time, yet I was still avoiding subclassing the builtin types. No
1794 more (I'm also starting to use properties, though I won't shift to
1801 more (I'm also starting to use properties, though I won't shift to
1795 2.3-specific features quite yet).
1802 2.3-specific features quite yet).
1796 (magic_store): added Ville's patch for lightweight variable
1803 (magic_store): added Ville's patch for lightweight variable
1797 persistence, after a request on the user list by Matt Wilkie
1804 persistence, after a request on the user list by Matt Wilkie
1798 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1805 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1799 details.
1806 details.
1800
1807
1801 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1808 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1802 changed the default logfile name from 'ipython.log' to
1809 changed the default logfile name from 'ipython.log' to
1803 'ipython_log.py'. These logs are real python files, and now that
1810 'ipython_log.py'. These logs are real python files, and now that
1804 we have much better multiline support, people are more likely to
1811 we have much better multiline support, people are more likely to
1805 want to use them as such. Might as well name them correctly.
1812 want to use them as such. Might as well name them correctly.
1806
1813
1807 * IPython/Magic.py: substantial cleanup. While we can't stop
1814 * IPython/Magic.py: substantial cleanup. While we can't stop
1808 using magics as mixins, due to the existing customizations 'out
1815 using magics as mixins, due to the existing customizations 'out
1809 there' which rely on the mixin naming conventions, at least I
1816 there' which rely on the mixin naming conventions, at least I
1810 cleaned out all cross-class name usage. So once we are OK with
1817 cleaned out all cross-class name usage. So once we are OK with
1811 breaking compatibility, the two systems can be separated.
1818 breaking compatibility, the two systems can be separated.
1812
1819
1813 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1820 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1814 anymore, and the class is a fair bit less hideous as well. New
1821 anymore, and the class is a fair bit less hideous as well. New
1815 features were also introduced: timestamping of input, and logging
1822 features were also introduced: timestamping of input, and logging
1816 of output results. These are user-visible with the -t and -o
1823 of output results. These are user-visible with the -t and -o
1817 options to %logstart. Closes
1824 options to %logstart. Closes
1818 http://www.scipy.net/roundup/ipython/issue11 and a request by
1825 http://www.scipy.net/roundup/ipython/issue11 and a request by
1819 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1826 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1820
1827
1821 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1828 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1822
1829
1823 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1830 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1824 better handle backslashes in paths. See the thread 'More Windows
1831 better handle backslashes in paths. See the thread 'More Windows
1825 questions part 2 - \/ characters revisited' on the iypthon user
1832 questions part 2 - \/ characters revisited' on the iypthon user
1826 list:
1833 list:
1827 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1834 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1828
1835
1829 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1836 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1830
1837
1831 (InteractiveShell.__init__): change threaded shells to not use the
1838 (InteractiveShell.__init__): change threaded shells to not use the
1832 ipython crash handler. This was causing more problems than not,
1839 ipython crash handler. This was causing more problems than not,
1833 as exceptions in the main thread (GUI code, typically) would
1840 as exceptions in the main thread (GUI code, typically) would
1834 always show up as a 'crash', when they really weren't.
1841 always show up as a 'crash', when they really weren't.
1835
1842
1836 The colors and exception mode commands (%colors/%xmode) have been
1843 The colors and exception mode commands (%colors/%xmode) have been
1837 synchronized to also take this into account, so users can get
1844 synchronized to also take this into account, so users can get
1838 verbose exceptions for their threaded code as well. I also added
1845 verbose exceptions for their threaded code as well. I also added
1839 support for activating pdb inside this exception handler as well,
1846 support for activating pdb inside this exception handler as well,
1840 so now GUI authors can use IPython's enhanced pdb at runtime.
1847 so now GUI authors can use IPython's enhanced pdb at runtime.
1841
1848
1842 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1849 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1843 true by default, and add it to the shipped ipythonrc file. Since
1850 true by default, and add it to the shipped ipythonrc file. Since
1844 this asks the user before proceeding, I think it's OK to make it
1851 this asks the user before proceeding, I think it's OK to make it
1845 true by default.
1852 true by default.
1846
1853
1847 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1854 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1848 of the previous special-casing of input in the eval loop. I think
1855 of the previous special-casing of input in the eval loop. I think
1849 this is cleaner, as they really are commands and shouldn't have
1856 this is cleaner, as they really are commands and shouldn't have
1850 a special role in the middle of the core code.
1857 a special role in the middle of the core code.
1851
1858
1852 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1859 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1853
1860
1854 * IPython/iplib.py (edit_syntax_error): added support for
1861 * IPython/iplib.py (edit_syntax_error): added support for
1855 automatically reopening the editor if the file had a syntax error
1862 automatically reopening the editor if the file had a syntax error
1856 in it. Thanks to scottt who provided the patch at:
1863 in it. Thanks to scottt who provided the patch at:
1857 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1864 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1858 version committed).
1865 version committed).
1859
1866
1860 * IPython/iplib.py (handle_normal): add suport for multi-line
1867 * IPython/iplib.py (handle_normal): add suport for multi-line
1861 input with emtpy lines. This fixes
1868 input with emtpy lines. This fixes
1862 http://www.scipy.net/roundup/ipython/issue43 and a similar
1869 http://www.scipy.net/roundup/ipython/issue43 and a similar
1863 discussion on the user list.
1870 discussion on the user list.
1864
1871
1865 WARNING: a behavior change is necessarily introduced to support
1872 WARNING: a behavior change is necessarily introduced to support
1866 blank lines: now a single blank line with whitespace does NOT
1873 blank lines: now a single blank line with whitespace does NOT
1867 break the input loop, which means that when autoindent is on, by
1874 break the input loop, which means that when autoindent is on, by
1868 default hitting return on the next (indented) line does NOT exit.
1875 default hitting return on the next (indented) line does NOT exit.
1869
1876
1870 Instead, to exit a multiline input you can either have:
1877 Instead, to exit a multiline input you can either have:
1871
1878
1872 - TWO whitespace lines (just hit return again), or
1879 - TWO whitespace lines (just hit return again), or
1873 - a single whitespace line of a different length than provided
1880 - a single whitespace line of a different length than provided
1874 by the autoindent (add or remove a space).
1881 by the autoindent (add or remove a space).
1875
1882
1876 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1883 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1877 module to better organize all readline-related functionality.
1884 module to better organize all readline-related functionality.
1878 I've deleted FlexCompleter and put all completion clases here.
1885 I've deleted FlexCompleter and put all completion clases here.
1879
1886
1880 * IPython/iplib.py (raw_input): improve indentation management.
1887 * IPython/iplib.py (raw_input): improve indentation management.
1881 It is now possible to paste indented code with autoindent on, and
1888 It is now possible to paste indented code with autoindent on, and
1882 the code is interpreted correctly (though it still looks bad on
1889 the code is interpreted correctly (though it still looks bad on
1883 screen, due to the line-oriented nature of ipython).
1890 screen, due to the line-oriented nature of ipython).
1884 (MagicCompleter.complete): change behavior so that a TAB key on an
1891 (MagicCompleter.complete): change behavior so that a TAB key on an
1885 otherwise empty line actually inserts a tab, instead of completing
1892 otherwise empty line actually inserts a tab, instead of completing
1886 on the entire global namespace. This makes it easier to use the
1893 on the entire global namespace. This makes it easier to use the
1887 TAB key for indentation. After a request by Hans Meine
1894 TAB key for indentation. After a request by Hans Meine
1888 <hans_meine-AT-gmx.net>
1895 <hans_meine-AT-gmx.net>
1889 (_prefilter): add support so that typing plain 'exit' or 'quit'
1896 (_prefilter): add support so that typing plain 'exit' or 'quit'
1890 does a sensible thing. Originally I tried to deviate as little as
1897 does a sensible thing. Originally I tried to deviate as little as
1891 possible from the default python behavior, but even that one may
1898 possible from the default python behavior, but even that one may
1892 change in this direction (thread on python-dev to that effect).
1899 change in this direction (thread on python-dev to that effect).
1893 Regardless, ipython should do the right thing even if CPython's
1900 Regardless, ipython should do the right thing even if CPython's
1894 '>>>' prompt doesn't.
1901 '>>>' prompt doesn't.
1895 (InteractiveShell): removed subclassing code.InteractiveConsole
1902 (InteractiveShell): removed subclassing code.InteractiveConsole
1896 class. By now we'd overridden just about all of its methods: I've
1903 class. By now we'd overridden just about all of its methods: I've
1897 copied the remaining two over, and now ipython is a standalone
1904 copied the remaining two over, and now ipython is a standalone
1898 class. This will provide a clearer picture for the chainsaw
1905 class. This will provide a clearer picture for the chainsaw
1899 branch refactoring.
1906 branch refactoring.
1900
1907
1901 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1908 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1902
1909
1903 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1910 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1904 failures for objects which break when dir() is called on them.
1911 failures for objects which break when dir() is called on them.
1905
1912
1906 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1913 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1907 distinct local and global namespaces in the completer API. This
1914 distinct local and global namespaces in the completer API. This
1908 change allows us to properly handle completion with distinct
1915 change allows us to properly handle completion with distinct
1909 scopes, including in embedded instances (this had never really
1916 scopes, including in embedded instances (this had never really
1910 worked correctly).
1917 worked correctly).
1911
1918
1912 Note: this introduces a change in the constructor for
1919 Note: this introduces a change in the constructor for
1913 MagicCompleter, as a new global_namespace parameter is now the
1920 MagicCompleter, as a new global_namespace parameter is now the
1914 second argument (the others were bumped one position).
1921 second argument (the others were bumped one position).
1915
1922
1916 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1923 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1917
1924
1918 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1925 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1919 embedded instances (which can be done now thanks to Vivian's
1926 embedded instances (which can be done now thanks to Vivian's
1920 frame-handling fixes for pdb).
1927 frame-handling fixes for pdb).
1921 (InteractiveShell.__init__): Fix namespace handling problem in
1928 (InteractiveShell.__init__): Fix namespace handling problem in
1922 embedded instances. We were overwriting __main__ unconditionally,
1929 embedded instances. We were overwriting __main__ unconditionally,
1923 and this should only be done for 'full' (non-embedded) IPython;
1930 and this should only be done for 'full' (non-embedded) IPython;
1924 embedded instances must respect the caller's __main__. Thanks to
1931 embedded instances must respect the caller's __main__. Thanks to
1925 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1932 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1926
1933
1927 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1934 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1928
1935
1929 * setup.py: added download_url to setup(). This registers the
1936 * setup.py: added download_url to setup(). This registers the
1930 download address at PyPI, which is not only useful to humans
1937 download address at PyPI, which is not only useful to humans
1931 browsing the site, but is also picked up by setuptools (the Eggs
1938 browsing the site, but is also picked up by setuptools (the Eggs
1932 machinery). Thanks to Ville and R. Kern for the info/discussion
1939 machinery). Thanks to Ville and R. Kern for the info/discussion
1933 on this.
1940 on this.
1934
1941
1935 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1942 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1936
1943
1937 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1944 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1938 This brings a lot of nice functionality to the pdb mode, which now
1945 This brings a lot of nice functionality to the pdb mode, which now
1939 has tab-completion, syntax highlighting, and better stack handling
1946 has tab-completion, syntax highlighting, and better stack handling
1940 than before. Many thanks to Vivian De Smedt
1947 than before. Many thanks to Vivian De Smedt
1941 <vivian-AT-vdesmedt.com> for the original patches.
1948 <vivian-AT-vdesmedt.com> for the original patches.
1942
1949
1943 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1950 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1944
1951
1945 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1952 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1946 sequence to consistently accept the banner argument. The
1953 sequence to consistently accept the banner argument. The
1947 inconsistency was tripping SAGE, thanks to Gary Zablackis
1954 inconsistency was tripping SAGE, thanks to Gary Zablackis
1948 <gzabl-AT-yahoo.com> for the report.
1955 <gzabl-AT-yahoo.com> for the report.
1949
1956
1950 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1957 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1951
1958
1952 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1959 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1953 Fix bug where a naked 'alias' call in the ipythonrc file would
1960 Fix bug where a naked 'alias' call in the ipythonrc file would
1954 cause a crash. Bug reported by Jorgen Stenarson.
1961 cause a crash. Bug reported by Jorgen Stenarson.
1955
1962
1956 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1963 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1957
1964
1958 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1965 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1959 startup time.
1966 startup time.
1960
1967
1961 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1968 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1962 instances had introduced a bug with globals in normal code. Now
1969 instances had introduced a bug with globals in normal code. Now
1963 it's working in all cases.
1970 it's working in all cases.
1964
1971
1965 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1972 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1966 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1973 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1967 has been introduced to set the default case sensitivity of the
1974 has been introduced to set the default case sensitivity of the
1968 searches. Users can still select either mode at runtime on a
1975 searches. Users can still select either mode at runtime on a
1969 per-search basis.
1976 per-search basis.
1970
1977
1971 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1978 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1972
1979
1973 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1980 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1974 attributes in wildcard searches for subclasses. Modified version
1981 attributes in wildcard searches for subclasses. Modified version
1975 of a patch by Jorgen.
1982 of a patch by Jorgen.
1976
1983
1977 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1984 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1978
1985
1979 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1986 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1980 embedded instances. I added a user_global_ns attribute to the
1987 embedded instances. I added a user_global_ns attribute to the
1981 InteractiveShell class to handle this.
1988 InteractiveShell class to handle this.
1982
1989
1983 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1990 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1984
1991
1985 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1992 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1986 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1993 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1987 (reported under win32, but may happen also in other platforms).
1994 (reported under win32, but may happen also in other platforms).
1988 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1995 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1989
1996
1990 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1997 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1991
1998
1992 * IPython/Magic.py (magic_psearch): new support for wildcard
1999 * IPython/Magic.py (magic_psearch): new support for wildcard
1993 patterns. Now, typing ?a*b will list all names which begin with a
2000 patterns. Now, typing ?a*b will list all names which begin with a
1994 and end in b, for example. The %psearch magic has full
2001 and end in b, for example. The %psearch magic has full
1995 docstrings. Many thanks to Jörgen Stenarson
2002 docstrings. Many thanks to Jörgen Stenarson
1996 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2003 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1997 implementing this functionality.
2004 implementing this functionality.
1998
2005
1999 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2006 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2000
2007
2001 * Manual: fixed long-standing annoyance of double-dashes (as in
2008 * Manual: fixed long-standing annoyance of double-dashes (as in
2002 --prefix=~, for example) being stripped in the HTML version. This
2009 --prefix=~, for example) being stripped in the HTML version. This
2003 is a latex2html bug, but a workaround was provided. Many thanks
2010 is a latex2html bug, but a workaround was provided. Many thanks
2004 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2011 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2005 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2012 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2006 rolling. This seemingly small issue had tripped a number of users
2013 rolling. This seemingly small issue had tripped a number of users
2007 when first installing, so I'm glad to see it gone.
2014 when first installing, so I'm glad to see it gone.
2008
2015
2009 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2016 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2010
2017
2011 * IPython/Extensions/numeric_formats.py: fix missing import,
2018 * IPython/Extensions/numeric_formats.py: fix missing import,
2012 reported by Stephen Walton.
2019 reported by Stephen Walton.
2013
2020
2014 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2021 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2015
2022
2016 * IPython/demo.py: finish demo module, fully documented now.
2023 * IPython/demo.py: finish demo module, fully documented now.
2017
2024
2018 * IPython/genutils.py (file_read): simple little utility to read a
2025 * IPython/genutils.py (file_read): simple little utility to read a
2019 file and ensure it's closed afterwards.
2026 file and ensure it's closed afterwards.
2020
2027
2021 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2028 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2022
2029
2023 * IPython/demo.py (Demo.__init__): added support for individually
2030 * IPython/demo.py (Demo.__init__): added support for individually
2024 tagging blocks for automatic execution.
2031 tagging blocks for automatic execution.
2025
2032
2026 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2033 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2027 syntax-highlighted python sources, requested by John.
2034 syntax-highlighted python sources, requested by John.
2028
2035
2029 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2036 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2030
2037
2031 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2038 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2032 finishing.
2039 finishing.
2033
2040
2034 * IPython/genutils.py (shlex_split): moved from Magic to here,
2041 * IPython/genutils.py (shlex_split): moved from Magic to here,
2035 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2042 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2036
2043
2037 * IPython/demo.py (Demo.__init__): added support for silent
2044 * IPython/demo.py (Demo.__init__): added support for silent
2038 blocks, improved marks as regexps, docstrings written.
2045 blocks, improved marks as regexps, docstrings written.
2039 (Demo.__init__): better docstring, added support for sys.argv.
2046 (Demo.__init__): better docstring, added support for sys.argv.
2040
2047
2041 * IPython/genutils.py (marquee): little utility used by the demo
2048 * IPython/genutils.py (marquee): little utility used by the demo
2042 code, handy in general.
2049 code, handy in general.
2043
2050
2044 * IPython/demo.py (Demo.__init__): new class for interactive
2051 * IPython/demo.py (Demo.__init__): new class for interactive
2045 demos. Not documented yet, I just wrote it in a hurry for
2052 demos. Not documented yet, I just wrote it in a hurry for
2046 scipy'05. Will docstring later.
2053 scipy'05. Will docstring later.
2047
2054
2048 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2055 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2049
2056
2050 * IPython/Shell.py (sigint_handler): Drastic simplification which
2057 * IPython/Shell.py (sigint_handler): Drastic simplification which
2051 also seems to make Ctrl-C work correctly across threads! This is
2058 also seems to make Ctrl-C work correctly across threads! This is
2052 so simple, that I can't beleive I'd missed it before. Needs more
2059 so simple, that I can't beleive I'd missed it before. Needs more
2053 testing, though.
2060 testing, though.
2054 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2061 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2055 like this before...
2062 like this before...
2056
2063
2057 * IPython/genutils.py (get_home_dir): add protection against
2064 * IPython/genutils.py (get_home_dir): add protection against
2058 non-dirs in win32 registry.
2065 non-dirs in win32 registry.
2059
2066
2060 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2067 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2061 bug where dict was mutated while iterating (pysh crash).
2068 bug where dict was mutated while iterating (pysh crash).
2062
2069
2063 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2070 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2064
2071
2065 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2072 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2066 spurious newlines added by this routine. After a report by
2073 spurious newlines added by this routine. After a report by
2067 F. Mantegazza.
2074 F. Mantegazza.
2068
2075
2069 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2076 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2070
2077
2071 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2078 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2072 calls. These were a leftover from the GTK 1.x days, and can cause
2079 calls. These were a leftover from the GTK 1.x days, and can cause
2073 problems in certain cases (after a report by John Hunter).
2080 problems in certain cases (after a report by John Hunter).
2074
2081
2075 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2082 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2076 os.getcwd() fails at init time. Thanks to patch from David Remahl
2083 os.getcwd() fails at init time. Thanks to patch from David Remahl
2077 <chmod007-AT-mac.com>.
2084 <chmod007-AT-mac.com>.
2078 (InteractiveShell.__init__): prevent certain special magics from
2085 (InteractiveShell.__init__): prevent certain special magics from
2079 being shadowed by aliases. Closes
2086 being shadowed by aliases. Closes
2080 http://www.scipy.net/roundup/ipython/issue41.
2087 http://www.scipy.net/roundup/ipython/issue41.
2081
2088
2082 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2089 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2083
2090
2084 * IPython/iplib.py (InteractiveShell.complete): Added new
2091 * IPython/iplib.py (InteractiveShell.complete): Added new
2085 top-level completion method to expose the completion mechanism
2092 top-level completion method to expose the completion mechanism
2086 beyond readline-based environments.
2093 beyond readline-based environments.
2087
2094
2088 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2095 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2089
2096
2090 * tools/ipsvnc (svnversion): fix svnversion capture.
2097 * tools/ipsvnc (svnversion): fix svnversion capture.
2091
2098
2092 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2099 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2093 attribute to self, which was missing. Before, it was set by a
2100 attribute to self, which was missing. Before, it was set by a
2094 routine which in certain cases wasn't being called, so the
2101 routine which in certain cases wasn't being called, so the
2095 instance could end up missing the attribute. This caused a crash.
2102 instance could end up missing the attribute. This caused a crash.
2096 Closes http://www.scipy.net/roundup/ipython/issue40.
2103 Closes http://www.scipy.net/roundup/ipython/issue40.
2097
2104
2098 2005-08-16 Fernando Perez <fperez@colorado.edu>
2105 2005-08-16 Fernando Perez <fperez@colorado.edu>
2099
2106
2100 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2107 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2101 contains non-string attribute. Closes
2108 contains non-string attribute. Closes
2102 http://www.scipy.net/roundup/ipython/issue38.
2109 http://www.scipy.net/roundup/ipython/issue38.
2103
2110
2104 2005-08-14 Fernando Perez <fperez@colorado.edu>
2111 2005-08-14 Fernando Perez <fperez@colorado.edu>
2105
2112
2106 * tools/ipsvnc: Minor improvements, to add changeset info.
2113 * tools/ipsvnc: Minor improvements, to add changeset info.
2107
2114
2108 2005-08-12 Fernando Perez <fperez@colorado.edu>
2115 2005-08-12 Fernando Perez <fperez@colorado.edu>
2109
2116
2110 * IPython/iplib.py (runsource): remove self.code_to_run_src
2117 * IPython/iplib.py (runsource): remove self.code_to_run_src
2111 attribute. I realized this is nothing more than
2118 attribute. I realized this is nothing more than
2112 '\n'.join(self.buffer), and having the same data in two different
2119 '\n'.join(self.buffer), and having the same data in two different
2113 places is just asking for synchronization bugs. This may impact
2120 places is just asking for synchronization bugs. This may impact
2114 people who have custom exception handlers, so I need to warn
2121 people who have custom exception handlers, so I need to warn
2115 ipython-dev about it (F. Mantegazza may use them).
2122 ipython-dev about it (F. Mantegazza may use them).
2116
2123
2117 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2124 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2118
2125
2119 * IPython/genutils.py: fix 2.2 compatibility (generators)
2126 * IPython/genutils.py: fix 2.2 compatibility (generators)
2120
2127
2121 2005-07-18 Fernando Perez <fperez@colorado.edu>
2128 2005-07-18 Fernando Perez <fperez@colorado.edu>
2122
2129
2123 * IPython/genutils.py (get_home_dir): fix to help users with
2130 * IPython/genutils.py (get_home_dir): fix to help users with
2124 invalid $HOME under win32.
2131 invalid $HOME under win32.
2125
2132
2126 2005-07-17 Fernando Perez <fperez@colorado.edu>
2133 2005-07-17 Fernando Perez <fperez@colorado.edu>
2127
2134
2128 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2135 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2129 some old hacks and clean up a bit other routines; code should be
2136 some old hacks and clean up a bit other routines; code should be
2130 simpler and a bit faster.
2137 simpler and a bit faster.
2131
2138
2132 * IPython/iplib.py (interact): removed some last-resort attempts
2139 * IPython/iplib.py (interact): removed some last-resort attempts
2133 to survive broken stdout/stderr. That code was only making it
2140 to survive broken stdout/stderr. That code was only making it
2134 harder to abstract out the i/o (necessary for gui integration),
2141 harder to abstract out the i/o (necessary for gui integration),
2135 and the crashes it could prevent were extremely rare in practice
2142 and the crashes it could prevent were extremely rare in practice
2136 (besides being fully user-induced in a pretty violent manner).
2143 (besides being fully user-induced in a pretty violent manner).
2137
2144
2138 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2145 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2139 Nothing major yet, but the code is simpler to read; this should
2146 Nothing major yet, but the code is simpler to read; this should
2140 make it easier to do more serious modifications in the future.
2147 make it easier to do more serious modifications in the future.
2141
2148
2142 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2149 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2143 which broke in .15 (thanks to a report by Ville).
2150 which broke in .15 (thanks to a report by Ville).
2144
2151
2145 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2152 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2146 be quite correct, I know next to nothing about unicode). This
2153 be quite correct, I know next to nothing about unicode). This
2147 will allow unicode strings to be used in prompts, amongst other
2154 will allow unicode strings to be used in prompts, amongst other
2148 cases. It also will prevent ipython from crashing when unicode
2155 cases. It also will prevent ipython from crashing when unicode
2149 shows up unexpectedly in many places. If ascii encoding fails, we
2156 shows up unexpectedly in many places. If ascii encoding fails, we
2150 assume utf_8. Currently the encoding is not a user-visible
2157 assume utf_8. Currently the encoding is not a user-visible
2151 setting, though it could be made so if there is demand for it.
2158 setting, though it could be made so if there is demand for it.
2152
2159
2153 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2160 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2154
2161
2155 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2162 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2156
2163
2157 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2164 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2158
2165
2159 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2166 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2160 code can work transparently for 2.2/2.3.
2167 code can work transparently for 2.2/2.3.
2161
2168
2162 2005-07-16 Fernando Perez <fperez@colorado.edu>
2169 2005-07-16 Fernando Perez <fperez@colorado.edu>
2163
2170
2164 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2171 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2165 out of the color scheme table used for coloring exception
2172 out of the color scheme table used for coloring exception
2166 tracebacks. This allows user code to add new schemes at runtime.
2173 tracebacks. This allows user code to add new schemes at runtime.
2167 This is a minimally modified version of the patch at
2174 This is a minimally modified version of the patch at
2168 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2175 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2169 for the contribution.
2176 for the contribution.
2170
2177
2171 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2178 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2172 slightly modified version of the patch in
2179 slightly modified version of the patch in
2173 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2180 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2174 to remove the previous try/except solution (which was costlier).
2181 to remove the previous try/except solution (which was costlier).
2175 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2182 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2176
2183
2177 2005-06-08 Fernando Perez <fperez@colorado.edu>
2184 2005-06-08 Fernando Perez <fperez@colorado.edu>
2178
2185
2179 * IPython/iplib.py (write/write_err): Add methods to abstract all
2186 * IPython/iplib.py (write/write_err): Add methods to abstract all
2180 I/O a bit more.
2187 I/O a bit more.
2181
2188
2182 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2189 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2183 warning, reported by Aric Hagberg, fix by JD Hunter.
2190 warning, reported by Aric Hagberg, fix by JD Hunter.
2184
2191
2185 2005-06-02 *** Released version 0.6.15
2192 2005-06-02 *** Released version 0.6.15
2186
2193
2187 2005-06-01 Fernando Perez <fperez@colorado.edu>
2194 2005-06-01 Fernando Perez <fperez@colorado.edu>
2188
2195
2189 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2196 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2190 tab-completion of filenames within open-quoted strings. Note that
2197 tab-completion of filenames within open-quoted strings. Note that
2191 this requires that in ~/.ipython/ipythonrc, users change the
2198 this requires that in ~/.ipython/ipythonrc, users change the
2192 readline delimiters configuration to read:
2199 readline delimiters configuration to read:
2193
2200
2194 readline_remove_delims -/~
2201 readline_remove_delims -/~
2195
2202
2196
2203
2197 2005-05-31 *** Released version 0.6.14
2204 2005-05-31 *** Released version 0.6.14
2198
2205
2199 2005-05-29 Fernando Perez <fperez@colorado.edu>
2206 2005-05-29 Fernando Perez <fperez@colorado.edu>
2200
2207
2201 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2208 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2202 with files not on the filesystem. Reported by Eliyahu Sandler
2209 with files not on the filesystem. Reported by Eliyahu Sandler
2203 <eli@gondolin.net>
2210 <eli@gondolin.net>
2204
2211
2205 2005-05-22 Fernando Perez <fperez@colorado.edu>
2212 2005-05-22 Fernando Perez <fperez@colorado.edu>
2206
2213
2207 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2214 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2208 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2215 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2209
2216
2210 2005-05-19 Fernando Perez <fperez@colorado.edu>
2217 2005-05-19 Fernando Perez <fperez@colorado.edu>
2211
2218
2212 * IPython/iplib.py (safe_execfile): close a file which could be
2219 * IPython/iplib.py (safe_execfile): close a file which could be
2213 left open (causing problems in win32, which locks open files).
2220 left open (causing problems in win32, which locks open files).
2214 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2221 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2215
2222
2216 2005-05-18 Fernando Perez <fperez@colorado.edu>
2223 2005-05-18 Fernando Perez <fperez@colorado.edu>
2217
2224
2218 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2225 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2219 keyword arguments correctly to safe_execfile().
2226 keyword arguments correctly to safe_execfile().
2220
2227
2221 2005-05-13 Fernando Perez <fperez@colorado.edu>
2228 2005-05-13 Fernando Perez <fperez@colorado.edu>
2222
2229
2223 * ipython.1: Added info about Qt to manpage, and threads warning
2230 * ipython.1: Added info about Qt to manpage, and threads warning
2224 to usage page (invoked with --help).
2231 to usage page (invoked with --help).
2225
2232
2226 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2233 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2227 new matcher (it goes at the end of the priority list) to do
2234 new matcher (it goes at the end of the priority list) to do
2228 tab-completion on named function arguments. Submitted by George
2235 tab-completion on named function arguments. Submitted by George
2229 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2236 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2230 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2237 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2231 for more details.
2238 for more details.
2232
2239
2233 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2240 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2234 SystemExit exceptions in the script being run. Thanks to a report
2241 SystemExit exceptions in the script being run. Thanks to a report
2235 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2242 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2236 producing very annoying behavior when running unit tests.
2243 producing very annoying behavior when running unit tests.
2237
2244
2238 2005-05-12 Fernando Perez <fperez@colorado.edu>
2245 2005-05-12 Fernando Perez <fperez@colorado.edu>
2239
2246
2240 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2247 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2241 which I'd broken (again) due to a changed regexp. In the process,
2248 which I'd broken (again) due to a changed regexp. In the process,
2242 added ';' as an escape to auto-quote the whole line without
2249 added ';' as an escape to auto-quote the whole line without
2243 splitting its arguments. Thanks to a report by Jerry McRae
2250 splitting its arguments. Thanks to a report by Jerry McRae
2244 <qrs0xyc02-AT-sneakemail.com>.
2251 <qrs0xyc02-AT-sneakemail.com>.
2245
2252
2246 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2253 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2247 possible crashes caused by a TokenError. Reported by Ed Schofield
2254 possible crashes caused by a TokenError. Reported by Ed Schofield
2248 <schofield-AT-ftw.at>.
2255 <schofield-AT-ftw.at>.
2249
2256
2250 2005-05-06 Fernando Perez <fperez@colorado.edu>
2257 2005-05-06 Fernando Perez <fperez@colorado.edu>
2251
2258
2252 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2259 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2253
2260
2254 2005-04-29 Fernando Perez <fperez@colorado.edu>
2261 2005-04-29 Fernando Perez <fperez@colorado.edu>
2255
2262
2256 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2263 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2257 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2264 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2258 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2265 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2259 which provides support for Qt interactive usage (similar to the
2266 which provides support for Qt interactive usage (similar to the
2260 existing one for WX and GTK). This had been often requested.
2267 existing one for WX and GTK). This had been often requested.
2261
2268
2262 2005-04-14 *** Released version 0.6.13
2269 2005-04-14 *** Released version 0.6.13
2263
2270
2264 2005-04-08 Fernando Perez <fperez@colorado.edu>
2271 2005-04-08 Fernando Perez <fperez@colorado.edu>
2265
2272
2266 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2273 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2267 from _ofind, which gets called on almost every input line. Now,
2274 from _ofind, which gets called on almost every input line. Now,
2268 we only try to get docstrings if they are actually going to be
2275 we only try to get docstrings if they are actually going to be
2269 used (the overhead of fetching unnecessary docstrings can be
2276 used (the overhead of fetching unnecessary docstrings can be
2270 noticeable for certain objects, such as Pyro proxies).
2277 noticeable for certain objects, such as Pyro proxies).
2271
2278
2272 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2279 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2273 for completers. For some reason I had been passing them the state
2280 for completers. For some reason I had been passing them the state
2274 variable, which completers never actually need, and was in
2281 variable, which completers never actually need, and was in
2275 conflict with the rlcompleter API. Custom completers ONLY need to
2282 conflict with the rlcompleter API. Custom completers ONLY need to
2276 take the text parameter.
2283 take the text parameter.
2277
2284
2278 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2285 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2279 work correctly in pysh. I've also moved all the logic which used
2286 work correctly in pysh. I've also moved all the logic which used
2280 to be in pysh.py here, which will prevent problems with future
2287 to be in pysh.py here, which will prevent problems with future
2281 upgrades. However, this time I must warn users to update their
2288 upgrades. However, this time I must warn users to update their
2282 pysh profile to include the line
2289 pysh profile to include the line
2283
2290
2284 import_all IPython.Extensions.InterpreterExec
2291 import_all IPython.Extensions.InterpreterExec
2285
2292
2286 because otherwise things won't work for them. They MUST also
2293 because otherwise things won't work for them. They MUST also
2287 delete pysh.py and the line
2294 delete pysh.py and the line
2288
2295
2289 execfile pysh.py
2296 execfile pysh.py
2290
2297
2291 from their ipythonrc-pysh.
2298 from their ipythonrc-pysh.
2292
2299
2293 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2300 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2294 robust in the face of objects whose dir() returns non-strings
2301 robust in the face of objects whose dir() returns non-strings
2295 (which it shouldn't, but some broken libs like ITK do). Thanks to
2302 (which it shouldn't, but some broken libs like ITK do). Thanks to
2296 a patch by John Hunter (implemented differently, though). Also
2303 a patch by John Hunter (implemented differently, though). Also
2297 minor improvements by using .extend instead of + on lists.
2304 minor improvements by using .extend instead of + on lists.
2298
2305
2299 * pysh.py:
2306 * pysh.py:
2300
2307
2301 2005-04-06 Fernando Perez <fperez@colorado.edu>
2308 2005-04-06 Fernando Perez <fperez@colorado.edu>
2302
2309
2303 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2310 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2304 by default, so that all users benefit from it. Those who don't
2311 by default, so that all users benefit from it. Those who don't
2305 want it can still turn it off.
2312 want it can still turn it off.
2306
2313
2307 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2314 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2308 config file, I'd forgotten about this, so users were getting it
2315 config file, I'd forgotten about this, so users were getting it
2309 off by default.
2316 off by default.
2310
2317
2311 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2318 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2312 consistency. Now magics can be called in multiline statements,
2319 consistency. Now magics can be called in multiline statements,
2313 and python variables can be expanded in magic calls via $var.
2320 and python variables can be expanded in magic calls via $var.
2314 This makes the magic system behave just like aliases or !system
2321 This makes the magic system behave just like aliases or !system
2315 calls.
2322 calls.
2316
2323
2317 2005-03-28 Fernando Perez <fperez@colorado.edu>
2324 2005-03-28 Fernando Perez <fperez@colorado.edu>
2318
2325
2319 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2326 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2320 expensive string additions for building command. Add support for
2327 expensive string additions for building command. Add support for
2321 trailing ';' when autocall is used.
2328 trailing ';' when autocall is used.
2322
2329
2323 2005-03-26 Fernando Perez <fperez@colorado.edu>
2330 2005-03-26 Fernando Perez <fperez@colorado.edu>
2324
2331
2325 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2332 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2326 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2333 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2327 ipython.el robust against prompts with any number of spaces
2334 ipython.el robust against prompts with any number of spaces
2328 (including 0) after the ':' character.
2335 (including 0) after the ':' character.
2329
2336
2330 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2337 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2331 continuation prompt, which misled users to think the line was
2338 continuation prompt, which misled users to think the line was
2332 already indented. Closes debian Bug#300847, reported to me by
2339 already indented. Closes debian Bug#300847, reported to me by
2333 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2340 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2334
2341
2335 2005-03-23 Fernando Perez <fperez@colorado.edu>
2342 2005-03-23 Fernando Perez <fperez@colorado.edu>
2336
2343
2337 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2344 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2338 properly aligned if they have embedded newlines.
2345 properly aligned if they have embedded newlines.
2339
2346
2340 * IPython/iplib.py (runlines): Add a public method to expose
2347 * IPython/iplib.py (runlines): Add a public method to expose
2341 IPython's code execution machinery, so that users can run strings
2348 IPython's code execution machinery, so that users can run strings
2342 as if they had been typed at the prompt interactively.
2349 as if they had been typed at the prompt interactively.
2343 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2350 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2344 methods which can call the system shell, but with python variable
2351 methods which can call the system shell, but with python variable
2345 expansion. The three such methods are: __IPYTHON__.system,
2352 expansion. The three such methods are: __IPYTHON__.system,
2346 .getoutput and .getoutputerror. These need to be documented in a
2353 .getoutput and .getoutputerror. These need to be documented in a
2347 'public API' section (to be written) of the manual.
2354 'public API' section (to be written) of the manual.
2348
2355
2349 2005-03-20 Fernando Perez <fperez@colorado.edu>
2356 2005-03-20 Fernando Perez <fperez@colorado.edu>
2350
2357
2351 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2358 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2352 for custom exception handling. This is quite powerful, and it
2359 for custom exception handling. This is quite powerful, and it
2353 allows for user-installable exception handlers which can trap
2360 allows for user-installable exception handlers which can trap
2354 custom exceptions at runtime and treat them separately from
2361 custom exceptions at runtime and treat them separately from
2355 IPython's default mechanisms. At the request of Frédéric
2362 IPython's default mechanisms. At the request of Frédéric
2356 Mantegazza <mantegazza-AT-ill.fr>.
2363 Mantegazza <mantegazza-AT-ill.fr>.
2357 (InteractiveShell.set_custom_completer): public API function to
2364 (InteractiveShell.set_custom_completer): public API function to
2358 add new completers at runtime.
2365 add new completers at runtime.
2359
2366
2360 2005-03-19 Fernando Perez <fperez@colorado.edu>
2367 2005-03-19 Fernando Perez <fperez@colorado.edu>
2361
2368
2362 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2369 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2363 allow objects which provide their docstrings via non-standard
2370 allow objects which provide their docstrings via non-standard
2364 mechanisms (like Pyro proxies) to still be inspected by ipython's
2371 mechanisms (like Pyro proxies) to still be inspected by ipython's
2365 ? system.
2372 ? system.
2366
2373
2367 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
2374 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
2368 automatic capture system. I tried quite hard to make it work
2375 automatic capture system. I tried quite hard to make it work
2369 reliably, and simply failed. I tried many combinations with the
2376 reliably, and simply failed. I tried many combinations with the
2370 subprocess module, but eventually nothing worked in all needed
2377 subprocess module, but eventually nothing worked in all needed
2371 cases (not blocking stdin for the child, duplicating stdout
2378 cases (not blocking stdin for the child, duplicating stdout
2372 without blocking, etc). The new %sc/%sx still do capture to these
2379 without blocking, etc). The new %sc/%sx still do capture to these
2373 magical list/string objects which make shell use much more
2380 magical list/string objects which make shell use much more
2374 conveninent, so not all is lost.
2381 conveninent, so not all is lost.
2375
2382
2376 XXX - FIX MANUAL for the change above!
2383 XXX - FIX MANUAL for the change above!
2377
2384
2378 (runsource): I copied code.py's runsource() into ipython to modify
2385 (runsource): I copied code.py's runsource() into ipython to modify
2379 it a bit. Now the code object and source to be executed are
2386 it a bit. Now the code object and source to be executed are
2380 stored in ipython. This makes this info accessible to third-party
2387 stored in ipython. This makes this info accessible to third-party
2381 tools, like custom exception handlers. After a request by Frédéric
2388 tools, like custom exception handlers. After a request by Frédéric
2382 Mantegazza <mantegazza-AT-ill.fr>.
2389 Mantegazza <mantegazza-AT-ill.fr>.
2383
2390
2384 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
2391 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
2385 history-search via readline (like C-p/C-n). I'd wanted this for a
2392 history-search via readline (like C-p/C-n). I'd wanted this for a
2386 long time, but only recently found out how to do it. For users
2393 long time, but only recently found out how to do it. For users
2387 who already have their ipythonrc files made and want this, just
2394 who already have their ipythonrc files made and want this, just
2388 add:
2395 add:
2389
2396
2390 readline_parse_and_bind "\e[A": history-search-backward
2397 readline_parse_and_bind "\e[A": history-search-backward
2391 readline_parse_and_bind "\e[B": history-search-forward
2398 readline_parse_and_bind "\e[B": history-search-forward
2392
2399
2393 2005-03-18 Fernando Perez <fperez@colorado.edu>
2400 2005-03-18 Fernando Perez <fperez@colorado.edu>
2394
2401
2395 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
2402 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
2396 LSString and SList classes which allow transparent conversions
2403 LSString and SList classes which allow transparent conversions
2397 between list mode and whitespace-separated string.
2404 between list mode and whitespace-separated string.
2398 (magic_r): Fix recursion problem in %r.
2405 (magic_r): Fix recursion problem in %r.
2399
2406
2400 * IPython/genutils.py (LSString): New class to be used for
2407 * IPython/genutils.py (LSString): New class to be used for
2401 automatic storage of the results of all alias/system calls in _o
2408 automatic storage of the results of all alias/system calls in _o
2402 and _e (stdout/err). These provide a .l/.list attribute which
2409 and _e (stdout/err). These provide a .l/.list attribute which
2403 does automatic splitting on newlines. This means that for most
2410 does automatic splitting on newlines. This means that for most
2404 uses, you'll never need to do capturing of output with %sc/%sx
2411 uses, you'll never need to do capturing of output with %sc/%sx
2405 anymore, since ipython keeps this always done for you. Note that
2412 anymore, since ipython keeps this always done for you. Note that
2406 only the LAST results are stored, the _o/e variables are
2413 only the LAST results are stored, the _o/e variables are
2407 overwritten on each call. If you need to save their contents
2414 overwritten on each call. If you need to save their contents
2408 further, simply bind them to any other name.
2415 further, simply bind them to any other name.
2409
2416
2410 2005-03-17 Fernando Perez <fperez@colorado.edu>
2417 2005-03-17 Fernando Perez <fperez@colorado.edu>
2411
2418
2412 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
2419 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
2413 prompt namespace handling.
2420 prompt namespace handling.
2414
2421
2415 2005-03-16 Fernando Perez <fperez@colorado.edu>
2422 2005-03-16 Fernando Perez <fperez@colorado.edu>
2416
2423
2417 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
2424 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
2418 classic prompts to be '>>> ' (final space was missing, and it
2425 classic prompts to be '>>> ' (final space was missing, and it
2419 trips the emacs python mode).
2426 trips the emacs python mode).
2420 (BasePrompt.__str__): Added safe support for dynamic prompt
2427 (BasePrompt.__str__): Added safe support for dynamic prompt
2421 strings. Now you can set your prompt string to be '$x', and the
2428 strings. Now you can set your prompt string to be '$x', and the
2422 value of x will be printed from your interactive namespace. The
2429 value of x will be printed from your interactive namespace. The
2423 interpolation syntax includes the full Itpl support, so
2430 interpolation syntax includes the full Itpl support, so
2424 ${foo()+x+bar()} is a valid prompt string now, and the function
2431 ${foo()+x+bar()} is a valid prompt string now, and the function
2425 calls will be made at runtime.
2432 calls will be made at runtime.
2426
2433
2427 2005-03-15 Fernando Perez <fperez@colorado.edu>
2434 2005-03-15 Fernando Perez <fperez@colorado.edu>
2428
2435
2429 * IPython/Magic.py (magic_history): renamed %hist to %history, to
2436 * IPython/Magic.py (magic_history): renamed %hist to %history, to
2430 avoid name clashes in pylab. %hist still works, it just forwards
2437 avoid name clashes in pylab. %hist still works, it just forwards
2431 the call to %history.
2438 the call to %history.
2432
2439
2433 2005-03-02 *** Released version 0.6.12
2440 2005-03-02 *** Released version 0.6.12
2434
2441
2435 2005-03-02 Fernando Perez <fperez@colorado.edu>
2442 2005-03-02 Fernando Perez <fperez@colorado.edu>
2436
2443
2437 * IPython/iplib.py (handle_magic): log magic calls properly as
2444 * IPython/iplib.py (handle_magic): log magic calls properly as
2438 ipmagic() function calls.
2445 ipmagic() function calls.
2439
2446
2440 * IPython/Magic.py (magic_time): Improved %time to support
2447 * IPython/Magic.py (magic_time): Improved %time to support
2441 statements and provide wall-clock as well as CPU time.
2448 statements and provide wall-clock as well as CPU time.
2442
2449
2443 2005-02-27 Fernando Perez <fperez@colorado.edu>
2450 2005-02-27 Fernando Perez <fperez@colorado.edu>
2444
2451
2445 * IPython/hooks.py: New hooks module, to expose user-modifiable
2452 * IPython/hooks.py: New hooks module, to expose user-modifiable
2446 IPython functionality in a clean manner. For now only the editor
2453 IPython functionality in a clean manner. For now only the editor
2447 hook is actually written, and other thigns which I intend to turn
2454 hook is actually written, and other thigns which I intend to turn
2448 into proper hooks aren't yet there. The display and prefilter
2455 into proper hooks aren't yet there. The display and prefilter
2449 stuff, for example, should be hooks. But at least now the
2456 stuff, for example, should be hooks. But at least now the
2450 framework is in place, and the rest can be moved here with more
2457 framework is in place, and the rest can be moved here with more
2451 time later. IPython had had a .hooks variable for a long time for
2458 time later. IPython had had a .hooks variable for a long time for
2452 this purpose, but I'd never actually used it for anything.
2459 this purpose, but I'd never actually used it for anything.
2453
2460
2454 2005-02-26 Fernando Perez <fperez@colorado.edu>
2461 2005-02-26 Fernando Perez <fperez@colorado.edu>
2455
2462
2456 * IPython/ipmaker.py (make_IPython): make the default ipython
2463 * IPython/ipmaker.py (make_IPython): make the default ipython
2457 directory be called _ipython under win32, to follow more the
2464 directory be called _ipython under win32, to follow more the
2458 naming peculiarities of that platform (where buggy software like
2465 naming peculiarities of that platform (where buggy software like
2459 Visual Sourcesafe breaks with .named directories). Reported by
2466 Visual Sourcesafe breaks with .named directories). Reported by
2460 Ville Vainio.
2467 Ville Vainio.
2461
2468
2462 2005-02-23 Fernando Perez <fperez@colorado.edu>
2469 2005-02-23 Fernando Perez <fperez@colorado.edu>
2463
2470
2464 * IPython/iplib.py (InteractiveShell.__init__): removed a few
2471 * IPython/iplib.py (InteractiveShell.__init__): removed a few
2465 auto_aliases for win32 which were causing problems. Users can
2472 auto_aliases for win32 which were causing problems. Users can
2466 define the ones they personally like.
2473 define the ones they personally like.
2467
2474
2468 2005-02-21 Fernando Perez <fperez@colorado.edu>
2475 2005-02-21 Fernando Perez <fperez@colorado.edu>
2469
2476
2470 * IPython/Magic.py (magic_time): new magic to time execution of
2477 * IPython/Magic.py (magic_time): new magic to time execution of
2471 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
2478 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
2472
2479
2473 2005-02-19 Fernando Perez <fperez@colorado.edu>
2480 2005-02-19 Fernando Perez <fperez@colorado.edu>
2474
2481
2475 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
2482 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
2476 into keys (for prompts, for example).
2483 into keys (for prompts, for example).
2477
2484
2478 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
2485 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
2479 prompts in case users want them. This introduces a small behavior
2486 prompts in case users want them. This introduces a small behavior
2480 change: ipython does not automatically add a space to all prompts
2487 change: ipython does not automatically add a space to all prompts
2481 anymore. To get the old prompts with a space, users should add it
2488 anymore. To get the old prompts with a space, users should add it
2482 manually to their ipythonrc file, so for example prompt_in1 should
2489 manually to their ipythonrc file, so for example prompt_in1 should
2483 now read 'In [\#]: ' instead of 'In [\#]:'.
2490 now read 'In [\#]: ' instead of 'In [\#]:'.
2484 (BasePrompt.__init__): New option prompts_pad_left (only in rc
2491 (BasePrompt.__init__): New option prompts_pad_left (only in rc
2485 file) to control left-padding of secondary prompts.
2492 file) to control left-padding of secondary prompts.
2486
2493
2487 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
2494 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
2488 the profiler can't be imported. Fix for Debian, which removed
2495 the profiler can't be imported. Fix for Debian, which removed
2489 profile.py because of License issues. I applied a slightly
2496 profile.py because of License issues. I applied a slightly
2490 modified version of the original Debian patch at
2497 modified version of the original Debian patch at
2491 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
2498 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
2492
2499
2493 2005-02-17 Fernando Perez <fperez@colorado.edu>
2500 2005-02-17 Fernando Perez <fperez@colorado.edu>
2494
2501
2495 * IPython/genutils.py (native_line_ends): Fix bug which would
2502 * IPython/genutils.py (native_line_ends): Fix bug which would
2496 cause improper line-ends under win32 b/c I was not opening files
2503 cause improper line-ends under win32 b/c I was not opening files
2497 in binary mode. Bug report and fix thanks to Ville.
2504 in binary mode. Bug report and fix thanks to Ville.
2498
2505
2499 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
2506 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
2500 trying to catch spurious foo[1] autocalls. My fix actually broke
2507 trying to catch spurious foo[1] autocalls. My fix actually broke
2501 ',/' autoquote/call with explicit escape (bad regexp).
2508 ',/' autoquote/call with explicit escape (bad regexp).
2502
2509
2503 2005-02-15 *** Released version 0.6.11
2510 2005-02-15 *** Released version 0.6.11
2504
2511
2505 2005-02-14 Fernando Perez <fperez@colorado.edu>
2512 2005-02-14 Fernando Perez <fperez@colorado.edu>
2506
2513
2507 * IPython/background_jobs.py: New background job management
2514 * IPython/background_jobs.py: New background job management
2508 subsystem. This is implemented via a new set of classes, and
2515 subsystem. This is implemented via a new set of classes, and
2509 IPython now provides a builtin 'jobs' object for background job
2516 IPython now provides a builtin 'jobs' object for background job
2510 execution. A convenience %bg magic serves as a lightweight
2517 execution. A convenience %bg magic serves as a lightweight
2511 frontend for starting the more common type of calls. This was
2518 frontend for starting the more common type of calls. This was
2512 inspired by discussions with B. Granger and the BackgroundCommand
2519 inspired by discussions with B. Granger and the BackgroundCommand
2513 class described in the book Python Scripting for Computational
2520 class described in the book Python Scripting for Computational
2514 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
2521 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
2515 (although ultimately no code from this text was used, as IPython's
2522 (although ultimately no code from this text was used, as IPython's
2516 system is a separate implementation).
2523 system is a separate implementation).
2517
2524
2518 * IPython/iplib.py (MagicCompleter.python_matches): add new option
2525 * IPython/iplib.py (MagicCompleter.python_matches): add new option
2519 to control the completion of single/double underscore names
2526 to control the completion of single/double underscore names
2520 separately. As documented in the example ipytonrc file, the
2527 separately. As documented in the example ipytonrc file, the
2521 readline_omit__names variable can now be set to 2, to omit even
2528 readline_omit__names variable can now be set to 2, to omit even
2522 single underscore names. Thanks to a patch by Brian Wong
2529 single underscore names. Thanks to a patch by Brian Wong
2523 <BrianWong-AT-AirgoNetworks.Com>.
2530 <BrianWong-AT-AirgoNetworks.Com>.
2524 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
2531 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
2525 be autocalled as foo([1]) if foo were callable. A problem for
2532 be autocalled as foo([1]) if foo were callable. A problem for
2526 things which are both callable and implement __getitem__.
2533 things which are both callable and implement __getitem__.
2527 (init_readline): Fix autoindentation for win32. Thanks to a patch
2534 (init_readline): Fix autoindentation for win32. Thanks to a patch
2528 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2535 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2529
2536
2530 2005-02-12 Fernando Perez <fperez@colorado.edu>
2537 2005-02-12 Fernando Perez <fperez@colorado.edu>
2531
2538
2532 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
2539 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
2533 which I had written long ago to sort out user error messages which
2540 which I had written long ago to sort out user error messages which
2534 may occur during startup. This seemed like a good idea initially,
2541 may occur during startup. This seemed like a good idea initially,
2535 but it has proven a disaster in retrospect. I don't want to
2542 but it has proven a disaster in retrospect. I don't want to
2536 change much code for now, so my fix is to set the internal 'debug'
2543 change much code for now, so my fix is to set the internal 'debug'
2537 flag to true everywhere, whose only job was precisely to control
2544 flag to true everywhere, whose only job was precisely to control
2538 this subsystem. This closes issue 28 (as well as avoiding all
2545 this subsystem. This closes issue 28 (as well as avoiding all
2539 sorts of strange hangups which occur from time to time).
2546 sorts of strange hangups which occur from time to time).
2540
2547
2541 2005-02-07 Fernando Perez <fperez@colorado.edu>
2548 2005-02-07 Fernando Perez <fperez@colorado.edu>
2542
2549
2543 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2550 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2544 previous call produced a syntax error.
2551 previous call produced a syntax error.
2545
2552
2546 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2553 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2547 classes without constructor.
2554 classes without constructor.
2548
2555
2549 2005-02-06 Fernando Perez <fperez@colorado.edu>
2556 2005-02-06 Fernando Perez <fperez@colorado.edu>
2550
2557
2551 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2558 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2552 completions with the results of each matcher, so we return results
2559 completions with the results of each matcher, so we return results
2553 to the user from all namespaces. This breaks with ipython
2560 to the user from all namespaces. This breaks with ipython
2554 tradition, but I think it's a nicer behavior. Now you get all
2561 tradition, but I think it's a nicer behavior. Now you get all
2555 possible completions listed, from all possible namespaces (python,
2562 possible completions listed, from all possible namespaces (python,
2556 filesystem, magics...) After a request by John Hunter
2563 filesystem, magics...) After a request by John Hunter
2557 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2564 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2558
2565
2559 2005-02-05 Fernando Perez <fperez@colorado.edu>
2566 2005-02-05 Fernando Perez <fperez@colorado.edu>
2560
2567
2561 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2568 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2562 the call had quote characters in it (the quotes were stripped).
2569 the call had quote characters in it (the quotes were stripped).
2563
2570
2564 2005-01-31 Fernando Perez <fperez@colorado.edu>
2571 2005-01-31 Fernando Perez <fperez@colorado.edu>
2565
2572
2566 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2573 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2567 Itpl.itpl() to make the code more robust against psyco
2574 Itpl.itpl() to make the code more robust against psyco
2568 optimizations.
2575 optimizations.
2569
2576
2570 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2577 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2571 of causing an exception. Quicker, cleaner.
2578 of causing an exception. Quicker, cleaner.
2572
2579
2573 2005-01-28 Fernando Perez <fperez@colorado.edu>
2580 2005-01-28 Fernando Perez <fperez@colorado.edu>
2574
2581
2575 * scripts/ipython_win_post_install.py (install): hardcode
2582 * scripts/ipython_win_post_install.py (install): hardcode
2576 sys.prefix+'python.exe' as the executable path. It turns out that
2583 sys.prefix+'python.exe' as the executable path. It turns out that
2577 during the post-installation run, sys.executable resolves to the
2584 during the post-installation run, sys.executable resolves to the
2578 name of the binary installer! I should report this as a distutils
2585 name of the binary installer! I should report this as a distutils
2579 bug, I think. I updated the .10 release with this tiny fix, to
2586 bug, I think. I updated the .10 release with this tiny fix, to
2580 avoid annoying the lists further.
2587 avoid annoying the lists further.
2581
2588
2582 2005-01-27 *** Released version 0.6.10
2589 2005-01-27 *** Released version 0.6.10
2583
2590
2584 2005-01-27 Fernando Perez <fperez@colorado.edu>
2591 2005-01-27 Fernando Perez <fperez@colorado.edu>
2585
2592
2586 * IPython/numutils.py (norm): Added 'inf' as optional name for
2593 * IPython/numutils.py (norm): Added 'inf' as optional name for
2587 L-infinity norm, included references to mathworld.com for vector
2594 L-infinity norm, included references to mathworld.com for vector
2588 norm definitions.
2595 norm definitions.
2589 (amin/amax): added amin/amax for array min/max. Similar to what
2596 (amin/amax): added amin/amax for array min/max. Similar to what
2590 pylab ships with after the recent reorganization of names.
2597 pylab ships with after the recent reorganization of names.
2591 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2598 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2592
2599
2593 * ipython.el: committed Alex's recent fixes and improvements.
2600 * ipython.el: committed Alex's recent fixes and improvements.
2594 Tested with python-mode from CVS, and it looks excellent. Since
2601 Tested with python-mode from CVS, and it looks excellent. Since
2595 python-mode hasn't released anything in a while, I'm temporarily
2602 python-mode hasn't released anything in a while, I'm temporarily
2596 putting a copy of today's CVS (v 4.70) of python-mode in:
2603 putting a copy of today's CVS (v 4.70) of python-mode in:
2597 http://ipython.scipy.org/tmp/python-mode.el
2604 http://ipython.scipy.org/tmp/python-mode.el
2598
2605
2599 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2606 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2600 sys.executable for the executable name, instead of assuming it's
2607 sys.executable for the executable name, instead of assuming it's
2601 called 'python.exe' (the post-installer would have produced broken
2608 called 'python.exe' (the post-installer would have produced broken
2602 setups on systems with a differently named python binary).
2609 setups on systems with a differently named python binary).
2603
2610
2604 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2611 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2605 references to os.linesep, to make the code more
2612 references to os.linesep, to make the code more
2606 platform-independent. This is also part of the win32 coloring
2613 platform-independent. This is also part of the win32 coloring
2607 fixes.
2614 fixes.
2608
2615
2609 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2616 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2610 lines, which actually cause coloring bugs because the length of
2617 lines, which actually cause coloring bugs because the length of
2611 the line is very difficult to correctly compute with embedded
2618 the line is very difficult to correctly compute with embedded
2612 escapes. This was the source of all the coloring problems under
2619 escapes. This was the source of all the coloring problems under
2613 Win32. I think that _finally_, Win32 users have a properly
2620 Win32. I think that _finally_, Win32 users have a properly
2614 working ipython in all respects. This would never have happened
2621 working ipython in all respects. This would never have happened
2615 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2622 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2616
2623
2617 2005-01-26 *** Released version 0.6.9
2624 2005-01-26 *** Released version 0.6.9
2618
2625
2619 2005-01-25 Fernando Perez <fperez@colorado.edu>
2626 2005-01-25 Fernando Perez <fperez@colorado.edu>
2620
2627
2621 * setup.py: finally, we have a true Windows installer, thanks to
2628 * setup.py: finally, we have a true Windows installer, thanks to
2622 the excellent work of Viktor Ransmayr
2629 the excellent work of Viktor Ransmayr
2623 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2630 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2624 Windows users. The setup routine is quite a bit cleaner thanks to
2631 Windows users. The setup routine is quite a bit cleaner thanks to
2625 this, and the post-install script uses the proper functions to
2632 this, and the post-install script uses the proper functions to
2626 allow a clean de-installation using the standard Windows Control
2633 allow a clean de-installation using the standard Windows Control
2627 Panel.
2634 Panel.
2628
2635
2629 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2636 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2630 environment variable under all OSes (including win32) if
2637 environment variable under all OSes (including win32) if
2631 available. This will give consistency to win32 users who have set
2638 available. This will give consistency to win32 users who have set
2632 this variable for any reason. If os.environ['HOME'] fails, the
2639 this variable for any reason. If os.environ['HOME'] fails, the
2633 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2640 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2634
2641
2635 2005-01-24 Fernando Perez <fperez@colorado.edu>
2642 2005-01-24 Fernando Perez <fperez@colorado.edu>
2636
2643
2637 * IPython/numutils.py (empty_like): add empty_like(), similar to
2644 * IPython/numutils.py (empty_like): add empty_like(), similar to
2638 zeros_like() but taking advantage of the new empty() Numeric routine.
2645 zeros_like() but taking advantage of the new empty() Numeric routine.
2639
2646
2640 2005-01-23 *** Released version 0.6.8
2647 2005-01-23 *** Released version 0.6.8
2641
2648
2642 2005-01-22 Fernando Perez <fperez@colorado.edu>
2649 2005-01-22 Fernando Perez <fperez@colorado.edu>
2643
2650
2644 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2651 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2645 automatic show() calls. After discussing things with JDH, it
2652 automatic show() calls. After discussing things with JDH, it
2646 turns out there are too many corner cases where this can go wrong.
2653 turns out there are too many corner cases where this can go wrong.
2647 It's best not to try to be 'too smart', and simply have ipython
2654 It's best not to try to be 'too smart', and simply have ipython
2648 reproduce as much as possible the default behavior of a normal
2655 reproduce as much as possible the default behavior of a normal
2649 python shell.
2656 python shell.
2650
2657
2651 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2658 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2652 line-splitting regexp and _prefilter() to avoid calling getattr()
2659 line-splitting regexp and _prefilter() to avoid calling getattr()
2653 on assignments. This closes
2660 on assignments. This closes
2654 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2661 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2655 readline uses getattr(), so a simple <TAB> keypress is still
2662 readline uses getattr(), so a simple <TAB> keypress is still
2656 enough to trigger getattr() calls on an object.
2663 enough to trigger getattr() calls on an object.
2657
2664
2658 2005-01-21 Fernando Perez <fperez@colorado.edu>
2665 2005-01-21 Fernando Perez <fperez@colorado.edu>
2659
2666
2660 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2667 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2661 docstring under pylab so it doesn't mask the original.
2668 docstring under pylab so it doesn't mask the original.
2662
2669
2663 2005-01-21 *** Released version 0.6.7
2670 2005-01-21 *** Released version 0.6.7
2664
2671
2665 2005-01-21 Fernando Perez <fperez@colorado.edu>
2672 2005-01-21 Fernando Perez <fperez@colorado.edu>
2666
2673
2667 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2674 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2668 signal handling for win32 users in multithreaded mode.
2675 signal handling for win32 users in multithreaded mode.
2669
2676
2670 2005-01-17 Fernando Perez <fperez@colorado.edu>
2677 2005-01-17 Fernando Perez <fperez@colorado.edu>
2671
2678
2672 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2679 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2673 instances with no __init__. After a crash report by Norbert Nemec
2680 instances with no __init__. After a crash report by Norbert Nemec
2674 <Norbert-AT-nemec-online.de>.
2681 <Norbert-AT-nemec-online.de>.
2675
2682
2676 2005-01-14 Fernando Perez <fperez@colorado.edu>
2683 2005-01-14 Fernando Perez <fperez@colorado.edu>
2677
2684
2678 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2685 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2679 names for verbose exceptions, when multiple dotted names and the
2686 names for verbose exceptions, when multiple dotted names and the
2680 'parent' object were present on the same line.
2687 'parent' object were present on the same line.
2681
2688
2682 2005-01-11 Fernando Perez <fperez@colorado.edu>
2689 2005-01-11 Fernando Perez <fperez@colorado.edu>
2683
2690
2684 * IPython/genutils.py (flag_calls): new utility to trap and flag
2691 * IPython/genutils.py (flag_calls): new utility to trap and flag
2685 calls in functions. I need it to clean up matplotlib support.
2692 calls in functions. I need it to clean up matplotlib support.
2686 Also removed some deprecated code in genutils.
2693 Also removed some deprecated code in genutils.
2687
2694
2688 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2695 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2689 that matplotlib scripts called with %run, which don't call show()
2696 that matplotlib scripts called with %run, which don't call show()
2690 themselves, still have their plotting windows open.
2697 themselves, still have their plotting windows open.
2691
2698
2692 2005-01-05 Fernando Perez <fperez@colorado.edu>
2699 2005-01-05 Fernando Perez <fperez@colorado.edu>
2693
2700
2694 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2701 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2695 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2702 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2696
2703
2697 2004-12-19 Fernando Perez <fperez@colorado.edu>
2704 2004-12-19 Fernando Perez <fperez@colorado.edu>
2698
2705
2699 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2706 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2700 parent_runcode, which was an eyesore. The same result can be
2707 parent_runcode, which was an eyesore. The same result can be
2701 obtained with Python's regular superclass mechanisms.
2708 obtained with Python's regular superclass mechanisms.
2702
2709
2703 2004-12-17 Fernando Perez <fperez@colorado.edu>
2710 2004-12-17 Fernando Perez <fperez@colorado.edu>
2704
2711
2705 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2712 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2706 reported by Prabhu.
2713 reported by Prabhu.
2707 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2714 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2708 sys.stderr) instead of explicitly calling sys.stderr. This helps
2715 sys.stderr) instead of explicitly calling sys.stderr. This helps
2709 maintain our I/O abstractions clean, for future GUI embeddings.
2716 maintain our I/O abstractions clean, for future GUI embeddings.
2710
2717
2711 * IPython/genutils.py (info): added new utility for sys.stderr
2718 * IPython/genutils.py (info): added new utility for sys.stderr
2712 unified info message handling (thin wrapper around warn()).
2719 unified info message handling (thin wrapper around warn()).
2713
2720
2714 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2721 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2715 composite (dotted) names on verbose exceptions.
2722 composite (dotted) names on verbose exceptions.
2716 (VerboseTB.nullrepr): harden against another kind of errors which
2723 (VerboseTB.nullrepr): harden against another kind of errors which
2717 Python's inspect module can trigger, and which were crashing
2724 Python's inspect module can trigger, and which were crashing
2718 IPython. Thanks to a report by Marco Lombardi
2725 IPython. Thanks to a report by Marco Lombardi
2719 <mlombard-AT-ma010192.hq.eso.org>.
2726 <mlombard-AT-ma010192.hq.eso.org>.
2720
2727
2721 2004-12-13 *** Released version 0.6.6
2728 2004-12-13 *** Released version 0.6.6
2722
2729
2723 2004-12-12 Fernando Perez <fperez@colorado.edu>
2730 2004-12-12 Fernando Perez <fperez@colorado.edu>
2724
2731
2725 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2732 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2726 generated by pygtk upon initialization if it was built without
2733 generated by pygtk upon initialization if it was built without
2727 threads (for matplotlib users). After a crash reported by
2734 threads (for matplotlib users). After a crash reported by
2728 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2735 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2729
2736
2730 * IPython/ipmaker.py (make_IPython): fix small bug in the
2737 * IPython/ipmaker.py (make_IPython): fix small bug in the
2731 import_some parameter for multiple imports.
2738 import_some parameter for multiple imports.
2732
2739
2733 * IPython/iplib.py (ipmagic): simplified the interface of
2740 * IPython/iplib.py (ipmagic): simplified the interface of
2734 ipmagic() to take a single string argument, just as it would be
2741 ipmagic() to take a single string argument, just as it would be
2735 typed at the IPython cmd line.
2742 typed at the IPython cmd line.
2736 (ipalias): Added new ipalias() with an interface identical to
2743 (ipalias): Added new ipalias() with an interface identical to
2737 ipmagic(). This completes exposing a pure python interface to the
2744 ipmagic(). This completes exposing a pure python interface to the
2738 alias and magic system, which can be used in loops or more complex
2745 alias and magic system, which can be used in loops or more complex
2739 code where IPython's automatic line mangling is not active.
2746 code where IPython's automatic line mangling is not active.
2740
2747
2741 * IPython/genutils.py (timing): changed interface of timing to
2748 * IPython/genutils.py (timing): changed interface of timing to
2742 simply run code once, which is the most common case. timings()
2749 simply run code once, which is the most common case. timings()
2743 remains unchanged, for the cases where you want multiple runs.
2750 remains unchanged, for the cases where you want multiple runs.
2744
2751
2745 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2752 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2746 bug where Python2.2 crashes with exec'ing code which does not end
2753 bug where Python2.2 crashes with exec'ing code which does not end
2747 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2754 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2748 before.
2755 before.
2749
2756
2750 2004-12-10 Fernando Perez <fperez@colorado.edu>
2757 2004-12-10 Fernando Perez <fperez@colorado.edu>
2751
2758
2752 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2759 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2753 -t to -T, to accomodate the new -t flag in %run (the %run and
2760 -t to -T, to accomodate the new -t flag in %run (the %run and
2754 %prun options are kind of intermixed, and it's not easy to change
2761 %prun options are kind of intermixed, and it's not easy to change
2755 this with the limitations of python's getopt).
2762 this with the limitations of python's getopt).
2756
2763
2757 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2764 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2758 the execution of scripts. It's not as fine-tuned as timeit.py,
2765 the execution of scripts. It's not as fine-tuned as timeit.py,
2759 but it works from inside ipython (and under 2.2, which lacks
2766 but it works from inside ipython (and under 2.2, which lacks
2760 timeit.py). Optionally a number of runs > 1 can be given for
2767 timeit.py). Optionally a number of runs > 1 can be given for
2761 timing very short-running code.
2768 timing very short-running code.
2762
2769
2763 * IPython/genutils.py (uniq_stable): new routine which returns a
2770 * IPython/genutils.py (uniq_stable): new routine which returns a
2764 list of unique elements in any iterable, but in stable order of
2771 list of unique elements in any iterable, but in stable order of
2765 appearance. I needed this for the ultraTB fixes, and it's a handy
2772 appearance. I needed this for the ultraTB fixes, and it's a handy
2766 utility.
2773 utility.
2767
2774
2768 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2775 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2769 dotted names in Verbose exceptions. This had been broken since
2776 dotted names in Verbose exceptions. This had been broken since
2770 the very start, now x.y will properly be printed in a Verbose
2777 the very start, now x.y will properly be printed in a Verbose
2771 traceback, instead of x being shown and y appearing always as an
2778 traceback, instead of x being shown and y appearing always as an
2772 'undefined global'. Getting this to work was a bit tricky,
2779 'undefined global'. Getting this to work was a bit tricky,
2773 because by default python tokenizers are stateless. Saved by
2780 because by default python tokenizers are stateless. Saved by
2774 python's ability to easily add a bit of state to an arbitrary
2781 python's ability to easily add a bit of state to an arbitrary
2775 function (without needing to build a full-blown callable object).
2782 function (without needing to build a full-blown callable object).
2776
2783
2777 Also big cleanup of this code, which had horrendous runtime
2784 Also big cleanup of this code, which had horrendous runtime
2778 lookups of zillions of attributes for colorization. Moved all
2785 lookups of zillions of attributes for colorization. Moved all
2779 this code into a few templates, which make it cleaner and quicker.
2786 this code into a few templates, which make it cleaner and quicker.
2780
2787
2781 Printout quality was also improved for Verbose exceptions: one
2788 Printout quality was also improved for Verbose exceptions: one
2782 variable per line, and memory addresses are printed (this can be
2789 variable per line, and memory addresses are printed (this can be
2783 quite handy in nasty debugging situations, which is what Verbose
2790 quite handy in nasty debugging situations, which is what Verbose
2784 is for).
2791 is for).
2785
2792
2786 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2793 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2787 the command line as scripts to be loaded by embedded instances.
2794 the command line as scripts to be loaded by embedded instances.
2788 Doing so has the potential for an infinite recursion if there are
2795 Doing so has the potential for an infinite recursion if there are
2789 exceptions thrown in the process. This fixes a strange crash
2796 exceptions thrown in the process. This fixes a strange crash
2790 reported by Philippe MULLER <muller-AT-irit.fr>.
2797 reported by Philippe MULLER <muller-AT-irit.fr>.
2791
2798
2792 2004-12-09 Fernando Perez <fperez@colorado.edu>
2799 2004-12-09 Fernando Perez <fperez@colorado.edu>
2793
2800
2794 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2801 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2795 to reflect new names in matplotlib, which now expose the
2802 to reflect new names in matplotlib, which now expose the
2796 matlab-compatible interface via a pylab module instead of the
2803 matlab-compatible interface via a pylab module instead of the
2797 'matlab' name. The new code is backwards compatible, so users of
2804 'matlab' name. The new code is backwards compatible, so users of
2798 all matplotlib versions are OK. Patch by J. Hunter.
2805 all matplotlib versions are OK. Patch by J. Hunter.
2799
2806
2800 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2807 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2801 of __init__ docstrings for instances (class docstrings are already
2808 of __init__ docstrings for instances (class docstrings are already
2802 automatically printed). Instances with customized docstrings
2809 automatically printed). Instances with customized docstrings
2803 (indep. of the class) are also recognized and all 3 separate
2810 (indep. of the class) are also recognized and all 3 separate
2804 docstrings are printed (instance, class, constructor). After some
2811 docstrings are printed (instance, class, constructor). After some
2805 comments/suggestions by J. Hunter.
2812 comments/suggestions by J. Hunter.
2806
2813
2807 2004-12-05 Fernando Perez <fperez@colorado.edu>
2814 2004-12-05 Fernando Perez <fperez@colorado.edu>
2808
2815
2809 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2816 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2810 warnings when tab-completion fails and triggers an exception.
2817 warnings when tab-completion fails and triggers an exception.
2811
2818
2812 2004-12-03 Fernando Perez <fperez@colorado.edu>
2819 2004-12-03 Fernando Perez <fperez@colorado.edu>
2813
2820
2814 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2821 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2815 be triggered when using 'run -p'. An incorrect option flag was
2822 be triggered when using 'run -p'. An incorrect option flag was
2816 being set ('d' instead of 'D').
2823 being set ('d' instead of 'D').
2817 (manpage): fix missing escaped \- sign.
2824 (manpage): fix missing escaped \- sign.
2818
2825
2819 2004-11-30 *** Released version 0.6.5
2826 2004-11-30 *** Released version 0.6.5
2820
2827
2821 2004-11-30 Fernando Perez <fperez@colorado.edu>
2828 2004-11-30 Fernando Perez <fperez@colorado.edu>
2822
2829
2823 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2830 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2824 setting with -d option.
2831 setting with -d option.
2825
2832
2826 * setup.py (docfiles): Fix problem where the doc glob I was using
2833 * setup.py (docfiles): Fix problem where the doc glob I was using
2827 was COMPLETELY BROKEN. It was giving the right files by pure
2834 was COMPLETELY BROKEN. It was giving the right files by pure
2828 accident, but failed once I tried to include ipython.el. Note:
2835 accident, but failed once I tried to include ipython.el. Note:
2829 glob() does NOT allow you to do exclusion on multiple endings!
2836 glob() does NOT allow you to do exclusion on multiple endings!
2830
2837
2831 2004-11-29 Fernando Perez <fperez@colorado.edu>
2838 2004-11-29 Fernando Perez <fperez@colorado.edu>
2832
2839
2833 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2840 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2834 the manpage as the source. Better formatting & consistency.
2841 the manpage as the source. Better formatting & consistency.
2835
2842
2836 * IPython/Magic.py (magic_run): Added new -d option, to run
2843 * IPython/Magic.py (magic_run): Added new -d option, to run
2837 scripts under the control of the python pdb debugger. Note that
2844 scripts under the control of the python pdb debugger. Note that
2838 this required changing the %prun option -d to -D, to avoid a clash
2845 this required changing the %prun option -d to -D, to avoid a clash
2839 (since %run must pass options to %prun, and getopt is too dumb to
2846 (since %run must pass options to %prun, and getopt is too dumb to
2840 handle options with string values with embedded spaces). Thanks
2847 handle options with string values with embedded spaces). Thanks
2841 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2848 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2842 (magic_who_ls): added type matching to %who and %whos, so that one
2849 (magic_who_ls): added type matching to %who and %whos, so that one
2843 can filter their output to only include variables of certain
2850 can filter their output to only include variables of certain
2844 types. Another suggestion by Matthew.
2851 types. Another suggestion by Matthew.
2845 (magic_whos): Added memory summaries in kb and Mb for arrays.
2852 (magic_whos): Added memory summaries in kb and Mb for arrays.
2846 (magic_who): Improve formatting (break lines every 9 vars).
2853 (magic_who): Improve formatting (break lines every 9 vars).
2847
2854
2848 2004-11-28 Fernando Perez <fperez@colorado.edu>
2855 2004-11-28 Fernando Perez <fperez@colorado.edu>
2849
2856
2850 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2857 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2851 cache when empty lines were present.
2858 cache when empty lines were present.
2852
2859
2853 2004-11-24 Fernando Perez <fperez@colorado.edu>
2860 2004-11-24 Fernando Perez <fperez@colorado.edu>
2854
2861
2855 * IPython/usage.py (__doc__): document the re-activated threading
2862 * IPython/usage.py (__doc__): document the re-activated threading
2856 options for WX and GTK.
2863 options for WX and GTK.
2857
2864
2858 2004-11-23 Fernando Perez <fperez@colorado.edu>
2865 2004-11-23 Fernando Perez <fperez@colorado.edu>
2859
2866
2860 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2867 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2861 the -wthread and -gthread options, along with a new -tk one to try
2868 the -wthread and -gthread options, along with a new -tk one to try
2862 and coordinate Tk threading with wx/gtk. The tk support is very
2869 and coordinate Tk threading with wx/gtk. The tk support is very
2863 platform dependent, since it seems to require Tcl and Tk to be
2870 platform dependent, since it seems to require Tcl and Tk to be
2864 built with threads (Fedora1/2 appears NOT to have it, but in
2871 built with threads (Fedora1/2 appears NOT to have it, but in
2865 Prabhu's Debian boxes it works OK). But even with some Tk
2872 Prabhu's Debian boxes it works OK). But even with some Tk
2866 limitations, this is a great improvement.
2873 limitations, this is a great improvement.
2867
2874
2868 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2875 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2869 info in user prompts. Patch by Prabhu.
2876 info in user prompts. Patch by Prabhu.
2870
2877
2871 2004-11-18 Fernando Perez <fperez@colorado.edu>
2878 2004-11-18 Fernando Perez <fperez@colorado.edu>
2872
2879
2873 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2880 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2874 EOFErrors and bail, to avoid infinite loops if a non-terminating
2881 EOFErrors and bail, to avoid infinite loops if a non-terminating
2875 file is fed into ipython. Patch submitted in issue 19 by user,
2882 file is fed into ipython. Patch submitted in issue 19 by user,
2876 many thanks.
2883 many thanks.
2877
2884
2878 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2885 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2879 autoquote/parens in continuation prompts, which can cause lots of
2886 autoquote/parens in continuation prompts, which can cause lots of
2880 problems. Closes roundup issue 20.
2887 problems. Closes roundup issue 20.
2881
2888
2882 2004-11-17 Fernando Perez <fperez@colorado.edu>
2889 2004-11-17 Fernando Perez <fperez@colorado.edu>
2883
2890
2884 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2891 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2885 reported as debian bug #280505. I'm not sure my local changelog
2892 reported as debian bug #280505. I'm not sure my local changelog
2886 entry has the proper debian format (Jack?).
2893 entry has the proper debian format (Jack?).
2887
2894
2888 2004-11-08 *** Released version 0.6.4
2895 2004-11-08 *** Released version 0.6.4
2889
2896
2890 2004-11-08 Fernando Perez <fperez@colorado.edu>
2897 2004-11-08 Fernando Perez <fperez@colorado.edu>
2891
2898
2892 * IPython/iplib.py (init_readline): Fix exit message for Windows
2899 * IPython/iplib.py (init_readline): Fix exit message for Windows
2893 when readline is active. Thanks to a report by Eric Jones
2900 when readline is active. Thanks to a report by Eric Jones
2894 <eric-AT-enthought.com>.
2901 <eric-AT-enthought.com>.
2895
2902
2896 2004-11-07 Fernando Perez <fperez@colorado.edu>
2903 2004-11-07 Fernando Perez <fperez@colorado.edu>
2897
2904
2898 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2905 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2899 sometimes seen by win2k/cygwin users.
2906 sometimes seen by win2k/cygwin users.
2900
2907
2901 2004-11-06 Fernando Perez <fperez@colorado.edu>
2908 2004-11-06 Fernando Perez <fperez@colorado.edu>
2902
2909
2903 * IPython/iplib.py (interact): Change the handling of %Exit from
2910 * IPython/iplib.py (interact): Change the handling of %Exit from
2904 trying to propagate a SystemExit to an internal ipython flag.
2911 trying to propagate a SystemExit to an internal ipython flag.
2905 This is less elegant than using Python's exception mechanism, but
2912 This is less elegant than using Python's exception mechanism, but
2906 I can't get that to work reliably with threads, so under -pylab
2913 I can't get that to work reliably with threads, so under -pylab
2907 %Exit was hanging IPython. Cross-thread exception handling is
2914 %Exit was hanging IPython. Cross-thread exception handling is
2908 really a bitch. Thaks to a bug report by Stephen Walton
2915 really a bitch. Thaks to a bug report by Stephen Walton
2909 <stephen.walton-AT-csun.edu>.
2916 <stephen.walton-AT-csun.edu>.
2910
2917
2911 2004-11-04 Fernando Perez <fperez@colorado.edu>
2918 2004-11-04 Fernando Perez <fperez@colorado.edu>
2912
2919
2913 * IPython/iplib.py (raw_input_original): store a pointer to the
2920 * IPython/iplib.py (raw_input_original): store a pointer to the
2914 true raw_input to harden against code which can modify it
2921 true raw_input to harden against code which can modify it
2915 (wx.py.PyShell does this and would otherwise crash ipython).
2922 (wx.py.PyShell does this and would otherwise crash ipython).
2916 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2923 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2917
2924
2918 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2925 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2919 Ctrl-C problem, which does not mess up the input line.
2926 Ctrl-C problem, which does not mess up the input line.
2920
2927
2921 2004-11-03 Fernando Perez <fperez@colorado.edu>
2928 2004-11-03 Fernando Perez <fperez@colorado.edu>
2922
2929
2923 * IPython/Release.py: Changed licensing to BSD, in all files.
2930 * IPython/Release.py: Changed licensing to BSD, in all files.
2924 (name): lowercase name for tarball/RPM release.
2931 (name): lowercase name for tarball/RPM release.
2925
2932
2926 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2933 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2927 use throughout ipython.
2934 use throughout ipython.
2928
2935
2929 * IPython/Magic.py (Magic._ofind): Switch to using the new
2936 * IPython/Magic.py (Magic._ofind): Switch to using the new
2930 OInspect.getdoc() function.
2937 OInspect.getdoc() function.
2931
2938
2932 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2939 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2933 of the line currently being canceled via Ctrl-C. It's extremely
2940 of the line currently being canceled via Ctrl-C. It's extremely
2934 ugly, but I don't know how to do it better (the problem is one of
2941 ugly, but I don't know how to do it better (the problem is one of
2935 handling cross-thread exceptions).
2942 handling cross-thread exceptions).
2936
2943
2937 2004-10-28 Fernando Perez <fperez@colorado.edu>
2944 2004-10-28 Fernando Perez <fperez@colorado.edu>
2938
2945
2939 * IPython/Shell.py (signal_handler): add signal handlers to trap
2946 * IPython/Shell.py (signal_handler): add signal handlers to trap
2940 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2947 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2941 report by Francesc Alted.
2948 report by Francesc Alted.
2942
2949
2943 2004-10-21 Fernando Perez <fperez@colorado.edu>
2950 2004-10-21 Fernando Perez <fperez@colorado.edu>
2944
2951
2945 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2952 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2946 to % for pysh syntax extensions.
2953 to % for pysh syntax extensions.
2947
2954
2948 2004-10-09 Fernando Perez <fperez@colorado.edu>
2955 2004-10-09 Fernando Perez <fperez@colorado.edu>
2949
2956
2950 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2957 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2951 arrays to print a more useful summary, without calling str(arr).
2958 arrays to print a more useful summary, without calling str(arr).
2952 This avoids the problem of extremely lengthy computations which
2959 This avoids the problem of extremely lengthy computations which
2953 occur if arr is large, and appear to the user as a system lockup
2960 occur if arr is large, and appear to the user as a system lockup
2954 with 100% cpu activity. After a suggestion by Kristian Sandberg
2961 with 100% cpu activity. After a suggestion by Kristian Sandberg
2955 <Kristian.Sandberg@colorado.edu>.
2962 <Kristian.Sandberg@colorado.edu>.
2956 (Magic.__init__): fix bug in global magic escapes not being
2963 (Magic.__init__): fix bug in global magic escapes not being
2957 correctly set.
2964 correctly set.
2958
2965
2959 2004-10-08 Fernando Perez <fperez@colorado.edu>
2966 2004-10-08 Fernando Perez <fperez@colorado.edu>
2960
2967
2961 * IPython/Magic.py (__license__): change to absolute imports of
2968 * IPython/Magic.py (__license__): change to absolute imports of
2962 ipython's own internal packages, to start adapting to the absolute
2969 ipython's own internal packages, to start adapting to the absolute
2963 import requirement of PEP-328.
2970 import requirement of PEP-328.
2964
2971
2965 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2972 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2966 files, and standardize author/license marks through the Release
2973 files, and standardize author/license marks through the Release
2967 module instead of having per/file stuff (except for files with
2974 module instead of having per/file stuff (except for files with
2968 particular licenses, like the MIT/PSF-licensed codes).
2975 particular licenses, like the MIT/PSF-licensed codes).
2969
2976
2970 * IPython/Debugger.py: remove dead code for python 2.1
2977 * IPython/Debugger.py: remove dead code for python 2.1
2971
2978
2972 2004-10-04 Fernando Perez <fperez@colorado.edu>
2979 2004-10-04 Fernando Perez <fperez@colorado.edu>
2973
2980
2974 * IPython/iplib.py (ipmagic): New function for accessing magics
2981 * IPython/iplib.py (ipmagic): New function for accessing magics
2975 via a normal python function call.
2982 via a normal python function call.
2976
2983
2977 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2984 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2978 from '@' to '%', to accomodate the new @decorator syntax of python
2985 from '@' to '%', to accomodate the new @decorator syntax of python
2979 2.4.
2986 2.4.
2980
2987
2981 2004-09-29 Fernando Perez <fperez@colorado.edu>
2988 2004-09-29 Fernando Perez <fperez@colorado.edu>
2982
2989
2983 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2990 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2984 matplotlib.use to prevent running scripts which try to switch
2991 matplotlib.use to prevent running scripts which try to switch
2985 interactive backends from within ipython. This will just crash
2992 interactive backends from within ipython. This will just crash
2986 the python interpreter, so we can't allow it (but a detailed error
2993 the python interpreter, so we can't allow it (but a detailed error
2987 is given to the user).
2994 is given to the user).
2988
2995
2989 2004-09-28 Fernando Perez <fperez@colorado.edu>
2996 2004-09-28 Fernando Perez <fperez@colorado.edu>
2990
2997
2991 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2998 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2992 matplotlib-related fixes so that using @run with non-matplotlib
2999 matplotlib-related fixes so that using @run with non-matplotlib
2993 scripts doesn't pop up spurious plot windows. This requires
3000 scripts doesn't pop up spurious plot windows. This requires
2994 matplotlib >= 0.63, where I had to make some changes as well.
3001 matplotlib >= 0.63, where I had to make some changes as well.
2995
3002
2996 * IPython/ipmaker.py (make_IPython): update version requirement to
3003 * IPython/ipmaker.py (make_IPython): update version requirement to
2997 python 2.2.
3004 python 2.2.
2998
3005
2999 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3006 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3000 banner arg for embedded customization.
3007 banner arg for embedded customization.
3001
3008
3002 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3009 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3003 explicit uses of __IP as the IPython's instance name. Now things
3010 explicit uses of __IP as the IPython's instance name. Now things
3004 are properly handled via the shell.name value. The actual code
3011 are properly handled via the shell.name value. The actual code
3005 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3012 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3006 is much better than before. I'll clean things completely when the
3013 is much better than before. I'll clean things completely when the
3007 magic stuff gets a real overhaul.
3014 magic stuff gets a real overhaul.
3008
3015
3009 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3016 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3010 minor changes to debian dir.
3017 minor changes to debian dir.
3011
3018
3012 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3019 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3013 pointer to the shell itself in the interactive namespace even when
3020 pointer to the shell itself in the interactive namespace even when
3014 a user-supplied dict is provided. This is needed for embedding
3021 a user-supplied dict is provided. This is needed for embedding
3015 purposes (found by tests with Michel Sanner).
3022 purposes (found by tests with Michel Sanner).
3016
3023
3017 2004-09-27 Fernando Perez <fperez@colorado.edu>
3024 2004-09-27 Fernando Perez <fperez@colorado.edu>
3018
3025
3019 * IPython/UserConfig/ipythonrc: remove []{} from
3026 * IPython/UserConfig/ipythonrc: remove []{} from
3020 readline_remove_delims, so that things like [modname.<TAB> do
3027 readline_remove_delims, so that things like [modname.<TAB> do
3021 proper completion. This disables [].TAB, but that's a less common
3028 proper completion. This disables [].TAB, but that's a less common
3022 case than module names in list comprehensions, for example.
3029 case than module names in list comprehensions, for example.
3023 Thanks to a report by Andrea Riciputi.
3030 Thanks to a report by Andrea Riciputi.
3024
3031
3025 2004-09-09 Fernando Perez <fperez@colorado.edu>
3032 2004-09-09 Fernando Perez <fperez@colorado.edu>
3026
3033
3027 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3034 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3028 blocking problems in win32 and osx. Fix by John.
3035 blocking problems in win32 and osx. Fix by John.
3029
3036
3030 2004-09-08 Fernando Perez <fperez@colorado.edu>
3037 2004-09-08 Fernando Perez <fperez@colorado.edu>
3031
3038
3032 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3039 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3033 for Win32 and OSX. Fix by John Hunter.
3040 for Win32 and OSX. Fix by John Hunter.
3034
3041
3035 2004-08-30 *** Released version 0.6.3
3042 2004-08-30 *** Released version 0.6.3
3036
3043
3037 2004-08-30 Fernando Perez <fperez@colorado.edu>
3044 2004-08-30 Fernando Perez <fperez@colorado.edu>
3038
3045
3039 * setup.py (isfile): Add manpages to list of dependent files to be
3046 * setup.py (isfile): Add manpages to list of dependent files to be
3040 updated.
3047 updated.
3041
3048
3042 2004-08-27 Fernando Perez <fperez@colorado.edu>
3049 2004-08-27 Fernando Perez <fperez@colorado.edu>
3043
3050
3044 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3051 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3045 for now. They don't really work with standalone WX/GTK code
3052 for now. They don't really work with standalone WX/GTK code
3046 (though matplotlib IS working fine with both of those backends).
3053 (though matplotlib IS working fine with both of those backends).
3047 This will neeed much more testing. I disabled most things with
3054 This will neeed much more testing. I disabled most things with
3048 comments, so turning it back on later should be pretty easy.
3055 comments, so turning it back on later should be pretty easy.
3049
3056
3050 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3057 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3051 autocalling of expressions like r'foo', by modifying the line
3058 autocalling of expressions like r'foo', by modifying the line
3052 split regexp. Closes
3059 split regexp. Closes
3053 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3060 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3054 Riley <ipythonbugs-AT-sabi.net>.
3061 Riley <ipythonbugs-AT-sabi.net>.
3055 (InteractiveShell.mainloop): honor --nobanner with banner
3062 (InteractiveShell.mainloop): honor --nobanner with banner
3056 extensions.
3063 extensions.
3057
3064
3058 * IPython/Shell.py: Significant refactoring of all classes, so
3065 * IPython/Shell.py: Significant refactoring of all classes, so
3059 that we can really support ALL matplotlib backends and threading
3066 that we can really support ALL matplotlib backends and threading
3060 models (John spotted a bug with Tk which required this). Now we
3067 models (John spotted a bug with Tk which required this). Now we
3061 should support single-threaded, WX-threads and GTK-threads, both
3068 should support single-threaded, WX-threads and GTK-threads, both
3062 for generic code and for matplotlib.
3069 for generic code and for matplotlib.
3063
3070
3064 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3071 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3065 -pylab, to simplify things for users. Will also remove the pylab
3072 -pylab, to simplify things for users. Will also remove the pylab
3066 profile, since now all of matplotlib configuration is directly
3073 profile, since now all of matplotlib configuration is directly
3067 handled here. This also reduces startup time.
3074 handled here. This also reduces startup time.
3068
3075
3069 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3076 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3070 shell wasn't being correctly called. Also in IPShellWX.
3077 shell wasn't being correctly called. Also in IPShellWX.
3071
3078
3072 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3079 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3073 fine-tune banner.
3080 fine-tune banner.
3074
3081
3075 * IPython/numutils.py (spike): Deprecate these spike functions,
3082 * IPython/numutils.py (spike): Deprecate these spike functions,
3076 delete (long deprecated) gnuplot_exec handler.
3083 delete (long deprecated) gnuplot_exec handler.
3077
3084
3078 2004-08-26 Fernando Perez <fperez@colorado.edu>
3085 2004-08-26 Fernando Perez <fperez@colorado.edu>
3079
3086
3080 * ipython.1: Update for threading options, plus some others which
3087 * ipython.1: Update for threading options, plus some others which
3081 were missing.
3088 were missing.
3082
3089
3083 * IPython/ipmaker.py (__call__): Added -wthread option for
3090 * IPython/ipmaker.py (__call__): Added -wthread option for
3084 wxpython thread handling. Make sure threading options are only
3091 wxpython thread handling. Make sure threading options are only
3085 valid at the command line.
3092 valid at the command line.
3086
3093
3087 * scripts/ipython: moved shell selection into a factory function
3094 * scripts/ipython: moved shell selection into a factory function
3088 in Shell.py, to keep the starter script to a minimum.
3095 in Shell.py, to keep the starter script to a minimum.
3089
3096
3090 2004-08-25 Fernando Perez <fperez@colorado.edu>
3097 2004-08-25 Fernando Perez <fperez@colorado.edu>
3091
3098
3092 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3099 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3093 John. Along with some recent changes he made to matplotlib, the
3100 John. Along with some recent changes he made to matplotlib, the
3094 next versions of both systems should work very well together.
3101 next versions of both systems should work very well together.
3095
3102
3096 2004-08-24 Fernando Perez <fperez@colorado.edu>
3103 2004-08-24 Fernando Perez <fperez@colorado.edu>
3097
3104
3098 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3105 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3099 tried to switch the profiling to using hotshot, but I'm getting
3106 tried to switch the profiling to using hotshot, but I'm getting
3100 strange errors from prof.runctx() there. I may be misreading the
3107 strange errors from prof.runctx() there. I may be misreading the
3101 docs, but it looks weird. For now the profiling code will
3108 docs, but it looks weird. For now the profiling code will
3102 continue to use the standard profiler.
3109 continue to use the standard profiler.
3103
3110
3104 2004-08-23 Fernando Perez <fperez@colorado.edu>
3111 2004-08-23 Fernando Perez <fperez@colorado.edu>
3105
3112
3106 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3113 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3107 threaded shell, by John Hunter. It's not quite ready yet, but
3114 threaded shell, by John Hunter. It's not quite ready yet, but
3108 close.
3115 close.
3109
3116
3110 2004-08-22 Fernando Perez <fperez@colorado.edu>
3117 2004-08-22 Fernando Perez <fperez@colorado.edu>
3111
3118
3112 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3119 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3113 in Magic and ultraTB.
3120 in Magic and ultraTB.
3114
3121
3115 * ipython.1: document threading options in manpage.
3122 * ipython.1: document threading options in manpage.
3116
3123
3117 * scripts/ipython: Changed name of -thread option to -gthread,
3124 * scripts/ipython: Changed name of -thread option to -gthread,
3118 since this is GTK specific. I want to leave the door open for a
3125 since this is GTK specific. I want to leave the door open for a
3119 -wthread option for WX, which will most likely be necessary. This
3126 -wthread option for WX, which will most likely be necessary. This
3120 change affects usage and ipmaker as well.
3127 change affects usage and ipmaker as well.
3121
3128
3122 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3129 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3123 handle the matplotlib shell issues. Code by John Hunter
3130 handle the matplotlib shell issues. Code by John Hunter
3124 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3131 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3125 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3132 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3126 broken (and disabled for end users) for now, but it puts the
3133 broken (and disabled for end users) for now, but it puts the
3127 infrastructure in place.
3134 infrastructure in place.
3128
3135
3129 2004-08-21 Fernando Perez <fperez@colorado.edu>
3136 2004-08-21 Fernando Perez <fperez@colorado.edu>
3130
3137
3131 * ipythonrc-pylab: Add matplotlib support.
3138 * ipythonrc-pylab: Add matplotlib support.
3132
3139
3133 * matplotlib_config.py: new files for matplotlib support, part of
3140 * matplotlib_config.py: new files for matplotlib support, part of
3134 the pylab profile.
3141 the pylab profile.
3135
3142
3136 * IPython/usage.py (__doc__): documented the threading options.
3143 * IPython/usage.py (__doc__): documented the threading options.
3137
3144
3138 2004-08-20 Fernando Perez <fperez@colorado.edu>
3145 2004-08-20 Fernando Perez <fperez@colorado.edu>
3139
3146
3140 * ipython: Modified the main calling routine to handle the -thread
3147 * ipython: Modified the main calling routine to handle the -thread
3141 and -mpthread options. This needs to be done as a top-level hack,
3148 and -mpthread options. This needs to be done as a top-level hack,
3142 because it determines which class to instantiate for IPython
3149 because it determines which class to instantiate for IPython
3143 itself.
3150 itself.
3144
3151
3145 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3152 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3146 classes to support multithreaded GTK operation without blocking,
3153 classes to support multithreaded GTK operation without blocking,
3147 and matplotlib with all backends. This is a lot of still very
3154 and matplotlib with all backends. This is a lot of still very
3148 experimental code, and threads are tricky. So it may still have a
3155 experimental code, and threads are tricky. So it may still have a
3149 few rough edges... This code owes a lot to
3156 few rough edges... This code owes a lot to
3150 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3157 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3151 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3158 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3152 to John Hunter for all the matplotlib work.
3159 to John Hunter for all the matplotlib work.
3153
3160
3154 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3161 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3155 options for gtk thread and matplotlib support.
3162 options for gtk thread and matplotlib support.
3156
3163
3157 2004-08-16 Fernando Perez <fperez@colorado.edu>
3164 2004-08-16 Fernando Perez <fperez@colorado.edu>
3158
3165
3159 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3166 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3160 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3167 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3161 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3168 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3162
3169
3163 2004-08-11 Fernando Perez <fperez@colorado.edu>
3170 2004-08-11 Fernando Perez <fperez@colorado.edu>
3164
3171
3165 * setup.py (isfile): Fix build so documentation gets updated for
3172 * setup.py (isfile): Fix build so documentation gets updated for
3166 rpms (it was only done for .tgz builds).
3173 rpms (it was only done for .tgz builds).
3167
3174
3168 2004-08-10 Fernando Perez <fperez@colorado.edu>
3175 2004-08-10 Fernando Perez <fperez@colorado.edu>
3169
3176
3170 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3177 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3171
3178
3172 * iplib.py : Silence syntax error exceptions in tab-completion.
3179 * iplib.py : Silence syntax error exceptions in tab-completion.
3173
3180
3174 2004-08-05 Fernando Perez <fperez@colorado.edu>
3181 2004-08-05 Fernando Perez <fperez@colorado.edu>
3175
3182
3176 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3183 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3177 'color off' mark for continuation prompts. This was causing long
3184 'color off' mark for continuation prompts. This was causing long
3178 continuation lines to mis-wrap.
3185 continuation lines to mis-wrap.
3179
3186
3180 2004-08-01 Fernando Perez <fperez@colorado.edu>
3187 2004-08-01 Fernando Perez <fperez@colorado.edu>
3181
3188
3182 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3189 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3183 for building ipython to be a parameter. All this is necessary
3190 for building ipython to be a parameter. All this is necessary
3184 right now to have a multithreaded version, but this insane
3191 right now to have a multithreaded version, but this insane
3185 non-design will be cleaned up soon. For now, it's a hack that
3192 non-design will be cleaned up soon. For now, it's a hack that
3186 works.
3193 works.
3187
3194
3188 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3195 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3189 args in various places. No bugs so far, but it's a dangerous
3196 args in various places. No bugs so far, but it's a dangerous
3190 practice.
3197 practice.
3191
3198
3192 2004-07-31 Fernando Perez <fperez@colorado.edu>
3199 2004-07-31 Fernando Perez <fperez@colorado.edu>
3193
3200
3194 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3201 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3195 fix completion of files with dots in their names under most
3202 fix completion of files with dots in their names under most
3196 profiles (pysh was OK because the completion order is different).
3203 profiles (pysh was OK because the completion order is different).
3197
3204
3198 2004-07-27 Fernando Perez <fperez@colorado.edu>
3205 2004-07-27 Fernando Perez <fperez@colorado.edu>
3199
3206
3200 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3207 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3201 keywords manually, b/c the one in keyword.py was removed in python
3208 keywords manually, b/c the one in keyword.py was removed in python
3202 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3209 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3203 This is NOT a bug under python 2.3 and earlier.
3210 This is NOT a bug under python 2.3 and earlier.
3204
3211
3205 2004-07-26 Fernando Perez <fperez@colorado.edu>
3212 2004-07-26 Fernando Perez <fperez@colorado.edu>
3206
3213
3207 * IPython/ultraTB.py (VerboseTB.text): Add another
3214 * IPython/ultraTB.py (VerboseTB.text): Add another
3208 linecache.checkcache() call to try to prevent inspect.py from
3215 linecache.checkcache() call to try to prevent inspect.py from
3209 crashing under python 2.3. I think this fixes
3216 crashing under python 2.3. I think this fixes
3210 http://www.scipy.net/roundup/ipython/issue17.
3217 http://www.scipy.net/roundup/ipython/issue17.
3211
3218
3212 2004-07-26 *** Released version 0.6.2
3219 2004-07-26 *** Released version 0.6.2
3213
3220
3214 2004-07-26 Fernando Perez <fperez@colorado.edu>
3221 2004-07-26 Fernando Perez <fperez@colorado.edu>
3215
3222
3216 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3223 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3217 fail for any number.
3224 fail for any number.
3218 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3225 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3219 empty bookmarks.
3226 empty bookmarks.
3220
3227
3221 2004-07-26 *** Released version 0.6.1
3228 2004-07-26 *** Released version 0.6.1
3222
3229
3223 2004-07-26 Fernando Perez <fperez@colorado.edu>
3230 2004-07-26 Fernando Perez <fperez@colorado.edu>
3224
3231
3225 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3232 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3226
3233
3227 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3234 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3228 escaping '()[]{}' in filenames.
3235 escaping '()[]{}' in filenames.
3229
3236
3230 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3237 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3231 Python 2.2 users who lack a proper shlex.split.
3238 Python 2.2 users who lack a proper shlex.split.
3232
3239
3233 2004-07-19 Fernando Perez <fperez@colorado.edu>
3240 2004-07-19 Fernando Perez <fperez@colorado.edu>
3234
3241
3235 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3242 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3236 for reading readline's init file. I follow the normal chain:
3243 for reading readline's init file. I follow the normal chain:
3237 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3244 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3238 report by Mike Heeter. This closes
3245 report by Mike Heeter. This closes
3239 http://www.scipy.net/roundup/ipython/issue16.
3246 http://www.scipy.net/roundup/ipython/issue16.
3240
3247
3241 2004-07-18 Fernando Perez <fperez@colorado.edu>
3248 2004-07-18 Fernando Perez <fperez@colorado.edu>
3242
3249
3243 * IPython/iplib.py (__init__): Add better handling of '\' under
3250 * IPython/iplib.py (__init__): Add better handling of '\' under
3244 Win32 for filenames. After a patch by Ville.
3251 Win32 for filenames. After a patch by Ville.
3245
3252
3246 2004-07-17 Fernando Perez <fperez@colorado.edu>
3253 2004-07-17 Fernando Perez <fperez@colorado.edu>
3247
3254
3248 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3255 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3249 autocalling would be triggered for 'foo is bar' if foo is
3256 autocalling would be triggered for 'foo is bar' if foo is
3250 callable. I also cleaned up the autocall detection code to use a
3257 callable. I also cleaned up the autocall detection code to use a
3251 regexp, which is faster. Bug reported by Alexander Schmolck.
3258 regexp, which is faster. Bug reported by Alexander Schmolck.
3252
3259
3253 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3260 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3254 '?' in them would confuse the help system. Reported by Alex
3261 '?' in them would confuse the help system. Reported by Alex
3255 Schmolck.
3262 Schmolck.
3256
3263
3257 2004-07-16 Fernando Perez <fperez@colorado.edu>
3264 2004-07-16 Fernando Perez <fperez@colorado.edu>
3258
3265
3259 * IPython/GnuplotInteractive.py (__all__): added plot2.
3266 * IPython/GnuplotInteractive.py (__all__): added plot2.
3260
3267
3261 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3268 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3262 plotting dictionaries, lists or tuples of 1d arrays.
3269 plotting dictionaries, lists or tuples of 1d arrays.
3263
3270
3264 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3271 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3265 optimizations.
3272 optimizations.
3266
3273
3267 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3274 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3268 the information which was there from Janko's original IPP code:
3275 the information which was there from Janko's original IPP code:
3269
3276
3270 03.05.99 20:53 porto.ifm.uni-kiel.de
3277 03.05.99 20:53 porto.ifm.uni-kiel.de
3271 --Started changelog.
3278 --Started changelog.
3272 --make clear do what it say it does
3279 --make clear do what it say it does
3273 --added pretty output of lines from inputcache
3280 --added pretty output of lines from inputcache
3274 --Made Logger a mixin class, simplifies handling of switches
3281 --Made Logger a mixin class, simplifies handling of switches
3275 --Added own completer class. .string<TAB> expands to last history
3282 --Added own completer class. .string<TAB> expands to last history
3276 line which starts with string. The new expansion is also present
3283 line which starts with string. The new expansion is also present
3277 with Ctrl-r from the readline library. But this shows, who this
3284 with Ctrl-r from the readline library. But this shows, who this
3278 can be done for other cases.
3285 can be done for other cases.
3279 --Added convention that all shell functions should accept a
3286 --Added convention that all shell functions should accept a
3280 parameter_string This opens the door for different behaviour for
3287 parameter_string This opens the door for different behaviour for
3281 each function. @cd is a good example of this.
3288 each function. @cd is a good example of this.
3282
3289
3283 04.05.99 12:12 porto.ifm.uni-kiel.de
3290 04.05.99 12:12 porto.ifm.uni-kiel.de
3284 --added logfile rotation
3291 --added logfile rotation
3285 --added new mainloop method which freezes first the namespace
3292 --added new mainloop method which freezes first the namespace
3286
3293
3287 07.05.99 21:24 porto.ifm.uni-kiel.de
3294 07.05.99 21:24 porto.ifm.uni-kiel.de
3288 --added the docreader classes. Now there is a help system.
3295 --added the docreader classes. Now there is a help system.
3289 -This is only a first try. Currently it's not easy to put new
3296 -This is only a first try. Currently it's not easy to put new
3290 stuff in the indices. But this is the way to go. Info would be
3297 stuff in the indices. But this is the way to go. Info would be
3291 better, but HTML is every where and not everybody has an info
3298 better, but HTML is every where and not everybody has an info
3292 system installed and it's not so easy to change html-docs to info.
3299 system installed and it's not so easy to change html-docs to info.
3293 --added global logfile option
3300 --added global logfile option
3294 --there is now a hook for object inspection method pinfo needs to
3301 --there is now a hook for object inspection method pinfo needs to
3295 be provided for this. Can be reached by two '??'.
3302 be provided for this. Can be reached by two '??'.
3296
3303
3297 08.05.99 20:51 porto.ifm.uni-kiel.de
3304 08.05.99 20:51 porto.ifm.uni-kiel.de
3298 --added a README
3305 --added a README
3299 --bug in rc file. Something has changed so functions in the rc
3306 --bug in rc file. Something has changed so functions in the rc
3300 file need to reference the shell and not self. Not clear if it's a
3307 file need to reference the shell and not self. Not clear if it's a
3301 bug or feature.
3308 bug or feature.
3302 --changed rc file for new behavior
3309 --changed rc file for new behavior
3303
3310
3304 2004-07-15 Fernando Perez <fperez@colorado.edu>
3311 2004-07-15 Fernando Perez <fperez@colorado.edu>
3305
3312
3306 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3313 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3307 cache was falling out of sync in bizarre manners when multi-line
3314 cache was falling out of sync in bizarre manners when multi-line
3308 input was present. Minor optimizations and cleanup.
3315 input was present. Minor optimizations and cleanup.
3309
3316
3310 (Logger): Remove old Changelog info for cleanup. This is the
3317 (Logger): Remove old Changelog info for cleanup. This is the
3311 information which was there from Janko's original code:
3318 information which was there from Janko's original code:
3312
3319
3313 Changes to Logger: - made the default log filename a parameter
3320 Changes to Logger: - made the default log filename a parameter
3314
3321
3315 - put a check for lines beginning with !@? in log(). Needed
3322 - put a check for lines beginning with !@? in log(). Needed
3316 (even if the handlers properly log their lines) for mid-session
3323 (even if the handlers properly log their lines) for mid-session
3317 logging activation to work properly. Without this, lines logged
3324 logging activation to work properly. Without this, lines logged
3318 in mid session, which get read from the cache, would end up
3325 in mid session, which get read from the cache, would end up
3319 'bare' (with !@? in the open) in the log. Now they are caught
3326 'bare' (with !@? in the open) in the log. Now they are caught
3320 and prepended with a #.
3327 and prepended with a #.
3321
3328
3322 * IPython/iplib.py (InteractiveShell.init_readline): added check
3329 * IPython/iplib.py (InteractiveShell.init_readline): added check
3323 in case MagicCompleter fails to be defined, so we don't crash.
3330 in case MagicCompleter fails to be defined, so we don't crash.
3324
3331
3325 2004-07-13 Fernando Perez <fperez@colorado.edu>
3332 2004-07-13 Fernando Perez <fperez@colorado.edu>
3326
3333
3327 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3334 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3328 of EPS if the requested filename ends in '.eps'.
3335 of EPS if the requested filename ends in '.eps'.
3329
3336
3330 2004-07-04 Fernando Perez <fperez@colorado.edu>
3337 2004-07-04 Fernando Perez <fperez@colorado.edu>
3331
3338
3332 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3339 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3333 escaping of quotes when calling the shell.
3340 escaping of quotes when calling the shell.
3334
3341
3335 2004-07-02 Fernando Perez <fperez@colorado.edu>
3342 2004-07-02 Fernando Perez <fperez@colorado.edu>
3336
3343
3337 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3344 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3338 gettext not working because we were clobbering '_'. Fixes
3345 gettext not working because we were clobbering '_'. Fixes
3339 http://www.scipy.net/roundup/ipython/issue6.
3346 http://www.scipy.net/roundup/ipython/issue6.
3340
3347
3341 2004-07-01 Fernando Perez <fperez@colorado.edu>
3348 2004-07-01 Fernando Perez <fperez@colorado.edu>
3342
3349
3343 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3350 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3344 into @cd. Patch by Ville.
3351 into @cd. Patch by Ville.
3345
3352
3346 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3353 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3347 new function to store things after ipmaker runs. Patch by Ville.
3354 new function to store things after ipmaker runs. Patch by Ville.
3348 Eventually this will go away once ipmaker is removed and the class
3355 Eventually this will go away once ipmaker is removed and the class
3349 gets cleaned up, but for now it's ok. Key functionality here is
3356 gets cleaned up, but for now it's ok. Key functionality here is
3350 the addition of the persistent storage mechanism, a dict for
3357 the addition of the persistent storage mechanism, a dict for
3351 keeping data across sessions (for now just bookmarks, but more can
3358 keeping data across sessions (for now just bookmarks, but more can
3352 be implemented later).
3359 be implemented later).
3353
3360
3354 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3361 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3355 persistent across sections. Patch by Ville, I modified it
3362 persistent across sections. Patch by Ville, I modified it
3356 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3363 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3357 added a '-l' option to list all bookmarks.
3364 added a '-l' option to list all bookmarks.
3358
3365
3359 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3366 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3360 center for cleanup. Registered with atexit.register(). I moved
3367 center for cleanup. Registered with atexit.register(). I moved
3361 here the old exit_cleanup(). After a patch by Ville.
3368 here the old exit_cleanup(). After a patch by Ville.
3362
3369
3363 * IPython/Magic.py (get_py_filename): added '~' to the accepted
3370 * IPython/Magic.py (get_py_filename): added '~' to the accepted
3364 characters in the hacked shlex_split for python 2.2.
3371 characters in the hacked shlex_split for python 2.2.
3365
3372
3366 * IPython/iplib.py (file_matches): more fixes to filenames with
3373 * IPython/iplib.py (file_matches): more fixes to filenames with
3367 whitespace in them. It's not perfect, but limitations in python's
3374 whitespace in them. It's not perfect, but limitations in python's
3368 readline make it impossible to go further.
3375 readline make it impossible to go further.
3369
3376
3370 2004-06-29 Fernando Perez <fperez@colorado.edu>
3377 2004-06-29 Fernando Perez <fperez@colorado.edu>
3371
3378
3372 * IPython/iplib.py (file_matches): escape whitespace correctly in
3379 * IPython/iplib.py (file_matches): escape whitespace correctly in
3373 filename completions. Bug reported by Ville.
3380 filename completions. Bug reported by Ville.
3374
3381
3375 2004-06-28 Fernando Perez <fperez@colorado.edu>
3382 2004-06-28 Fernando Perez <fperez@colorado.edu>
3376
3383
3377 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
3384 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
3378 the history file will be called 'history-PROFNAME' (or just
3385 the history file will be called 'history-PROFNAME' (or just
3379 'history' if no profile is loaded). I was getting annoyed at
3386 'history' if no profile is loaded). I was getting annoyed at
3380 getting my Numerical work history clobbered by pysh sessions.
3387 getting my Numerical work history clobbered by pysh sessions.
3381
3388
3382 * IPython/iplib.py (InteractiveShell.__init__): Internal
3389 * IPython/iplib.py (InteractiveShell.__init__): Internal
3383 getoutputerror() function so that we can honor the system_verbose
3390 getoutputerror() function so that we can honor the system_verbose
3384 flag for _all_ system calls. I also added escaping of #
3391 flag for _all_ system calls. I also added escaping of #
3385 characters here to avoid confusing Itpl.
3392 characters here to avoid confusing Itpl.
3386
3393
3387 * IPython/Magic.py (shlex_split): removed call to shell in
3394 * IPython/Magic.py (shlex_split): removed call to shell in
3388 parse_options and replaced it with shlex.split(). The annoying
3395 parse_options and replaced it with shlex.split(). The annoying
3389 part was that in Python 2.2, shlex.split() doesn't exist, so I had
3396 part was that in Python 2.2, shlex.split() doesn't exist, so I had
3390 to backport it from 2.3, with several frail hacks (the shlex
3397 to backport it from 2.3, with several frail hacks (the shlex
3391 module is rather limited in 2.2). Thanks to a suggestion by Ville
3398 module is rather limited in 2.2). Thanks to a suggestion by Ville
3392 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
3399 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
3393 problem.
3400 problem.
3394
3401
3395 (Magic.magic_system_verbose): new toggle to print the actual
3402 (Magic.magic_system_verbose): new toggle to print the actual
3396 system calls made by ipython. Mainly for debugging purposes.
3403 system calls made by ipython. Mainly for debugging purposes.
3397
3404
3398 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
3405 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
3399 doesn't support persistence. Reported (and fix suggested) by
3406 doesn't support persistence. Reported (and fix suggested) by
3400 Travis Caldwell <travis_caldwell2000@yahoo.com>.
3407 Travis Caldwell <travis_caldwell2000@yahoo.com>.
3401
3408
3402 2004-06-26 Fernando Perez <fperez@colorado.edu>
3409 2004-06-26 Fernando Perez <fperez@colorado.edu>
3403
3410
3404 * IPython/Logger.py (Logger.log): fix to handle correctly empty
3411 * IPython/Logger.py (Logger.log): fix to handle correctly empty
3405 continue prompts.
3412 continue prompts.
3406
3413
3407 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
3414 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
3408 function (basically a big docstring) and a few more things here to
3415 function (basically a big docstring) and a few more things here to
3409 speedup startup. pysh.py is now very lightweight. We want because
3416 speedup startup. pysh.py is now very lightweight. We want because
3410 it gets execfile'd, while InterpreterExec gets imported, so
3417 it gets execfile'd, while InterpreterExec gets imported, so
3411 byte-compilation saves time.
3418 byte-compilation saves time.
3412
3419
3413 2004-06-25 Fernando Perez <fperez@colorado.edu>
3420 2004-06-25 Fernando Perez <fperez@colorado.edu>
3414
3421
3415 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
3422 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
3416 -NUM', which was recently broken.
3423 -NUM', which was recently broken.
3417
3424
3418 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
3425 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
3419 in multi-line input (but not !!, which doesn't make sense there).
3426 in multi-line input (but not !!, which doesn't make sense there).
3420
3427
3421 * IPython/UserConfig/ipythonrc: made autoindent on by default.
3428 * IPython/UserConfig/ipythonrc: made autoindent on by default.
3422 It's just too useful, and people can turn it off in the less
3429 It's just too useful, and people can turn it off in the less
3423 common cases where it's a problem.
3430 common cases where it's a problem.
3424
3431
3425 2004-06-24 Fernando Perez <fperez@colorado.edu>
3432 2004-06-24 Fernando Perez <fperez@colorado.edu>
3426
3433
3427 * IPython/iplib.py (InteractiveShell._prefilter): big change -
3434 * IPython/iplib.py (InteractiveShell._prefilter): big change -
3428 special syntaxes (like alias calling) is now allied in multi-line
3435 special syntaxes (like alias calling) is now allied in multi-line
3429 input. This is still _very_ experimental, but it's necessary for
3436 input. This is still _very_ experimental, but it's necessary for
3430 efficient shell usage combining python looping syntax with system
3437 efficient shell usage combining python looping syntax with system
3431 calls. For now it's restricted to aliases, I don't think it
3438 calls. For now it's restricted to aliases, I don't think it
3432 really even makes sense to have this for magics.
3439 really even makes sense to have this for magics.
3433
3440
3434 2004-06-23 Fernando Perez <fperez@colorado.edu>
3441 2004-06-23 Fernando Perez <fperez@colorado.edu>
3435
3442
3436 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
3443 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
3437 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
3444 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
3438
3445
3439 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
3446 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
3440 extensions under Windows (after code sent by Gary Bishop). The
3447 extensions under Windows (after code sent by Gary Bishop). The
3441 extensions considered 'executable' are stored in IPython's rc
3448 extensions considered 'executable' are stored in IPython's rc
3442 structure as win_exec_ext.
3449 structure as win_exec_ext.
3443
3450
3444 * IPython/genutils.py (shell): new function, like system() but
3451 * IPython/genutils.py (shell): new function, like system() but
3445 without return value. Very useful for interactive shell work.
3452 without return value. Very useful for interactive shell work.
3446
3453
3447 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
3454 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
3448 delete aliases.
3455 delete aliases.
3449
3456
3450 * IPython/iplib.py (InteractiveShell.alias_table_update): make
3457 * IPython/iplib.py (InteractiveShell.alias_table_update): make
3451 sure that the alias table doesn't contain python keywords.
3458 sure that the alias table doesn't contain python keywords.
3452
3459
3453 2004-06-21 Fernando Perez <fperez@colorado.edu>
3460 2004-06-21 Fernando Perez <fperez@colorado.edu>
3454
3461
3455 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
3462 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
3456 non-existent items are found in $PATH. Reported by Thorsten.
3463 non-existent items are found in $PATH. Reported by Thorsten.
3457
3464
3458 2004-06-20 Fernando Perez <fperez@colorado.edu>
3465 2004-06-20 Fernando Perez <fperez@colorado.edu>
3459
3466
3460 * IPython/iplib.py (complete): modified the completer so that the
3467 * IPython/iplib.py (complete): modified the completer so that the
3461 order of priorities can be easily changed at runtime.
3468 order of priorities can be easily changed at runtime.
3462
3469
3463 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
3470 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
3464 Modified to auto-execute all lines beginning with '~', '/' or '.'.
3471 Modified to auto-execute all lines beginning with '~', '/' or '.'.
3465
3472
3466 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
3473 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
3467 expand Python variables prepended with $ in all system calls. The
3474 expand Python variables prepended with $ in all system calls. The
3468 same was done to InteractiveShell.handle_shell_escape. Now all
3475 same was done to InteractiveShell.handle_shell_escape. Now all
3469 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
3476 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
3470 expansion of python variables and expressions according to the
3477 expansion of python variables and expressions according to the
3471 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
3478 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
3472
3479
3473 Though PEP-215 has been rejected, a similar (but simpler) one
3480 Though PEP-215 has been rejected, a similar (but simpler) one
3474 seems like it will go into Python 2.4, PEP-292 -
3481 seems like it will go into Python 2.4, PEP-292 -
3475 http://www.python.org/peps/pep-0292.html.
3482 http://www.python.org/peps/pep-0292.html.
3476
3483
3477 I'll keep the full syntax of PEP-215, since IPython has since the
3484 I'll keep the full syntax of PEP-215, since IPython has since the
3478 start used Ka-Ping Yee's reference implementation discussed there
3485 start used Ka-Ping Yee's reference implementation discussed there
3479 (Itpl), and I actually like the powerful semantics it offers.
3486 (Itpl), and I actually like the powerful semantics it offers.
3480
3487
3481 In order to access normal shell variables, the $ has to be escaped
3488 In order to access normal shell variables, the $ has to be escaped
3482 via an extra $. For example:
3489 via an extra $. For example:
3483
3490
3484 In [7]: PATH='a python variable'
3491 In [7]: PATH='a python variable'
3485
3492
3486 In [8]: !echo $PATH
3493 In [8]: !echo $PATH
3487 a python variable
3494 a python variable
3488
3495
3489 In [9]: !echo $$PATH
3496 In [9]: !echo $$PATH
3490 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
3497 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
3491
3498
3492 (Magic.parse_options): escape $ so the shell doesn't evaluate
3499 (Magic.parse_options): escape $ so the shell doesn't evaluate
3493 things prematurely.
3500 things prematurely.
3494
3501
3495 * IPython/iplib.py (InteractiveShell.call_alias): added the
3502 * IPython/iplib.py (InteractiveShell.call_alias): added the
3496 ability for aliases to expand python variables via $.
3503 ability for aliases to expand python variables via $.
3497
3504
3498 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
3505 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
3499 system, now there's a @rehash/@rehashx pair of magics. These work
3506 system, now there's a @rehash/@rehashx pair of magics. These work
3500 like the csh rehash command, and can be invoked at any time. They
3507 like the csh rehash command, and can be invoked at any time. They
3501 build a table of aliases to everything in the user's $PATH
3508 build a table of aliases to everything in the user's $PATH
3502 (@rehash uses everything, @rehashx is slower but only adds
3509 (@rehash uses everything, @rehashx is slower but only adds
3503 executable files). With this, the pysh.py-based shell profile can
3510 executable files). With this, the pysh.py-based shell profile can
3504 now simply call rehash upon startup, and full access to all
3511 now simply call rehash upon startup, and full access to all
3505 programs in the user's path is obtained.
3512 programs in the user's path is obtained.
3506
3513
3507 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
3514 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
3508 functionality is now fully in place. I removed the old dynamic
3515 functionality is now fully in place. I removed the old dynamic
3509 code generation based approach, in favor of a much lighter one
3516 code generation based approach, in favor of a much lighter one
3510 based on a simple dict. The advantage is that this allows me to
3517 based on a simple dict. The advantage is that this allows me to
3511 now have thousands of aliases with negligible cost (unthinkable
3518 now have thousands of aliases with negligible cost (unthinkable
3512 with the old system).
3519 with the old system).
3513
3520
3514 2004-06-19 Fernando Perez <fperez@colorado.edu>
3521 2004-06-19 Fernando Perez <fperez@colorado.edu>
3515
3522
3516 * IPython/iplib.py (__init__): extended MagicCompleter class to
3523 * IPython/iplib.py (__init__): extended MagicCompleter class to
3517 also complete (last in priority) on user aliases.
3524 also complete (last in priority) on user aliases.
3518
3525
3519 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
3526 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
3520 call to eval.
3527 call to eval.
3521 (ItplNS.__init__): Added a new class which functions like Itpl,
3528 (ItplNS.__init__): Added a new class which functions like Itpl,
3522 but allows configuring the namespace for the evaluation to occur
3529 but allows configuring the namespace for the evaluation to occur
3523 in.
3530 in.
3524
3531
3525 2004-06-18 Fernando Perez <fperez@colorado.edu>
3532 2004-06-18 Fernando Perez <fperez@colorado.edu>
3526
3533
3527 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
3534 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
3528 better message when 'exit' or 'quit' are typed (a common newbie
3535 better message when 'exit' or 'quit' are typed (a common newbie
3529 confusion).
3536 confusion).
3530
3537
3531 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
3538 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
3532 check for Windows users.
3539 check for Windows users.
3533
3540
3534 * IPython/iplib.py (InteractiveShell.user_setup): removed
3541 * IPython/iplib.py (InteractiveShell.user_setup): removed
3535 disabling of colors for Windows. I'll test at runtime and issue a
3542 disabling of colors for Windows. I'll test at runtime and issue a
3536 warning if Gary's readline isn't found, as to nudge users to
3543 warning if Gary's readline isn't found, as to nudge users to
3537 download it.
3544 download it.
3538
3545
3539 2004-06-16 Fernando Perez <fperez@colorado.edu>
3546 2004-06-16 Fernando Perez <fperez@colorado.edu>
3540
3547
3541 * IPython/genutils.py (Stream.__init__): changed to print errors
3548 * IPython/genutils.py (Stream.__init__): changed to print errors
3542 to sys.stderr. I had a circular dependency here. Now it's
3549 to sys.stderr. I had a circular dependency here. Now it's
3543 possible to run ipython as IDLE's shell (consider this pre-alpha,
3550 possible to run ipython as IDLE's shell (consider this pre-alpha,
3544 since true stdout things end up in the starting terminal instead
3551 since true stdout things end up in the starting terminal instead
3545 of IDLE's out).
3552 of IDLE's out).
3546
3553
3547 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3554 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3548 users who haven't # updated their prompt_in2 definitions. Remove
3555 users who haven't # updated their prompt_in2 definitions. Remove
3549 eventually.
3556 eventually.
3550 (multiple_replace): added credit to original ASPN recipe.
3557 (multiple_replace): added credit to original ASPN recipe.
3551
3558
3552 2004-06-15 Fernando Perez <fperez@colorado.edu>
3559 2004-06-15 Fernando Perez <fperez@colorado.edu>
3553
3560
3554 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3561 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3555 list of auto-defined aliases.
3562 list of auto-defined aliases.
3556
3563
3557 2004-06-13 Fernando Perez <fperez@colorado.edu>
3564 2004-06-13 Fernando Perez <fperez@colorado.edu>
3558
3565
3559 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3566 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3560 install was really requested (so setup.py can be used for other
3567 install was really requested (so setup.py can be used for other
3561 things under Windows).
3568 things under Windows).
3562
3569
3563 2004-06-10 Fernando Perez <fperez@colorado.edu>
3570 2004-06-10 Fernando Perez <fperez@colorado.edu>
3564
3571
3565 * IPython/Logger.py (Logger.create_log): Manually remove any old
3572 * IPython/Logger.py (Logger.create_log): Manually remove any old
3566 backup, since os.remove may fail under Windows. Fixes bug
3573 backup, since os.remove may fail under Windows. Fixes bug
3567 reported by Thorsten.
3574 reported by Thorsten.
3568
3575
3569 2004-06-09 Fernando Perez <fperez@colorado.edu>
3576 2004-06-09 Fernando Perez <fperez@colorado.edu>
3570
3577
3571 * examples/example-embed.py: fixed all references to %n (replaced
3578 * examples/example-embed.py: fixed all references to %n (replaced
3572 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3579 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3573 for all examples and the manual as well.
3580 for all examples and the manual as well.
3574
3581
3575 2004-06-08 Fernando Perez <fperez@colorado.edu>
3582 2004-06-08 Fernando Perez <fperez@colorado.edu>
3576
3583
3577 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3584 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3578 alignment and color management. All 3 prompt subsystems now
3585 alignment and color management. All 3 prompt subsystems now
3579 inherit from BasePrompt.
3586 inherit from BasePrompt.
3580
3587
3581 * tools/release: updates for windows installer build and tag rpms
3588 * tools/release: updates for windows installer build and tag rpms
3582 with python version (since paths are fixed).
3589 with python version (since paths are fixed).
3583
3590
3584 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3591 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3585 which will become eventually obsolete. Also fixed the default
3592 which will become eventually obsolete. Also fixed the default
3586 prompt_in2 to use \D, so at least new users start with the correct
3593 prompt_in2 to use \D, so at least new users start with the correct
3587 defaults.
3594 defaults.
3588 WARNING: Users with existing ipythonrc files will need to apply
3595 WARNING: Users with existing ipythonrc files will need to apply
3589 this fix manually!
3596 this fix manually!
3590
3597
3591 * setup.py: make windows installer (.exe). This is finally the
3598 * setup.py: make windows installer (.exe). This is finally the
3592 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3599 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3593 which I hadn't included because it required Python 2.3 (or recent
3600 which I hadn't included because it required Python 2.3 (or recent
3594 distutils).
3601 distutils).
3595
3602
3596 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3603 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3597 usage of new '\D' escape.
3604 usage of new '\D' escape.
3598
3605
3599 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3606 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3600 lacks os.getuid())
3607 lacks os.getuid())
3601 (CachedOutput.set_colors): Added the ability to turn coloring
3608 (CachedOutput.set_colors): Added the ability to turn coloring
3602 on/off with @colors even for manually defined prompt colors. It
3609 on/off with @colors even for manually defined prompt colors. It
3603 uses a nasty global, but it works safely and via the generic color
3610 uses a nasty global, but it works safely and via the generic color
3604 handling mechanism.
3611 handling mechanism.
3605 (Prompt2.__init__): Introduced new escape '\D' for continuation
3612 (Prompt2.__init__): Introduced new escape '\D' for continuation
3606 prompts. It represents the counter ('\#') as dots.
3613 prompts. It represents the counter ('\#') as dots.
3607 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3614 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3608 need to update their ipythonrc files and replace '%n' with '\D' in
3615 need to update their ipythonrc files and replace '%n' with '\D' in
3609 their prompt_in2 settings everywhere. Sorry, but there's
3616 their prompt_in2 settings everywhere. Sorry, but there's
3610 otherwise no clean way to get all prompts to properly align. The
3617 otherwise no clean way to get all prompts to properly align. The
3611 ipythonrc shipped with IPython has been updated.
3618 ipythonrc shipped with IPython has been updated.
3612
3619
3613 2004-06-07 Fernando Perez <fperez@colorado.edu>
3620 2004-06-07 Fernando Perez <fperez@colorado.edu>
3614
3621
3615 * setup.py (isfile): Pass local_icons option to latex2html, so the
3622 * setup.py (isfile): Pass local_icons option to latex2html, so the
3616 resulting HTML file is self-contained. Thanks to
3623 resulting HTML file is self-contained. Thanks to
3617 dryice-AT-liu.com.cn for the tip.
3624 dryice-AT-liu.com.cn for the tip.
3618
3625
3619 * pysh.py: I created a new profile 'shell', which implements a
3626 * pysh.py: I created a new profile 'shell', which implements a
3620 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3627 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3621 system shell, nor will it become one anytime soon. It's mainly
3628 system shell, nor will it become one anytime soon. It's mainly
3622 meant to illustrate the use of the new flexible bash-like prompts.
3629 meant to illustrate the use of the new flexible bash-like prompts.
3623 I guess it could be used by hardy souls for true shell management,
3630 I guess it could be used by hardy souls for true shell management,
3624 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3631 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3625 profile. This uses the InterpreterExec extension provided by
3632 profile. This uses the InterpreterExec extension provided by
3626 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3633 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3627
3634
3628 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3635 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3629 auto-align itself with the length of the previous input prompt
3636 auto-align itself with the length of the previous input prompt
3630 (taking into account the invisible color escapes).
3637 (taking into account the invisible color escapes).
3631 (CachedOutput.__init__): Large restructuring of this class. Now
3638 (CachedOutput.__init__): Large restructuring of this class. Now
3632 all three prompts (primary1, primary2, output) are proper objects,
3639 all three prompts (primary1, primary2, output) are proper objects,
3633 managed by the 'parent' CachedOutput class. The code is still a
3640 managed by the 'parent' CachedOutput class. The code is still a
3634 bit hackish (all prompts share state via a pointer to the cache),
3641 bit hackish (all prompts share state via a pointer to the cache),
3635 but it's overall far cleaner than before.
3642 but it's overall far cleaner than before.
3636
3643
3637 * IPython/genutils.py (getoutputerror): modified to add verbose,
3644 * IPython/genutils.py (getoutputerror): modified to add verbose,
3638 debug and header options. This makes the interface of all getout*
3645 debug and header options. This makes the interface of all getout*
3639 functions uniform.
3646 functions uniform.
3640 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3647 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3641
3648
3642 * IPython/Magic.py (Magic.default_option): added a function to
3649 * IPython/Magic.py (Magic.default_option): added a function to
3643 allow registering default options for any magic command. This
3650 allow registering default options for any magic command. This
3644 makes it easy to have profiles which customize the magics globally
3651 makes it easy to have profiles which customize the magics globally
3645 for a certain use. The values set through this function are
3652 for a certain use. The values set through this function are
3646 picked up by the parse_options() method, which all magics should
3653 picked up by the parse_options() method, which all magics should
3647 use to parse their options.
3654 use to parse their options.
3648
3655
3649 * IPython/genutils.py (warn): modified the warnings framework to
3656 * IPython/genutils.py (warn): modified the warnings framework to
3650 use the Term I/O class. I'm trying to slowly unify all of
3657 use the Term I/O class. I'm trying to slowly unify all of
3651 IPython's I/O operations to pass through Term.
3658 IPython's I/O operations to pass through Term.
3652
3659
3653 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3660 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3654 the secondary prompt to correctly match the length of the primary
3661 the secondary prompt to correctly match the length of the primary
3655 one for any prompt. Now multi-line code will properly line up
3662 one for any prompt. Now multi-line code will properly line up
3656 even for path dependent prompts, such as the new ones available
3663 even for path dependent prompts, such as the new ones available
3657 via the prompt_specials.
3664 via the prompt_specials.
3658
3665
3659 2004-06-06 Fernando Perez <fperez@colorado.edu>
3666 2004-06-06 Fernando Perez <fperez@colorado.edu>
3660
3667
3661 * IPython/Prompts.py (prompt_specials): Added the ability to have
3668 * IPython/Prompts.py (prompt_specials): Added the ability to have
3662 bash-like special sequences in the prompts, which get
3669 bash-like special sequences in the prompts, which get
3663 automatically expanded. Things like hostname, current working
3670 automatically expanded. Things like hostname, current working
3664 directory and username are implemented already, but it's easy to
3671 directory and username are implemented already, but it's easy to
3665 add more in the future. Thanks to a patch by W.J. van der Laan
3672 add more in the future. Thanks to a patch by W.J. van der Laan
3666 <gnufnork-AT-hetdigitalegat.nl>
3673 <gnufnork-AT-hetdigitalegat.nl>
3667 (prompt_specials): Added color support for prompt strings, so
3674 (prompt_specials): Added color support for prompt strings, so
3668 users can define arbitrary color setups for their prompts.
3675 users can define arbitrary color setups for their prompts.
3669
3676
3670 2004-06-05 Fernando Perez <fperez@colorado.edu>
3677 2004-06-05 Fernando Perez <fperez@colorado.edu>
3671
3678
3672 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3679 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3673 code to load Gary Bishop's readline and configure it
3680 code to load Gary Bishop's readline and configure it
3674 automatically. Thanks to Gary for help on this.
3681 automatically. Thanks to Gary for help on this.
3675
3682
3676 2004-06-01 Fernando Perez <fperez@colorado.edu>
3683 2004-06-01 Fernando Perez <fperez@colorado.edu>
3677
3684
3678 * IPython/Logger.py (Logger.create_log): fix bug for logging
3685 * IPython/Logger.py (Logger.create_log): fix bug for logging
3679 with no filename (previous fix was incomplete).
3686 with no filename (previous fix was incomplete).
3680
3687
3681 2004-05-25 Fernando Perez <fperez@colorado.edu>
3688 2004-05-25 Fernando Perez <fperez@colorado.edu>
3682
3689
3683 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3690 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3684 parens would get passed to the shell.
3691 parens would get passed to the shell.
3685
3692
3686 2004-05-20 Fernando Perez <fperez@colorado.edu>
3693 2004-05-20 Fernando Perez <fperez@colorado.edu>
3687
3694
3688 * IPython/Magic.py (Magic.magic_prun): changed default profile
3695 * IPython/Magic.py (Magic.magic_prun): changed default profile
3689 sort order to 'time' (the more common profiling need).
3696 sort order to 'time' (the more common profiling need).
3690
3697
3691 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3698 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3692 so that source code shown is guaranteed in sync with the file on
3699 so that source code shown is guaranteed in sync with the file on
3693 disk (also changed in psource). Similar fix to the one for
3700 disk (also changed in psource). Similar fix to the one for
3694 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3701 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3695 <yann.ledu-AT-noos.fr>.
3702 <yann.ledu-AT-noos.fr>.
3696
3703
3697 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3704 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3698 with a single option would not be correctly parsed. Closes
3705 with a single option would not be correctly parsed. Closes
3699 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3706 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3700 introduced in 0.6.0 (on 2004-05-06).
3707 introduced in 0.6.0 (on 2004-05-06).
3701
3708
3702 2004-05-13 *** Released version 0.6.0
3709 2004-05-13 *** Released version 0.6.0
3703
3710
3704 2004-05-13 Fernando Perez <fperez@colorado.edu>
3711 2004-05-13 Fernando Perez <fperez@colorado.edu>
3705
3712
3706 * debian/: Added debian/ directory to CVS, so that debian support
3713 * debian/: Added debian/ directory to CVS, so that debian support
3707 is publicly accessible. The debian package is maintained by Jack
3714 is publicly accessible. The debian package is maintained by Jack
3708 Moffit <jack-AT-xiph.org>.
3715 Moffit <jack-AT-xiph.org>.
3709
3716
3710 * Documentation: included the notes about an ipython-based system
3717 * Documentation: included the notes about an ipython-based system
3711 shell (the hypothetical 'pysh') into the new_design.pdf document,
3718 shell (the hypothetical 'pysh') into the new_design.pdf document,
3712 so that these ideas get distributed to users along with the
3719 so that these ideas get distributed to users along with the
3713 official documentation.
3720 official documentation.
3714
3721
3715 2004-05-10 Fernando Perez <fperez@colorado.edu>
3722 2004-05-10 Fernando Perez <fperez@colorado.edu>
3716
3723
3717 * IPython/Logger.py (Logger.create_log): fix recently introduced
3724 * IPython/Logger.py (Logger.create_log): fix recently introduced
3718 bug (misindented line) where logstart would fail when not given an
3725 bug (misindented line) where logstart would fail when not given an
3719 explicit filename.
3726 explicit filename.
3720
3727
3721 2004-05-09 Fernando Perez <fperez@colorado.edu>
3728 2004-05-09 Fernando Perez <fperez@colorado.edu>
3722
3729
3723 * IPython/Magic.py (Magic.parse_options): skip system call when
3730 * IPython/Magic.py (Magic.parse_options): skip system call when
3724 there are no options to look for. Faster, cleaner for the common
3731 there are no options to look for. Faster, cleaner for the common
3725 case.
3732 case.
3726
3733
3727 * Documentation: many updates to the manual: describing Windows
3734 * Documentation: many updates to the manual: describing Windows
3728 support better, Gnuplot updates, credits, misc small stuff. Also
3735 support better, Gnuplot updates, credits, misc small stuff. Also
3729 updated the new_design doc a bit.
3736 updated the new_design doc a bit.
3730
3737
3731 2004-05-06 *** Released version 0.6.0.rc1
3738 2004-05-06 *** Released version 0.6.0.rc1
3732
3739
3733 2004-05-06 Fernando Perez <fperez@colorado.edu>
3740 2004-05-06 Fernando Perez <fperez@colorado.edu>
3734
3741
3735 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3742 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3736 operations to use the vastly more efficient list/''.join() method.
3743 operations to use the vastly more efficient list/''.join() method.
3737 (FormattedTB.text): Fix
3744 (FormattedTB.text): Fix
3738 http://www.scipy.net/roundup/ipython/issue12 - exception source
3745 http://www.scipy.net/roundup/ipython/issue12 - exception source
3739 extract not updated after reload. Thanks to Mike Salib
3746 extract not updated after reload. Thanks to Mike Salib
3740 <msalib-AT-mit.edu> for pinning the source of the problem.
3747 <msalib-AT-mit.edu> for pinning the source of the problem.
3741 Fortunately, the solution works inside ipython and doesn't require
3748 Fortunately, the solution works inside ipython and doesn't require
3742 any changes to python proper.
3749 any changes to python proper.
3743
3750
3744 * IPython/Magic.py (Magic.parse_options): Improved to process the
3751 * IPython/Magic.py (Magic.parse_options): Improved to process the
3745 argument list as a true shell would (by actually using the
3752 argument list as a true shell would (by actually using the
3746 underlying system shell). This way, all @magics automatically get
3753 underlying system shell). This way, all @magics automatically get
3747 shell expansion for variables. Thanks to a comment by Alex
3754 shell expansion for variables. Thanks to a comment by Alex
3748 Schmolck.
3755 Schmolck.
3749
3756
3750 2004-04-04 Fernando Perez <fperez@colorado.edu>
3757 2004-04-04 Fernando Perez <fperez@colorado.edu>
3751
3758
3752 * IPython/iplib.py (InteractiveShell.interact): Added a special
3759 * IPython/iplib.py (InteractiveShell.interact): Added a special
3753 trap for a debugger quit exception, which is basically impossible
3760 trap for a debugger quit exception, which is basically impossible
3754 to handle by normal mechanisms, given what pdb does to the stack.
3761 to handle by normal mechanisms, given what pdb does to the stack.
3755 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3762 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3756
3763
3757 2004-04-03 Fernando Perez <fperez@colorado.edu>
3764 2004-04-03 Fernando Perez <fperez@colorado.edu>
3758
3765
3759 * IPython/genutils.py (Term): Standardized the names of the Term
3766 * IPython/genutils.py (Term): Standardized the names of the Term
3760 class streams to cin/cout/cerr, following C++ naming conventions
3767 class streams to cin/cout/cerr, following C++ naming conventions
3761 (I can't use in/out/err because 'in' is not a valid attribute
3768 (I can't use in/out/err because 'in' is not a valid attribute
3762 name).
3769 name).
3763
3770
3764 * IPython/iplib.py (InteractiveShell.interact): don't increment
3771 * IPython/iplib.py (InteractiveShell.interact): don't increment
3765 the prompt if there's no user input. By Daniel 'Dang' Griffith
3772 the prompt if there's no user input. By Daniel 'Dang' Griffith
3766 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3773 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3767 Francois Pinard.
3774 Francois Pinard.
3768
3775
3769 2004-04-02 Fernando Perez <fperez@colorado.edu>
3776 2004-04-02 Fernando Perez <fperez@colorado.edu>
3770
3777
3771 * IPython/genutils.py (Stream.__init__): Modified to survive at
3778 * IPython/genutils.py (Stream.__init__): Modified to survive at
3772 least importing in contexts where stdin/out/err aren't true file
3779 least importing in contexts where stdin/out/err aren't true file
3773 objects, such as PyCrust (they lack fileno() and mode). However,
3780 objects, such as PyCrust (they lack fileno() and mode). However,
3774 the recovery facilities which rely on these things existing will
3781 the recovery facilities which rely on these things existing will
3775 not work.
3782 not work.
3776
3783
3777 2004-04-01 Fernando Perez <fperez@colorado.edu>
3784 2004-04-01 Fernando Perez <fperez@colorado.edu>
3778
3785
3779 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3786 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3780 use the new getoutputerror() function, so it properly
3787 use the new getoutputerror() function, so it properly
3781 distinguishes stdout/err.
3788 distinguishes stdout/err.
3782
3789
3783 * IPython/genutils.py (getoutputerror): added a function to
3790 * IPython/genutils.py (getoutputerror): added a function to
3784 capture separately the standard output and error of a command.
3791 capture separately the standard output and error of a command.
3785 After a comment from dang on the mailing lists. This code is
3792 After a comment from dang on the mailing lists. This code is
3786 basically a modified version of commands.getstatusoutput(), from
3793 basically a modified version of commands.getstatusoutput(), from
3787 the standard library.
3794 the standard library.
3788
3795
3789 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3796 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3790 '!!' as a special syntax (shorthand) to access @sx.
3797 '!!' as a special syntax (shorthand) to access @sx.
3791
3798
3792 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3799 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3793 command and return its output as a list split on '\n'.
3800 command and return its output as a list split on '\n'.
3794
3801
3795 2004-03-31 Fernando Perez <fperez@colorado.edu>
3802 2004-03-31 Fernando Perez <fperez@colorado.edu>
3796
3803
3797 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3804 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3798 method to dictionaries used as FakeModule instances if they lack
3805 method to dictionaries used as FakeModule instances if they lack
3799 it. At least pydoc in python2.3 breaks for runtime-defined
3806 it. At least pydoc in python2.3 breaks for runtime-defined
3800 functions without this hack. At some point I need to _really_
3807 functions without this hack. At some point I need to _really_
3801 understand what FakeModule is doing, because it's a gross hack.
3808 understand what FakeModule is doing, because it's a gross hack.
3802 But it solves Arnd's problem for now...
3809 But it solves Arnd's problem for now...
3803
3810
3804 2004-02-27 Fernando Perez <fperez@colorado.edu>
3811 2004-02-27 Fernando Perez <fperez@colorado.edu>
3805
3812
3806 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3813 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3807 mode would behave erratically. Also increased the number of
3814 mode would behave erratically. Also increased the number of
3808 possible logs in rotate mod to 999. Thanks to Rod Holland
3815 possible logs in rotate mod to 999. Thanks to Rod Holland
3809 <rhh@StructureLABS.com> for the report and fixes.
3816 <rhh@StructureLABS.com> for the report and fixes.
3810
3817
3811 2004-02-26 Fernando Perez <fperez@colorado.edu>
3818 2004-02-26 Fernando Perez <fperez@colorado.edu>
3812
3819
3813 * IPython/genutils.py (page): Check that the curses module really
3820 * IPython/genutils.py (page): Check that the curses module really
3814 has the initscr attribute before trying to use it. For some
3821 has the initscr attribute before trying to use it. For some
3815 reason, the Solaris curses module is missing this. I think this
3822 reason, the Solaris curses module is missing this. I think this
3816 should be considered a Solaris python bug, but I'm not sure.
3823 should be considered a Solaris python bug, but I'm not sure.
3817
3824
3818 2004-01-17 Fernando Perez <fperez@colorado.edu>
3825 2004-01-17 Fernando Perez <fperez@colorado.edu>
3819
3826
3820 * IPython/genutils.py (Stream.__init__): Changes to try to make
3827 * IPython/genutils.py (Stream.__init__): Changes to try to make
3821 ipython robust against stdin/out/err being closed by the user.
3828 ipython robust against stdin/out/err being closed by the user.
3822 This is 'user error' (and blocks a normal python session, at least
3829 This is 'user error' (and blocks a normal python session, at least
3823 the stdout case). However, Ipython should be able to survive such
3830 the stdout case). However, Ipython should be able to survive such
3824 instances of abuse as gracefully as possible. To simplify the
3831 instances of abuse as gracefully as possible. To simplify the
3825 coding and maintain compatibility with Gary Bishop's Term
3832 coding and maintain compatibility with Gary Bishop's Term
3826 contributions, I've made use of classmethods for this. I think
3833 contributions, I've made use of classmethods for this. I think
3827 this introduces a dependency on python 2.2.
3834 this introduces a dependency on python 2.2.
3828
3835
3829 2004-01-13 Fernando Perez <fperez@colorado.edu>
3836 2004-01-13 Fernando Perez <fperez@colorado.edu>
3830
3837
3831 * IPython/numutils.py (exp_safe): simplified the code a bit and
3838 * IPython/numutils.py (exp_safe): simplified the code a bit and
3832 removed the need for importing the kinds module altogether.
3839 removed the need for importing the kinds module altogether.
3833
3840
3834 2004-01-06 Fernando Perez <fperez@colorado.edu>
3841 2004-01-06 Fernando Perez <fperez@colorado.edu>
3835
3842
3836 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3843 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3837 a magic function instead, after some community feedback. No
3844 a magic function instead, after some community feedback. No
3838 special syntax will exist for it, but its name is deliberately
3845 special syntax will exist for it, but its name is deliberately
3839 very short.
3846 very short.
3840
3847
3841 2003-12-20 Fernando Perez <fperez@colorado.edu>
3848 2003-12-20 Fernando Perez <fperez@colorado.edu>
3842
3849
3843 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3850 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3844 new functionality, to automagically assign the result of a shell
3851 new functionality, to automagically assign the result of a shell
3845 command to a variable. I'll solicit some community feedback on
3852 command to a variable. I'll solicit some community feedback on
3846 this before making it permanent.
3853 this before making it permanent.
3847
3854
3848 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3855 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3849 requested about callables for which inspect couldn't obtain a
3856 requested about callables for which inspect couldn't obtain a
3850 proper argspec. Thanks to a crash report sent by Etienne
3857 proper argspec. Thanks to a crash report sent by Etienne
3851 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3858 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3852
3859
3853 2003-12-09 Fernando Perez <fperez@colorado.edu>
3860 2003-12-09 Fernando Perez <fperez@colorado.edu>
3854
3861
3855 * IPython/genutils.py (page): patch for the pager to work across
3862 * IPython/genutils.py (page): patch for the pager to work across
3856 various versions of Windows. By Gary Bishop.
3863 various versions of Windows. By Gary Bishop.
3857
3864
3858 2003-12-04 Fernando Perez <fperez@colorado.edu>
3865 2003-12-04 Fernando Perez <fperez@colorado.edu>
3859
3866
3860 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3867 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3861 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3868 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3862 While I tested this and it looks ok, there may still be corner
3869 While I tested this and it looks ok, there may still be corner
3863 cases I've missed.
3870 cases I've missed.
3864
3871
3865 2003-12-01 Fernando Perez <fperez@colorado.edu>
3872 2003-12-01 Fernando Perez <fperez@colorado.edu>
3866
3873
3867 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3874 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3868 where a line like 'p,q=1,2' would fail because the automagic
3875 where a line like 'p,q=1,2' would fail because the automagic
3869 system would be triggered for @p.
3876 system would be triggered for @p.
3870
3877
3871 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3878 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3872 cleanups, code unmodified.
3879 cleanups, code unmodified.
3873
3880
3874 * IPython/genutils.py (Term): added a class for IPython to handle
3881 * IPython/genutils.py (Term): added a class for IPython to handle
3875 output. In most cases it will just be a proxy for stdout/err, but
3882 output. In most cases it will just be a proxy for stdout/err, but
3876 having this allows modifications to be made for some platforms,
3883 having this allows modifications to be made for some platforms,
3877 such as handling color escapes under Windows. All of this code
3884 such as handling color escapes under Windows. All of this code
3878 was contributed by Gary Bishop, with minor modifications by me.
3885 was contributed by Gary Bishop, with minor modifications by me.
3879 The actual changes affect many files.
3886 The actual changes affect many files.
3880
3887
3881 2003-11-30 Fernando Perez <fperez@colorado.edu>
3888 2003-11-30 Fernando Perez <fperez@colorado.edu>
3882
3889
3883 * IPython/iplib.py (file_matches): new completion code, courtesy
3890 * IPython/iplib.py (file_matches): new completion code, courtesy
3884 of Jeff Collins. This enables filename completion again under
3891 of Jeff Collins. This enables filename completion again under
3885 python 2.3, which disabled it at the C level.
3892 python 2.3, which disabled it at the C level.
3886
3893
3887 2003-11-11 Fernando Perez <fperez@colorado.edu>
3894 2003-11-11 Fernando Perez <fperez@colorado.edu>
3888
3895
3889 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3896 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3890 for Numeric.array(map(...)), but often convenient.
3897 for Numeric.array(map(...)), but often convenient.
3891
3898
3892 2003-11-05 Fernando Perez <fperez@colorado.edu>
3899 2003-11-05 Fernando Perez <fperez@colorado.edu>
3893
3900
3894 * IPython/numutils.py (frange): Changed a call from int() to
3901 * IPython/numutils.py (frange): Changed a call from int() to
3895 int(round()) to prevent a problem reported with arange() in the
3902 int(round()) to prevent a problem reported with arange() in the
3896 numpy list.
3903 numpy list.
3897
3904
3898 2003-10-06 Fernando Perez <fperez@colorado.edu>
3905 2003-10-06 Fernando Perez <fperez@colorado.edu>
3899
3906
3900 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3907 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3901 prevent crashes if sys lacks an argv attribute (it happens with
3908 prevent crashes if sys lacks an argv attribute (it happens with
3902 embedded interpreters which build a bare-bones sys module).
3909 embedded interpreters which build a bare-bones sys module).
3903 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3910 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3904
3911
3905 2003-09-24 Fernando Perez <fperez@colorado.edu>
3912 2003-09-24 Fernando Perez <fperez@colorado.edu>
3906
3913
3907 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3914 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3908 to protect against poorly written user objects where __getattr__
3915 to protect against poorly written user objects where __getattr__
3909 raises exceptions other than AttributeError. Thanks to a bug
3916 raises exceptions other than AttributeError. Thanks to a bug
3910 report by Oliver Sander <osander-AT-gmx.de>.
3917 report by Oliver Sander <osander-AT-gmx.de>.
3911
3918
3912 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3919 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3913 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3920 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3914
3921
3915 2003-09-09 Fernando Perez <fperez@colorado.edu>
3922 2003-09-09 Fernando Perez <fperez@colorado.edu>
3916
3923
3917 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3924 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3918 unpacking a list whith a callable as first element would
3925 unpacking a list whith a callable as first element would
3919 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3926 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3920 Collins.
3927 Collins.
3921
3928
3922 2003-08-25 *** Released version 0.5.0
3929 2003-08-25 *** Released version 0.5.0
3923
3930
3924 2003-08-22 Fernando Perez <fperez@colorado.edu>
3931 2003-08-22 Fernando Perez <fperez@colorado.edu>
3925
3932
3926 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3933 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3927 improperly defined user exceptions. Thanks to feedback from Mark
3934 improperly defined user exceptions. Thanks to feedback from Mark
3928 Russell <mrussell-AT-verio.net>.
3935 Russell <mrussell-AT-verio.net>.
3929
3936
3930 2003-08-20 Fernando Perez <fperez@colorado.edu>
3937 2003-08-20 Fernando Perez <fperez@colorado.edu>
3931
3938
3932 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3939 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3933 printing so that it would print multi-line string forms starting
3940 printing so that it would print multi-line string forms starting
3934 with a new line. This way the formatting is better respected for
3941 with a new line. This way the formatting is better respected for
3935 objects which work hard to make nice string forms.
3942 objects which work hard to make nice string forms.
3936
3943
3937 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3944 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3938 autocall would overtake data access for objects with both
3945 autocall would overtake data access for objects with both
3939 __getitem__ and __call__.
3946 __getitem__ and __call__.
3940
3947
3941 2003-08-19 *** Released version 0.5.0-rc1
3948 2003-08-19 *** Released version 0.5.0-rc1
3942
3949
3943 2003-08-19 Fernando Perez <fperez@colorado.edu>
3950 2003-08-19 Fernando Perez <fperez@colorado.edu>
3944
3951
3945 * IPython/deep_reload.py (load_tail): single tiny change here
3952 * IPython/deep_reload.py (load_tail): single tiny change here
3946 seems to fix the long-standing bug of dreload() failing to work
3953 seems to fix the long-standing bug of dreload() failing to work
3947 for dotted names. But this module is pretty tricky, so I may have
3954 for dotted names. But this module is pretty tricky, so I may have
3948 missed some subtlety. Needs more testing!.
3955 missed some subtlety. Needs more testing!.
3949
3956
3950 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3957 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3951 exceptions which have badly implemented __str__ methods.
3958 exceptions which have badly implemented __str__ methods.
3952 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3959 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3953 which I've been getting reports about from Python 2.3 users. I
3960 which I've been getting reports about from Python 2.3 users. I
3954 wish I had a simple test case to reproduce the problem, so I could
3961 wish I had a simple test case to reproduce the problem, so I could
3955 either write a cleaner workaround or file a bug report if
3962 either write a cleaner workaround or file a bug report if
3956 necessary.
3963 necessary.
3957
3964
3958 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3965 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3959 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3966 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3960 a bug report by Tjabo Kloppenburg.
3967 a bug report by Tjabo Kloppenburg.
3961
3968
3962 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3969 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3963 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3970 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3964 seems rather unstable. Thanks to a bug report by Tjabo
3971 seems rather unstable. Thanks to a bug report by Tjabo
3965 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3972 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3966
3973
3967 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3974 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3968 this out soon because of the critical fixes in the inner loop for
3975 this out soon because of the critical fixes in the inner loop for
3969 generators.
3976 generators.
3970
3977
3971 * IPython/Magic.py (Magic.getargspec): removed. This (and
3978 * IPython/Magic.py (Magic.getargspec): removed. This (and
3972 _get_def) have been obsoleted by OInspect for a long time, I
3979 _get_def) have been obsoleted by OInspect for a long time, I
3973 hadn't noticed that they were dead code.
3980 hadn't noticed that they were dead code.
3974 (Magic._ofind): restored _ofind functionality for a few literals
3981 (Magic._ofind): restored _ofind functionality for a few literals
3975 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3982 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3976 for things like "hello".capitalize?, since that would require a
3983 for things like "hello".capitalize?, since that would require a
3977 potentially dangerous eval() again.
3984 potentially dangerous eval() again.
3978
3985
3979 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3986 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3980 logic a bit more to clean up the escapes handling and minimize the
3987 logic a bit more to clean up the escapes handling and minimize the
3981 use of _ofind to only necessary cases. The interactive 'feel' of
3988 use of _ofind to only necessary cases. The interactive 'feel' of
3982 IPython should have improved quite a bit with the changes in
3989 IPython should have improved quite a bit with the changes in
3983 _prefilter and _ofind (besides being far safer than before).
3990 _prefilter and _ofind (besides being far safer than before).
3984
3991
3985 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3992 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3986 obscure, never reported). Edit would fail to find the object to
3993 obscure, never reported). Edit would fail to find the object to
3987 edit under some circumstances.
3994 edit under some circumstances.
3988 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3995 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3989 which were causing double-calling of generators. Those eval calls
3996 which were causing double-calling of generators. Those eval calls
3990 were _very_ dangerous, since code with side effects could be
3997 were _very_ dangerous, since code with side effects could be
3991 triggered. As they say, 'eval is evil'... These were the
3998 triggered. As they say, 'eval is evil'... These were the
3992 nastiest evals in IPython. Besides, _ofind is now far simpler,
3999 nastiest evals in IPython. Besides, _ofind is now far simpler,
3993 and it should also be quite a bit faster. Its use of inspect is
4000 and it should also be quite a bit faster. Its use of inspect is
3994 also safer, so perhaps some of the inspect-related crashes I've
4001 also safer, so perhaps some of the inspect-related crashes I've
3995 seen lately with Python 2.3 might be taken care of. That will
4002 seen lately with Python 2.3 might be taken care of. That will
3996 need more testing.
4003 need more testing.
3997
4004
3998 2003-08-17 Fernando Perez <fperez@colorado.edu>
4005 2003-08-17 Fernando Perez <fperez@colorado.edu>
3999
4006
4000 * IPython/iplib.py (InteractiveShell._prefilter): significant
4007 * IPython/iplib.py (InteractiveShell._prefilter): significant
4001 simplifications to the logic for handling user escapes. Faster
4008 simplifications to the logic for handling user escapes. Faster
4002 and simpler code.
4009 and simpler code.
4003
4010
4004 2003-08-14 Fernando Perez <fperez@colorado.edu>
4011 2003-08-14 Fernando Perez <fperez@colorado.edu>
4005
4012
4006 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4013 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4007 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4014 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4008 but it should be quite a bit faster. And the recursive version
4015 but it should be quite a bit faster. And the recursive version
4009 generated O(log N) intermediate storage for all rank>1 arrays,
4016 generated O(log N) intermediate storage for all rank>1 arrays,
4010 even if they were contiguous.
4017 even if they were contiguous.
4011 (l1norm): Added this function.
4018 (l1norm): Added this function.
4012 (norm): Added this function for arbitrary norms (including
4019 (norm): Added this function for arbitrary norms (including
4013 l-infinity). l1 and l2 are still special cases for convenience
4020 l-infinity). l1 and l2 are still special cases for convenience
4014 and speed.
4021 and speed.
4015
4022
4016 2003-08-03 Fernando Perez <fperez@colorado.edu>
4023 2003-08-03 Fernando Perez <fperez@colorado.edu>
4017
4024
4018 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4025 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4019 exceptions, which now raise PendingDeprecationWarnings in Python
4026 exceptions, which now raise PendingDeprecationWarnings in Python
4020 2.3. There were some in Magic and some in Gnuplot2.
4027 2.3. There were some in Magic and some in Gnuplot2.
4021
4028
4022 2003-06-30 Fernando Perez <fperez@colorado.edu>
4029 2003-06-30 Fernando Perez <fperez@colorado.edu>
4023
4030
4024 * IPython/genutils.py (page): modified to call curses only for
4031 * IPython/genutils.py (page): modified to call curses only for
4025 terminals where TERM=='xterm'. After problems under many other
4032 terminals where TERM=='xterm'. After problems under many other
4026 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4033 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4027
4034
4028 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4035 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4029 would be triggered when readline was absent. This was just an old
4036 would be triggered when readline was absent. This was just an old
4030 debugging statement I'd forgotten to take out.
4037 debugging statement I'd forgotten to take out.
4031
4038
4032 2003-06-20 Fernando Perez <fperez@colorado.edu>
4039 2003-06-20 Fernando Perez <fperez@colorado.edu>
4033
4040
4034 * IPython/genutils.py (clock): modified to return only user time
4041 * IPython/genutils.py (clock): modified to return only user time
4035 (not counting system time), after a discussion on scipy. While
4042 (not counting system time), after a discussion on scipy. While
4036 system time may be a useful quantity occasionally, it may much
4043 system time may be a useful quantity occasionally, it may much
4037 more easily be skewed by occasional swapping or other similar
4044 more easily be skewed by occasional swapping or other similar
4038 activity.
4045 activity.
4039
4046
4040 2003-06-05 Fernando Perez <fperez@colorado.edu>
4047 2003-06-05 Fernando Perez <fperez@colorado.edu>
4041
4048
4042 * IPython/numutils.py (identity): new function, for building
4049 * IPython/numutils.py (identity): new function, for building
4043 arbitrary rank Kronecker deltas (mostly backwards compatible with
4050 arbitrary rank Kronecker deltas (mostly backwards compatible with
4044 Numeric.identity)
4051 Numeric.identity)
4045
4052
4046 2003-06-03 Fernando Perez <fperez@colorado.edu>
4053 2003-06-03 Fernando Perez <fperez@colorado.edu>
4047
4054
4048 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4055 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4049 arguments passed to magics with spaces, to allow trailing '\' to
4056 arguments passed to magics with spaces, to allow trailing '\' to
4050 work normally (mainly for Windows users).
4057 work normally (mainly for Windows users).
4051
4058
4052 2003-05-29 Fernando Perez <fperez@colorado.edu>
4059 2003-05-29 Fernando Perez <fperez@colorado.edu>
4053
4060
4054 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4061 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4055 instead of pydoc.help. This fixes a bizarre behavior where
4062 instead of pydoc.help. This fixes a bizarre behavior where
4056 printing '%s' % locals() would trigger the help system. Now
4063 printing '%s' % locals() would trigger the help system. Now
4057 ipython behaves like normal python does.
4064 ipython behaves like normal python does.
4058
4065
4059 Note that if one does 'from pydoc import help', the bizarre
4066 Note that if one does 'from pydoc import help', the bizarre
4060 behavior returns, but this will also happen in normal python, so
4067 behavior returns, but this will also happen in normal python, so
4061 it's not an ipython bug anymore (it has to do with how pydoc.help
4068 it's not an ipython bug anymore (it has to do with how pydoc.help
4062 is implemented).
4069 is implemented).
4063
4070
4064 2003-05-22 Fernando Perez <fperez@colorado.edu>
4071 2003-05-22 Fernando Perez <fperez@colorado.edu>
4065
4072
4066 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4073 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4067 return [] instead of None when nothing matches, also match to end
4074 return [] instead of None when nothing matches, also match to end
4068 of line. Patch by Gary Bishop.
4075 of line. Patch by Gary Bishop.
4069
4076
4070 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4077 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4071 protection as before, for files passed on the command line. This
4078 protection as before, for files passed on the command line. This
4072 prevents the CrashHandler from kicking in if user files call into
4079 prevents the CrashHandler from kicking in if user files call into
4073 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4080 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4074 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4081 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4075
4082
4076 2003-05-20 *** Released version 0.4.0
4083 2003-05-20 *** Released version 0.4.0
4077
4084
4078 2003-05-20 Fernando Perez <fperez@colorado.edu>
4085 2003-05-20 Fernando Perez <fperez@colorado.edu>
4079
4086
4080 * setup.py: added support for manpages. It's a bit hackish b/c of
4087 * setup.py: added support for manpages. It's a bit hackish b/c of
4081 a bug in the way the bdist_rpm distutils target handles gzipped
4088 a bug in the way the bdist_rpm distutils target handles gzipped
4082 manpages, but it works. After a patch by Jack.
4089 manpages, but it works. After a patch by Jack.
4083
4090
4084 2003-05-19 Fernando Perez <fperez@colorado.edu>
4091 2003-05-19 Fernando Perez <fperez@colorado.edu>
4085
4092
4086 * IPython/numutils.py: added a mockup of the kinds module, since
4093 * IPython/numutils.py: added a mockup of the kinds module, since
4087 it was recently removed from Numeric. This way, numutils will
4094 it was recently removed from Numeric. This way, numutils will
4088 work for all users even if they are missing kinds.
4095 work for all users even if they are missing kinds.
4089
4096
4090 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4097 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4091 failure, which can occur with SWIG-wrapped extensions. After a
4098 failure, which can occur with SWIG-wrapped extensions. After a
4092 crash report from Prabhu.
4099 crash report from Prabhu.
4093
4100
4094 2003-05-16 Fernando Perez <fperez@colorado.edu>
4101 2003-05-16 Fernando Perez <fperez@colorado.edu>
4095
4102
4096 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4103 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4097 protect ipython from user code which may call directly
4104 protect ipython from user code which may call directly
4098 sys.excepthook (this looks like an ipython crash to the user, even
4105 sys.excepthook (this looks like an ipython crash to the user, even
4099 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4106 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4100 This is especially important to help users of WxWindows, but may
4107 This is especially important to help users of WxWindows, but may
4101 also be useful in other cases.
4108 also be useful in other cases.
4102
4109
4103 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4110 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4104 an optional tb_offset to be specified, and to preserve exception
4111 an optional tb_offset to be specified, and to preserve exception
4105 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4112 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4106
4113
4107 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4114 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4108
4115
4109 2003-05-15 Fernando Perez <fperez@colorado.edu>
4116 2003-05-15 Fernando Perez <fperez@colorado.edu>
4110
4117
4111 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4118 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4112 installing for a new user under Windows.
4119 installing for a new user under Windows.
4113
4120
4114 2003-05-12 Fernando Perez <fperez@colorado.edu>
4121 2003-05-12 Fernando Perez <fperez@colorado.edu>
4115
4122
4116 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4123 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4117 handler for Emacs comint-based lines. Currently it doesn't do
4124 handler for Emacs comint-based lines. Currently it doesn't do
4118 much (but importantly, it doesn't update the history cache). In
4125 much (but importantly, it doesn't update the history cache). In
4119 the future it may be expanded if Alex needs more functionality
4126 the future it may be expanded if Alex needs more functionality
4120 there.
4127 there.
4121
4128
4122 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4129 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4123 info to crash reports.
4130 info to crash reports.
4124
4131
4125 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4132 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4126 just like Python's -c. Also fixed crash with invalid -color
4133 just like Python's -c. Also fixed crash with invalid -color
4127 option value at startup. Thanks to Will French
4134 option value at startup. Thanks to Will French
4128 <wfrench-AT-bestweb.net> for the bug report.
4135 <wfrench-AT-bestweb.net> for the bug report.
4129
4136
4130 2003-05-09 Fernando Perez <fperez@colorado.edu>
4137 2003-05-09 Fernando Perez <fperez@colorado.edu>
4131
4138
4132 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4139 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4133 to EvalDict (it's a mapping, after all) and simplified its code
4140 to EvalDict (it's a mapping, after all) and simplified its code
4134 quite a bit, after a nice discussion on c.l.py where Gustavo
4141 quite a bit, after a nice discussion on c.l.py where Gustavo
4135 Córdova <gcordova-AT-sismex.com> suggested the new version.
4142 Córdova <gcordova-AT-sismex.com> suggested the new version.
4136
4143
4137 2003-04-30 Fernando Perez <fperez@colorado.edu>
4144 2003-04-30 Fernando Perez <fperez@colorado.edu>
4138
4145
4139 * IPython/genutils.py (timings_out): modified it to reduce its
4146 * IPython/genutils.py (timings_out): modified it to reduce its
4140 overhead in the common reps==1 case.
4147 overhead in the common reps==1 case.
4141
4148
4142 2003-04-29 Fernando Perez <fperez@colorado.edu>
4149 2003-04-29 Fernando Perez <fperez@colorado.edu>
4143
4150
4144 * IPython/genutils.py (timings_out): Modified to use the resource
4151 * IPython/genutils.py (timings_out): Modified to use the resource
4145 module, which avoids the wraparound problems of time.clock().
4152 module, which avoids the wraparound problems of time.clock().
4146
4153
4147 2003-04-17 *** Released version 0.2.15pre4
4154 2003-04-17 *** Released version 0.2.15pre4
4148
4155
4149 2003-04-17 Fernando Perez <fperez@colorado.edu>
4156 2003-04-17 Fernando Perez <fperez@colorado.edu>
4150
4157
4151 * setup.py (scriptfiles): Split windows-specific stuff over to a
4158 * setup.py (scriptfiles): Split windows-specific stuff over to a
4152 separate file, in an attempt to have a Windows GUI installer.
4159 separate file, in an attempt to have a Windows GUI installer.
4153 That didn't work, but part of the groundwork is done.
4160 That didn't work, but part of the groundwork is done.
4154
4161
4155 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4162 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4156 indent/unindent with 4 spaces. Particularly useful in combination
4163 indent/unindent with 4 spaces. Particularly useful in combination
4157 with the new auto-indent option.
4164 with the new auto-indent option.
4158
4165
4159 2003-04-16 Fernando Perez <fperez@colorado.edu>
4166 2003-04-16 Fernando Perez <fperez@colorado.edu>
4160
4167
4161 * IPython/Magic.py: various replacements of self.rc for
4168 * IPython/Magic.py: various replacements of self.rc for
4162 self.shell.rc. A lot more remains to be done to fully disentangle
4169 self.shell.rc. A lot more remains to be done to fully disentangle
4163 this class from the main Shell class.
4170 this class from the main Shell class.
4164
4171
4165 * IPython/GnuplotRuntime.py: added checks for mouse support so
4172 * IPython/GnuplotRuntime.py: added checks for mouse support so
4166 that we don't try to enable it if the current gnuplot doesn't
4173 that we don't try to enable it if the current gnuplot doesn't
4167 really support it. Also added checks so that we don't try to
4174 really support it. Also added checks so that we don't try to
4168 enable persist under Windows (where Gnuplot doesn't recognize the
4175 enable persist under Windows (where Gnuplot doesn't recognize the
4169 option).
4176 option).
4170
4177
4171 * IPython/iplib.py (InteractiveShell.interact): Added optional
4178 * IPython/iplib.py (InteractiveShell.interact): Added optional
4172 auto-indenting code, after a patch by King C. Shu
4179 auto-indenting code, after a patch by King C. Shu
4173 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4180 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4174 get along well with pasting indented code. If I ever figure out
4181 get along well with pasting indented code. If I ever figure out
4175 how to make that part go well, it will become on by default.
4182 how to make that part go well, it will become on by default.
4176
4183
4177 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4184 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4178 crash ipython if there was an unmatched '%' in the user's prompt
4185 crash ipython if there was an unmatched '%' in the user's prompt
4179 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4186 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4180
4187
4181 * IPython/iplib.py (InteractiveShell.interact): removed the
4188 * IPython/iplib.py (InteractiveShell.interact): removed the
4182 ability to ask the user whether he wants to crash or not at the
4189 ability to ask the user whether he wants to crash or not at the
4183 'last line' exception handler. Calling functions at that point
4190 'last line' exception handler. Calling functions at that point
4184 changes the stack, and the error reports would have incorrect
4191 changes the stack, and the error reports would have incorrect
4185 tracebacks.
4192 tracebacks.
4186
4193
4187 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4194 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4188 pass through a peger a pretty-printed form of any object. After a
4195 pass through a peger a pretty-printed form of any object. After a
4189 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4196 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4190
4197
4191 2003-04-14 Fernando Perez <fperez@colorado.edu>
4198 2003-04-14 Fernando Perez <fperez@colorado.edu>
4192
4199
4193 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4200 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4194 all files in ~ would be modified at first install (instead of
4201 all files in ~ would be modified at first install (instead of
4195 ~/.ipython). This could be potentially disastrous, as the
4202 ~/.ipython). This could be potentially disastrous, as the
4196 modification (make line-endings native) could damage binary files.
4203 modification (make line-endings native) could damage binary files.
4197
4204
4198 2003-04-10 Fernando Perez <fperez@colorado.edu>
4205 2003-04-10 Fernando Perez <fperez@colorado.edu>
4199
4206
4200 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4207 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4201 handle only lines which are invalid python. This now means that
4208 handle only lines which are invalid python. This now means that
4202 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4209 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4203 for the bug report.
4210 for the bug report.
4204
4211
4205 2003-04-01 Fernando Perez <fperez@colorado.edu>
4212 2003-04-01 Fernando Perez <fperez@colorado.edu>
4206
4213
4207 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4214 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4208 where failing to set sys.last_traceback would crash pdb.pm().
4215 where failing to set sys.last_traceback would crash pdb.pm().
4209 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4216 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4210 report.
4217 report.
4211
4218
4212 2003-03-25 Fernando Perez <fperez@colorado.edu>
4219 2003-03-25 Fernando Perez <fperez@colorado.edu>
4213
4220
4214 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4221 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4215 before printing it (it had a lot of spurious blank lines at the
4222 before printing it (it had a lot of spurious blank lines at the
4216 end).
4223 end).
4217
4224
4218 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4225 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4219 output would be sent 21 times! Obviously people don't use this
4226 output would be sent 21 times! Obviously people don't use this
4220 too often, or I would have heard about it.
4227 too often, or I would have heard about it.
4221
4228
4222 2003-03-24 Fernando Perez <fperez@colorado.edu>
4229 2003-03-24 Fernando Perez <fperez@colorado.edu>
4223
4230
4224 * setup.py (scriptfiles): renamed the data_files parameter from
4231 * setup.py (scriptfiles): renamed the data_files parameter from
4225 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4232 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4226 for the patch.
4233 for the patch.
4227
4234
4228 2003-03-20 Fernando Perez <fperez@colorado.edu>
4235 2003-03-20 Fernando Perez <fperez@colorado.edu>
4229
4236
4230 * IPython/genutils.py (error): added error() and fatal()
4237 * IPython/genutils.py (error): added error() and fatal()
4231 functions.
4238 functions.
4232
4239
4233 2003-03-18 *** Released version 0.2.15pre3
4240 2003-03-18 *** Released version 0.2.15pre3
4234
4241
4235 2003-03-18 Fernando Perez <fperez@colorado.edu>
4242 2003-03-18 Fernando Perez <fperez@colorado.edu>
4236
4243
4237 * setupext/install_data_ext.py
4244 * setupext/install_data_ext.py
4238 (install_data_ext.initialize_options): Class contributed by Jack
4245 (install_data_ext.initialize_options): Class contributed by Jack
4239 Moffit for fixing the old distutils hack. He is sending this to
4246 Moffit for fixing the old distutils hack. He is sending this to
4240 the distutils folks so in the future we may not need it as a
4247 the distutils folks so in the future we may not need it as a
4241 private fix.
4248 private fix.
4242
4249
4243 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4250 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4244 changes for Debian packaging. See his patch for full details.
4251 changes for Debian packaging. See his patch for full details.
4245 The old distutils hack of making the ipythonrc* files carry a
4252 The old distutils hack of making the ipythonrc* files carry a
4246 bogus .py extension is gone, at last. Examples were moved to a
4253 bogus .py extension is gone, at last. Examples were moved to a
4247 separate subdir under doc/, and the separate executable scripts
4254 separate subdir under doc/, and the separate executable scripts
4248 now live in their own directory. Overall a great cleanup. The
4255 now live in their own directory. Overall a great cleanup. The
4249 manual was updated to use the new files, and setup.py has been
4256 manual was updated to use the new files, and setup.py has been
4250 fixed for this setup.
4257 fixed for this setup.
4251
4258
4252 * IPython/PyColorize.py (Parser.usage): made non-executable and
4259 * IPython/PyColorize.py (Parser.usage): made non-executable and
4253 created a pycolor wrapper around it to be included as a script.
4260 created a pycolor wrapper around it to be included as a script.
4254
4261
4255 2003-03-12 *** Released version 0.2.15pre2
4262 2003-03-12 *** Released version 0.2.15pre2
4256
4263
4257 2003-03-12 Fernando Perez <fperez@colorado.edu>
4264 2003-03-12 Fernando Perez <fperez@colorado.edu>
4258
4265
4259 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4266 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4260 long-standing problem with garbage characters in some terminals.
4267 long-standing problem with garbage characters in some terminals.
4261 The issue was really that the \001 and \002 escapes must _only_ be
4268 The issue was really that the \001 and \002 escapes must _only_ be
4262 passed to input prompts (which call readline), but _never_ to
4269 passed to input prompts (which call readline), but _never_ to
4263 normal text to be printed on screen. I changed ColorANSI to have
4270 normal text to be printed on screen. I changed ColorANSI to have
4264 two classes: TermColors and InputTermColors, each with the
4271 two classes: TermColors and InputTermColors, each with the
4265 appropriate escapes for input prompts or normal text. The code in
4272 appropriate escapes for input prompts or normal text. The code in
4266 Prompts.py got slightly more complicated, but this very old and
4273 Prompts.py got slightly more complicated, but this very old and
4267 annoying bug is finally fixed.
4274 annoying bug is finally fixed.
4268
4275
4269 All the credit for nailing down the real origin of this problem
4276 All the credit for nailing down the real origin of this problem
4270 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4277 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4271 *Many* thanks to him for spending quite a bit of effort on this.
4278 *Many* thanks to him for spending quite a bit of effort on this.
4272
4279
4273 2003-03-05 *** Released version 0.2.15pre1
4280 2003-03-05 *** Released version 0.2.15pre1
4274
4281
4275 2003-03-03 Fernando Perez <fperez@colorado.edu>
4282 2003-03-03 Fernando Perez <fperez@colorado.edu>
4276
4283
4277 * IPython/FakeModule.py: Moved the former _FakeModule to a
4284 * IPython/FakeModule.py: Moved the former _FakeModule to a
4278 separate file, because it's also needed by Magic (to fix a similar
4285 separate file, because it's also needed by Magic (to fix a similar
4279 pickle-related issue in @run).
4286 pickle-related issue in @run).
4280
4287
4281 2003-03-02 Fernando Perez <fperez@colorado.edu>
4288 2003-03-02 Fernando Perez <fperez@colorado.edu>
4282
4289
4283 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4290 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4284 the autocall option at runtime.
4291 the autocall option at runtime.
4285 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4292 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4286 across Magic.py to start separating Magic from InteractiveShell.
4293 across Magic.py to start separating Magic from InteractiveShell.
4287 (Magic._ofind): Fixed to return proper namespace for dotted
4294 (Magic._ofind): Fixed to return proper namespace for dotted
4288 names. Before, a dotted name would always return 'not currently
4295 names. Before, a dotted name would always return 'not currently
4289 defined', because it would find the 'parent'. s.x would be found,
4296 defined', because it would find the 'parent'. s.x would be found,
4290 but since 'x' isn't defined by itself, it would get confused.
4297 but since 'x' isn't defined by itself, it would get confused.
4291 (Magic.magic_run): Fixed pickling problems reported by Ralf
4298 (Magic.magic_run): Fixed pickling problems reported by Ralf
4292 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4299 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4293 that I'd used when Mike Heeter reported similar issues at the
4300 that I'd used when Mike Heeter reported similar issues at the
4294 top-level, but now for @run. It boils down to injecting the
4301 top-level, but now for @run. It boils down to injecting the
4295 namespace where code is being executed with something that looks
4302 namespace where code is being executed with something that looks
4296 enough like a module to fool pickle.dump(). Since a pickle stores
4303 enough like a module to fool pickle.dump(). Since a pickle stores
4297 a named reference to the importing module, we need this for
4304 a named reference to the importing module, we need this for
4298 pickles to save something sensible.
4305 pickles to save something sensible.
4299
4306
4300 * IPython/ipmaker.py (make_IPython): added an autocall option.
4307 * IPython/ipmaker.py (make_IPython): added an autocall option.
4301
4308
4302 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4309 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4303 the auto-eval code. Now autocalling is an option, and the code is
4310 the auto-eval code. Now autocalling is an option, and the code is
4304 also vastly safer. There is no more eval() involved at all.
4311 also vastly safer. There is no more eval() involved at all.
4305
4312
4306 2003-03-01 Fernando Perez <fperez@colorado.edu>
4313 2003-03-01 Fernando Perez <fperez@colorado.edu>
4307
4314
4308 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4315 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4309 dict with named keys instead of a tuple.
4316 dict with named keys instead of a tuple.
4310
4317
4311 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4318 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4312
4319
4313 * setup.py (make_shortcut): Fixed message about directories
4320 * setup.py (make_shortcut): Fixed message about directories
4314 created during Windows installation (the directories were ok, just
4321 created during Windows installation (the directories were ok, just
4315 the printed message was misleading). Thanks to Chris Liechti
4322 the printed message was misleading). Thanks to Chris Liechti
4316 <cliechti-AT-gmx.net> for the heads up.
4323 <cliechti-AT-gmx.net> for the heads up.
4317
4324
4318 2003-02-21 Fernando Perez <fperez@colorado.edu>
4325 2003-02-21 Fernando Perez <fperez@colorado.edu>
4319
4326
4320 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4327 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4321 of ValueError exception when checking for auto-execution. This
4328 of ValueError exception when checking for auto-execution. This
4322 one is raised by things like Numeric arrays arr.flat when the
4329 one is raised by things like Numeric arrays arr.flat when the
4323 array is non-contiguous.
4330 array is non-contiguous.
4324
4331
4325 2003-01-31 Fernando Perez <fperez@colorado.edu>
4332 2003-01-31 Fernando Perez <fperez@colorado.edu>
4326
4333
4327 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4334 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4328 not return any value at all (even though the command would get
4335 not return any value at all (even though the command would get
4329 executed).
4336 executed).
4330 (xsys): Flush stdout right after printing the command to ensure
4337 (xsys): Flush stdout right after printing the command to ensure
4331 proper ordering of commands and command output in the total
4338 proper ordering of commands and command output in the total
4332 output.
4339 output.
4333 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4340 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4334 system/getoutput as defaults. The old ones are kept for
4341 system/getoutput as defaults. The old ones are kept for
4335 compatibility reasons, so no code which uses this library needs
4342 compatibility reasons, so no code which uses this library needs
4336 changing.
4343 changing.
4337
4344
4338 2003-01-27 *** Released version 0.2.14
4345 2003-01-27 *** Released version 0.2.14
4339
4346
4340 2003-01-25 Fernando Perez <fperez@colorado.edu>
4347 2003-01-25 Fernando Perez <fperez@colorado.edu>
4341
4348
4342 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4349 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4343 functions defined in previous edit sessions could not be re-edited
4350 functions defined in previous edit sessions could not be re-edited
4344 (because the temp files were immediately removed). Now temp files
4351 (because the temp files were immediately removed). Now temp files
4345 are removed only at IPython's exit.
4352 are removed only at IPython's exit.
4346 (Magic.magic_run): Improved @run to perform shell-like expansions
4353 (Magic.magic_run): Improved @run to perform shell-like expansions
4347 on its arguments (~users and $VARS). With this, @run becomes more
4354 on its arguments (~users and $VARS). With this, @run becomes more
4348 like a normal command-line.
4355 like a normal command-line.
4349
4356
4350 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4357 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4351 bugs related to embedding and cleaned up that code. A fairly
4358 bugs related to embedding and cleaned up that code. A fairly
4352 important one was the impossibility to access the global namespace
4359 important one was the impossibility to access the global namespace
4353 through the embedded IPython (only local variables were visible).
4360 through the embedded IPython (only local variables were visible).
4354
4361
4355 2003-01-14 Fernando Perez <fperez@colorado.edu>
4362 2003-01-14 Fernando Perez <fperez@colorado.edu>
4356
4363
4357 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4364 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4358 auto-calling to be a bit more conservative. Now it doesn't get
4365 auto-calling to be a bit more conservative. Now it doesn't get
4359 triggered if any of '!=()<>' are in the rest of the input line, to
4366 triggered if any of '!=()<>' are in the rest of the input line, to
4360 allow comparing callables. Thanks to Alex for the heads up.
4367 allow comparing callables. Thanks to Alex for the heads up.
4361
4368
4362 2003-01-07 Fernando Perez <fperez@colorado.edu>
4369 2003-01-07 Fernando Perez <fperez@colorado.edu>
4363
4370
4364 * IPython/genutils.py (page): fixed estimation of the number of
4371 * IPython/genutils.py (page): fixed estimation of the number of
4365 lines in a string to be paged to simply count newlines. This
4372 lines in a string to be paged to simply count newlines. This
4366 prevents over-guessing due to embedded escape sequences. A better
4373 prevents over-guessing due to embedded escape sequences. A better
4367 long-term solution would involve stripping out the control chars
4374 long-term solution would involve stripping out the control chars
4368 for the count, but it's potentially so expensive I just don't
4375 for the count, but it's potentially so expensive I just don't
4369 think it's worth doing.
4376 think it's worth doing.
4370
4377
4371 2002-12-19 *** Released version 0.2.14pre50
4378 2002-12-19 *** Released version 0.2.14pre50
4372
4379
4373 2002-12-19 Fernando Perez <fperez@colorado.edu>
4380 2002-12-19 Fernando Perez <fperez@colorado.edu>
4374
4381
4375 * tools/release (version): Changed release scripts to inform
4382 * tools/release (version): Changed release scripts to inform
4376 Andrea and build a NEWS file with a list of recent changes.
4383 Andrea and build a NEWS file with a list of recent changes.
4377
4384
4378 * IPython/ColorANSI.py (__all__): changed terminal detection
4385 * IPython/ColorANSI.py (__all__): changed terminal detection
4379 code. Seems to work better for xterms without breaking
4386 code. Seems to work better for xterms without breaking
4380 konsole. Will need more testing to determine if WinXP and Mac OSX
4387 konsole. Will need more testing to determine if WinXP and Mac OSX
4381 also work ok.
4388 also work ok.
4382
4389
4383 2002-12-18 *** Released version 0.2.14pre49
4390 2002-12-18 *** Released version 0.2.14pre49
4384
4391
4385 2002-12-18 Fernando Perez <fperez@colorado.edu>
4392 2002-12-18 Fernando Perez <fperez@colorado.edu>
4386
4393
4387 * Docs: added new info about Mac OSX, from Andrea.
4394 * Docs: added new info about Mac OSX, from Andrea.
4388
4395
4389 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
4396 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
4390 allow direct plotting of python strings whose format is the same
4397 allow direct plotting of python strings whose format is the same
4391 of gnuplot data files.
4398 of gnuplot data files.
4392
4399
4393 2002-12-16 Fernando Perez <fperez@colorado.edu>
4400 2002-12-16 Fernando Perez <fperez@colorado.edu>
4394
4401
4395 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
4402 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
4396 value of exit question to be acknowledged.
4403 value of exit question to be acknowledged.
4397
4404
4398 2002-12-03 Fernando Perez <fperez@colorado.edu>
4405 2002-12-03 Fernando Perez <fperez@colorado.edu>
4399
4406
4400 * IPython/ipmaker.py: removed generators, which had been added
4407 * IPython/ipmaker.py: removed generators, which had been added
4401 by mistake in an earlier debugging run. This was causing trouble
4408 by mistake in an earlier debugging run. This was causing trouble
4402 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
4409 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
4403 for pointing this out.
4410 for pointing this out.
4404
4411
4405 2002-11-17 Fernando Perez <fperez@colorado.edu>
4412 2002-11-17 Fernando Perez <fperez@colorado.edu>
4406
4413
4407 * Manual: updated the Gnuplot section.
4414 * Manual: updated the Gnuplot section.
4408
4415
4409 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
4416 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
4410 a much better split of what goes in Runtime and what goes in
4417 a much better split of what goes in Runtime and what goes in
4411 Interactive.
4418 Interactive.
4412
4419
4413 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
4420 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
4414 being imported from iplib.
4421 being imported from iplib.
4415
4422
4416 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
4423 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
4417 for command-passing. Now the global Gnuplot instance is called
4424 for command-passing. Now the global Gnuplot instance is called
4418 'gp' instead of 'g', which was really a far too fragile and
4425 'gp' instead of 'g', which was really a far too fragile and
4419 common name.
4426 common name.
4420
4427
4421 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
4428 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
4422 bounding boxes generated by Gnuplot for square plots.
4429 bounding boxes generated by Gnuplot for square plots.
4423
4430
4424 * IPython/genutils.py (popkey): new function added. I should
4431 * IPython/genutils.py (popkey): new function added. I should
4425 suggest this on c.l.py as a dict method, it seems useful.
4432 suggest this on c.l.py as a dict method, it seems useful.
4426
4433
4427 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
4434 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
4428 to transparently handle PostScript generation. MUCH better than
4435 to transparently handle PostScript generation. MUCH better than
4429 the previous plot_eps/replot_eps (which I removed now). The code
4436 the previous plot_eps/replot_eps (which I removed now). The code
4430 is also fairly clean and well documented now (including
4437 is also fairly clean and well documented now (including
4431 docstrings).
4438 docstrings).
4432
4439
4433 2002-11-13 Fernando Perez <fperez@colorado.edu>
4440 2002-11-13 Fernando Perez <fperez@colorado.edu>
4434
4441
4435 * IPython/Magic.py (Magic.magic_edit): fixed docstring
4442 * IPython/Magic.py (Magic.magic_edit): fixed docstring
4436 (inconsistent with options).
4443 (inconsistent with options).
4437
4444
4438 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
4445 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
4439 manually disabled, I don't know why. Fixed it.
4446 manually disabled, I don't know why. Fixed it.
4440 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
4447 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
4441 eps output.
4448 eps output.
4442
4449
4443 2002-11-12 Fernando Perez <fperez@colorado.edu>
4450 2002-11-12 Fernando Perez <fperez@colorado.edu>
4444
4451
4445 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
4452 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
4446 don't propagate up to caller. Fixes crash reported by François
4453 don't propagate up to caller. Fixes crash reported by François
4447 Pinard.
4454 Pinard.
4448
4455
4449 2002-11-09 Fernando Perez <fperez@colorado.edu>
4456 2002-11-09 Fernando Perez <fperez@colorado.edu>
4450
4457
4451 * IPython/ipmaker.py (make_IPython): fixed problem with writing
4458 * IPython/ipmaker.py (make_IPython): fixed problem with writing
4452 history file for new users.
4459 history file for new users.
4453 (make_IPython): fixed bug where initial install would leave the
4460 (make_IPython): fixed bug where initial install would leave the
4454 user running in the .ipython dir.
4461 user running in the .ipython dir.
4455 (make_IPython): fixed bug where config dir .ipython would be
4462 (make_IPython): fixed bug where config dir .ipython would be
4456 created regardless of the given -ipythondir option. Thanks to Cory
4463 created regardless of the given -ipythondir option. Thanks to Cory
4457 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
4464 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
4458
4465
4459 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
4466 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
4460 type confirmations. Will need to use it in all of IPython's code
4467 type confirmations. Will need to use it in all of IPython's code
4461 consistently.
4468 consistently.
4462
4469
4463 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
4470 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
4464 context to print 31 lines instead of the default 5. This will make
4471 context to print 31 lines instead of the default 5. This will make
4465 the crash reports extremely detailed in case the problem is in
4472 the crash reports extremely detailed in case the problem is in
4466 libraries I don't have access to.
4473 libraries I don't have access to.
4467
4474
4468 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
4475 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
4469 line of defense' code to still crash, but giving users fair
4476 line of defense' code to still crash, but giving users fair
4470 warning. I don't want internal errors to go unreported: if there's
4477 warning. I don't want internal errors to go unreported: if there's
4471 an internal problem, IPython should crash and generate a full
4478 an internal problem, IPython should crash and generate a full
4472 report.
4479 report.
4473
4480
4474 2002-11-08 Fernando Perez <fperez@colorado.edu>
4481 2002-11-08 Fernando Perez <fperez@colorado.edu>
4475
4482
4476 * IPython/iplib.py (InteractiveShell.interact): added code to trap
4483 * IPython/iplib.py (InteractiveShell.interact): added code to trap
4477 otherwise uncaught exceptions which can appear if people set
4484 otherwise uncaught exceptions which can appear if people set
4478 sys.stdout to something badly broken. Thanks to a crash report
4485 sys.stdout to something badly broken. Thanks to a crash report
4479 from henni-AT-mail.brainbot.com.
4486 from henni-AT-mail.brainbot.com.
4480
4487
4481 2002-11-04 Fernando Perez <fperez@colorado.edu>
4488 2002-11-04 Fernando Perez <fperez@colorado.edu>
4482
4489
4483 * IPython/iplib.py (InteractiveShell.interact): added
4490 * IPython/iplib.py (InteractiveShell.interact): added
4484 __IPYTHON__active to the builtins. It's a flag which goes on when
4491 __IPYTHON__active to the builtins. It's a flag which goes on when
4485 the interaction starts and goes off again when it stops. This
4492 the interaction starts and goes off again when it stops. This
4486 allows embedding code to detect being inside IPython. Before this
4493 allows embedding code to detect being inside IPython. Before this
4487 was done via __IPYTHON__, but that only shows that an IPython
4494 was done via __IPYTHON__, but that only shows that an IPython
4488 instance has been created.
4495 instance has been created.
4489
4496
4490 * IPython/Magic.py (Magic.magic_env): I realized that in a
4497 * IPython/Magic.py (Magic.magic_env): I realized that in a
4491 UserDict, instance.data holds the data as a normal dict. So I
4498 UserDict, instance.data holds the data as a normal dict. So I
4492 modified @env to return os.environ.data instead of rebuilding a
4499 modified @env to return os.environ.data instead of rebuilding a
4493 dict by hand.
4500 dict by hand.
4494
4501
4495 2002-11-02 Fernando Perez <fperez@colorado.edu>
4502 2002-11-02 Fernando Perez <fperez@colorado.edu>
4496
4503
4497 * IPython/genutils.py (warn): changed so that level 1 prints no
4504 * IPython/genutils.py (warn): changed so that level 1 prints no
4498 header. Level 2 is now the default (with 'WARNING' header, as
4505 header. Level 2 is now the default (with 'WARNING' header, as
4499 before). I think I tracked all places where changes were needed in
4506 before). I think I tracked all places where changes were needed in
4500 IPython, but outside code using the old level numbering may have
4507 IPython, but outside code using the old level numbering may have
4501 broken.
4508 broken.
4502
4509
4503 * IPython/iplib.py (InteractiveShell.runcode): added this to
4510 * IPython/iplib.py (InteractiveShell.runcode): added this to
4504 handle the tracebacks in SystemExit traps correctly. The previous
4511 handle the tracebacks in SystemExit traps correctly. The previous
4505 code (through interact) was printing more of the stack than
4512 code (through interact) was printing more of the stack than
4506 necessary, showing IPython internal code to the user.
4513 necessary, showing IPython internal code to the user.
4507
4514
4508 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
4515 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
4509 default. Now that the default at the confirmation prompt is yes,
4516 default. Now that the default at the confirmation prompt is yes,
4510 it's not so intrusive. François' argument that ipython sessions
4517 it's not so intrusive. François' argument that ipython sessions
4511 tend to be complex enough not to lose them from an accidental C-d,
4518 tend to be complex enough not to lose them from an accidental C-d,
4512 is a valid one.
4519 is a valid one.
4513
4520
4514 * IPython/iplib.py (InteractiveShell.interact): added a
4521 * IPython/iplib.py (InteractiveShell.interact): added a
4515 showtraceback() call to the SystemExit trap, and modified the exit
4522 showtraceback() call to the SystemExit trap, and modified the exit
4516 confirmation to have yes as the default.
4523 confirmation to have yes as the default.
4517
4524
4518 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
4525 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
4519 this file. It's been gone from the code for a long time, this was
4526 this file. It's been gone from the code for a long time, this was
4520 simply leftover junk.
4527 simply leftover junk.
4521
4528
4522 2002-11-01 Fernando Perez <fperez@colorado.edu>
4529 2002-11-01 Fernando Perez <fperez@colorado.edu>
4523
4530
4524 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
4531 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
4525 added. If set, IPython now traps EOF and asks for
4532 added. If set, IPython now traps EOF and asks for
4526 confirmation. After a request by François Pinard.
4533 confirmation. After a request by François Pinard.
4527
4534
4528 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
4535 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
4529 of @abort, and with a new (better) mechanism for handling the
4536 of @abort, and with a new (better) mechanism for handling the
4530 exceptions.
4537 exceptions.
4531
4538
4532 2002-10-27 Fernando Perez <fperez@colorado.edu>
4539 2002-10-27 Fernando Perez <fperez@colorado.edu>
4533
4540
4534 * IPython/usage.py (__doc__): updated the --help information and
4541 * IPython/usage.py (__doc__): updated the --help information and
4535 the ipythonrc file to indicate that -log generates
4542 the ipythonrc file to indicate that -log generates
4536 ./ipython.log. Also fixed the corresponding info in @logstart.
4543 ./ipython.log. Also fixed the corresponding info in @logstart.
4537 This and several other fixes in the manuals thanks to reports by
4544 This and several other fixes in the manuals thanks to reports by
4538 François Pinard <pinard-AT-iro.umontreal.ca>.
4545 François Pinard <pinard-AT-iro.umontreal.ca>.
4539
4546
4540 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4547 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4541 refer to @logstart (instead of @log, which doesn't exist).
4548 refer to @logstart (instead of @log, which doesn't exist).
4542
4549
4543 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4550 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4544 AttributeError crash. Thanks to Christopher Armstrong
4551 AttributeError crash. Thanks to Christopher Armstrong
4545 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4552 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4546 introduced recently (in 0.2.14pre37) with the fix to the eval
4553 introduced recently (in 0.2.14pre37) with the fix to the eval
4547 problem mentioned below.
4554 problem mentioned below.
4548
4555
4549 2002-10-17 Fernando Perez <fperez@colorado.edu>
4556 2002-10-17 Fernando Perez <fperez@colorado.edu>
4550
4557
4551 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4558 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4552 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4559 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4553
4560
4554 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4561 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4555 this function to fix a problem reported by Alex Schmolck. He saw
4562 this function to fix a problem reported by Alex Schmolck. He saw
4556 it with list comprehensions and generators, which were getting
4563 it with list comprehensions and generators, which were getting
4557 called twice. The real problem was an 'eval' call in testing for
4564 called twice. The real problem was an 'eval' call in testing for
4558 automagic which was evaluating the input line silently.
4565 automagic which was evaluating the input line silently.
4559
4566
4560 This is a potentially very nasty bug, if the input has side
4567 This is a potentially very nasty bug, if the input has side
4561 effects which must not be repeated. The code is much cleaner now,
4568 effects which must not be repeated. The code is much cleaner now,
4562 without any blanket 'except' left and with a regexp test for
4569 without any blanket 'except' left and with a regexp test for
4563 actual function names.
4570 actual function names.
4564
4571
4565 But an eval remains, which I'm not fully comfortable with. I just
4572 But an eval remains, which I'm not fully comfortable with. I just
4566 don't know how to find out if an expression could be a callable in
4573 don't know how to find out if an expression could be a callable in
4567 the user's namespace without doing an eval on the string. However
4574 the user's namespace without doing an eval on the string. However
4568 that string is now much more strictly checked so that no code
4575 that string is now much more strictly checked so that no code
4569 slips by, so the eval should only happen for things that can
4576 slips by, so the eval should only happen for things that can
4570 really be only function/method names.
4577 really be only function/method names.
4571
4578
4572 2002-10-15 Fernando Perez <fperez@colorado.edu>
4579 2002-10-15 Fernando Perez <fperez@colorado.edu>
4573
4580
4574 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4581 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4575 OSX information to main manual, removed README_Mac_OSX file from
4582 OSX information to main manual, removed README_Mac_OSX file from
4576 distribution. Also updated credits for recent additions.
4583 distribution. Also updated credits for recent additions.
4577
4584
4578 2002-10-10 Fernando Perez <fperez@colorado.edu>
4585 2002-10-10 Fernando Perez <fperez@colorado.edu>
4579
4586
4580 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4587 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4581 terminal-related issues. Many thanks to Andrea Riciputi
4588 terminal-related issues. Many thanks to Andrea Riciputi
4582 <andrea.riciputi-AT-libero.it> for writing it.
4589 <andrea.riciputi-AT-libero.it> for writing it.
4583
4590
4584 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4591 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4585 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4592 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4586
4593
4587 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4594 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4588 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4595 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4589 <syver-en-AT-online.no> who both submitted patches for this problem.
4596 <syver-en-AT-online.no> who both submitted patches for this problem.
4590
4597
4591 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4598 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4592 global embedding to make sure that things don't overwrite user
4599 global embedding to make sure that things don't overwrite user
4593 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4600 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4594
4601
4595 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4602 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4596 compatibility. Thanks to Hayden Callow
4603 compatibility. Thanks to Hayden Callow
4597 <h.callow-AT-elec.canterbury.ac.nz>
4604 <h.callow-AT-elec.canterbury.ac.nz>
4598
4605
4599 2002-10-04 Fernando Perez <fperez@colorado.edu>
4606 2002-10-04 Fernando Perez <fperez@colorado.edu>
4600
4607
4601 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4608 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4602 Gnuplot.File objects.
4609 Gnuplot.File objects.
4603
4610
4604 2002-07-23 Fernando Perez <fperez@colorado.edu>
4611 2002-07-23 Fernando Perez <fperez@colorado.edu>
4605
4612
4606 * IPython/genutils.py (timing): Added timings() and timing() for
4613 * IPython/genutils.py (timing): Added timings() and timing() for
4607 quick access to the most commonly needed data, the execution
4614 quick access to the most commonly needed data, the execution
4608 times. Old timing() renamed to timings_out().
4615 times. Old timing() renamed to timings_out().
4609
4616
4610 2002-07-18 Fernando Perez <fperez@colorado.edu>
4617 2002-07-18 Fernando Perez <fperez@colorado.edu>
4611
4618
4612 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4619 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4613 bug with nested instances disrupting the parent's tab completion.
4620 bug with nested instances disrupting the parent's tab completion.
4614
4621
4615 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4622 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4616 all_completions code to begin the emacs integration.
4623 all_completions code to begin the emacs integration.
4617
4624
4618 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4625 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4619 argument to allow titling individual arrays when plotting.
4626 argument to allow titling individual arrays when plotting.
4620
4627
4621 2002-07-15 Fernando Perez <fperez@colorado.edu>
4628 2002-07-15 Fernando Perez <fperez@colorado.edu>
4622
4629
4623 * setup.py (make_shortcut): changed to retrieve the value of
4630 * setup.py (make_shortcut): changed to retrieve the value of
4624 'Program Files' directory from the registry (this value changes in
4631 'Program Files' directory from the registry (this value changes in
4625 non-english versions of Windows). Thanks to Thomas Fanslau
4632 non-english versions of Windows). Thanks to Thomas Fanslau
4626 <tfanslau-AT-gmx.de> for the report.
4633 <tfanslau-AT-gmx.de> for the report.
4627
4634
4628 2002-07-10 Fernando Perez <fperez@colorado.edu>
4635 2002-07-10 Fernando Perez <fperez@colorado.edu>
4629
4636
4630 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4637 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4631 a bug in pdb, which crashes if a line with only whitespace is
4638 a bug in pdb, which crashes if a line with only whitespace is
4632 entered. Bug report submitted to sourceforge.
4639 entered. Bug report submitted to sourceforge.
4633
4640
4634 2002-07-09 Fernando Perez <fperez@colorado.edu>
4641 2002-07-09 Fernando Perez <fperez@colorado.edu>
4635
4642
4636 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4643 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4637 reporting exceptions (it's a bug in inspect.py, I just set a
4644 reporting exceptions (it's a bug in inspect.py, I just set a
4638 workaround).
4645 workaround).
4639
4646
4640 2002-07-08 Fernando Perez <fperez@colorado.edu>
4647 2002-07-08 Fernando Perez <fperez@colorado.edu>
4641
4648
4642 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4649 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4643 __IPYTHON__ in __builtins__ to show up in user_ns.
4650 __IPYTHON__ in __builtins__ to show up in user_ns.
4644
4651
4645 2002-07-03 Fernando Perez <fperez@colorado.edu>
4652 2002-07-03 Fernando Perez <fperez@colorado.edu>
4646
4653
4647 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4654 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4648 name from @gp_set_instance to @gp_set_default.
4655 name from @gp_set_instance to @gp_set_default.
4649
4656
4650 * IPython/ipmaker.py (make_IPython): default editor value set to
4657 * IPython/ipmaker.py (make_IPython): default editor value set to
4651 '0' (a string), to match the rc file. Otherwise will crash when
4658 '0' (a string), to match the rc file. Otherwise will crash when
4652 .strip() is called on it.
4659 .strip() is called on it.
4653
4660
4654
4661
4655 2002-06-28 Fernando Perez <fperez@colorado.edu>
4662 2002-06-28 Fernando Perez <fperez@colorado.edu>
4656
4663
4657 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4664 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4658 of files in current directory when a file is executed via
4665 of files in current directory when a file is executed via
4659 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4666 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4660
4667
4661 * setup.py (manfiles): fix for rpm builds, submitted by RA
4668 * setup.py (manfiles): fix for rpm builds, submitted by RA
4662 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4669 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4663
4670
4664 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4671 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4665 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4672 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4666 string!). A. Schmolck caught this one.
4673 string!). A. Schmolck caught this one.
4667
4674
4668 2002-06-27 Fernando Perez <fperez@colorado.edu>
4675 2002-06-27 Fernando Perez <fperez@colorado.edu>
4669
4676
4670 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4677 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4671 defined files at the cmd line. __name__ wasn't being set to
4678 defined files at the cmd line. __name__ wasn't being set to
4672 __main__.
4679 __main__.
4673
4680
4674 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4681 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4675 regular lists and tuples besides Numeric arrays.
4682 regular lists and tuples besides Numeric arrays.
4676
4683
4677 * IPython/Prompts.py (CachedOutput.__call__): Added output
4684 * IPython/Prompts.py (CachedOutput.__call__): Added output
4678 supression for input ending with ';'. Similar to Mathematica and
4685 supression for input ending with ';'. Similar to Mathematica and
4679 Matlab. The _* vars and Out[] list are still updated, just like
4686 Matlab. The _* vars and Out[] list are still updated, just like
4680 Mathematica behaves.
4687 Mathematica behaves.
4681
4688
4682 2002-06-25 Fernando Perez <fperez@colorado.edu>
4689 2002-06-25 Fernando Perez <fperez@colorado.edu>
4683
4690
4684 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4691 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4685 .ini extensions for profiels under Windows.
4692 .ini extensions for profiels under Windows.
4686
4693
4687 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4694 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4688 string form. Fix contributed by Alexander Schmolck
4695 string form. Fix contributed by Alexander Schmolck
4689 <a.schmolck-AT-gmx.net>
4696 <a.schmolck-AT-gmx.net>
4690
4697
4691 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4698 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4692 pre-configured Gnuplot instance.
4699 pre-configured Gnuplot instance.
4693
4700
4694 2002-06-21 Fernando Perez <fperez@colorado.edu>
4701 2002-06-21 Fernando Perez <fperez@colorado.edu>
4695
4702
4696 * IPython/numutils.py (exp_safe): new function, works around the
4703 * IPython/numutils.py (exp_safe): new function, works around the
4697 underflow problems in Numeric.
4704 underflow problems in Numeric.
4698 (log2): New fn. Safe log in base 2: returns exact integer answer
4705 (log2): New fn. Safe log in base 2: returns exact integer answer
4699 for exact integer powers of 2.
4706 for exact integer powers of 2.
4700
4707
4701 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4708 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4702 properly.
4709 properly.
4703
4710
4704 2002-06-20 Fernando Perez <fperez@colorado.edu>
4711 2002-06-20 Fernando Perez <fperez@colorado.edu>
4705
4712
4706 * IPython/genutils.py (timing): new function like
4713 * IPython/genutils.py (timing): new function like
4707 Mathematica's. Similar to time_test, but returns more info.
4714 Mathematica's. Similar to time_test, but returns more info.
4708
4715
4709 2002-06-18 Fernando Perez <fperez@colorado.edu>
4716 2002-06-18 Fernando Perez <fperez@colorado.edu>
4710
4717
4711 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4718 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4712 according to Mike Heeter's suggestions.
4719 according to Mike Heeter's suggestions.
4713
4720
4714 2002-06-16 Fernando Perez <fperez@colorado.edu>
4721 2002-06-16 Fernando Perez <fperez@colorado.edu>
4715
4722
4716 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4723 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4717 system. GnuplotMagic is gone as a user-directory option. New files
4724 system. GnuplotMagic is gone as a user-directory option. New files
4718 make it easier to use all the gnuplot stuff both from external
4725 make it easier to use all the gnuplot stuff both from external
4719 programs as well as from IPython. Had to rewrite part of
4726 programs as well as from IPython. Had to rewrite part of
4720 hardcopy() b/c of a strange bug: often the ps files simply don't
4727 hardcopy() b/c of a strange bug: often the ps files simply don't
4721 get created, and require a repeat of the command (often several
4728 get created, and require a repeat of the command (often several
4722 times).
4729 times).
4723
4730
4724 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4731 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4725 resolve output channel at call time, so that if sys.stderr has
4732 resolve output channel at call time, so that if sys.stderr has
4726 been redirected by user this gets honored.
4733 been redirected by user this gets honored.
4727
4734
4728 2002-06-13 Fernando Perez <fperez@colorado.edu>
4735 2002-06-13 Fernando Perez <fperez@colorado.edu>
4729
4736
4730 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4737 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4731 IPShell. Kept a copy with the old names to avoid breaking people's
4738 IPShell. Kept a copy with the old names to avoid breaking people's
4732 embedded code.
4739 embedded code.
4733
4740
4734 * IPython/ipython: simplified it to the bare minimum after
4741 * IPython/ipython: simplified it to the bare minimum after
4735 Holger's suggestions. Added info about how to use it in
4742 Holger's suggestions. Added info about how to use it in
4736 PYTHONSTARTUP.
4743 PYTHONSTARTUP.
4737
4744
4738 * IPython/Shell.py (IPythonShell): changed the options passing
4745 * IPython/Shell.py (IPythonShell): changed the options passing
4739 from a string with funky %s replacements to a straight list. Maybe
4746 from a string with funky %s replacements to a straight list. Maybe
4740 a bit more typing, but it follows sys.argv conventions, so there's
4747 a bit more typing, but it follows sys.argv conventions, so there's
4741 less special-casing to remember.
4748 less special-casing to remember.
4742
4749
4743 2002-06-12 Fernando Perez <fperez@colorado.edu>
4750 2002-06-12 Fernando Perez <fperez@colorado.edu>
4744
4751
4745 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4752 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4746 command. Thanks to a suggestion by Mike Heeter.
4753 command. Thanks to a suggestion by Mike Heeter.
4747 (Magic.magic_pfile): added behavior to look at filenames if given
4754 (Magic.magic_pfile): added behavior to look at filenames if given
4748 arg is not a defined object.
4755 arg is not a defined object.
4749 (Magic.magic_save): New @save function to save code snippets. Also
4756 (Magic.magic_save): New @save function to save code snippets. Also
4750 a Mike Heeter idea.
4757 a Mike Heeter idea.
4751
4758
4752 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4759 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4753 plot() and replot(). Much more convenient now, especially for
4760 plot() and replot(). Much more convenient now, especially for
4754 interactive use.
4761 interactive use.
4755
4762
4756 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4763 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4757 filenames.
4764 filenames.
4758
4765
4759 2002-06-02 Fernando Perez <fperez@colorado.edu>
4766 2002-06-02 Fernando Perez <fperez@colorado.edu>
4760
4767
4761 * IPython/Struct.py (Struct.__init__): modified to admit
4768 * IPython/Struct.py (Struct.__init__): modified to admit
4762 initialization via another struct.
4769 initialization via another struct.
4763
4770
4764 * IPython/genutils.py (SystemExec.__init__): New stateful
4771 * IPython/genutils.py (SystemExec.__init__): New stateful
4765 interface to xsys and bq. Useful for writing system scripts.
4772 interface to xsys and bq. Useful for writing system scripts.
4766
4773
4767 2002-05-30 Fernando Perez <fperez@colorado.edu>
4774 2002-05-30 Fernando Perez <fperez@colorado.edu>
4768
4775
4769 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4776 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4770 documents. This will make the user download smaller (it's getting
4777 documents. This will make the user download smaller (it's getting
4771 too big).
4778 too big).
4772
4779
4773 2002-05-29 Fernando Perez <fperez@colorado.edu>
4780 2002-05-29 Fernando Perez <fperez@colorado.edu>
4774
4781
4775 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4782 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4776 fix problems with shelve and pickle. Seems to work, but I don't
4783 fix problems with shelve and pickle. Seems to work, but I don't
4777 know if corner cases break it. Thanks to Mike Heeter
4784 know if corner cases break it. Thanks to Mike Heeter
4778 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4785 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4779
4786
4780 2002-05-24 Fernando Perez <fperez@colorado.edu>
4787 2002-05-24 Fernando Perez <fperez@colorado.edu>
4781
4788
4782 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4789 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4783 macros having broken.
4790 macros having broken.
4784
4791
4785 2002-05-21 Fernando Perez <fperez@colorado.edu>
4792 2002-05-21 Fernando Perez <fperez@colorado.edu>
4786
4793
4787 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4794 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4788 introduced logging bug: all history before logging started was
4795 introduced logging bug: all history before logging started was
4789 being written one character per line! This came from the redesign
4796 being written one character per line! This came from the redesign
4790 of the input history as a special list which slices to strings,
4797 of the input history as a special list which slices to strings,
4791 not to lists.
4798 not to lists.
4792
4799
4793 2002-05-20 Fernando Perez <fperez@colorado.edu>
4800 2002-05-20 Fernando Perez <fperez@colorado.edu>
4794
4801
4795 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4802 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4796 be an attribute of all classes in this module. The design of these
4803 be an attribute of all classes in this module. The design of these
4797 classes needs some serious overhauling.
4804 classes needs some serious overhauling.
4798
4805
4799 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4806 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4800 which was ignoring '_' in option names.
4807 which was ignoring '_' in option names.
4801
4808
4802 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4809 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4803 'Verbose_novars' to 'Context' and made it the new default. It's a
4810 'Verbose_novars' to 'Context' and made it the new default. It's a
4804 bit more readable and also safer than verbose.
4811 bit more readable and also safer than verbose.
4805
4812
4806 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4813 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4807 triple-quoted strings.
4814 triple-quoted strings.
4808
4815
4809 * IPython/OInspect.py (__all__): new module exposing the object
4816 * IPython/OInspect.py (__all__): new module exposing the object
4810 introspection facilities. Now the corresponding magics are dummy
4817 introspection facilities. Now the corresponding magics are dummy
4811 wrappers around this. Having this module will make it much easier
4818 wrappers around this. Having this module will make it much easier
4812 to put these functions into our modified pdb.
4819 to put these functions into our modified pdb.
4813 This new object inspector system uses the new colorizing module,
4820 This new object inspector system uses the new colorizing module,
4814 so source code and other things are nicely syntax highlighted.
4821 so source code and other things are nicely syntax highlighted.
4815
4822
4816 2002-05-18 Fernando Perez <fperez@colorado.edu>
4823 2002-05-18 Fernando Perez <fperez@colorado.edu>
4817
4824
4818 * IPython/ColorANSI.py: Split the coloring tools into a separate
4825 * IPython/ColorANSI.py: Split the coloring tools into a separate
4819 module so I can use them in other code easier (they were part of
4826 module so I can use them in other code easier (they were part of
4820 ultraTB).
4827 ultraTB).
4821
4828
4822 2002-05-17 Fernando Perez <fperez@colorado.edu>
4829 2002-05-17 Fernando Perez <fperez@colorado.edu>
4823
4830
4824 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4831 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4825 fixed it to set the global 'g' also to the called instance, as
4832 fixed it to set the global 'g' also to the called instance, as
4826 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4833 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4827 user's 'g' variables).
4834 user's 'g' variables).
4828
4835
4829 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4836 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4830 global variables (aliases to _ih,_oh) so that users which expect
4837 global variables (aliases to _ih,_oh) so that users which expect
4831 In[5] or Out[7] to work aren't unpleasantly surprised.
4838 In[5] or Out[7] to work aren't unpleasantly surprised.
4832 (InputList.__getslice__): new class to allow executing slices of
4839 (InputList.__getslice__): new class to allow executing slices of
4833 input history directly. Very simple class, complements the use of
4840 input history directly. Very simple class, complements the use of
4834 macros.
4841 macros.
4835
4842
4836 2002-05-16 Fernando Perez <fperez@colorado.edu>
4843 2002-05-16 Fernando Perez <fperez@colorado.edu>
4837
4844
4838 * setup.py (docdirbase): make doc directory be just doc/IPython
4845 * setup.py (docdirbase): make doc directory be just doc/IPython
4839 without version numbers, it will reduce clutter for users.
4846 without version numbers, it will reduce clutter for users.
4840
4847
4841 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4848 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4842 execfile call to prevent possible memory leak. See for details:
4849 execfile call to prevent possible memory leak. See for details:
4843 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4850 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4844
4851
4845 2002-05-15 Fernando Perez <fperez@colorado.edu>
4852 2002-05-15 Fernando Perez <fperez@colorado.edu>
4846
4853
4847 * IPython/Magic.py (Magic.magic_psource): made the object
4854 * IPython/Magic.py (Magic.magic_psource): made the object
4848 introspection names be more standard: pdoc, pdef, pfile and
4855 introspection names be more standard: pdoc, pdef, pfile and
4849 psource. They all print/page their output, and it makes
4856 psource. They all print/page their output, and it makes
4850 remembering them easier. Kept old names for compatibility as
4857 remembering them easier. Kept old names for compatibility as
4851 aliases.
4858 aliases.
4852
4859
4853 2002-05-14 Fernando Perez <fperez@colorado.edu>
4860 2002-05-14 Fernando Perez <fperez@colorado.edu>
4854
4861
4855 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4862 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4856 what the mouse problem was. The trick is to use gnuplot with temp
4863 what the mouse problem was. The trick is to use gnuplot with temp
4857 files and NOT with pipes (for data communication), because having
4864 files and NOT with pipes (for data communication), because having
4858 both pipes and the mouse on is bad news.
4865 both pipes and the mouse on is bad news.
4859
4866
4860 2002-05-13 Fernando Perez <fperez@colorado.edu>
4867 2002-05-13 Fernando Perez <fperez@colorado.edu>
4861
4868
4862 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4869 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4863 bug. Information would be reported about builtins even when
4870 bug. Information would be reported about builtins even when
4864 user-defined functions overrode them.
4871 user-defined functions overrode them.
4865
4872
4866 2002-05-11 Fernando Perez <fperez@colorado.edu>
4873 2002-05-11 Fernando Perez <fperez@colorado.edu>
4867
4874
4868 * IPython/__init__.py (__all__): removed FlexCompleter from
4875 * IPython/__init__.py (__all__): removed FlexCompleter from
4869 __all__ so that things don't fail in platforms without readline.
4876 __all__ so that things don't fail in platforms without readline.
4870
4877
4871 2002-05-10 Fernando Perez <fperez@colorado.edu>
4878 2002-05-10 Fernando Perez <fperez@colorado.edu>
4872
4879
4873 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4880 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4874 it requires Numeric, effectively making Numeric a dependency for
4881 it requires Numeric, effectively making Numeric a dependency for
4875 IPython.
4882 IPython.
4876
4883
4877 * Released 0.2.13
4884 * Released 0.2.13
4878
4885
4879 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4886 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4880 profiler interface. Now all the major options from the profiler
4887 profiler interface. Now all the major options from the profiler
4881 module are directly supported in IPython, both for single
4888 module are directly supported in IPython, both for single
4882 expressions (@prun) and for full programs (@run -p).
4889 expressions (@prun) and for full programs (@run -p).
4883
4890
4884 2002-05-09 Fernando Perez <fperez@colorado.edu>
4891 2002-05-09 Fernando Perez <fperez@colorado.edu>
4885
4892
4886 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4893 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4887 magic properly formatted for screen.
4894 magic properly formatted for screen.
4888
4895
4889 * setup.py (make_shortcut): Changed things to put pdf version in
4896 * setup.py (make_shortcut): Changed things to put pdf version in
4890 doc/ instead of doc/manual (had to change lyxport a bit).
4897 doc/ instead of doc/manual (had to change lyxport a bit).
4891
4898
4892 * IPython/Magic.py (Profile.string_stats): made profile runs go
4899 * IPython/Magic.py (Profile.string_stats): made profile runs go
4893 through pager (they are long and a pager allows searching, saving,
4900 through pager (they are long and a pager allows searching, saving,
4894 etc.)
4901 etc.)
4895
4902
4896 2002-05-08 Fernando Perez <fperez@colorado.edu>
4903 2002-05-08 Fernando Perez <fperez@colorado.edu>
4897
4904
4898 * Released 0.2.12
4905 * Released 0.2.12
4899
4906
4900 2002-05-06 Fernando Perez <fperez@colorado.edu>
4907 2002-05-06 Fernando Perez <fperez@colorado.edu>
4901
4908
4902 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4909 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4903 introduced); 'hist n1 n2' was broken.
4910 introduced); 'hist n1 n2' was broken.
4904 (Magic.magic_pdb): added optional on/off arguments to @pdb
4911 (Magic.magic_pdb): added optional on/off arguments to @pdb
4905 (Magic.magic_run): added option -i to @run, which executes code in
4912 (Magic.magic_run): added option -i to @run, which executes code in
4906 the IPython namespace instead of a clean one. Also added @irun as
4913 the IPython namespace instead of a clean one. Also added @irun as
4907 an alias to @run -i.
4914 an alias to @run -i.
4908
4915
4909 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4916 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4910 fixed (it didn't really do anything, the namespaces were wrong).
4917 fixed (it didn't really do anything, the namespaces were wrong).
4911
4918
4912 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4919 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4913
4920
4914 * IPython/__init__.py (__all__): Fixed package namespace, now
4921 * IPython/__init__.py (__all__): Fixed package namespace, now
4915 'import IPython' does give access to IPython.<all> as
4922 'import IPython' does give access to IPython.<all> as
4916 expected. Also renamed __release__ to Release.
4923 expected. Also renamed __release__ to Release.
4917
4924
4918 * IPython/Debugger.py (__license__): created new Pdb class which
4925 * IPython/Debugger.py (__license__): created new Pdb class which
4919 functions like a drop-in for the normal pdb.Pdb but does NOT
4926 functions like a drop-in for the normal pdb.Pdb but does NOT
4920 import readline by default. This way it doesn't muck up IPython's
4927 import readline by default. This way it doesn't muck up IPython's
4921 readline handling, and now tab-completion finally works in the
4928 readline handling, and now tab-completion finally works in the
4922 debugger -- sort of. It completes things globally visible, but the
4929 debugger -- sort of. It completes things globally visible, but the
4923 completer doesn't track the stack as pdb walks it. That's a bit
4930 completer doesn't track the stack as pdb walks it. That's a bit
4924 tricky, and I'll have to implement it later.
4931 tricky, and I'll have to implement it later.
4925
4932
4926 2002-05-05 Fernando Perez <fperez@colorado.edu>
4933 2002-05-05 Fernando Perez <fperez@colorado.edu>
4927
4934
4928 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4935 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4929 magic docstrings when printed via ? (explicit \'s were being
4936 magic docstrings when printed via ? (explicit \'s were being
4930 printed).
4937 printed).
4931
4938
4932 * IPython/ipmaker.py (make_IPython): fixed namespace
4939 * IPython/ipmaker.py (make_IPython): fixed namespace
4933 identification bug. Now variables loaded via logs or command-line
4940 identification bug. Now variables loaded via logs or command-line
4934 files are recognized in the interactive namespace by @who.
4941 files are recognized in the interactive namespace by @who.
4935
4942
4936 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4943 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4937 log replay system stemming from the string form of Structs.
4944 log replay system stemming from the string form of Structs.
4938
4945
4939 * IPython/Magic.py (Macro.__init__): improved macros to properly
4946 * IPython/Magic.py (Macro.__init__): improved macros to properly
4940 handle magic commands in them.
4947 handle magic commands in them.
4941 (Magic.magic_logstart): usernames are now expanded so 'logstart
4948 (Magic.magic_logstart): usernames are now expanded so 'logstart
4942 ~/mylog' now works.
4949 ~/mylog' now works.
4943
4950
4944 * IPython/iplib.py (complete): fixed bug where paths starting with
4951 * IPython/iplib.py (complete): fixed bug where paths starting with
4945 '/' would be completed as magic names.
4952 '/' would be completed as magic names.
4946
4953
4947 2002-05-04 Fernando Perez <fperez@colorado.edu>
4954 2002-05-04 Fernando Perez <fperez@colorado.edu>
4948
4955
4949 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4956 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4950 allow running full programs under the profiler's control.
4957 allow running full programs under the profiler's control.
4951
4958
4952 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4959 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4953 mode to report exceptions verbosely but without formatting
4960 mode to report exceptions verbosely but without formatting
4954 variables. This addresses the issue of ipython 'freezing' (it's
4961 variables. This addresses the issue of ipython 'freezing' (it's
4955 not frozen, but caught in an expensive formatting loop) when huge
4962 not frozen, but caught in an expensive formatting loop) when huge
4956 variables are in the context of an exception.
4963 variables are in the context of an exception.
4957 (VerboseTB.text): Added '--->' markers at line where exception was
4964 (VerboseTB.text): Added '--->' markers at line where exception was
4958 triggered. Much clearer to read, especially in NoColor modes.
4965 triggered. Much clearer to read, especially in NoColor modes.
4959
4966
4960 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4967 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4961 implemented in reverse when changing to the new parse_options().
4968 implemented in reverse when changing to the new parse_options().
4962
4969
4963 2002-05-03 Fernando Perez <fperez@colorado.edu>
4970 2002-05-03 Fernando Perez <fperez@colorado.edu>
4964
4971
4965 * IPython/Magic.py (Magic.parse_options): new function so that
4972 * IPython/Magic.py (Magic.parse_options): new function so that
4966 magics can parse options easier.
4973 magics can parse options easier.
4967 (Magic.magic_prun): new function similar to profile.run(),
4974 (Magic.magic_prun): new function similar to profile.run(),
4968 suggested by Chris Hart.
4975 suggested by Chris Hart.
4969 (Magic.magic_cd): fixed behavior so that it only changes if
4976 (Magic.magic_cd): fixed behavior so that it only changes if
4970 directory actually is in history.
4977 directory actually is in history.
4971
4978
4972 * IPython/usage.py (__doc__): added information about potential
4979 * IPython/usage.py (__doc__): added information about potential
4973 slowness of Verbose exception mode when there are huge data
4980 slowness of Verbose exception mode when there are huge data
4974 structures to be formatted (thanks to Archie Paulson).
4981 structures to be formatted (thanks to Archie Paulson).
4975
4982
4976 * IPython/ipmaker.py (make_IPython): Changed default logging
4983 * IPython/ipmaker.py (make_IPython): Changed default logging
4977 (when simply called with -log) to use curr_dir/ipython.log in
4984 (when simply called with -log) to use curr_dir/ipython.log in
4978 rotate mode. Fixed crash which was occuring with -log before
4985 rotate mode. Fixed crash which was occuring with -log before
4979 (thanks to Jim Boyle).
4986 (thanks to Jim Boyle).
4980
4987
4981 2002-05-01 Fernando Perez <fperez@colorado.edu>
4988 2002-05-01 Fernando Perez <fperez@colorado.edu>
4982
4989
4983 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4990 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4984 was nasty -- though somewhat of a corner case).
4991 was nasty -- though somewhat of a corner case).
4985
4992
4986 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4993 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4987 text (was a bug).
4994 text (was a bug).
4988
4995
4989 2002-04-30 Fernando Perez <fperez@colorado.edu>
4996 2002-04-30 Fernando Perez <fperez@colorado.edu>
4990
4997
4991 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4998 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4992 a print after ^D or ^C from the user so that the In[] prompt
4999 a print after ^D or ^C from the user so that the In[] prompt
4993 doesn't over-run the gnuplot one.
5000 doesn't over-run the gnuplot one.
4994
5001
4995 2002-04-29 Fernando Perez <fperez@colorado.edu>
5002 2002-04-29 Fernando Perez <fperez@colorado.edu>
4996
5003
4997 * Released 0.2.10
5004 * Released 0.2.10
4998
5005
4999 * IPython/__release__.py (version): get date dynamically.
5006 * IPython/__release__.py (version): get date dynamically.
5000
5007
5001 * Misc. documentation updates thanks to Arnd's comments. Also ran
5008 * Misc. documentation updates thanks to Arnd's comments. Also ran
5002 a full spellcheck on the manual (hadn't been done in a while).
5009 a full spellcheck on the manual (hadn't been done in a while).
5003
5010
5004 2002-04-27 Fernando Perez <fperez@colorado.edu>
5011 2002-04-27 Fernando Perez <fperez@colorado.edu>
5005
5012
5006 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5013 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5007 starting a log in mid-session would reset the input history list.
5014 starting a log in mid-session would reset the input history list.
5008
5015
5009 2002-04-26 Fernando Perez <fperez@colorado.edu>
5016 2002-04-26 Fernando Perez <fperez@colorado.edu>
5010
5017
5011 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5018 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5012 all files were being included in an update. Now anything in
5019 all files were being included in an update. Now anything in
5013 UserConfig that matches [A-Za-z]*.py will go (this excludes
5020 UserConfig that matches [A-Za-z]*.py will go (this excludes
5014 __init__.py)
5021 __init__.py)
5015
5022
5016 2002-04-25 Fernando Perez <fperez@colorado.edu>
5023 2002-04-25 Fernando Perez <fperez@colorado.edu>
5017
5024
5018 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5025 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5019 to __builtins__ so that any form of embedded or imported code can
5026 to __builtins__ so that any form of embedded or imported code can
5020 test for being inside IPython.
5027 test for being inside IPython.
5021
5028
5022 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5029 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5023 changed to GnuplotMagic because it's now an importable module,
5030 changed to GnuplotMagic because it's now an importable module,
5024 this makes the name follow that of the standard Gnuplot module.
5031 this makes the name follow that of the standard Gnuplot module.
5025 GnuplotMagic can now be loaded at any time in mid-session.
5032 GnuplotMagic can now be loaded at any time in mid-session.
5026
5033
5027 2002-04-24 Fernando Perez <fperez@colorado.edu>
5034 2002-04-24 Fernando Perez <fperez@colorado.edu>
5028
5035
5029 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5036 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5030 the globals (IPython has its own namespace) and the
5037 the globals (IPython has its own namespace) and the
5031 PhysicalQuantity stuff is much better anyway.
5038 PhysicalQuantity stuff is much better anyway.
5032
5039
5033 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5040 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5034 embedding example to standard user directory for
5041 embedding example to standard user directory for
5035 distribution. Also put it in the manual.
5042 distribution. Also put it in the manual.
5036
5043
5037 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5044 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5038 instance as first argument (so it doesn't rely on some obscure
5045 instance as first argument (so it doesn't rely on some obscure
5039 hidden global).
5046 hidden global).
5040
5047
5041 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5048 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5042 delimiters. While it prevents ().TAB from working, it allows
5049 delimiters. While it prevents ().TAB from working, it allows
5043 completions in open (... expressions. This is by far a more common
5050 completions in open (... expressions. This is by far a more common
5044 case.
5051 case.
5045
5052
5046 2002-04-23 Fernando Perez <fperez@colorado.edu>
5053 2002-04-23 Fernando Perez <fperez@colorado.edu>
5047
5054
5048 * IPython/Extensions/InterpreterPasteInput.py: new
5055 * IPython/Extensions/InterpreterPasteInput.py: new
5049 syntax-processing module for pasting lines with >>> or ... at the
5056 syntax-processing module for pasting lines with >>> or ... at the
5050 start.
5057 start.
5051
5058
5052 * IPython/Extensions/PhysicalQ_Interactive.py
5059 * IPython/Extensions/PhysicalQ_Interactive.py
5053 (PhysicalQuantityInteractive.__int__): fixed to work with either
5060 (PhysicalQuantityInteractive.__int__): fixed to work with either
5054 Numeric or math.
5061 Numeric or math.
5055
5062
5056 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5063 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5057 provided profiles. Now we have:
5064 provided profiles. Now we have:
5058 -math -> math module as * and cmath with its own namespace.
5065 -math -> math module as * and cmath with its own namespace.
5059 -numeric -> Numeric as *, plus gnuplot & grace
5066 -numeric -> Numeric as *, plus gnuplot & grace
5060 -physics -> same as before
5067 -physics -> same as before
5061
5068
5062 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5069 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5063 user-defined magics wouldn't be found by @magic if they were
5070 user-defined magics wouldn't be found by @magic if they were
5064 defined as class methods. Also cleaned up the namespace search
5071 defined as class methods. Also cleaned up the namespace search
5065 logic and the string building (to use %s instead of many repeated
5072 logic and the string building (to use %s instead of many repeated
5066 string adds).
5073 string adds).
5067
5074
5068 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5075 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5069 of user-defined magics to operate with class methods (cleaner, in
5076 of user-defined magics to operate with class methods (cleaner, in
5070 line with the gnuplot code).
5077 line with the gnuplot code).
5071
5078
5072 2002-04-22 Fernando Perez <fperez@colorado.edu>
5079 2002-04-22 Fernando Perez <fperez@colorado.edu>
5073
5080
5074 * setup.py: updated dependency list so that manual is updated when
5081 * setup.py: updated dependency list so that manual is updated when
5075 all included files change.
5082 all included files change.
5076
5083
5077 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5084 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5078 the delimiter removal option (the fix is ugly right now).
5085 the delimiter removal option (the fix is ugly right now).
5079
5086
5080 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5087 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5081 all of the math profile (quicker loading, no conflict between
5088 all of the math profile (quicker loading, no conflict between
5082 g-9.8 and g-gnuplot).
5089 g-9.8 and g-gnuplot).
5083
5090
5084 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5091 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5085 name of post-mortem files to IPython_crash_report.txt.
5092 name of post-mortem files to IPython_crash_report.txt.
5086
5093
5087 * Cleanup/update of the docs. Added all the new readline info and
5094 * Cleanup/update of the docs. Added all the new readline info and
5088 formatted all lists as 'real lists'.
5095 formatted all lists as 'real lists'.
5089
5096
5090 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5097 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5091 tab-completion options, since the full readline parse_and_bind is
5098 tab-completion options, since the full readline parse_and_bind is
5092 now accessible.
5099 now accessible.
5093
5100
5094 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5101 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5095 handling of readline options. Now users can specify any string to
5102 handling of readline options. Now users can specify any string to
5096 be passed to parse_and_bind(), as well as the delimiters to be
5103 be passed to parse_and_bind(), as well as the delimiters to be
5097 removed.
5104 removed.
5098 (InteractiveShell.__init__): Added __name__ to the global
5105 (InteractiveShell.__init__): Added __name__ to the global
5099 namespace so that things like Itpl which rely on its existence
5106 namespace so that things like Itpl which rely on its existence
5100 don't crash.
5107 don't crash.
5101 (InteractiveShell._prefilter): Defined the default with a _ so
5108 (InteractiveShell._prefilter): Defined the default with a _ so
5102 that prefilter() is easier to override, while the default one
5109 that prefilter() is easier to override, while the default one
5103 remains available.
5110 remains available.
5104
5111
5105 2002-04-18 Fernando Perez <fperez@colorado.edu>
5112 2002-04-18 Fernando Perez <fperez@colorado.edu>
5106
5113
5107 * Added information about pdb in the docs.
5114 * Added information about pdb in the docs.
5108
5115
5109 2002-04-17 Fernando Perez <fperez@colorado.edu>
5116 2002-04-17 Fernando Perez <fperez@colorado.edu>
5110
5117
5111 * IPython/ipmaker.py (make_IPython): added rc_override option to
5118 * IPython/ipmaker.py (make_IPython): added rc_override option to
5112 allow passing config options at creation time which may override
5119 allow passing config options at creation time which may override
5113 anything set in the config files or command line. This is
5120 anything set in the config files or command line. This is
5114 particularly useful for configuring embedded instances.
5121 particularly useful for configuring embedded instances.
5115
5122
5116 2002-04-15 Fernando Perez <fperez@colorado.edu>
5123 2002-04-15 Fernando Perez <fperez@colorado.edu>
5117
5124
5118 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5125 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5119 crash embedded instances because of the input cache falling out of
5126 crash embedded instances because of the input cache falling out of
5120 sync with the output counter.
5127 sync with the output counter.
5121
5128
5122 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5129 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5123 mode which calls pdb after an uncaught exception in IPython itself.
5130 mode which calls pdb after an uncaught exception in IPython itself.
5124
5131
5125 2002-04-14 Fernando Perez <fperez@colorado.edu>
5132 2002-04-14 Fernando Perez <fperez@colorado.edu>
5126
5133
5127 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5134 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5128 readline, fix it back after each call.
5135 readline, fix it back after each call.
5129
5136
5130 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5137 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5131 method to force all access via __call__(), which guarantees that
5138 method to force all access via __call__(), which guarantees that
5132 traceback references are properly deleted.
5139 traceback references are properly deleted.
5133
5140
5134 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5141 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5135 improve printing when pprint is in use.
5142 improve printing when pprint is in use.
5136
5143
5137 2002-04-13 Fernando Perez <fperez@colorado.edu>
5144 2002-04-13 Fernando Perez <fperez@colorado.edu>
5138
5145
5139 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5146 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5140 exceptions aren't caught anymore. If the user triggers one, he
5147 exceptions aren't caught anymore. If the user triggers one, he
5141 should know why he's doing it and it should go all the way up,
5148 should know why he's doing it and it should go all the way up,
5142 just like any other exception. So now @abort will fully kill the
5149 just like any other exception. So now @abort will fully kill the
5143 embedded interpreter and the embedding code (unless that happens
5150 embedded interpreter and the embedding code (unless that happens
5144 to catch SystemExit).
5151 to catch SystemExit).
5145
5152
5146 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5153 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5147 and a debugger() method to invoke the interactive pdb debugger
5154 and a debugger() method to invoke the interactive pdb debugger
5148 after printing exception information. Also added the corresponding
5155 after printing exception information. Also added the corresponding
5149 -pdb option and @pdb magic to control this feature, and updated
5156 -pdb option and @pdb magic to control this feature, and updated
5150 the docs. After a suggestion from Christopher Hart
5157 the docs. After a suggestion from Christopher Hart
5151 (hart-AT-caltech.edu).
5158 (hart-AT-caltech.edu).
5152
5159
5153 2002-04-12 Fernando Perez <fperez@colorado.edu>
5160 2002-04-12 Fernando Perez <fperez@colorado.edu>
5154
5161
5155 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5162 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5156 the exception handlers defined by the user (not the CrashHandler)
5163 the exception handlers defined by the user (not the CrashHandler)
5157 so that user exceptions don't trigger an ipython bug report.
5164 so that user exceptions don't trigger an ipython bug report.
5158
5165
5159 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5166 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5160 configurable (it should have always been so).
5167 configurable (it should have always been so).
5161
5168
5162 2002-03-26 Fernando Perez <fperez@colorado.edu>
5169 2002-03-26 Fernando Perez <fperez@colorado.edu>
5163
5170
5164 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5171 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5165 and there to fix embedding namespace issues. This should all be
5172 and there to fix embedding namespace issues. This should all be
5166 done in a more elegant way.
5173 done in a more elegant way.
5167
5174
5168 2002-03-25 Fernando Perez <fperez@colorado.edu>
5175 2002-03-25 Fernando Perez <fperez@colorado.edu>
5169
5176
5170 * IPython/genutils.py (get_home_dir): Try to make it work under
5177 * IPython/genutils.py (get_home_dir): Try to make it work under
5171 win9x also.
5178 win9x also.
5172
5179
5173 2002-03-20 Fernando Perez <fperez@colorado.edu>
5180 2002-03-20 Fernando Perez <fperez@colorado.edu>
5174
5181
5175 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5182 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5176 sys.displayhook untouched upon __init__.
5183 sys.displayhook untouched upon __init__.
5177
5184
5178 2002-03-19 Fernando Perez <fperez@colorado.edu>
5185 2002-03-19 Fernando Perez <fperez@colorado.edu>
5179
5186
5180 * Released 0.2.9 (for embedding bug, basically).
5187 * Released 0.2.9 (for embedding bug, basically).
5181
5188
5182 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5189 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5183 exceptions so that enclosing shell's state can be restored.
5190 exceptions so that enclosing shell's state can be restored.
5184
5191
5185 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5192 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5186 naming conventions in the .ipython/ dir.
5193 naming conventions in the .ipython/ dir.
5187
5194
5188 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5195 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5189 from delimiters list so filenames with - in them get expanded.
5196 from delimiters list so filenames with - in them get expanded.
5190
5197
5191 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5198 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5192 sys.displayhook not being properly restored after an embedded call.
5199 sys.displayhook not being properly restored after an embedded call.
5193
5200
5194 2002-03-18 Fernando Perez <fperez@colorado.edu>
5201 2002-03-18 Fernando Perez <fperez@colorado.edu>
5195
5202
5196 * Released 0.2.8
5203 * Released 0.2.8
5197
5204
5198 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5205 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5199 some files weren't being included in a -upgrade.
5206 some files weren't being included in a -upgrade.
5200 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5207 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5201 on' so that the first tab completes.
5208 on' so that the first tab completes.
5202 (InteractiveShell.handle_magic): fixed bug with spaces around
5209 (InteractiveShell.handle_magic): fixed bug with spaces around
5203 quotes breaking many magic commands.
5210 quotes breaking many magic commands.
5204
5211
5205 * setup.py: added note about ignoring the syntax error messages at
5212 * setup.py: added note about ignoring the syntax error messages at
5206 installation.
5213 installation.
5207
5214
5208 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5215 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5209 streamlining the gnuplot interface, now there's only one magic @gp.
5216 streamlining the gnuplot interface, now there's only one magic @gp.
5210
5217
5211 2002-03-17 Fernando Perez <fperez@colorado.edu>
5218 2002-03-17 Fernando Perez <fperez@colorado.edu>
5212
5219
5213 * IPython/UserConfig/magic_gnuplot.py: new name for the
5220 * IPython/UserConfig/magic_gnuplot.py: new name for the
5214 example-magic_pm.py file. Much enhanced system, now with a shell
5221 example-magic_pm.py file. Much enhanced system, now with a shell
5215 for communicating directly with gnuplot, one command at a time.
5222 for communicating directly with gnuplot, one command at a time.
5216
5223
5217 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5224 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5218 setting __name__=='__main__'.
5225 setting __name__=='__main__'.
5219
5226
5220 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5227 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5221 mini-shell for accessing gnuplot from inside ipython. Should
5228 mini-shell for accessing gnuplot from inside ipython. Should
5222 extend it later for grace access too. Inspired by Arnd's
5229 extend it later for grace access too. Inspired by Arnd's
5223 suggestion.
5230 suggestion.
5224
5231
5225 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5232 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5226 calling magic functions with () in their arguments. Thanks to Arnd
5233 calling magic functions with () in their arguments. Thanks to Arnd
5227 Baecker for pointing this to me.
5234 Baecker for pointing this to me.
5228
5235
5229 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5236 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5230 infinitely for integer or complex arrays (only worked with floats).
5237 infinitely for integer or complex arrays (only worked with floats).
5231
5238
5232 2002-03-16 Fernando Perez <fperez@colorado.edu>
5239 2002-03-16 Fernando Perez <fperez@colorado.edu>
5233
5240
5234 * setup.py: Merged setup and setup_windows into a single script
5241 * setup.py: Merged setup and setup_windows into a single script
5235 which properly handles things for windows users.
5242 which properly handles things for windows users.
5236
5243
5237 2002-03-15 Fernando Perez <fperez@colorado.edu>
5244 2002-03-15 Fernando Perez <fperez@colorado.edu>
5238
5245
5239 * Big change to the manual: now the magics are all automatically
5246 * Big change to the manual: now the magics are all automatically
5240 documented. This information is generated from their docstrings
5247 documented. This information is generated from their docstrings
5241 and put in a latex file included by the manual lyx file. This way
5248 and put in a latex file included by the manual lyx file. This way
5242 we get always up to date information for the magics. The manual
5249 we get always up to date information for the magics. The manual
5243 now also has proper version information, also auto-synced.
5250 now also has proper version information, also auto-synced.
5244
5251
5245 For this to work, an undocumented --magic_docstrings option was added.
5252 For this to work, an undocumented --magic_docstrings option was added.
5246
5253
5247 2002-03-13 Fernando Perez <fperez@colorado.edu>
5254 2002-03-13 Fernando Perez <fperez@colorado.edu>
5248
5255
5249 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5256 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5250 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5257 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5251
5258
5252 2002-03-12 Fernando Perez <fperez@colorado.edu>
5259 2002-03-12 Fernando Perez <fperez@colorado.edu>
5253
5260
5254 * IPython/ultraTB.py (TermColors): changed color escapes again to
5261 * IPython/ultraTB.py (TermColors): changed color escapes again to
5255 fix the (old, reintroduced) line-wrapping bug. Basically, if
5262 fix the (old, reintroduced) line-wrapping bug. Basically, if
5256 \001..\002 aren't given in the color escapes, lines get wrapped
5263 \001..\002 aren't given in the color escapes, lines get wrapped
5257 weirdly. But giving those screws up old xterms and emacs terms. So
5264 weirdly. But giving those screws up old xterms and emacs terms. So
5258 I added some logic for emacs terms to be ok, but I can't identify old
5265 I added some logic for emacs terms to be ok, but I can't identify old
5259 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5266 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5260
5267
5261 2002-03-10 Fernando Perez <fperez@colorado.edu>
5268 2002-03-10 Fernando Perez <fperez@colorado.edu>
5262
5269
5263 * IPython/usage.py (__doc__): Various documentation cleanups and
5270 * IPython/usage.py (__doc__): Various documentation cleanups and
5264 updates, both in usage docstrings and in the manual.
5271 updates, both in usage docstrings and in the manual.
5265
5272
5266 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5273 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5267 handling of caching. Set minimum acceptabe value for having a
5274 handling of caching. Set minimum acceptabe value for having a
5268 cache at 20 values.
5275 cache at 20 values.
5269
5276
5270 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5277 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5271 install_first_time function to a method, renamed it and added an
5278 install_first_time function to a method, renamed it and added an
5272 'upgrade' mode. Now people can update their config directory with
5279 'upgrade' mode. Now people can update their config directory with
5273 a simple command line switch (-upgrade, also new).
5280 a simple command line switch (-upgrade, also new).
5274
5281
5275 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5282 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5276 @file (convenient for automagic users under Python >= 2.2).
5283 @file (convenient for automagic users under Python >= 2.2).
5277 Removed @files (it seemed more like a plural than an abbrev. of
5284 Removed @files (it seemed more like a plural than an abbrev. of
5278 'file show').
5285 'file show').
5279
5286
5280 * IPython/iplib.py (install_first_time): Fixed crash if there were
5287 * IPython/iplib.py (install_first_time): Fixed crash if there were
5281 backup files ('~') in .ipython/ install directory.
5288 backup files ('~') in .ipython/ install directory.
5282
5289
5283 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5290 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5284 system. Things look fine, but these changes are fairly
5291 system. Things look fine, but these changes are fairly
5285 intrusive. Test them for a few days.
5292 intrusive. Test them for a few days.
5286
5293
5287 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5294 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5288 the prompts system. Now all in/out prompt strings are user
5295 the prompts system. Now all in/out prompt strings are user
5289 controllable. This is particularly useful for embedding, as one
5296 controllable. This is particularly useful for embedding, as one
5290 can tag embedded instances with particular prompts.
5297 can tag embedded instances with particular prompts.
5291
5298
5292 Also removed global use of sys.ps1/2, which now allows nested
5299 Also removed global use of sys.ps1/2, which now allows nested
5293 embeddings without any problems. Added command-line options for
5300 embeddings without any problems. Added command-line options for
5294 the prompt strings.
5301 the prompt strings.
5295
5302
5296 2002-03-08 Fernando Perez <fperez@colorado.edu>
5303 2002-03-08 Fernando Perez <fperez@colorado.edu>
5297
5304
5298 * IPython/UserConfig/example-embed-short.py (ipshell): added
5305 * IPython/UserConfig/example-embed-short.py (ipshell): added
5299 example file with the bare minimum code for embedding.
5306 example file with the bare minimum code for embedding.
5300
5307
5301 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5308 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5302 functionality for the embeddable shell to be activated/deactivated
5309 functionality for the embeddable shell to be activated/deactivated
5303 either globally or at each call.
5310 either globally or at each call.
5304
5311
5305 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5312 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5306 rewriting the prompt with '--->' for auto-inputs with proper
5313 rewriting the prompt with '--->' for auto-inputs with proper
5307 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5314 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5308 this is handled by the prompts class itself, as it should.
5315 this is handled by the prompts class itself, as it should.
5309
5316
5310 2002-03-05 Fernando Perez <fperez@colorado.edu>
5317 2002-03-05 Fernando Perez <fperez@colorado.edu>
5311
5318
5312 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5319 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5313 @logstart to avoid name clashes with the math log function.
5320 @logstart to avoid name clashes with the math log function.
5314
5321
5315 * Big updates to X/Emacs section of the manual.
5322 * Big updates to X/Emacs section of the manual.
5316
5323
5317 * Removed ipython_emacs. Milan explained to me how to pass
5324 * Removed ipython_emacs. Milan explained to me how to pass
5318 arguments to ipython through Emacs. Some day I'm going to end up
5325 arguments to ipython through Emacs. Some day I'm going to end up
5319 learning some lisp...
5326 learning some lisp...
5320
5327
5321 2002-03-04 Fernando Perez <fperez@colorado.edu>
5328 2002-03-04 Fernando Perez <fperez@colorado.edu>
5322
5329
5323 * IPython/ipython_emacs: Created script to be used as the
5330 * IPython/ipython_emacs: Created script to be used as the
5324 py-python-command Emacs variable so we can pass IPython
5331 py-python-command Emacs variable so we can pass IPython
5325 parameters. I can't figure out how to tell Emacs directly to pass
5332 parameters. I can't figure out how to tell Emacs directly to pass
5326 parameters to IPython, so a dummy shell script will do it.
5333 parameters to IPython, so a dummy shell script will do it.
5327
5334
5328 Other enhancements made for things to work better under Emacs'
5335 Other enhancements made for things to work better under Emacs'
5329 various types of terminals. Many thanks to Milan Zamazal
5336 various types of terminals. Many thanks to Milan Zamazal
5330 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5337 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5331
5338
5332 2002-03-01 Fernando Perez <fperez@colorado.edu>
5339 2002-03-01 Fernando Perez <fperez@colorado.edu>
5333
5340
5334 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5341 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5335 that loading of readline is now optional. This gives better
5342 that loading of readline is now optional. This gives better
5336 control to emacs users.
5343 control to emacs users.
5337
5344
5338 * IPython/ultraTB.py (__date__): Modified color escape sequences
5345 * IPython/ultraTB.py (__date__): Modified color escape sequences
5339 and now things work fine under xterm and in Emacs' term buffers
5346 and now things work fine under xterm and in Emacs' term buffers
5340 (though not shell ones). Well, in emacs you get colors, but all
5347 (though not shell ones). Well, in emacs you get colors, but all
5341 seem to be 'light' colors (no difference between dark and light
5348 seem to be 'light' colors (no difference between dark and light
5342 ones). But the garbage chars are gone, and also in xterms. It
5349 ones). But the garbage chars are gone, and also in xterms. It
5343 seems that now I'm using 'cleaner' ansi sequences.
5350 seems that now I'm using 'cleaner' ansi sequences.
5344
5351
5345 2002-02-21 Fernando Perez <fperez@colorado.edu>
5352 2002-02-21 Fernando Perez <fperez@colorado.edu>
5346
5353
5347 * Released 0.2.7 (mainly to publish the scoping fix).
5354 * Released 0.2.7 (mainly to publish the scoping fix).
5348
5355
5349 * IPython/Logger.py (Logger.logstate): added. A corresponding
5356 * IPython/Logger.py (Logger.logstate): added. A corresponding
5350 @logstate magic was created.
5357 @logstate magic was created.
5351
5358
5352 * IPython/Magic.py: fixed nested scoping problem under Python
5359 * IPython/Magic.py: fixed nested scoping problem under Python
5353 2.1.x (automagic wasn't working).
5360 2.1.x (automagic wasn't working).
5354
5361
5355 2002-02-20 Fernando Perez <fperez@colorado.edu>
5362 2002-02-20 Fernando Perez <fperez@colorado.edu>
5356
5363
5357 * Released 0.2.6.
5364 * Released 0.2.6.
5358
5365
5359 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5366 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5360 option so that logs can come out without any headers at all.
5367 option so that logs can come out without any headers at all.
5361
5368
5362 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5369 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5363 SciPy.
5370 SciPy.
5364
5371
5365 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
5372 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
5366 that embedded IPython calls don't require vars() to be explicitly
5373 that embedded IPython calls don't require vars() to be explicitly
5367 passed. Now they are extracted from the caller's frame (code
5374 passed. Now they are extracted from the caller's frame (code
5368 snatched from Eric Jones' weave). Added better documentation to
5375 snatched from Eric Jones' weave). Added better documentation to
5369 the section on embedding and the example file.
5376 the section on embedding and the example file.
5370
5377
5371 * IPython/genutils.py (page): Changed so that under emacs, it just
5378 * IPython/genutils.py (page): Changed so that under emacs, it just
5372 prints the string. You can then page up and down in the emacs
5379 prints the string. You can then page up and down in the emacs
5373 buffer itself. This is how the builtin help() works.
5380 buffer itself. This is how the builtin help() works.
5374
5381
5375 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
5382 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
5376 macro scoping: macros need to be executed in the user's namespace
5383 macro scoping: macros need to be executed in the user's namespace
5377 to work as if they had been typed by the user.
5384 to work as if they had been typed by the user.
5378
5385
5379 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
5386 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
5380 execute automatically (no need to type 'exec...'). They then
5387 execute automatically (no need to type 'exec...'). They then
5381 behave like 'true macros'. The printing system was also modified
5388 behave like 'true macros'. The printing system was also modified
5382 for this to work.
5389 for this to work.
5383
5390
5384 2002-02-19 Fernando Perez <fperez@colorado.edu>
5391 2002-02-19 Fernando Perez <fperez@colorado.edu>
5385
5392
5386 * IPython/genutils.py (page_file): new function for paging files
5393 * IPython/genutils.py (page_file): new function for paging files
5387 in an OS-independent way. Also necessary for file viewing to work
5394 in an OS-independent way. Also necessary for file viewing to work
5388 well inside Emacs buffers.
5395 well inside Emacs buffers.
5389 (page): Added checks for being in an emacs buffer.
5396 (page): Added checks for being in an emacs buffer.
5390 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
5397 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
5391 same bug in iplib.
5398 same bug in iplib.
5392
5399
5393 2002-02-18 Fernando Perez <fperez@colorado.edu>
5400 2002-02-18 Fernando Perez <fperez@colorado.edu>
5394
5401
5395 * IPython/iplib.py (InteractiveShell.init_readline): modified use
5402 * IPython/iplib.py (InteractiveShell.init_readline): modified use
5396 of readline so that IPython can work inside an Emacs buffer.
5403 of readline so that IPython can work inside an Emacs buffer.
5397
5404
5398 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
5405 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
5399 method signatures (they weren't really bugs, but it looks cleaner
5406 method signatures (they weren't really bugs, but it looks cleaner
5400 and keeps PyChecker happy).
5407 and keeps PyChecker happy).
5401
5408
5402 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
5409 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
5403 for implementing various user-defined hooks. Currently only
5410 for implementing various user-defined hooks. Currently only
5404 display is done.
5411 display is done.
5405
5412
5406 * IPython/Prompts.py (CachedOutput._display): changed display
5413 * IPython/Prompts.py (CachedOutput._display): changed display
5407 functions so that they can be dynamically changed by users easily.
5414 functions so that they can be dynamically changed by users easily.
5408
5415
5409 * IPython/Extensions/numeric_formats.py (num_display): added an
5416 * IPython/Extensions/numeric_formats.py (num_display): added an
5410 extension for printing NumPy arrays in flexible manners. It
5417 extension for printing NumPy arrays in flexible manners. It
5411 doesn't do anything yet, but all the structure is in
5418 doesn't do anything yet, but all the structure is in
5412 place. Ultimately the plan is to implement output format control
5419 place. Ultimately the plan is to implement output format control
5413 like in Octave.
5420 like in Octave.
5414
5421
5415 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
5422 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
5416 methods are found at run-time by all the automatic machinery.
5423 methods are found at run-time by all the automatic machinery.
5417
5424
5418 2002-02-17 Fernando Perez <fperez@colorado.edu>
5425 2002-02-17 Fernando Perez <fperez@colorado.edu>
5419
5426
5420 * setup_Windows.py (make_shortcut): documented. Cleaned up the
5427 * setup_Windows.py (make_shortcut): documented. Cleaned up the
5421 whole file a little.
5428 whole file a little.
5422
5429
5423 * ToDo: closed this document. Now there's a new_design.lyx
5430 * ToDo: closed this document. Now there's a new_design.lyx
5424 document for all new ideas. Added making a pdf of it for the
5431 document for all new ideas. Added making a pdf of it for the
5425 end-user distro.
5432 end-user distro.
5426
5433
5427 * IPython/Logger.py (Logger.switch_log): Created this to replace
5434 * IPython/Logger.py (Logger.switch_log): Created this to replace
5428 logon() and logoff(). It also fixes a nasty crash reported by
5435 logon() and logoff(). It also fixes a nasty crash reported by
5429 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
5436 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
5430
5437
5431 * IPython/iplib.py (complete): got auto-completion to work with
5438 * IPython/iplib.py (complete): got auto-completion to work with
5432 automagic (I had wanted this for a long time).
5439 automagic (I had wanted this for a long time).
5433
5440
5434 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
5441 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
5435 to @file, since file() is now a builtin and clashes with automagic
5442 to @file, since file() is now a builtin and clashes with automagic
5436 for @file.
5443 for @file.
5437
5444
5438 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
5445 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
5439 of this was previously in iplib, which had grown to more than 2000
5446 of this was previously in iplib, which had grown to more than 2000
5440 lines, way too long. No new functionality, but it makes managing
5447 lines, way too long. No new functionality, but it makes managing
5441 the code a bit easier.
5448 the code a bit easier.
5442
5449
5443 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
5450 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
5444 information to crash reports.
5451 information to crash reports.
5445
5452
5446 2002-02-12 Fernando Perez <fperez@colorado.edu>
5453 2002-02-12 Fernando Perez <fperez@colorado.edu>
5447
5454
5448 * Released 0.2.5.
5455 * Released 0.2.5.
5449
5456
5450 2002-02-11 Fernando Perez <fperez@colorado.edu>
5457 2002-02-11 Fernando Perez <fperez@colorado.edu>
5451
5458
5452 * Wrote a relatively complete Windows installer. It puts
5459 * Wrote a relatively complete Windows installer. It puts
5453 everything in place, creates Start Menu entries and fixes the
5460 everything in place, creates Start Menu entries and fixes the
5454 color issues. Nothing fancy, but it works.
5461 color issues. Nothing fancy, but it works.
5455
5462
5456 2002-02-10 Fernando Perez <fperez@colorado.edu>
5463 2002-02-10 Fernando Perez <fperez@colorado.edu>
5457
5464
5458 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
5465 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
5459 os.path.expanduser() call so that we can type @run ~/myfile.py and
5466 os.path.expanduser() call so that we can type @run ~/myfile.py and
5460 have thigs work as expected.
5467 have thigs work as expected.
5461
5468
5462 * IPython/genutils.py (page): fixed exception handling so things
5469 * IPython/genutils.py (page): fixed exception handling so things
5463 work both in Unix and Windows correctly. Quitting a pager triggers
5470 work both in Unix and Windows correctly. Quitting a pager triggers
5464 an IOError/broken pipe in Unix, and in windows not finding a pager
5471 an IOError/broken pipe in Unix, and in windows not finding a pager
5465 is also an IOError, so I had to actually look at the return value
5472 is also an IOError, so I had to actually look at the return value
5466 of the exception, not just the exception itself. Should be ok now.
5473 of the exception, not just the exception itself. Should be ok now.
5467
5474
5468 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
5475 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
5469 modified to allow case-insensitive color scheme changes.
5476 modified to allow case-insensitive color scheme changes.
5470
5477
5471 2002-02-09 Fernando Perez <fperez@colorado.edu>
5478 2002-02-09 Fernando Perez <fperez@colorado.edu>
5472
5479
5473 * IPython/genutils.py (native_line_ends): new function to leave
5480 * IPython/genutils.py (native_line_ends): new function to leave
5474 user config files with os-native line-endings.
5481 user config files with os-native line-endings.
5475
5482
5476 * README and manual updates.
5483 * README and manual updates.
5477
5484
5478 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
5485 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
5479 instead of StringType to catch Unicode strings.
5486 instead of StringType to catch Unicode strings.
5480
5487
5481 * IPython/genutils.py (filefind): fixed bug for paths with
5488 * IPython/genutils.py (filefind): fixed bug for paths with
5482 embedded spaces (very common in Windows).
5489 embedded spaces (very common in Windows).
5483
5490
5484 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
5491 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
5485 files under Windows, so that they get automatically associated
5492 files under Windows, so that they get automatically associated
5486 with a text editor. Windows makes it a pain to handle
5493 with a text editor. Windows makes it a pain to handle
5487 extension-less files.
5494 extension-less files.
5488
5495
5489 * IPython/iplib.py (InteractiveShell.init_readline): Made the
5496 * IPython/iplib.py (InteractiveShell.init_readline): Made the
5490 warning about readline only occur for Posix. In Windows there's no
5497 warning about readline only occur for Posix. In Windows there's no
5491 way to get readline, so why bother with the warning.
5498 way to get readline, so why bother with the warning.
5492
5499
5493 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
5500 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
5494 for __str__ instead of dir(self), since dir() changed in 2.2.
5501 for __str__ instead of dir(self), since dir() changed in 2.2.
5495
5502
5496 * Ported to Windows! Tested on XP, I suspect it should work fine
5503 * Ported to Windows! Tested on XP, I suspect it should work fine
5497 on NT/2000, but I don't think it will work on 98 et al. That
5504 on NT/2000, but I don't think it will work on 98 et al. That
5498 series of Windows is such a piece of junk anyway that I won't try
5505 series of Windows is such a piece of junk anyway that I won't try
5499 porting it there. The XP port was straightforward, showed a few
5506 porting it there. The XP port was straightforward, showed a few
5500 bugs here and there (fixed all), in particular some string
5507 bugs here and there (fixed all), in particular some string
5501 handling stuff which required considering Unicode strings (which
5508 handling stuff which required considering Unicode strings (which
5502 Windows uses). This is good, but hasn't been too tested :) No
5509 Windows uses). This is good, but hasn't been too tested :) No
5503 fancy installer yet, I'll put a note in the manual so people at
5510 fancy installer yet, I'll put a note in the manual so people at
5504 least make manually a shortcut.
5511 least make manually a shortcut.
5505
5512
5506 * IPython/iplib.py (Magic.magic_colors): Unified the color options
5513 * IPython/iplib.py (Magic.magic_colors): Unified the color options
5507 into a single one, "colors". This now controls both prompt and
5514 into a single one, "colors". This now controls both prompt and
5508 exception color schemes, and can be changed both at startup
5515 exception color schemes, and can be changed both at startup
5509 (either via command-line switches or via ipythonrc files) and at
5516 (either via command-line switches or via ipythonrc files) and at
5510 runtime, with @colors.
5517 runtime, with @colors.
5511 (Magic.magic_run): renamed @prun to @run and removed the old
5518 (Magic.magic_run): renamed @prun to @run and removed the old
5512 @run. The two were too similar to warrant keeping both.
5519 @run. The two were too similar to warrant keeping both.
5513
5520
5514 2002-02-03 Fernando Perez <fperez@colorado.edu>
5521 2002-02-03 Fernando Perez <fperez@colorado.edu>
5515
5522
5516 * IPython/iplib.py (install_first_time): Added comment on how to
5523 * IPython/iplib.py (install_first_time): Added comment on how to
5517 configure the color options for first-time users. Put a <return>
5524 configure the color options for first-time users. Put a <return>
5518 request at the end so that small-terminal users get a chance to
5525 request at the end so that small-terminal users get a chance to
5519 read the startup info.
5526 read the startup info.
5520
5527
5521 2002-01-23 Fernando Perez <fperez@colorado.edu>
5528 2002-01-23 Fernando Perez <fperez@colorado.edu>
5522
5529
5523 * IPython/iplib.py (CachedOutput.update): Changed output memory
5530 * IPython/iplib.py (CachedOutput.update): Changed output memory
5524 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
5531 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
5525 input history we still use _i. Did this b/c these variable are
5532 input history we still use _i. Did this b/c these variable are
5526 very commonly used in interactive work, so the less we need to
5533 very commonly used in interactive work, so the less we need to
5527 type the better off we are.
5534 type the better off we are.
5528 (Magic.magic_prun): updated @prun to better handle the namespaces
5535 (Magic.magic_prun): updated @prun to better handle the namespaces
5529 the file will run in, including a fix for __name__ not being set
5536 the file will run in, including a fix for __name__ not being set
5530 before.
5537 before.
5531
5538
5532 2002-01-20 Fernando Perez <fperez@colorado.edu>
5539 2002-01-20 Fernando Perez <fperez@colorado.edu>
5533
5540
5534 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
5541 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
5535 extra garbage for Python 2.2. Need to look more carefully into
5542 extra garbage for Python 2.2. Need to look more carefully into
5536 this later.
5543 this later.
5537
5544
5538 2002-01-19 Fernando Perez <fperez@colorado.edu>
5545 2002-01-19 Fernando Perez <fperez@colorado.edu>
5539
5546
5540 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5547 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5541 display SyntaxError exceptions properly formatted when they occur
5548 display SyntaxError exceptions properly formatted when they occur
5542 (they can be triggered by imported code).
5549 (they can be triggered by imported code).
5543
5550
5544 2002-01-18 Fernando Perez <fperez@colorado.edu>
5551 2002-01-18 Fernando Perez <fperez@colorado.edu>
5545
5552
5546 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5553 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5547 SyntaxError exceptions are reported nicely formatted, instead of
5554 SyntaxError exceptions are reported nicely formatted, instead of
5548 spitting out only offset information as before.
5555 spitting out only offset information as before.
5549 (Magic.magic_prun): Added the @prun function for executing
5556 (Magic.magic_prun): Added the @prun function for executing
5550 programs with command line args inside IPython.
5557 programs with command line args inside IPython.
5551
5558
5552 2002-01-16 Fernando Perez <fperez@colorado.edu>
5559 2002-01-16 Fernando Perez <fperez@colorado.edu>
5553
5560
5554 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5561 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5555 to *not* include the last item given in a range. This brings their
5562 to *not* include the last item given in a range. This brings their
5556 behavior in line with Python's slicing:
5563 behavior in line with Python's slicing:
5557 a[n1:n2] -> a[n1]...a[n2-1]
5564 a[n1:n2] -> a[n1]...a[n2-1]
5558 It may be a bit less convenient, but I prefer to stick to Python's
5565 It may be a bit less convenient, but I prefer to stick to Python's
5559 conventions *everywhere*, so users never have to wonder.
5566 conventions *everywhere*, so users never have to wonder.
5560 (Magic.magic_macro): Added @macro function to ease the creation of
5567 (Magic.magic_macro): Added @macro function to ease the creation of
5561 macros.
5568 macros.
5562
5569
5563 2002-01-05 Fernando Perez <fperez@colorado.edu>
5570 2002-01-05 Fernando Perez <fperez@colorado.edu>
5564
5571
5565 * Released 0.2.4.
5572 * Released 0.2.4.
5566
5573
5567 * IPython/iplib.py (Magic.magic_pdef):
5574 * IPython/iplib.py (Magic.magic_pdef):
5568 (InteractiveShell.safe_execfile): report magic lines and error
5575 (InteractiveShell.safe_execfile): report magic lines and error
5569 lines without line numbers so one can easily copy/paste them for
5576 lines without line numbers so one can easily copy/paste them for
5570 re-execution.
5577 re-execution.
5571
5578
5572 * Updated manual with recent changes.
5579 * Updated manual with recent changes.
5573
5580
5574 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5581 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5575 docstring printing when class? is called. Very handy for knowing
5582 docstring printing when class? is called. Very handy for knowing
5576 how to create class instances (as long as __init__ is well
5583 how to create class instances (as long as __init__ is well
5577 documented, of course :)
5584 documented, of course :)
5578 (Magic.magic_doc): print both class and constructor docstrings.
5585 (Magic.magic_doc): print both class and constructor docstrings.
5579 (Magic.magic_pdef): give constructor info if passed a class and
5586 (Magic.magic_pdef): give constructor info if passed a class and
5580 __call__ info for callable object instances.
5587 __call__ info for callable object instances.
5581
5588
5582 2002-01-04 Fernando Perez <fperez@colorado.edu>
5589 2002-01-04 Fernando Perez <fperez@colorado.edu>
5583
5590
5584 * Made deep_reload() off by default. It doesn't always work
5591 * Made deep_reload() off by default. It doesn't always work
5585 exactly as intended, so it's probably safer to have it off. It's
5592 exactly as intended, so it's probably safer to have it off. It's
5586 still available as dreload() anyway, so nothing is lost.
5593 still available as dreload() anyway, so nothing is lost.
5587
5594
5588 2002-01-02 Fernando Perez <fperez@colorado.edu>
5595 2002-01-02 Fernando Perez <fperez@colorado.edu>
5589
5596
5590 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5597 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5591 so I wanted an updated release).
5598 so I wanted an updated release).
5592
5599
5593 2001-12-27 Fernando Perez <fperez@colorado.edu>
5600 2001-12-27 Fernando Perez <fperez@colorado.edu>
5594
5601
5595 * IPython/iplib.py (InteractiveShell.interact): Added the original
5602 * IPython/iplib.py (InteractiveShell.interact): Added the original
5596 code from 'code.py' for this module in order to change the
5603 code from 'code.py' for this module in order to change the
5597 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5604 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5598 the history cache would break when the user hit Ctrl-C, and
5605 the history cache would break when the user hit Ctrl-C, and
5599 interact() offers no way to add any hooks to it.
5606 interact() offers no way to add any hooks to it.
5600
5607
5601 2001-12-23 Fernando Perez <fperez@colorado.edu>
5608 2001-12-23 Fernando Perez <fperez@colorado.edu>
5602
5609
5603 * setup.py: added check for 'MANIFEST' before trying to remove
5610 * setup.py: added check for 'MANIFEST' before trying to remove
5604 it. Thanks to Sean Reifschneider.
5611 it. Thanks to Sean Reifschneider.
5605
5612
5606 2001-12-22 Fernando Perez <fperez@colorado.edu>
5613 2001-12-22 Fernando Perez <fperez@colorado.edu>
5607
5614
5608 * Released 0.2.2.
5615 * Released 0.2.2.
5609
5616
5610 * Finished (reasonably) writing the manual. Later will add the
5617 * Finished (reasonably) writing the manual. Later will add the
5611 python-standard navigation stylesheets, but for the time being
5618 python-standard navigation stylesheets, but for the time being
5612 it's fairly complete. Distribution will include html and pdf
5619 it's fairly complete. Distribution will include html and pdf
5613 versions.
5620 versions.
5614
5621
5615 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5622 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5616 (MayaVi author).
5623 (MayaVi author).
5617
5624
5618 2001-12-21 Fernando Perez <fperez@colorado.edu>
5625 2001-12-21 Fernando Perez <fperez@colorado.edu>
5619
5626
5620 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5627 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5621 good public release, I think (with the manual and the distutils
5628 good public release, I think (with the manual and the distutils
5622 installer). The manual can use some work, but that can go
5629 installer). The manual can use some work, but that can go
5623 slowly. Otherwise I think it's quite nice for end users. Next
5630 slowly. Otherwise I think it's quite nice for end users. Next
5624 summer, rewrite the guts of it...
5631 summer, rewrite the guts of it...
5625
5632
5626 * Changed format of ipythonrc files to use whitespace as the
5633 * Changed format of ipythonrc files to use whitespace as the
5627 separator instead of an explicit '='. Cleaner.
5634 separator instead of an explicit '='. Cleaner.
5628
5635
5629 2001-12-20 Fernando Perez <fperez@colorado.edu>
5636 2001-12-20 Fernando Perez <fperez@colorado.edu>
5630
5637
5631 * Started a manual in LyX. For now it's just a quick merge of the
5638 * Started a manual in LyX. For now it's just a quick merge of the
5632 various internal docstrings and READMEs. Later it may grow into a
5639 various internal docstrings and READMEs. Later it may grow into a
5633 nice, full-blown manual.
5640 nice, full-blown manual.
5634
5641
5635 * Set up a distutils based installer. Installation should now be
5642 * Set up a distutils based installer. Installation should now be
5636 trivially simple for end-users.
5643 trivially simple for end-users.
5637
5644
5638 2001-12-11 Fernando Perez <fperez@colorado.edu>
5645 2001-12-11 Fernando Perez <fperez@colorado.edu>
5639
5646
5640 * Released 0.2.0. First public release, announced it at
5647 * Released 0.2.0. First public release, announced it at
5641 comp.lang.python. From now on, just bugfixes...
5648 comp.lang.python. From now on, just bugfixes...
5642
5649
5643 * Went through all the files, set copyright/license notices and
5650 * Went through all the files, set copyright/license notices and
5644 cleaned up things. Ready for release.
5651 cleaned up things. Ready for release.
5645
5652
5646 2001-12-10 Fernando Perez <fperez@colorado.edu>
5653 2001-12-10 Fernando Perez <fperez@colorado.edu>
5647
5654
5648 * Changed the first-time installer not to use tarfiles. It's more
5655 * Changed the first-time installer not to use tarfiles. It's more
5649 robust now and less unix-dependent. Also makes it easier for
5656 robust now and less unix-dependent. Also makes it easier for
5650 people to later upgrade versions.
5657 people to later upgrade versions.
5651
5658
5652 * Changed @exit to @abort to reflect the fact that it's pretty
5659 * Changed @exit to @abort to reflect the fact that it's pretty
5653 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5660 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5654 becomes significant only when IPyhton is embedded: in that case,
5661 becomes significant only when IPyhton is embedded: in that case,
5655 C-D closes IPython only, but @abort kills the enclosing program
5662 C-D closes IPython only, but @abort kills the enclosing program
5656 too (unless it had called IPython inside a try catching
5663 too (unless it had called IPython inside a try catching
5657 SystemExit).
5664 SystemExit).
5658
5665
5659 * Created Shell module which exposes the actuall IPython Shell
5666 * Created Shell module which exposes the actuall IPython Shell
5660 classes, currently the normal and the embeddable one. This at
5667 classes, currently the normal and the embeddable one. This at
5661 least offers a stable interface we won't need to change when
5668 least offers a stable interface we won't need to change when
5662 (later) the internals are rewritten. That rewrite will be confined
5669 (later) the internals are rewritten. That rewrite will be confined
5663 to iplib and ipmaker, but the Shell interface should remain as is.
5670 to iplib and ipmaker, but the Shell interface should remain as is.
5664
5671
5665 * Added embed module which offers an embeddable IPShell object,
5672 * Added embed module which offers an embeddable IPShell object,
5666 useful to fire up IPython *inside* a running program. Great for
5673 useful to fire up IPython *inside* a running program. Great for
5667 debugging or dynamical data analysis.
5674 debugging or dynamical data analysis.
5668
5675
5669 2001-12-08 Fernando Perez <fperez@colorado.edu>
5676 2001-12-08 Fernando Perez <fperez@colorado.edu>
5670
5677
5671 * Fixed small bug preventing seeing info from methods of defined
5678 * Fixed small bug preventing seeing info from methods of defined
5672 objects (incorrect namespace in _ofind()).
5679 objects (incorrect namespace in _ofind()).
5673
5680
5674 * Documentation cleanup. Moved the main usage docstrings to a
5681 * Documentation cleanup. Moved the main usage docstrings to a
5675 separate file, usage.py (cleaner to maintain, and hopefully in the
5682 separate file, usage.py (cleaner to maintain, and hopefully in the
5676 future some perlpod-like way of producing interactive, man and
5683 future some perlpod-like way of producing interactive, man and
5677 html docs out of it will be found).
5684 html docs out of it will be found).
5678
5685
5679 * Added @profile to see your profile at any time.
5686 * Added @profile to see your profile at any time.
5680
5687
5681 * Added @p as an alias for 'print'. It's especially convenient if
5688 * Added @p as an alias for 'print'. It's especially convenient if
5682 using automagic ('p x' prints x).
5689 using automagic ('p x' prints x).
5683
5690
5684 * Small cleanups and fixes after a pychecker run.
5691 * Small cleanups and fixes after a pychecker run.
5685
5692
5686 * Changed the @cd command to handle @cd - and @cd -<n> for
5693 * Changed the @cd command to handle @cd - and @cd -<n> for
5687 visiting any directory in _dh.
5694 visiting any directory in _dh.
5688
5695
5689 * Introduced _dh, a history of visited directories. @dhist prints
5696 * Introduced _dh, a history of visited directories. @dhist prints
5690 it out with numbers.
5697 it out with numbers.
5691
5698
5692 2001-12-07 Fernando Perez <fperez@colorado.edu>
5699 2001-12-07 Fernando Perez <fperez@colorado.edu>
5693
5700
5694 * Released 0.1.22
5701 * Released 0.1.22
5695
5702
5696 * Made initialization a bit more robust against invalid color
5703 * Made initialization a bit more robust against invalid color
5697 options in user input (exit, not traceback-crash).
5704 options in user input (exit, not traceback-crash).
5698
5705
5699 * Changed the bug crash reporter to write the report only in the
5706 * Changed the bug crash reporter to write the report only in the
5700 user's .ipython directory. That way IPython won't litter people's
5707 user's .ipython directory. That way IPython won't litter people's
5701 hard disks with crash files all over the place. Also print on
5708 hard disks with crash files all over the place. Also print on
5702 screen the necessary mail command.
5709 screen the necessary mail command.
5703
5710
5704 * With the new ultraTB, implemented LightBG color scheme for light
5711 * With the new ultraTB, implemented LightBG color scheme for light
5705 background terminals. A lot of people like white backgrounds, so I
5712 background terminals. A lot of people like white backgrounds, so I
5706 guess we should at least give them something readable.
5713 guess we should at least give them something readable.
5707
5714
5708 2001-12-06 Fernando Perez <fperez@colorado.edu>
5715 2001-12-06 Fernando Perez <fperez@colorado.edu>
5709
5716
5710 * Modified the structure of ultraTB. Now there's a proper class
5717 * Modified the structure of ultraTB. Now there's a proper class
5711 for tables of color schemes which allow adding schemes easily and
5718 for tables of color schemes which allow adding schemes easily and
5712 switching the active scheme without creating a new instance every
5719 switching the active scheme without creating a new instance every
5713 time (which was ridiculous). The syntax for creating new schemes
5720 time (which was ridiculous). The syntax for creating new schemes
5714 is also cleaner. I think ultraTB is finally done, with a clean
5721 is also cleaner. I think ultraTB is finally done, with a clean
5715 class structure. Names are also much cleaner (now there's proper
5722 class structure. Names are also much cleaner (now there's proper
5716 color tables, no need for every variable to also have 'color' in
5723 color tables, no need for every variable to also have 'color' in
5717 its name).
5724 its name).
5718
5725
5719 * Broke down genutils into separate files. Now genutils only
5726 * Broke down genutils into separate files. Now genutils only
5720 contains utility functions, and classes have been moved to their
5727 contains utility functions, and classes have been moved to their
5721 own files (they had enough independent functionality to warrant
5728 own files (they had enough independent functionality to warrant
5722 it): ConfigLoader, OutputTrap, Struct.
5729 it): ConfigLoader, OutputTrap, Struct.
5723
5730
5724 2001-12-05 Fernando Perez <fperez@colorado.edu>
5731 2001-12-05 Fernando Perez <fperez@colorado.edu>
5725
5732
5726 * IPython turns 21! Released version 0.1.21, as a candidate for
5733 * IPython turns 21! Released version 0.1.21, as a candidate for
5727 public consumption. If all goes well, release in a few days.
5734 public consumption. If all goes well, release in a few days.
5728
5735
5729 * Fixed path bug (files in Extensions/ directory wouldn't be found
5736 * Fixed path bug (files in Extensions/ directory wouldn't be found
5730 unless IPython/ was explicitly in sys.path).
5737 unless IPython/ was explicitly in sys.path).
5731
5738
5732 * Extended the FlexCompleter class as MagicCompleter to allow
5739 * Extended the FlexCompleter class as MagicCompleter to allow
5733 completion of @-starting lines.
5740 completion of @-starting lines.
5734
5741
5735 * Created __release__.py file as a central repository for release
5742 * Created __release__.py file as a central repository for release
5736 info that other files can read from.
5743 info that other files can read from.
5737
5744
5738 * Fixed small bug in logging: when logging was turned on in
5745 * Fixed small bug in logging: when logging was turned on in
5739 mid-session, old lines with special meanings (!@?) were being
5746 mid-session, old lines with special meanings (!@?) were being
5740 logged without the prepended comment, which is necessary since
5747 logged without the prepended comment, which is necessary since
5741 they are not truly valid python syntax. This should make session
5748 they are not truly valid python syntax. This should make session
5742 restores produce less errors.
5749 restores produce less errors.
5743
5750
5744 * The namespace cleanup forced me to make a FlexCompleter class
5751 * The namespace cleanup forced me to make a FlexCompleter class
5745 which is nothing but a ripoff of rlcompleter, but with selectable
5752 which is nothing but a ripoff of rlcompleter, but with selectable
5746 namespace (rlcompleter only works in __main__.__dict__). I'll try
5753 namespace (rlcompleter only works in __main__.__dict__). I'll try
5747 to submit a note to the authors to see if this change can be
5754 to submit a note to the authors to see if this change can be
5748 incorporated in future rlcompleter releases (Dec.6: done)
5755 incorporated in future rlcompleter releases (Dec.6: done)
5749
5756
5750 * More fixes to namespace handling. It was a mess! Now all
5757 * More fixes to namespace handling. It was a mess! Now all
5751 explicit references to __main__.__dict__ are gone (except when
5758 explicit references to __main__.__dict__ are gone (except when
5752 really needed) and everything is handled through the namespace
5759 really needed) and everything is handled through the namespace
5753 dicts in the IPython instance. We seem to be getting somewhere
5760 dicts in the IPython instance. We seem to be getting somewhere
5754 with this, finally...
5761 with this, finally...
5755
5762
5756 * Small documentation updates.
5763 * Small documentation updates.
5757
5764
5758 * Created the Extensions directory under IPython (with an
5765 * Created the Extensions directory under IPython (with an
5759 __init__.py). Put the PhysicalQ stuff there. This directory should
5766 __init__.py). Put the PhysicalQ stuff there. This directory should
5760 be used for all special-purpose extensions.
5767 be used for all special-purpose extensions.
5761
5768
5762 * File renaming:
5769 * File renaming:
5763 ipythonlib --> ipmaker
5770 ipythonlib --> ipmaker
5764 ipplib --> iplib
5771 ipplib --> iplib
5765 This makes a bit more sense in terms of what these files actually do.
5772 This makes a bit more sense in terms of what these files actually do.
5766
5773
5767 * Moved all the classes and functions in ipythonlib to ipplib, so
5774 * Moved all the classes and functions in ipythonlib to ipplib, so
5768 now ipythonlib only has make_IPython(). This will ease up its
5775 now ipythonlib only has make_IPython(). This will ease up its
5769 splitting in smaller functional chunks later.
5776 splitting in smaller functional chunks later.
5770
5777
5771 * Cleaned up (done, I think) output of @whos. Better column
5778 * Cleaned up (done, I think) output of @whos. Better column
5772 formatting, and now shows str(var) for as much as it can, which is
5779 formatting, and now shows str(var) for as much as it can, which is
5773 typically what one gets with a 'print var'.
5780 typically what one gets with a 'print var'.
5774
5781
5775 2001-12-04 Fernando Perez <fperez@colorado.edu>
5782 2001-12-04 Fernando Perez <fperez@colorado.edu>
5776
5783
5777 * Fixed namespace problems. Now builtin/IPyhton/user names get
5784 * Fixed namespace problems. Now builtin/IPyhton/user names get
5778 properly reported in their namespace. Internal namespace handling
5785 properly reported in their namespace. Internal namespace handling
5779 is finally getting decent (not perfect yet, but much better than
5786 is finally getting decent (not perfect yet, but much better than
5780 the ad-hoc mess we had).
5787 the ad-hoc mess we had).
5781
5788
5782 * Removed -exit option. If people just want to run a python
5789 * Removed -exit option. If people just want to run a python
5783 script, that's what the normal interpreter is for. Less
5790 script, that's what the normal interpreter is for. Less
5784 unnecessary options, less chances for bugs.
5791 unnecessary options, less chances for bugs.
5785
5792
5786 * Added a crash handler which generates a complete post-mortem if
5793 * Added a crash handler which generates a complete post-mortem if
5787 IPython crashes. This will help a lot in tracking bugs down the
5794 IPython crashes. This will help a lot in tracking bugs down the
5788 road.
5795 road.
5789
5796
5790 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5797 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5791 which were boud to functions being reassigned would bypass the
5798 which were boud to functions being reassigned would bypass the
5792 logger, breaking the sync of _il with the prompt counter. This
5799 logger, breaking the sync of _il with the prompt counter. This
5793 would then crash IPython later when a new line was logged.
5800 would then crash IPython later when a new line was logged.
5794
5801
5795 2001-12-02 Fernando Perez <fperez@colorado.edu>
5802 2001-12-02 Fernando Perez <fperez@colorado.edu>
5796
5803
5797 * Made IPython a package. This means people don't have to clutter
5804 * Made IPython a package. This means people don't have to clutter
5798 their sys.path with yet another directory. Changed the INSTALL
5805 their sys.path with yet another directory. Changed the INSTALL
5799 file accordingly.
5806 file accordingly.
5800
5807
5801 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5808 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5802 sorts its output (so @who shows it sorted) and @whos formats the
5809 sorts its output (so @who shows it sorted) and @whos formats the
5803 table according to the width of the first column. Nicer, easier to
5810 table according to the width of the first column. Nicer, easier to
5804 read. Todo: write a generic table_format() which takes a list of
5811 read. Todo: write a generic table_format() which takes a list of
5805 lists and prints it nicely formatted, with optional row/column
5812 lists and prints it nicely formatted, with optional row/column
5806 separators and proper padding and justification.
5813 separators and proper padding and justification.
5807
5814
5808 * Released 0.1.20
5815 * Released 0.1.20
5809
5816
5810 * Fixed bug in @log which would reverse the inputcache list (a
5817 * Fixed bug in @log which would reverse the inputcache list (a
5811 copy operation was missing).
5818 copy operation was missing).
5812
5819
5813 * Code cleanup. @config was changed to use page(). Better, since
5820 * Code cleanup. @config was changed to use page(). Better, since
5814 its output is always quite long.
5821 its output is always quite long.
5815
5822
5816 * Itpl is back as a dependency. I was having too many problems
5823 * Itpl is back as a dependency. I was having too many problems
5817 getting the parametric aliases to work reliably, and it's just
5824 getting the parametric aliases to work reliably, and it's just
5818 easier to code weird string operations with it than playing %()s
5825 easier to code weird string operations with it than playing %()s
5819 games. It's only ~6k, so I don't think it's too big a deal.
5826 games. It's only ~6k, so I don't think it's too big a deal.
5820
5827
5821 * Found (and fixed) a very nasty bug with history. !lines weren't
5828 * Found (and fixed) a very nasty bug with history. !lines weren't
5822 getting cached, and the out of sync caches would crash
5829 getting cached, and the out of sync caches would crash
5823 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5830 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5824 division of labor a bit better. Bug fixed, cleaner structure.
5831 division of labor a bit better. Bug fixed, cleaner structure.
5825
5832
5826 2001-12-01 Fernando Perez <fperez@colorado.edu>
5833 2001-12-01 Fernando Perez <fperez@colorado.edu>
5827
5834
5828 * Released 0.1.19
5835 * Released 0.1.19
5829
5836
5830 * Added option -n to @hist to prevent line number printing. Much
5837 * Added option -n to @hist to prevent line number printing. Much
5831 easier to copy/paste code this way.
5838 easier to copy/paste code this way.
5832
5839
5833 * Created global _il to hold the input list. Allows easy
5840 * Created global _il to hold the input list. Allows easy
5834 re-execution of blocks of code by slicing it (inspired by Janko's
5841 re-execution of blocks of code by slicing it (inspired by Janko's
5835 comment on 'macros').
5842 comment on 'macros').
5836
5843
5837 * Small fixes and doc updates.
5844 * Small fixes and doc updates.
5838
5845
5839 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5846 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5840 much too fragile with automagic. Handles properly multi-line
5847 much too fragile with automagic. Handles properly multi-line
5841 statements and takes parameters.
5848 statements and takes parameters.
5842
5849
5843 2001-11-30 Fernando Perez <fperez@colorado.edu>
5850 2001-11-30 Fernando Perez <fperez@colorado.edu>
5844
5851
5845 * Version 0.1.18 released.
5852 * Version 0.1.18 released.
5846
5853
5847 * Fixed nasty namespace bug in initial module imports.
5854 * Fixed nasty namespace bug in initial module imports.
5848
5855
5849 * Added copyright/license notes to all code files (except
5856 * Added copyright/license notes to all code files (except
5850 DPyGetOpt). For the time being, LGPL. That could change.
5857 DPyGetOpt). For the time being, LGPL. That could change.
5851
5858
5852 * Rewrote a much nicer README, updated INSTALL, cleaned up
5859 * Rewrote a much nicer README, updated INSTALL, cleaned up
5853 ipythonrc-* samples.
5860 ipythonrc-* samples.
5854
5861
5855 * Overall code/documentation cleanup. Basically ready for
5862 * Overall code/documentation cleanup. Basically ready for
5856 release. Only remaining thing: licence decision (LGPL?).
5863 release. Only remaining thing: licence decision (LGPL?).
5857
5864
5858 * Converted load_config to a class, ConfigLoader. Now recursion
5865 * Converted load_config to a class, ConfigLoader. Now recursion
5859 control is better organized. Doesn't include the same file twice.
5866 control is better organized. Doesn't include the same file twice.
5860
5867
5861 2001-11-29 Fernando Perez <fperez@colorado.edu>
5868 2001-11-29 Fernando Perez <fperez@colorado.edu>
5862
5869
5863 * Got input history working. Changed output history variables from
5870 * Got input history working. Changed output history variables from
5864 _p to _o so that _i is for input and _o for output. Just cleaner
5871 _p to _o so that _i is for input and _o for output. Just cleaner
5865 convention.
5872 convention.
5866
5873
5867 * Implemented parametric aliases. This pretty much allows the
5874 * Implemented parametric aliases. This pretty much allows the
5868 alias system to offer full-blown shell convenience, I think.
5875 alias system to offer full-blown shell convenience, I think.
5869
5876
5870 * Version 0.1.17 released, 0.1.18 opened.
5877 * Version 0.1.17 released, 0.1.18 opened.
5871
5878
5872 * dot_ipython/ipythonrc (alias): added documentation.
5879 * dot_ipython/ipythonrc (alias): added documentation.
5873 (xcolor): Fixed small bug (xcolors -> xcolor)
5880 (xcolor): Fixed small bug (xcolors -> xcolor)
5874
5881
5875 * Changed the alias system. Now alias is a magic command to define
5882 * Changed the alias system. Now alias is a magic command to define
5876 aliases just like the shell. Rationale: the builtin magics should
5883 aliases just like the shell. Rationale: the builtin magics should
5877 be there for things deeply connected to IPython's
5884 be there for things deeply connected to IPython's
5878 architecture. And this is a much lighter system for what I think
5885 architecture. And this is a much lighter system for what I think
5879 is the really important feature: allowing users to define quickly
5886 is the really important feature: allowing users to define quickly
5880 magics that will do shell things for them, so they can customize
5887 magics that will do shell things for them, so they can customize
5881 IPython easily to match their work habits. If someone is really
5888 IPython easily to match their work habits. If someone is really
5882 desperate to have another name for a builtin alias, they can
5889 desperate to have another name for a builtin alias, they can
5883 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5890 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5884 works.
5891 works.
5885
5892
5886 2001-11-28 Fernando Perez <fperez@colorado.edu>
5893 2001-11-28 Fernando Perez <fperez@colorado.edu>
5887
5894
5888 * Changed @file so that it opens the source file at the proper
5895 * Changed @file so that it opens the source file at the proper
5889 line. Since it uses less, if your EDITOR environment is
5896 line. Since it uses less, if your EDITOR environment is
5890 configured, typing v will immediately open your editor of choice
5897 configured, typing v will immediately open your editor of choice
5891 right at the line where the object is defined. Not as quick as
5898 right at the line where the object is defined. Not as quick as
5892 having a direct @edit command, but for all intents and purposes it
5899 having a direct @edit command, but for all intents and purposes it
5893 works. And I don't have to worry about writing @edit to deal with
5900 works. And I don't have to worry about writing @edit to deal with
5894 all the editors, less does that.
5901 all the editors, less does that.
5895
5902
5896 * Version 0.1.16 released, 0.1.17 opened.
5903 * Version 0.1.16 released, 0.1.17 opened.
5897
5904
5898 * Fixed some nasty bugs in the page/page_dumb combo that could
5905 * Fixed some nasty bugs in the page/page_dumb combo that could
5899 crash IPython.
5906 crash IPython.
5900
5907
5901 2001-11-27 Fernando Perez <fperez@colorado.edu>
5908 2001-11-27 Fernando Perez <fperez@colorado.edu>
5902
5909
5903 * Version 0.1.15 released, 0.1.16 opened.
5910 * Version 0.1.15 released, 0.1.16 opened.
5904
5911
5905 * Finally got ? and ?? to work for undefined things: now it's
5912 * Finally got ? and ?? to work for undefined things: now it's
5906 possible to type {}.get? and get information about the get method
5913 possible to type {}.get? and get information about the get method
5907 of dicts, or os.path? even if only os is defined (so technically
5914 of dicts, or os.path? even if only os is defined (so technically
5908 os.path isn't). Works at any level. For example, after import os,
5915 os.path isn't). Works at any level. For example, after import os,
5909 os?, os.path?, os.path.abspath? all work. This is great, took some
5916 os?, os.path?, os.path.abspath? all work. This is great, took some
5910 work in _ofind.
5917 work in _ofind.
5911
5918
5912 * Fixed more bugs with logging. The sanest way to do it was to add
5919 * Fixed more bugs with logging. The sanest way to do it was to add
5913 to @log a 'mode' parameter. Killed two in one shot (this mode
5920 to @log a 'mode' parameter. Killed two in one shot (this mode
5914 option was a request of Janko's). I think it's finally clean
5921 option was a request of Janko's). I think it's finally clean
5915 (famous last words).
5922 (famous last words).
5916
5923
5917 * Added a page_dumb() pager which does a decent job of paging on
5924 * Added a page_dumb() pager which does a decent job of paging on
5918 screen, if better things (like less) aren't available. One less
5925 screen, if better things (like less) aren't available. One less
5919 unix dependency (someday maybe somebody will port this to
5926 unix dependency (someday maybe somebody will port this to
5920 windows).
5927 windows).
5921
5928
5922 * Fixed problem in magic_log: would lock of logging out if log
5929 * Fixed problem in magic_log: would lock of logging out if log
5923 creation failed (because it would still think it had succeeded).
5930 creation failed (because it would still think it had succeeded).
5924
5931
5925 * Improved the page() function using curses to auto-detect screen
5932 * Improved the page() function using curses to auto-detect screen
5926 size. Now it can make a much better decision on whether to print
5933 size. Now it can make a much better decision on whether to print
5927 or page a string. Option screen_length was modified: a value 0
5934 or page a string. Option screen_length was modified: a value 0
5928 means auto-detect, and that's the default now.
5935 means auto-detect, and that's the default now.
5929
5936
5930 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5937 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5931 go out. I'll test it for a few days, then talk to Janko about
5938 go out. I'll test it for a few days, then talk to Janko about
5932 licences and announce it.
5939 licences and announce it.
5933
5940
5934 * Fixed the length of the auto-generated ---> prompt which appears
5941 * Fixed the length of the auto-generated ---> prompt which appears
5935 for auto-parens and auto-quotes. Getting this right isn't trivial,
5942 for auto-parens and auto-quotes. Getting this right isn't trivial,
5936 with all the color escapes, different prompt types and optional
5943 with all the color escapes, different prompt types and optional
5937 separators. But it seems to be working in all the combinations.
5944 separators. But it seems to be working in all the combinations.
5938
5945
5939 2001-11-26 Fernando Perez <fperez@colorado.edu>
5946 2001-11-26 Fernando Perez <fperez@colorado.edu>
5940
5947
5941 * Wrote a regexp filter to get option types from the option names
5948 * Wrote a regexp filter to get option types from the option names
5942 string. This eliminates the need to manually keep two duplicate
5949 string. This eliminates the need to manually keep two duplicate
5943 lists.
5950 lists.
5944
5951
5945 * Removed the unneeded check_option_names. Now options are handled
5952 * Removed the unneeded check_option_names. Now options are handled
5946 in a much saner manner and it's easy to visually check that things
5953 in a much saner manner and it's easy to visually check that things
5947 are ok.
5954 are ok.
5948
5955
5949 * Updated version numbers on all files I modified to carry a
5956 * Updated version numbers on all files I modified to carry a
5950 notice so Janko and Nathan have clear version markers.
5957 notice so Janko and Nathan have clear version markers.
5951
5958
5952 * Updated docstring for ultraTB with my changes. I should send
5959 * Updated docstring for ultraTB with my changes. I should send
5953 this to Nathan.
5960 this to Nathan.
5954
5961
5955 * Lots of small fixes. Ran everything through pychecker again.
5962 * Lots of small fixes. Ran everything through pychecker again.
5956
5963
5957 * Made loading of deep_reload an cmd line option. If it's not too
5964 * Made loading of deep_reload an cmd line option. If it's not too
5958 kosher, now people can just disable it. With -nodeep_reload it's
5965 kosher, now people can just disable it. With -nodeep_reload it's
5959 still available as dreload(), it just won't overwrite reload().
5966 still available as dreload(), it just won't overwrite reload().
5960
5967
5961 * Moved many options to the no| form (-opt and -noopt
5968 * Moved many options to the no| form (-opt and -noopt
5962 accepted). Cleaner.
5969 accepted). Cleaner.
5963
5970
5964 * Changed magic_log so that if called with no parameters, it uses
5971 * Changed magic_log so that if called with no parameters, it uses
5965 'rotate' mode. That way auto-generated logs aren't automatically
5972 'rotate' mode. That way auto-generated logs aren't automatically
5966 over-written. For normal logs, now a backup is made if it exists
5973 over-written. For normal logs, now a backup is made if it exists
5967 (only 1 level of backups). A new 'backup' mode was added to the
5974 (only 1 level of backups). A new 'backup' mode was added to the
5968 Logger class to support this. This was a request by Janko.
5975 Logger class to support this. This was a request by Janko.
5969
5976
5970 * Added @logoff/@logon to stop/restart an active log.
5977 * Added @logoff/@logon to stop/restart an active log.
5971
5978
5972 * Fixed a lot of bugs in log saving/replay. It was pretty
5979 * Fixed a lot of bugs in log saving/replay. It was pretty
5973 broken. Now special lines (!@,/) appear properly in the command
5980 broken. Now special lines (!@,/) appear properly in the command
5974 history after a log replay.
5981 history after a log replay.
5975
5982
5976 * Tried and failed to implement full session saving via pickle. My
5983 * Tried and failed to implement full session saving via pickle. My
5977 idea was to pickle __main__.__dict__, but modules can't be
5984 idea was to pickle __main__.__dict__, but modules can't be
5978 pickled. This would be a better alternative to replaying logs, but
5985 pickled. This would be a better alternative to replaying logs, but
5979 seems quite tricky to get to work. Changed -session to be called
5986 seems quite tricky to get to work. Changed -session to be called
5980 -logplay, which more accurately reflects what it does. And if we
5987 -logplay, which more accurately reflects what it does. And if we
5981 ever get real session saving working, -session is now available.
5988 ever get real session saving working, -session is now available.
5982
5989
5983 * Implemented color schemes for prompts also. As for tracebacks,
5990 * Implemented color schemes for prompts also. As for tracebacks,
5984 currently only NoColor and Linux are supported. But now the
5991 currently only NoColor and Linux are supported. But now the
5985 infrastructure is in place, based on a generic ColorScheme
5992 infrastructure is in place, based on a generic ColorScheme
5986 class. So writing and activating new schemes both for the prompts
5993 class. So writing and activating new schemes both for the prompts
5987 and the tracebacks should be straightforward.
5994 and the tracebacks should be straightforward.
5988
5995
5989 * Version 0.1.13 released, 0.1.14 opened.
5996 * Version 0.1.13 released, 0.1.14 opened.
5990
5997
5991 * Changed handling of options for output cache. Now counter is
5998 * Changed handling of options for output cache. Now counter is
5992 hardwired starting at 1 and one specifies the maximum number of
5999 hardwired starting at 1 and one specifies the maximum number of
5993 entries *in the outcache* (not the max prompt counter). This is
6000 entries *in the outcache* (not the max prompt counter). This is
5994 much better, since many statements won't increase the cache
6001 much better, since many statements won't increase the cache
5995 count. It also eliminated some confusing options, now there's only
6002 count. It also eliminated some confusing options, now there's only
5996 one: cache_size.
6003 one: cache_size.
5997
6004
5998 * Added 'alias' magic function and magic_alias option in the
6005 * Added 'alias' magic function and magic_alias option in the
5999 ipythonrc file. Now the user can easily define whatever names he
6006 ipythonrc file. Now the user can easily define whatever names he
6000 wants for the magic functions without having to play weird
6007 wants for the magic functions without having to play weird
6001 namespace games. This gives IPython a real shell-like feel.
6008 namespace games. This gives IPython a real shell-like feel.
6002
6009
6003 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6010 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6004 @ or not).
6011 @ or not).
6005
6012
6006 This was one of the last remaining 'visible' bugs (that I know
6013 This was one of the last remaining 'visible' bugs (that I know
6007 of). I think if I can clean up the session loading so it works
6014 of). I think if I can clean up the session loading so it works
6008 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6015 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6009 about licensing).
6016 about licensing).
6010
6017
6011 2001-11-25 Fernando Perez <fperez@colorado.edu>
6018 2001-11-25 Fernando Perez <fperez@colorado.edu>
6012
6019
6013 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6020 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6014 there's a cleaner distinction between what ? and ?? show.
6021 there's a cleaner distinction between what ? and ?? show.
6015
6022
6016 * Added screen_length option. Now the user can define his own
6023 * Added screen_length option. Now the user can define his own
6017 screen size for page() operations.
6024 screen size for page() operations.
6018
6025
6019 * Implemented magic shell-like functions with automatic code
6026 * Implemented magic shell-like functions with automatic code
6020 generation. Now adding another function is just a matter of adding
6027 generation. Now adding another function is just a matter of adding
6021 an entry to a dict, and the function is dynamically generated at
6028 an entry to a dict, and the function is dynamically generated at
6022 run-time. Python has some really cool features!
6029 run-time. Python has some really cool features!
6023
6030
6024 * Renamed many options to cleanup conventions a little. Now all
6031 * Renamed many options to cleanup conventions a little. Now all
6025 are lowercase, and only underscores where needed. Also in the code
6032 are lowercase, and only underscores where needed. Also in the code
6026 option name tables are clearer.
6033 option name tables are clearer.
6027
6034
6028 * Changed prompts a little. Now input is 'In [n]:' instead of
6035 * Changed prompts a little. Now input is 'In [n]:' instead of
6029 'In[n]:='. This allows it the numbers to be aligned with the
6036 'In[n]:='. This allows it the numbers to be aligned with the
6030 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6037 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6031 Python (it was a Mathematica thing). The '...' continuation prompt
6038 Python (it was a Mathematica thing). The '...' continuation prompt
6032 was also changed a little to align better.
6039 was also changed a little to align better.
6033
6040
6034 * Fixed bug when flushing output cache. Not all _p<n> variables
6041 * Fixed bug when flushing output cache. Not all _p<n> variables
6035 exist, so their deletion needs to be wrapped in a try:
6042 exist, so their deletion needs to be wrapped in a try:
6036
6043
6037 * Figured out how to properly use inspect.formatargspec() (it
6044 * Figured out how to properly use inspect.formatargspec() (it
6038 requires the args preceded by *). So I removed all the code from
6045 requires the args preceded by *). So I removed all the code from
6039 _get_pdef in Magic, which was just replicating that.
6046 _get_pdef in Magic, which was just replicating that.
6040
6047
6041 * Added test to prefilter to allow redefining magic function names
6048 * Added test to prefilter to allow redefining magic function names
6042 as variables. This is ok, since the @ form is always available,
6049 as variables. This is ok, since the @ form is always available,
6043 but whe should allow the user to define a variable called 'ls' if
6050 but whe should allow the user to define a variable called 'ls' if
6044 he needs it.
6051 he needs it.
6045
6052
6046 * Moved the ToDo information from README into a separate ToDo.
6053 * Moved the ToDo information from README into a separate ToDo.
6047
6054
6048 * General code cleanup and small bugfixes. I think it's close to a
6055 * General code cleanup and small bugfixes. I think it's close to a
6049 state where it can be released, obviously with a big 'beta'
6056 state where it can be released, obviously with a big 'beta'
6050 warning on it.
6057 warning on it.
6051
6058
6052 * Got the magic function split to work. Now all magics are defined
6059 * Got the magic function split to work. Now all magics are defined
6053 in a separate class. It just organizes things a bit, and now
6060 in a separate class. It just organizes things a bit, and now
6054 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6061 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6055 was too long).
6062 was too long).
6056
6063
6057 * Changed @clear to @reset to avoid potential confusions with
6064 * Changed @clear to @reset to avoid potential confusions with
6058 the shell command clear. Also renamed @cl to @clear, which does
6065 the shell command clear. Also renamed @cl to @clear, which does
6059 exactly what people expect it to from their shell experience.
6066 exactly what people expect it to from their shell experience.
6060
6067
6061 Added a check to the @reset command (since it's so
6068 Added a check to the @reset command (since it's so
6062 destructive, it's probably a good idea to ask for confirmation).
6069 destructive, it's probably a good idea to ask for confirmation).
6063 But now reset only works for full namespace resetting. Since the
6070 But now reset only works for full namespace resetting. Since the
6064 del keyword is already there for deleting a few specific
6071 del keyword is already there for deleting a few specific
6065 variables, I don't see the point of having a redundant magic
6072 variables, I don't see the point of having a redundant magic
6066 function for the same task.
6073 function for the same task.
6067
6074
6068 2001-11-24 Fernando Perez <fperez@colorado.edu>
6075 2001-11-24 Fernando Perez <fperez@colorado.edu>
6069
6076
6070 * Updated the builtin docs (esp. the ? ones).
6077 * Updated the builtin docs (esp. the ? ones).
6071
6078
6072 * Ran all the code through pychecker. Not terribly impressed with
6079 * Ran all the code through pychecker. Not terribly impressed with
6073 it: lots of spurious warnings and didn't really find anything of
6080 it: lots of spurious warnings and didn't really find anything of
6074 substance (just a few modules being imported and not used).
6081 substance (just a few modules being imported and not used).
6075
6082
6076 * Implemented the new ultraTB functionality into IPython. New
6083 * Implemented the new ultraTB functionality into IPython. New
6077 option: xcolors. This chooses color scheme. xmode now only selects
6084 option: xcolors. This chooses color scheme. xmode now only selects
6078 between Plain and Verbose. Better orthogonality.
6085 between Plain and Verbose. Better orthogonality.
6079
6086
6080 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6087 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6081 mode and color scheme for the exception handlers. Now it's
6088 mode and color scheme for the exception handlers. Now it's
6082 possible to have the verbose traceback with no coloring.
6089 possible to have the verbose traceback with no coloring.
6083
6090
6084 2001-11-23 Fernando Perez <fperez@colorado.edu>
6091 2001-11-23 Fernando Perez <fperez@colorado.edu>
6085
6092
6086 * Version 0.1.12 released, 0.1.13 opened.
6093 * Version 0.1.12 released, 0.1.13 opened.
6087
6094
6088 * Removed option to set auto-quote and auto-paren escapes by
6095 * Removed option to set auto-quote and auto-paren escapes by
6089 user. The chances of breaking valid syntax are just too high. If
6096 user. The chances of breaking valid syntax are just too high. If
6090 someone *really* wants, they can always dig into the code.
6097 someone *really* wants, they can always dig into the code.
6091
6098
6092 * Made prompt separators configurable.
6099 * Made prompt separators configurable.
6093
6100
6094 2001-11-22 Fernando Perez <fperez@colorado.edu>
6101 2001-11-22 Fernando Perez <fperez@colorado.edu>
6095
6102
6096 * Small bugfixes in many places.
6103 * Small bugfixes in many places.
6097
6104
6098 * Removed the MyCompleter class from ipplib. It seemed redundant
6105 * Removed the MyCompleter class from ipplib. It seemed redundant
6099 with the C-p,C-n history search functionality. Less code to
6106 with the C-p,C-n history search functionality. Less code to
6100 maintain.
6107 maintain.
6101
6108
6102 * Moved all the original ipython.py code into ipythonlib.py. Right
6109 * Moved all the original ipython.py code into ipythonlib.py. Right
6103 now it's just one big dump into a function called make_IPython, so
6110 now it's just one big dump into a function called make_IPython, so
6104 no real modularity has been gained. But at least it makes the
6111 no real modularity has been gained. But at least it makes the
6105 wrapper script tiny, and since ipythonlib is a module, it gets
6112 wrapper script tiny, and since ipythonlib is a module, it gets
6106 compiled and startup is much faster.
6113 compiled and startup is much faster.
6107
6114
6108 This is a reasobably 'deep' change, so we should test it for a
6115 This is a reasobably 'deep' change, so we should test it for a
6109 while without messing too much more with the code.
6116 while without messing too much more with the code.
6110
6117
6111 2001-11-21 Fernando Perez <fperez@colorado.edu>
6118 2001-11-21 Fernando Perez <fperez@colorado.edu>
6112
6119
6113 * Version 0.1.11 released, 0.1.12 opened for further work.
6120 * Version 0.1.11 released, 0.1.12 opened for further work.
6114
6121
6115 * Removed dependency on Itpl. It was only needed in one place. It
6122 * Removed dependency on Itpl. It was only needed in one place. It
6116 would be nice if this became part of python, though. It makes life
6123 would be nice if this became part of python, though. It makes life
6117 *a lot* easier in some cases.
6124 *a lot* easier in some cases.
6118
6125
6119 * Simplified the prefilter code a bit. Now all handlers are
6126 * Simplified the prefilter code a bit. Now all handlers are
6120 expected to explicitly return a value (at least a blank string).
6127 expected to explicitly return a value (at least a blank string).
6121
6128
6122 * Heavy edits in ipplib. Removed the help system altogether. Now
6129 * Heavy edits in ipplib. Removed the help system altogether. Now
6123 obj?/?? is used for inspecting objects, a magic @doc prints
6130 obj?/?? is used for inspecting objects, a magic @doc prints
6124 docstrings, and full-blown Python help is accessed via the 'help'
6131 docstrings, and full-blown Python help is accessed via the 'help'
6125 keyword. This cleans up a lot of code (less to maintain) and does
6132 keyword. This cleans up a lot of code (less to maintain) and does
6126 the job. Since 'help' is now a standard Python component, might as
6133 the job. Since 'help' is now a standard Python component, might as
6127 well use it and remove duplicate functionality.
6134 well use it and remove duplicate functionality.
6128
6135
6129 Also removed the option to use ipplib as a standalone program. By
6136 Also removed the option to use ipplib as a standalone program. By
6130 now it's too dependent on other parts of IPython to function alone.
6137 now it's too dependent on other parts of IPython to function alone.
6131
6138
6132 * Fixed bug in genutils.pager. It would crash if the pager was
6139 * Fixed bug in genutils.pager. It would crash if the pager was
6133 exited immediately after opening (broken pipe).
6140 exited immediately after opening (broken pipe).
6134
6141
6135 * Trimmed down the VerboseTB reporting a little. The header is
6142 * Trimmed down the VerboseTB reporting a little. The header is
6136 much shorter now and the repeated exception arguments at the end
6143 much shorter now and the repeated exception arguments at the end
6137 have been removed. For interactive use the old header seemed a bit
6144 have been removed. For interactive use the old header seemed a bit
6138 excessive.
6145 excessive.
6139
6146
6140 * Fixed small bug in output of @whos for variables with multi-word
6147 * Fixed small bug in output of @whos for variables with multi-word
6141 types (only first word was displayed).
6148 types (only first word was displayed).
6142
6149
6143 2001-11-17 Fernando Perez <fperez@colorado.edu>
6150 2001-11-17 Fernando Perez <fperez@colorado.edu>
6144
6151
6145 * Version 0.1.10 released, 0.1.11 opened for further work.
6152 * Version 0.1.10 released, 0.1.11 opened for further work.
6146
6153
6147 * Modified dirs and friends. dirs now *returns* the stack (not
6154 * Modified dirs and friends. dirs now *returns* the stack (not
6148 prints), so one can manipulate it as a variable. Convenient to
6155 prints), so one can manipulate it as a variable. Convenient to
6149 travel along many directories.
6156 travel along many directories.
6150
6157
6151 * Fixed bug in magic_pdef: would only work with functions with
6158 * Fixed bug in magic_pdef: would only work with functions with
6152 arguments with default values.
6159 arguments with default values.
6153
6160
6154 2001-11-14 Fernando Perez <fperez@colorado.edu>
6161 2001-11-14 Fernando Perez <fperez@colorado.edu>
6155
6162
6156 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6163 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6157 example with IPython. Various other minor fixes and cleanups.
6164 example with IPython. Various other minor fixes and cleanups.
6158
6165
6159 * Version 0.1.9 released, 0.1.10 opened for further work.
6166 * Version 0.1.9 released, 0.1.10 opened for further work.
6160
6167
6161 * Added sys.path to the list of directories searched in the
6168 * Added sys.path to the list of directories searched in the
6162 execfile= option. It used to be the current directory and the
6169 execfile= option. It used to be the current directory and the
6163 user's IPYTHONDIR only.
6170 user's IPYTHONDIR only.
6164
6171
6165 2001-11-13 Fernando Perez <fperez@colorado.edu>
6172 2001-11-13 Fernando Perez <fperez@colorado.edu>
6166
6173
6167 * Reinstated the raw_input/prefilter separation that Janko had
6174 * Reinstated the raw_input/prefilter separation that Janko had
6168 initially. This gives a more convenient setup for extending the
6175 initially. This gives a more convenient setup for extending the
6169 pre-processor from the outside: raw_input always gets a string,
6176 pre-processor from the outside: raw_input always gets a string,
6170 and prefilter has to process it. We can then redefine prefilter
6177 and prefilter has to process it. We can then redefine prefilter
6171 from the outside and implement extensions for special
6178 from the outside and implement extensions for special
6172 purposes.
6179 purposes.
6173
6180
6174 Today I got one for inputting PhysicalQuantity objects
6181 Today I got one for inputting PhysicalQuantity objects
6175 (from Scientific) without needing any function calls at
6182 (from Scientific) without needing any function calls at
6176 all. Extremely convenient, and it's all done as a user-level
6183 all. Extremely convenient, and it's all done as a user-level
6177 extension (no IPython code was touched). Now instead of:
6184 extension (no IPython code was touched). Now instead of:
6178 a = PhysicalQuantity(4.2,'m/s**2')
6185 a = PhysicalQuantity(4.2,'m/s**2')
6179 one can simply say
6186 one can simply say
6180 a = 4.2 m/s**2
6187 a = 4.2 m/s**2
6181 or even
6188 or even
6182 a = 4.2 m/s^2
6189 a = 4.2 m/s^2
6183
6190
6184 I use this, but it's also a proof of concept: IPython really is
6191 I use this, but it's also a proof of concept: IPython really is
6185 fully user-extensible, even at the level of the parsing of the
6192 fully user-extensible, even at the level of the parsing of the
6186 command line. It's not trivial, but it's perfectly doable.
6193 command line. It's not trivial, but it's perfectly doable.
6187
6194
6188 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6195 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6189 the problem of modules being loaded in the inverse order in which
6196 the problem of modules being loaded in the inverse order in which
6190 they were defined in
6197 they were defined in
6191
6198
6192 * Version 0.1.8 released, 0.1.9 opened for further work.
6199 * Version 0.1.8 released, 0.1.9 opened for further work.
6193
6200
6194 * Added magics pdef, source and file. They respectively show the
6201 * Added magics pdef, source and file. They respectively show the
6195 definition line ('prototype' in C), source code and full python
6202 definition line ('prototype' in C), source code and full python
6196 file for any callable object. The object inspector oinfo uses
6203 file for any callable object. The object inspector oinfo uses
6197 these to show the same information.
6204 these to show the same information.
6198
6205
6199 * Version 0.1.7 released, 0.1.8 opened for further work.
6206 * Version 0.1.7 released, 0.1.8 opened for further work.
6200
6207
6201 * Separated all the magic functions into a class called Magic. The
6208 * Separated all the magic functions into a class called Magic. The
6202 InteractiveShell class was becoming too big for Xemacs to handle
6209 InteractiveShell class was becoming too big for Xemacs to handle
6203 (de-indenting a line would lock it up for 10 seconds while it
6210 (de-indenting a line would lock it up for 10 seconds while it
6204 backtracked on the whole class!)
6211 backtracked on the whole class!)
6205
6212
6206 FIXME: didn't work. It can be done, but right now namespaces are
6213 FIXME: didn't work. It can be done, but right now namespaces are
6207 all messed up. Do it later (reverted it for now, so at least
6214 all messed up. Do it later (reverted it for now, so at least
6208 everything works as before).
6215 everything works as before).
6209
6216
6210 * Got the object introspection system (magic_oinfo) working! I
6217 * Got the object introspection system (magic_oinfo) working! I
6211 think this is pretty much ready for release to Janko, so he can
6218 think this is pretty much ready for release to Janko, so he can
6212 test it for a while and then announce it. Pretty much 100% of what
6219 test it for a while and then announce it. Pretty much 100% of what
6213 I wanted for the 'phase 1' release is ready. Happy, tired.
6220 I wanted for the 'phase 1' release is ready. Happy, tired.
6214
6221
6215 2001-11-12 Fernando Perez <fperez@colorado.edu>
6222 2001-11-12 Fernando Perez <fperez@colorado.edu>
6216
6223
6217 * Version 0.1.6 released, 0.1.7 opened for further work.
6224 * Version 0.1.6 released, 0.1.7 opened for further work.
6218
6225
6219 * Fixed bug in printing: it used to test for truth before
6226 * Fixed bug in printing: it used to test for truth before
6220 printing, so 0 wouldn't print. Now checks for None.
6227 printing, so 0 wouldn't print. Now checks for None.
6221
6228
6222 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6229 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6223 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6230 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6224 reaches by hand into the outputcache. Think of a better way to do
6231 reaches by hand into the outputcache. Think of a better way to do
6225 this later.
6232 this later.
6226
6233
6227 * Various small fixes thanks to Nathan's comments.
6234 * Various small fixes thanks to Nathan's comments.
6228
6235
6229 * Changed magic_pprint to magic_Pprint. This way it doesn't
6236 * Changed magic_pprint to magic_Pprint. This way it doesn't
6230 collide with pprint() and the name is consistent with the command
6237 collide with pprint() and the name is consistent with the command
6231 line option.
6238 line option.
6232
6239
6233 * Changed prompt counter behavior to be fully like
6240 * Changed prompt counter behavior to be fully like
6234 Mathematica's. That is, even input that doesn't return a result
6241 Mathematica's. That is, even input that doesn't return a result
6235 raises the prompt counter. The old behavior was kind of confusing
6242 raises the prompt counter. The old behavior was kind of confusing
6236 (getting the same prompt number several times if the operation
6243 (getting the same prompt number several times if the operation
6237 didn't return a result).
6244 didn't return a result).
6238
6245
6239 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6246 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6240
6247
6241 * Fixed -Classic mode (wasn't working anymore).
6248 * Fixed -Classic mode (wasn't working anymore).
6242
6249
6243 * Added colored prompts using Nathan's new code. Colors are
6250 * Added colored prompts using Nathan's new code. Colors are
6244 currently hardwired, they can be user-configurable. For
6251 currently hardwired, they can be user-configurable. For
6245 developers, they can be chosen in file ipythonlib.py, at the
6252 developers, they can be chosen in file ipythonlib.py, at the
6246 beginning of the CachedOutput class def.
6253 beginning of the CachedOutput class def.
6247
6254
6248 2001-11-11 Fernando Perez <fperez@colorado.edu>
6255 2001-11-11 Fernando Perez <fperez@colorado.edu>
6249
6256
6250 * Version 0.1.5 released, 0.1.6 opened for further work.
6257 * Version 0.1.5 released, 0.1.6 opened for further work.
6251
6258
6252 * Changed magic_env to *return* the environment as a dict (not to
6259 * Changed magic_env to *return* the environment as a dict (not to
6253 print it). This way it prints, but it can also be processed.
6260 print it). This way it prints, but it can also be processed.
6254
6261
6255 * Added Verbose exception reporting to interactive
6262 * Added Verbose exception reporting to interactive
6256 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6263 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6257 traceback. Had to make some changes to the ultraTB file. This is
6264 traceback. Had to make some changes to the ultraTB file. This is
6258 probably the last 'big' thing in my mental todo list. This ties
6265 probably the last 'big' thing in my mental todo list. This ties
6259 in with the next entry:
6266 in with the next entry:
6260
6267
6261 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6268 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6262 has to specify is Plain, Color or Verbose for all exception
6269 has to specify is Plain, Color or Verbose for all exception
6263 handling.
6270 handling.
6264
6271
6265 * Removed ShellServices option. All this can really be done via
6272 * Removed ShellServices option. All this can really be done via
6266 the magic system. It's easier to extend, cleaner and has automatic
6273 the magic system. It's easier to extend, cleaner and has automatic
6267 namespace protection and documentation.
6274 namespace protection and documentation.
6268
6275
6269 2001-11-09 Fernando Perez <fperez@colorado.edu>
6276 2001-11-09 Fernando Perez <fperez@colorado.edu>
6270
6277
6271 * Fixed bug in output cache flushing (missing parameter to
6278 * Fixed bug in output cache flushing (missing parameter to
6272 __init__). Other small bugs fixed (found using pychecker).
6279 __init__). Other small bugs fixed (found using pychecker).
6273
6280
6274 * Version 0.1.4 opened for bugfixing.
6281 * Version 0.1.4 opened for bugfixing.
6275
6282
6276 2001-11-07 Fernando Perez <fperez@colorado.edu>
6283 2001-11-07 Fernando Perez <fperez@colorado.edu>
6277
6284
6278 * Version 0.1.3 released, mainly because of the raw_input bug.
6285 * Version 0.1.3 released, mainly because of the raw_input bug.
6279
6286
6280 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6287 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6281 and when testing for whether things were callable, a call could
6288 and when testing for whether things were callable, a call could
6282 actually be made to certain functions. They would get called again
6289 actually be made to certain functions. They would get called again
6283 once 'really' executed, with a resulting double call. A disaster
6290 once 'really' executed, with a resulting double call. A disaster
6284 in many cases (list.reverse() would never work!).
6291 in many cases (list.reverse() would never work!).
6285
6292
6286 * Removed prefilter() function, moved its code to raw_input (which
6293 * Removed prefilter() function, moved its code to raw_input (which
6287 after all was just a near-empty caller for prefilter). This saves
6294 after all was just a near-empty caller for prefilter). This saves
6288 a function call on every prompt, and simplifies the class a tiny bit.
6295 a function call on every prompt, and simplifies the class a tiny bit.
6289
6296
6290 * Fix _ip to __ip name in magic example file.
6297 * Fix _ip to __ip name in magic example file.
6291
6298
6292 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6299 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6293 work with non-gnu versions of tar.
6300 work with non-gnu versions of tar.
6294
6301
6295 2001-11-06 Fernando Perez <fperez@colorado.edu>
6302 2001-11-06 Fernando Perez <fperez@colorado.edu>
6296
6303
6297 * Version 0.1.2. Just to keep track of the recent changes.
6304 * Version 0.1.2. Just to keep track of the recent changes.
6298
6305
6299 * Fixed nasty bug in output prompt routine. It used to check 'if
6306 * Fixed nasty bug in output prompt routine. It used to check 'if
6300 arg != None...'. Problem is, this fails if arg implements a
6307 arg != None...'. Problem is, this fails if arg implements a
6301 special comparison (__cmp__) which disallows comparing to
6308 special comparison (__cmp__) which disallows comparing to
6302 None. Found it when trying to use the PhysicalQuantity module from
6309 None. Found it when trying to use the PhysicalQuantity module from
6303 ScientificPython.
6310 ScientificPython.
6304
6311
6305 2001-11-05 Fernando Perez <fperez@colorado.edu>
6312 2001-11-05 Fernando Perez <fperez@colorado.edu>
6306
6313
6307 * Also added dirs. Now the pushd/popd/dirs family functions
6314 * Also added dirs. Now the pushd/popd/dirs family functions
6308 basically like the shell, with the added convenience of going home
6315 basically like the shell, with the added convenience of going home
6309 when called with no args.
6316 when called with no args.
6310
6317
6311 * pushd/popd slightly modified to mimic shell behavior more
6318 * pushd/popd slightly modified to mimic shell behavior more
6312 closely.
6319 closely.
6313
6320
6314 * Added env,pushd,popd from ShellServices as magic functions. I
6321 * Added env,pushd,popd from ShellServices as magic functions. I
6315 think the cleanest will be to port all desired functions from
6322 think the cleanest will be to port all desired functions from
6316 ShellServices as magics and remove ShellServices altogether. This
6323 ShellServices as magics and remove ShellServices altogether. This
6317 will provide a single, clean way of adding functionality
6324 will provide a single, clean way of adding functionality
6318 (shell-type or otherwise) to IP.
6325 (shell-type or otherwise) to IP.
6319
6326
6320 2001-11-04 Fernando Perez <fperez@colorado.edu>
6327 2001-11-04 Fernando Perez <fperez@colorado.edu>
6321
6328
6322 * Added .ipython/ directory to sys.path. This way users can keep
6329 * Added .ipython/ directory to sys.path. This way users can keep
6323 customizations there and access them via import.
6330 customizations there and access them via import.
6324
6331
6325 2001-11-03 Fernando Perez <fperez@colorado.edu>
6332 2001-11-03 Fernando Perez <fperez@colorado.edu>
6326
6333
6327 * Opened version 0.1.1 for new changes.
6334 * Opened version 0.1.1 for new changes.
6328
6335
6329 * Changed version number to 0.1.0: first 'public' release, sent to
6336 * Changed version number to 0.1.0: first 'public' release, sent to
6330 Nathan and Janko.
6337 Nathan and Janko.
6331
6338
6332 * Lots of small fixes and tweaks.
6339 * Lots of small fixes and tweaks.
6333
6340
6334 * Minor changes to whos format. Now strings are shown, snipped if
6341 * Minor changes to whos format. Now strings are shown, snipped if
6335 too long.
6342 too long.
6336
6343
6337 * Changed ShellServices to work on __main__ so they show up in @who
6344 * Changed ShellServices to work on __main__ so they show up in @who
6338
6345
6339 * Help also works with ? at the end of a line:
6346 * Help also works with ? at the end of a line:
6340 ?sin and sin?
6347 ?sin and sin?
6341 both produce the same effect. This is nice, as often I use the
6348 both produce the same effect. This is nice, as often I use the
6342 tab-complete to find the name of a method, but I used to then have
6349 tab-complete to find the name of a method, but I used to then have
6343 to go to the beginning of the line to put a ? if I wanted more
6350 to go to the beginning of the line to put a ? if I wanted more
6344 info. Now I can just add the ? and hit return. Convenient.
6351 info. Now I can just add the ? and hit return. Convenient.
6345
6352
6346 2001-11-02 Fernando Perez <fperez@colorado.edu>
6353 2001-11-02 Fernando Perez <fperez@colorado.edu>
6347
6354
6348 * Python version check (>=2.1) added.
6355 * Python version check (>=2.1) added.
6349
6356
6350 * Added LazyPython documentation. At this point the docs are quite
6357 * Added LazyPython documentation. At this point the docs are quite
6351 a mess. A cleanup is in order.
6358 a mess. A cleanup is in order.
6352
6359
6353 * Auto-installer created. For some bizarre reason, the zipfiles
6360 * Auto-installer created. For some bizarre reason, the zipfiles
6354 module isn't working on my system. So I made a tar version
6361 module isn't working on my system. So I made a tar version
6355 (hopefully the command line options in various systems won't kill
6362 (hopefully the command line options in various systems won't kill
6356 me).
6363 me).
6357
6364
6358 * Fixes to Struct in genutils. Now all dictionary-like methods are
6365 * Fixes to Struct in genutils. Now all dictionary-like methods are
6359 protected (reasonably).
6366 protected (reasonably).
6360
6367
6361 * Added pager function to genutils and changed ? to print usage
6368 * Added pager function to genutils and changed ? to print usage
6362 note through it (it was too long).
6369 note through it (it was too long).
6363
6370
6364 * Added the LazyPython functionality. Works great! I changed the
6371 * Added the LazyPython functionality. Works great! I changed the
6365 auto-quote escape to ';', it's on home row and next to '. But
6372 auto-quote escape to ';', it's on home row and next to '. But
6366 both auto-quote and auto-paren (still /) escapes are command-line
6373 both auto-quote and auto-paren (still /) escapes are command-line
6367 parameters.
6374 parameters.
6368
6375
6369
6376
6370 2001-11-01 Fernando Perez <fperez@colorado.edu>
6377 2001-11-01 Fernando Perez <fperez@colorado.edu>
6371
6378
6372 * Version changed to 0.0.7. Fairly large change: configuration now
6379 * Version changed to 0.0.7. Fairly large change: configuration now
6373 is all stored in a directory, by default .ipython. There, all
6380 is all stored in a directory, by default .ipython. There, all
6374 config files have normal looking names (not .names)
6381 config files have normal looking names (not .names)
6375
6382
6376 * Version 0.0.6 Released first to Lucas and Archie as a test
6383 * Version 0.0.6 Released first to Lucas and Archie as a test
6377 run. Since it's the first 'semi-public' release, change version to
6384 run. Since it's the first 'semi-public' release, change version to
6378 > 0.0.6 for any changes now.
6385 > 0.0.6 for any changes now.
6379
6386
6380 * Stuff I had put in the ipplib.py changelog:
6387 * Stuff I had put in the ipplib.py changelog:
6381
6388
6382 Changes to InteractiveShell:
6389 Changes to InteractiveShell:
6383
6390
6384 - Made the usage message a parameter.
6391 - Made the usage message a parameter.
6385
6392
6386 - Require the name of the shell variable to be given. It's a bit
6393 - Require the name of the shell variable to be given. It's a bit
6387 of a hack, but allows the name 'shell' not to be hardwired in the
6394 of a hack, but allows the name 'shell' not to be hardwired in the
6388 magic (@) handler, which is problematic b/c it requires
6395 magic (@) handler, which is problematic b/c it requires
6389 polluting the global namespace with 'shell'. This in turn is
6396 polluting the global namespace with 'shell'. This in turn is
6390 fragile: if a user redefines a variable called shell, things
6397 fragile: if a user redefines a variable called shell, things
6391 break.
6398 break.
6392
6399
6393 - magic @: all functions available through @ need to be defined
6400 - magic @: all functions available through @ need to be defined
6394 as magic_<name>, even though they can be called simply as
6401 as magic_<name>, even though they can be called simply as
6395 @<name>. This allows the special command @magic to gather
6402 @<name>. This allows the special command @magic to gather
6396 information automatically about all existing magic functions,
6403 information automatically about all existing magic functions,
6397 even if they are run-time user extensions, by parsing the shell
6404 even if they are run-time user extensions, by parsing the shell
6398 instance __dict__ looking for special magic_ names.
6405 instance __dict__ looking for special magic_ names.
6399
6406
6400 - mainloop: added *two* local namespace parameters. This allows
6407 - mainloop: added *two* local namespace parameters. This allows
6401 the class to differentiate between parameters which were there
6408 the class to differentiate between parameters which were there
6402 before and after command line initialization was processed. This
6409 before and after command line initialization was processed. This
6403 way, later @who can show things loaded at startup by the
6410 way, later @who can show things loaded at startup by the
6404 user. This trick was necessary to make session saving/reloading
6411 user. This trick was necessary to make session saving/reloading
6405 really work: ideally after saving/exiting/reloading a session,
6412 really work: ideally after saving/exiting/reloading a session,
6406 *everything* should look the same, including the output of @who. I
6413 *everything* should look the same, including the output of @who. I
6407 was only able to make this work with this double namespace
6414 was only able to make this work with this double namespace
6408 trick.
6415 trick.
6409
6416
6410 - added a header to the logfile which allows (almost) full
6417 - added a header to the logfile which allows (almost) full
6411 session restoring.
6418 session restoring.
6412
6419
6413 - prepend lines beginning with @ or !, with a and log
6420 - prepend lines beginning with @ or !, with a and log
6414 them. Why? !lines: may be useful to know what you did @lines:
6421 them. Why? !lines: may be useful to know what you did @lines:
6415 they may affect session state. So when restoring a session, at
6422 they may affect session state. So when restoring a session, at
6416 least inform the user of their presence. I couldn't quite get
6423 least inform the user of their presence. I couldn't quite get
6417 them to properly re-execute, but at least the user is warned.
6424 them to properly re-execute, but at least the user is warned.
6418
6425
6419 * Started ChangeLog.
6426 * Started ChangeLog.
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
General Comments 0
You need to be logged in to leave comments. Login now