##// END OF EJS Templates
Do not update _oh and _123 when do_full_cache is not true, closes \#194
vivainio -
Show More
@@ -1,609 +1,609 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 2659 2007-08-22 20:21:07Z vivainio $"""
5 $Id: Prompts.py 2855 2007-11-06 06:53:49Z vivainio $"""
6
6
7 #*****************************************************************************
7 #*****************************************************************************
8 # Copyright (C) 2001-2006 Fernando Perez <fperez@colorado.edu>
8 # Copyright (C) 2001-2006 Fernando Perez <fperez@colorado.edu>
9 #
9 #
10 # Distributed under the terms of the BSD License. The full license is in
10 # Distributed under the terms of the BSD License. The full license is in
11 # the file COPYING, distributed as part of this software.
11 # the file COPYING, distributed as part of this software.
12 #*****************************************************************************
12 #*****************************************************************************
13
13
14 from IPython import Release
14 from IPython import Release
15 __author__ = '%s <%s>' % Release.authors['Fernando']
15 __author__ = '%s <%s>' % Release.authors['Fernando']
16 __license__ = Release.license
16 __license__ = Release.license
17 __version__ = Release.version
17 __version__ = Release.version
18
18
19 #****************************************************************************
19 #****************************************************************************
20 # Required modules
20 # Required modules
21 import __builtin__
21 import __builtin__
22 import os
22 import os
23 import socket
23 import socket
24 import sys
24 import sys
25 import time
25 import time
26
26
27 # IPython's own
27 # IPython's own
28 from IPython import ColorANSI
28 from IPython import ColorANSI
29 from IPython.Itpl import ItplNS
29 from IPython.Itpl import ItplNS
30 from IPython.ipstruct import Struct
30 from IPython.ipstruct import Struct
31 from IPython.macro import Macro
31 from IPython.macro import Macro
32 from IPython.genutils import *
32 from IPython.genutils import *
33 from IPython.ipapi import TryNext
33 from IPython.ipapi import TryNext
34
34
35 #****************************************************************************
35 #****************************************************************************
36 #Color schemes for Prompts.
36 #Color schemes for Prompts.
37
37
38 PromptColors = ColorANSI.ColorSchemeTable()
38 PromptColors = ColorANSI.ColorSchemeTable()
39 InputColors = ColorANSI.InputTermColors # just a shorthand
39 InputColors = ColorANSI.InputTermColors # just a shorthand
40 Colors = ColorANSI.TermColors # just a shorthand
40 Colors = ColorANSI.TermColors # just a shorthand
41
41
42 PromptColors.add_scheme(ColorANSI.ColorScheme(
42 PromptColors.add_scheme(ColorANSI.ColorScheme(
43 'NoColor',
43 'NoColor',
44 in_prompt = InputColors.NoColor, # Input prompt
44 in_prompt = InputColors.NoColor, # Input prompt
45 in_number = InputColors.NoColor, # Input prompt number
45 in_number = InputColors.NoColor, # Input prompt number
46 in_prompt2 = InputColors.NoColor, # Continuation prompt
46 in_prompt2 = InputColors.NoColor, # Continuation prompt
47 in_normal = InputColors.NoColor, # color off (usu. Colors.Normal)
47 in_normal = InputColors.NoColor, # color off (usu. Colors.Normal)
48
48
49 out_prompt = Colors.NoColor, # Output prompt
49 out_prompt = Colors.NoColor, # Output prompt
50 out_number = Colors.NoColor, # Output prompt number
50 out_number = Colors.NoColor, # Output prompt number
51
51
52 normal = Colors.NoColor # color off (usu. Colors.Normal)
52 normal = Colors.NoColor # color off (usu. Colors.Normal)
53 ))
53 ))
54
54
55 # make some schemes as instances so we can copy them for modification easily:
55 # make some schemes as instances so we can copy them for modification easily:
56 __PColLinux = ColorANSI.ColorScheme(
56 __PColLinux = ColorANSI.ColorScheme(
57 'Linux',
57 'Linux',
58 in_prompt = InputColors.Green,
58 in_prompt = InputColors.Green,
59 in_number = InputColors.LightGreen,
59 in_number = InputColors.LightGreen,
60 in_prompt2 = InputColors.Green,
60 in_prompt2 = InputColors.Green,
61 in_normal = InputColors.Normal, # color off (usu. Colors.Normal)
61 in_normal = InputColors.Normal, # color off (usu. Colors.Normal)
62
62
63 out_prompt = Colors.Red,
63 out_prompt = Colors.Red,
64 out_number = Colors.LightRed,
64 out_number = Colors.LightRed,
65
65
66 normal = Colors.Normal
66 normal = Colors.Normal
67 )
67 )
68 # Don't forget to enter it into the table!
68 # Don't forget to enter it into the table!
69 PromptColors.add_scheme(__PColLinux)
69 PromptColors.add_scheme(__PColLinux)
70
70
71 # Slightly modified Linux for light backgrounds
71 # Slightly modified Linux for light backgrounds
72 __PColLightBG = __PColLinux.copy('LightBG')
72 __PColLightBG = __PColLinux.copy('LightBG')
73
73
74 __PColLightBG.colors.update(
74 __PColLightBG.colors.update(
75 in_prompt = InputColors.Blue,
75 in_prompt = InputColors.Blue,
76 in_number = InputColors.LightBlue,
76 in_number = InputColors.LightBlue,
77 in_prompt2 = InputColors.Blue
77 in_prompt2 = InputColors.Blue
78 )
78 )
79 PromptColors.add_scheme(__PColLightBG)
79 PromptColors.add_scheme(__PColLightBG)
80
80
81 del Colors,InputColors
81 del Colors,InputColors
82
82
83 #-----------------------------------------------------------------------------
83 #-----------------------------------------------------------------------------
84 def multiple_replace(dict, text):
84 def multiple_replace(dict, text):
85 """ Replace in 'text' all occurences of any key in the given
85 """ Replace in 'text' all occurences of any key in the given
86 dictionary by its corresponding value. Returns the new string."""
86 dictionary by its corresponding value. Returns the new string."""
87
87
88 # Function by Xavier Defrang, originally found at:
88 # Function by Xavier Defrang, originally found at:
89 # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/81330
89 # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/81330
90
90
91 # Create a regular expression from the dictionary keys
91 # Create a regular expression from the dictionary keys
92 regex = re.compile("(%s)" % "|".join(map(re.escape, dict.keys())))
92 regex = re.compile("(%s)" % "|".join(map(re.escape, dict.keys())))
93 # For each match, look-up corresponding value in dictionary
93 # For each match, look-up corresponding value in dictionary
94 return regex.sub(lambda mo: dict[mo.string[mo.start():mo.end()]], text)
94 return regex.sub(lambda mo: dict[mo.string[mo.start():mo.end()]], text)
95
95
96 #-----------------------------------------------------------------------------
96 #-----------------------------------------------------------------------------
97 # Special characters that can be used in prompt templates, mainly bash-like
97 # Special characters that can be used in prompt templates, mainly bash-like
98
98
99 # If $HOME isn't defined (Windows), make it an absurd string so that it can
99 # If $HOME isn't defined (Windows), make it an absurd string so that it can
100 # never be expanded out into '~'. Basically anything which can never be a
100 # never be expanded out into '~'. Basically anything which can never be a
101 # reasonable directory name will do, we just want the $HOME -> '~' operation
101 # reasonable directory name will do, we just want the $HOME -> '~' operation
102 # to become a no-op. We pre-compute $HOME here so it's not done on every
102 # to become a no-op. We pre-compute $HOME here so it's not done on every
103 # prompt call.
103 # prompt call.
104
104
105 # FIXME:
105 # FIXME:
106
106
107 # - This should be turned into a class which does proper namespace management,
107 # - This should be turned into a class which does proper namespace management,
108 # since the prompt specials need to be evaluated in a certain namespace.
108 # since the prompt specials need to be evaluated in a certain namespace.
109 # Currently it's just globals, which need to be managed manually by code
109 # Currently it's just globals, which need to be managed manually by code
110 # below.
110 # below.
111
111
112 # - I also need to split up the color schemes from the prompt specials
112 # - I also need to split up the color schemes from the prompt specials
113 # somehow. I don't have a clean design for that quite yet.
113 # somehow. I don't have a clean design for that quite yet.
114
114
115 HOME = os.environ.get("HOME","//////:::::ZZZZZ,,,~~~")
115 HOME = os.environ.get("HOME","//////:::::ZZZZZ,,,~~~")
116
116
117 # We precompute a few more strings here for the prompt_specials, which are
117 # We precompute a few more strings here for the prompt_specials, which are
118 # fixed once ipython starts. This reduces the runtime overhead of computing
118 # fixed once ipython starts. This reduces the runtime overhead of computing
119 # prompt strings.
119 # prompt strings.
120 USER = os.environ.get("USER")
120 USER = os.environ.get("USER")
121 HOSTNAME = socket.gethostname()
121 HOSTNAME = socket.gethostname()
122 HOSTNAME_SHORT = HOSTNAME.split(".")[0]
122 HOSTNAME_SHORT = HOSTNAME.split(".")[0]
123 ROOT_SYMBOL = "$#"[os.name=='nt' or os.getuid()==0]
123 ROOT_SYMBOL = "$#"[os.name=='nt' or os.getuid()==0]
124
124
125 prompt_specials_color = {
125 prompt_specials_color = {
126 # Prompt/history count
126 # Prompt/history count
127 '%n' : '${self.col_num}' '${self.cache.prompt_count}' '${self.col_p}',
127 '%n' : '${self.col_num}' '${self.cache.prompt_count}' '${self.col_p}',
128 r'\#': '${self.col_num}' '${self.cache.prompt_count}' '${self.col_p}',
128 r'\#': '${self.col_num}' '${self.cache.prompt_count}' '${self.col_p}',
129 # Just the prompt counter number, WITHOUT any coloring wrappers, so users
129 # Just the prompt counter number, WITHOUT any coloring wrappers, so users
130 # can get numbers displayed in whatever color they want.
130 # can get numbers displayed in whatever color they want.
131 r'\N': '${self.cache.prompt_count}',
131 r'\N': '${self.cache.prompt_count}',
132 # Prompt/history count, with the actual digits replaced by dots. Used
132 # Prompt/history count, with the actual digits replaced by dots. Used
133 # mainly in continuation prompts (prompt_in2)
133 # mainly in continuation prompts (prompt_in2)
134 r'\D': '${"."*len(str(self.cache.prompt_count))}',
134 r'\D': '${"."*len(str(self.cache.prompt_count))}',
135 # Current working directory
135 # Current working directory
136 r'\w': '${os.getcwd()}',
136 r'\w': '${os.getcwd()}',
137 # Current time
137 # Current time
138 r'\t' : '${time.strftime("%H:%M:%S")}',
138 r'\t' : '${time.strftime("%H:%M:%S")}',
139 # Basename of current working directory.
139 # Basename of current working directory.
140 # (use os.sep to make this portable across OSes)
140 # (use os.sep to make this portable across OSes)
141 r'\W' : '${os.getcwd().split("%s")[-1]}' % os.sep,
141 r'\W' : '${os.getcwd().split("%s")[-1]}' % os.sep,
142 # These X<N> are an extension to the normal bash prompts. They return
142 # These X<N> are an extension to the normal bash prompts. They return
143 # N terms of the path, after replacing $HOME with '~'
143 # N terms of the path, after replacing $HOME with '~'
144 r'\X0': '${os.getcwd().replace("%s","~")}' % HOME,
144 r'\X0': '${os.getcwd().replace("%s","~")}' % HOME,
145 r'\X1': '${self.cwd_filt(1)}',
145 r'\X1': '${self.cwd_filt(1)}',
146 r'\X2': '${self.cwd_filt(2)}',
146 r'\X2': '${self.cwd_filt(2)}',
147 r'\X3': '${self.cwd_filt(3)}',
147 r'\X3': '${self.cwd_filt(3)}',
148 r'\X4': '${self.cwd_filt(4)}',
148 r'\X4': '${self.cwd_filt(4)}',
149 r'\X5': '${self.cwd_filt(5)}',
149 r'\X5': '${self.cwd_filt(5)}',
150 # Y<N> are similar to X<N>, but they show '~' if it's the directory
150 # Y<N> are similar to X<N>, but they show '~' if it's the directory
151 # N+1 in the list. Somewhat like %cN in tcsh.
151 # N+1 in the list. Somewhat like %cN in tcsh.
152 r'\Y0': '${self.cwd_filt2(0)}',
152 r'\Y0': '${self.cwd_filt2(0)}',
153 r'\Y1': '${self.cwd_filt2(1)}',
153 r'\Y1': '${self.cwd_filt2(1)}',
154 r'\Y2': '${self.cwd_filt2(2)}',
154 r'\Y2': '${self.cwd_filt2(2)}',
155 r'\Y3': '${self.cwd_filt2(3)}',
155 r'\Y3': '${self.cwd_filt2(3)}',
156 r'\Y4': '${self.cwd_filt2(4)}',
156 r'\Y4': '${self.cwd_filt2(4)}',
157 r'\Y5': '${self.cwd_filt2(5)}',
157 r'\Y5': '${self.cwd_filt2(5)}',
158 # Hostname up to first .
158 # Hostname up to first .
159 r'\h': HOSTNAME_SHORT,
159 r'\h': HOSTNAME_SHORT,
160 # Full hostname
160 # Full hostname
161 r'\H': HOSTNAME,
161 r'\H': HOSTNAME,
162 # Username of current user
162 # Username of current user
163 r'\u': USER,
163 r'\u': USER,
164 # Escaped '\'
164 # Escaped '\'
165 '\\\\': '\\',
165 '\\\\': '\\',
166 # Newline
166 # Newline
167 r'\n': '\n',
167 r'\n': '\n',
168 # Carriage return
168 # Carriage return
169 r'\r': '\r',
169 r'\r': '\r',
170 # Release version
170 # Release version
171 r'\v': __version__,
171 r'\v': __version__,
172 # Root symbol ($ or #)
172 # Root symbol ($ or #)
173 r'\$': ROOT_SYMBOL,
173 r'\$': ROOT_SYMBOL,
174 }
174 }
175
175
176 # A copy of the prompt_specials dictionary but with all color escapes removed,
176 # A copy of the prompt_specials dictionary but with all color escapes removed,
177 # so we can correctly compute the prompt length for the auto_rewrite method.
177 # so we can correctly compute the prompt length for the auto_rewrite method.
178 prompt_specials_nocolor = prompt_specials_color.copy()
178 prompt_specials_nocolor = prompt_specials_color.copy()
179 prompt_specials_nocolor['%n'] = '${self.cache.prompt_count}'
179 prompt_specials_nocolor['%n'] = '${self.cache.prompt_count}'
180 prompt_specials_nocolor[r'\#'] = '${self.cache.prompt_count}'
180 prompt_specials_nocolor[r'\#'] = '${self.cache.prompt_count}'
181
181
182 # Add in all the InputTermColors color escapes as valid prompt characters.
182 # Add in all the InputTermColors color escapes as valid prompt characters.
183 # They all get added as \\C_COLORNAME, so that we don't have any conflicts
183 # They all get added as \\C_COLORNAME, so that we don't have any conflicts
184 # with a color name which may begin with a letter used by any other of the
184 # with a color name which may begin with a letter used by any other of the
185 # allowed specials. This of course means that \\C will never be allowed for
185 # allowed specials. This of course means that \\C will never be allowed for
186 # anything else.
186 # anything else.
187 input_colors = ColorANSI.InputTermColors
187 input_colors = ColorANSI.InputTermColors
188 for _color in dir(input_colors):
188 for _color in dir(input_colors):
189 if _color[0] != '_':
189 if _color[0] != '_':
190 c_name = r'\C_'+_color
190 c_name = r'\C_'+_color
191 prompt_specials_color[c_name] = getattr(input_colors,_color)
191 prompt_specials_color[c_name] = getattr(input_colors,_color)
192 prompt_specials_nocolor[c_name] = ''
192 prompt_specials_nocolor[c_name] = ''
193
193
194 # we default to no color for safety. Note that prompt_specials is a global
194 # we default to no color for safety. Note that prompt_specials is a global
195 # variable used by all prompt objects.
195 # variable used by all prompt objects.
196 prompt_specials = prompt_specials_nocolor
196 prompt_specials = prompt_specials_nocolor
197
197
198 #-----------------------------------------------------------------------------
198 #-----------------------------------------------------------------------------
199 def str_safe(arg):
199 def str_safe(arg):
200 """Convert to a string, without ever raising an exception.
200 """Convert to a string, without ever raising an exception.
201
201
202 If str(arg) fails, <ERROR: ... > is returned, where ... is the exception
202 If str(arg) fails, <ERROR: ... > is returned, where ... is the exception
203 error message."""
203 error message."""
204
204
205 try:
205 try:
206 out = str(arg)
206 out = str(arg)
207 except UnicodeError:
207 except UnicodeError:
208 try:
208 try:
209 out = arg.encode('utf_8','replace')
209 out = arg.encode('utf_8','replace')
210 except Exception,msg:
210 except Exception,msg:
211 # let's keep this little duplication here, so that the most common
211 # let's keep this little duplication here, so that the most common
212 # case doesn't suffer from a double try wrapping.
212 # case doesn't suffer from a double try wrapping.
213 out = '<ERROR: %s>' % msg
213 out = '<ERROR: %s>' % msg
214 except Exception,msg:
214 except Exception,msg:
215 out = '<ERROR: %s>' % msg
215 out = '<ERROR: %s>' % msg
216 return out
216 return out
217
217
218 class BasePrompt(object):
218 class BasePrompt(object):
219 """Interactive prompt similar to Mathematica's."""
219 """Interactive prompt similar to Mathematica's."""
220
220
221 def _get_p_template(self):
221 def _get_p_template(self):
222 return self._p_template
222 return self._p_template
223
223
224 def _set_p_template(self,val):
224 def _set_p_template(self,val):
225 self._p_template = val
225 self._p_template = val
226 self.set_p_str()
226 self.set_p_str()
227
227
228 p_template = property(_get_p_template,_set_p_template,
228 p_template = property(_get_p_template,_set_p_template,
229 doc='Template for prompt string creation')
229 doc='Template for prompt string creation')
230
230
231 def __init__(self,cache,sep,prompt,pad_left=False):
231 def __init__(self,cache,sep,prompt,pad_left=False):
232
232
233 # Hack: we access information about the primary prompt through the
233 # Hack: we access information about the primary prompt through the
234 # cache argument. We need this, because we want the secondary prompt
234 # cache argument. We need this, because we want the secondary prompt
235 # to be aligned with the primary one. Color table info is also shared
235 # to be aligned with the primary one. Color table info is also shared
236 # by all prompt classes through the cache. Nice OO spaghetti code!
236 # by all prompt classes through the cache. Nice OO spaghetti code!
237 self.cache = cache
237 self.cache = cache
238 self.sep = sep
238 self.sep = sep
239
239
240 # regexp to count the number of spaces at the end of a prompt
240 # regexp to count the number of spaces at the end of a prompt
241 # expression, useful for prompt auto-rewriting
241 # expression, useful for prompt auto-rewriting
242 self.rspace = re.compile(r'(\s*)$')
242 self.rspace = re.compile(r'(\s*)$')
243 # Flag to left-pad prompt strings to match the length of the primary
243 # Flag to left-pad prompt strings to match the length of the primary
244 # prompt
244 # prompt
245 self.pad_left = pad_left
245 self.pad_left = pad_left
246
246
247 # Set template to create each actual prompt (where numbers change).
247 # Set template to create each actual prompt (where numbers change).
248 # Use a property
248 # Use a property
249 self.p_template = prompt
249 self.p_template = prompt
250 self.set_p_str()
250 self.set_p_str()
251
251
252 def set_p_str(self):
252 def set_p_str(self):
253 """ Set the interpolating prompt strings.
253 """ Set the interpolating prompt strings.
254
254
255 This must be called every time the color settings change, because the
255 This must be called every time the color settings change, because the
256 prompt_specials global may have changed."""
256 prompt_specials global may have changed."""
257
257
258 import os,time # needed in locals for prompt string handling
258 import os,time # needed in locals for prompt string handling
259 loc = locals()
259 loc = locals()
260 self.p_str = ItplNS('%s%s%s' %
260 self.p_str = ItplNS('%s%s%s' %
261 ('${self.sep}${self.col_p}',
261 ('${self.sep}${self.col_p}',
262 multiple_replace(prompt_specials, self.p_template),
262 multiple_replace(prompt_specials, self.p_template),
263 '${self.col_norm}'),self.cache.user_ns,loc)
263 '${self.col_norm}'),self.cache.user_ns,loc)
264
264
265 self.p_str_nocolor = ItplNS(multiple_replace(prompt_specials_nocolor,
265 self.p_str_nocolor = ItplNS(multiple_replace(prompt_specials_nocolor,
266 self.p_template),
266 self.p_template),
267 self.cache.user_ns,loc)
267 self.cache.user_ns,loc)
268
268
269 def write(self,msg): # dbg
269 def write(self,msg): # dbg
270 sys.stdout.write(msg)
270 sys.stdout.write(msg)
271 return ''
271 return ''
272
272
273 def __str__(self):
273 def __str__(self):
274 """Return a string form of the prompt.
274 """Return a string form of the prompt.
275
275
276 This for is useful for continuation and output prompts, since it is
276 This for is useful for continuation and output prompts, since it is
277 left-padded to match lengths with the primary one (if the
277 left-padded to match lengths with the primary one (if the
278 self.pad_left attribute is set)."""
278 self.pad_left attribute is set)."""
279
279
280 out_str = str_safe(self.p_str)
280 out_str = str_safe(self.p_str)
281 if self.pad_left:
281 if self.pad_left:
282 # We must find the amount of padding required to match lengths,
282 # We must find the amount of padding required to match lengths,
283 # taking the color escapes (which are invisible on-screen) into
283 # taking the color escapes (which are invisible on-screen) into
284 # account.
284 # account.
285 esc_pad = len(out_str) - len(str_safe(self.p_str_nocolor))
285 esc_pad = len(out_str) - len(str_safe(self.p_str_nocolor))
286 format = '%%%ss' % (len(str(self.cache.last_prompt))+esc_pad)
286 format = '%%%ss' % (len(str(self.cache.last_prompt))+esc_pad)
287 return format % out_str
287 return format % out_str
288 else:
288 else:
289 return out_str
289 return out_str
290
290
291 # these path filters are put in as methods so that we can control the
291 # these path filters are put in as methods so that we can control the
292 # namespace where the prompt strings get evaluated
292 # namespace where the prompt strings get evaluated
293 def cwd_filt(self,depth):
293 def cwd_filt(self,depth):
294 """Return the last depth elements of the current working directory.
294 """Return the last depth elements of the current working directory.
295
295
296 $HOME is always replaced with '~'.
296 $HOME is always replaced with '~'.
297 If depth==0, the full path is returned."""
297 If depth==0, the full path is returned."""
298
298
299 cwd = os.getcwd().replace(HOME,"~")
299 cwd = os.getcwd().replace(HOME,"~")
300 out = os.sep.join(cwd.split(os.sep)[-depth:])
300 out = os.sep.join(cwd.split(os.sep)[-depth:])
301 if out:
301 if out:
302 return out
302 return out
303 else:
303 else:
304 return os.sep
304 return os.sep
305
305
306 def cwd_filt2(self,depth):
306 def cwd_filt2(self,depth):
307 """Return the last depth elements of the current working directory.
307 """Return the last depth elements of the current working directory.
308
308
309 $HOME is always replaced with '~'.
309 $HOME is always replaced with '~'.
310 If depth==0, the full path is returned."""
310 If depth==0, the full path is returned."""
311
311
312 full_cwd = os.getcwd()
312 full_cwd = os.getcwd()
313 cwd = full_cwd.replace(HOME,"~").split(os.sep)
313 cwd = full_cwd.replace(HOME,"~").split(os.sep)
314 if '~' in cwd and len(cwd) == depth+1:
314 if '~' in cwd and len(cwd) == depth+1:
315 depth += 1
315 depth += 1
316 drivepart = ''
316 drivepart = ''
317 if sys.platform == 'win32' and len(cwd) > depth:
317 if sys.platform == 'win32' and len(cwd) > depth:
318 drivepart = os.path.splitdrive(full_cwd)[0]
318 drivepart = os.path.splitdrive(full_cwd)[0]
319 out = drivepart + '/'.join(cwd[-depth:])
319 out = drivepart + '/'.join(cwd[-depth:])
320
320
321 if out:
321 if out:
322 return out
322 return out
323 else:
323 else:
324 return os.sep
324 return os.sep
325
325
326 class Prompt1(BasePrompt):
326 class Prompt1(BasePrompt):
327 """Input interactive prompt similar to Mathematica's."""
327 """Input interactive prompt similar to Mathematica's."""
328
328
329 def __init__(self,cache,sep='\n',prompt='In [\\#]: ',pad_left=True):
329 def __init__(self,cache,sep='\n',prompt='In [\\#]: ',pad_left=True):
330 BasePrompt.__init__(self,cache,sep,prompt,pad_left)
330 BasePrompt.__init__(self,cache,sep,prompt,pad_left)
331
331
332 def set_colors(self):
332 def set_colors(self):
333 self.set_p_str()
333 self.set_p_str()
334 Colors = self.cache.color_table.active_colors # shorthand
334 Colors = self.cache.color_table.active_colors # shorthand
335 self.col_p = Colors.in_prompt
335 self.col_p = Colors.in_prompt
336 self.col_num = Colors.in_number
336 self.col_num = Colors.in_number
337 self.col_norm = Colors.in_normal
337 self.col_norm = Colors.in_normal
338 # We need a non-input version of these escapes for the '--->'
338 # We need a non-input version of these escapes for the '--->'
339 # auto-call prompts used in the auto_rewrite() method.
339 # auto-call prompts used in the auto_rewrite() method.
340 self.col_p_ni = self.col_p.replace('\001','').replace('\002','')
340 self.col_p_ni = self.col_p.replace('\001','').replace('\002','')
341 self.col_norm_ni = Colors.normal
341 self.col_norm_ni = Colors.normal
342
342
343 def __str__(self):
343 def __str__(self):
344 self.cache.prompt_count += 1
344 self.cache.prompt_count += 1
345 self.cache.last_prompt = str_safe(self.p_str_nocolor).split('\n')[-1]
345 self.cache.last_prompt = str_safe(self.p_str_nocolor).split('\n')[-1]
346 return str_safe(self.p_str)
346 return str_safe(self.p_str)
347
347
348 def auto_rewrite(self):
348 def auto_rewrite(self):
349 """Print a string of the form '--->' which lines up with the previous
349 """Print a string of the form '--->' which lines up with the previous
350 input string. Useful for systems which re-write the user input when
350 input string. Useful for systems which re-write the user input when
351 handling automatically special syntaxes."""
351 handling automatically special syntaxes."""
352
352
353 curr = str(self.cache.last_prompt)
353 curr = str(self.cache.last_prompt)
354 nrspaces = len(self.rspace.search(curr).group())
354 nrspaces = len(self.rspace.search(curr).group())
355 return '%s%s>%s%s' % (self.col_p_ni,'-'*(len(curr)-nrspaces-1),
355 return '%s%s>%s%s' % (self.col_p_ni,'-'*(len(curr)-nrspaces-1),
356 ' '*nrspaces,self.col_norm_ni)
356 ' '*nrspaces,self.col_norm_ni)
357
357
358 class PromptOut(BasePrompt):
358 class PromptOut(BasePrompt):
359 """Output interactive prompt similar to Mathematica's."""
359 """Output interactive prompt similar to Mathematica's."""
360
360
361 def __init__(self,cache,sep='',prompt='Out[\\#]: ',pad_left=True):
361 def __init__(self,cache,sep='',prompt='Out[\\#]: ',pad_left=True):
362 BasePrompt.__init__(self,cache,sep,prompt,pad_left)
362 BasePrompt.__init__(self,cache,sep,prompt,pad_left)
363 if not self.p_template:
363 if not self.p_template:
364 self.__str__ = lambda: ''
364 self.__str__ = lambda: ''
365
365
366 def set_colors(self):
366 def set_colors(self):
367 self.set_p_str()
367 self.set_p_str()
368 Colors = self.cache.color_table.active_colors # shorthand
368 Colors = self.cache.color_table.active_colors # shorthand
369 self.col_p = Colors.out_prompt
369 self.col_p = Colors.out_prompt
370 self.col_num = Colors.out_number
370 self.col_num = Colors.out_number
371 self.col_norm = Colors.normal
371 self.col_norm = Colors.normal
372
372
373 class Prompt2(BasePrompt):
373 class Prompt2(BasePrompt):
374 """Interactive continuation prompt."""
374 """Interactive continuation prompt."""
375
375
376 def __init__(self,cache,prompt=' .\\D.: ',pad_left=True):
376 def __init__(self,cache,prompt=' .\\D.: ',pad_left=True):
377 self.cache = cache
377 self.cache = cache
378 self.p_template = prompt
378 self.p_template = prompt
379 self.pad_left = pad_left
379 self.pad_left = pad_left
380 self.set_p_str()
380 self.set_p_str()
381
381
382 def set_p_str(self):
382 def set_p_str(self):
383 import os,time # needed in locals for prompt string handling
383 import os,time # needed in locals for prompt string handling
384 loc = locals()
384 loc = locals()
385 self.p_str = ItplNS('%s%s%s' %
385 self.p_str = ItplNS('%s%s%s' %
386 ('${self.col_p2}',
386 ('${self.col_p2}',
387 multiple_replace(prompt_specials, self.p_template),
387 multiple_replace(prompt_specials, self.p_template),
388 '$self.col_norm'),
388 '$self.col_norm'),
389 self.cache.user_ns,loc)
389 self.cache.user_ns,loc)
390 self.p_str_nocolor = ItplNS(multiple_replace(prompt_specials_nocolor,
390 self.p_str_nocolor = ItplNS(multiple_replace(prompt_specials_nocolor,
391 self.p_template),
391 self.p_template),
392 self.cache.user_ns,loc)
392 self.cache.user_ns,loc)
393
393
394 def set_colors(self):
394 def set_colors(self):
395 self.set_p_str()
395 self.set_p_str()
396 Colors = self.cache.color_table.active_colors
396 Colors = self.cache.color_table.active_colors
397 self.col_p2 = Colors.in_prompt2
397 self.col_p2 = Colors.in_prompt2
398 self.col_norm = Colors.in_normal
398 self.col_norm = Colors.in_normal
399 # FIXME (2004-06-16) HACK: prevent crashes for users who haven't
399 # FIXME (2004-06-16) HACK: prevent crashes for users who haven't
400 # updated their prompt_in2 definitions. Remove eventually.
400 # updated their prompt_in2 definitions. Remove eventually.
401 self.col_p = Colors.out_prompt
401 self.col_p = Colors.out_prompt
402 self.col_num = Colors.out_number
402 self.col_num = Colors.out_number
403
403
404
404
405 #-----------------------------------------------------------------------------
405 #-----------------------------------------------------------------------------
406 class CachedOutput:
406 class CachedOutput:
407 """Class for printing output from calculations while keeping a cache of
407 """Class for printing output from calculations while keeping a cache of
408 reults. It dynamically creates global variables prefixed with _ which
408 reults. It dynamically creates global variables prefixed with _ which
409 contain these results.
409 contain these results.
410
410
411 Meant to be used as a sys.displayhook replacement, providing numbered
411 Meant to be used as a sys.displayhook replacement, providing numbered
412 prompts and cache services.
412 prompts and cache services.
413
413
414 Initialize with initial and final values for cache counter (this defines
414 Initialize with initial and final values for cache counter (this defines
415 the maximum size of the cache."""
415 the maximum size of the cache."""
416
416
417 def __init__(self,shell,cache_size,Pprint,
417 def __init__(self,shell,cache_size,Pprint,
418 colors='NoColor',input_sep='\n',
418 colors='NoColor',input_sep='\n',
419 output_sep='\n',output_sep2='',
419 output_sep='\n',output_sep2='',
420 ps1 = None, ps2 = None,ps_out = None,pad_left=True):
420 ps1 = None, ps2 = None,ps_out = None,pad_left=True):
421
421
422 cache_size_min = 3
422 cache_size_min = 3
423 if cache_size <= 0:
423 if cache_size <= 0:
424 self.do_full_cache = 0
424 self.do_full_cache = 0
425 cache_size = 0
425 cache_size = 0
426 elif cache_size < cache_size_min:
426 elif cache_size < cache_size_min:
427 self.do_full_cache = 0
427 self.do_full_cache = 0
428 cache_size = 0
428 cache_size = 0
429 warn('caching was disabled (min value for cache size is %s).' %
429 warn('caching was disabled (min value for cache size is %s).' %
430 cache_size_min,level=3)
430 cache_size_min,level=3)
431 else:
431 else:
432 self.do_full_cache = 1
432 self.do_full_cache = 1
433
433
434 self.cache_size = cache_size
434 self.cache_size = cache_size
435 self.input_sep = input_sep
435 self.input_sep = input_sep
436
436
437 # we need a reference to the user-level namespace
437 # we need a reference to the user-level namespace
438 self.shell = shell
438 self.shell = shell
439 self.user_ns = shell.user_ns
439 self.user_ns = shell.user_ns
440 # and to the user's input
440 # and to the user's input
441 self.input_hist = shell.input_hist
441 self.input_hist = shell.input_hist
442 # and to the user's logger, for logging output
442 # and to the user's logger, for logging output
443 self.logger = shell.logger
443 self.logger = shell.logger
444
444
445 # Set input prompt strings and colors
445 # Set input prompt strings and colors
446 if cache_size == 0:
446 if cache_size == 0:
447 if ps1.find('%n') > -1 or ps1.find(r'\#') > -1 \
447 if ps1.find('%n') > -1 or ps1.find(r'\#') > -1 \
448 or ps1.find(r'\N') > -1:
448 or ps1.find(r'\N') > -1:
449 ps1 = '>>> '
449 ps1 = '>>> '
450 if ps2.find('%n') > -1 or ps2.find(r'\#') > -1 \
450 if ps2.find('%n') > -1 or ps2.find(r'\#') > -1 \
451 or ps2.find(r'\N') > -1:
451 or ps2.find(r'\N') > -1:
452 ps2 = '... '
452 ps2 = '... '
453 self.ps1_str = self._set_prompt_str(ps1,'In [\\#]: ','>>> ')
453 self.ps1_str = self._set_prompt_str(ps1,'In [\\#]: ','>>> ')
454 self.ps2_str = self._set_prompt_str(ps2,' .\\D.: ','... ')
454 self.ps2_str = self._set_prompt_str(ps2,' .\\D.: ','... ')
455 self.ps_out_str = self._set_prompt_str(ps_out,'Out[\\#]: ','')
455 self.ps_out_str = self._set_prompt_str(ps_out,'Out[\\#]: ','')
456
456
457 self.color_table = PromptColors
457 self.color_table = PromptColors
458 self.prompt1 = Prompt1(self,sep=input_sep,prompt=self.ps1_str,
458 self.prompt1 = Prompt1(self,sep=input_sep,prompt=self.ps1_str,
459 pad_left=pad_left)
459 pad_left=pad_left)
460 self.prompt2 = Prompt2(self,prompt=self.ps2_str,pad_left=pad_left)
460 self.prompt2 = Prompt2(self,prompt=self.ps2_str,pad_left=pad_left)
461 self.prompt_out = PromptOut(self,sep='',prompt=self.ps_out_str,
461 self.prompt_out = PromptOut(self,sep='',prompt=self.ps_out_str,
462 pad_left=pad_left)
462 pad_left=pad_left)
463 self.set_colors(colors)
463 self.set_colors(colors)
464
464
465 # other more normal stuff
465 # other more normal stuff
466 # b/c each call to the In[] prompt raises it by 1, even the first.
466 # b/c each call to the In[] prompt raises it by 1, even the first.
467 self.prompt_count = 0
467 self.prompt_count = 0
468 # Store the last prompt string each time, we need it for aligning
468 # Store the last prompt string each time, we need it for aligning
469 # continuation and auto-rewrite prompts
469 # continuation and auto-rewrite prompts
470 self.last_prompt = ''
470 self.last_prompt = ''
471 self.Pprint = Pprint
471 self.Pprint = Pprint
472 self.output_sep = output_sep
472 self.output_sep = output_sep
473 self.output_sep2 = output_sep2
473 self.output_sep2 = output_sep2
474 self._,self.__,self.___ = '','',''
474 self._,self.__,self.___ = '','',''
475 self.pprint_types = map(type,[(),[],{}])
475 self.pprint_types = map(type,[(),[],{}])
476
476
477 # these are deliberately global:
477 # these are deliberately global:
478 to_user_ns = {'_':self._,'__':self.__,'___':self.___}
478 to_user_ns = {'_':self._,'__':self.__,'___':self.___}
479 self.user_ns.update(to_user_ns)
479 self.user_ns.update(to_user_ns)
480
480
481 def _set_prompt_str(self,p_str,cache_def,no_cache_def):
481 def _set_prompt_str(self,p_str,cache_def,no_cache_def):
482 if p_str is None:
482 if p_str is None:
483 if self.do_full_cache:
483 if self.do_full_cache:
484 return cache_def
484 return cache_def
485 else:
485 else:
486 return no_cache_def
486 return no_cache_def
487 else:
487 else:
488 return p_str
488 return p_str
489
489
490 def set_colors(self,colors):
490 def set_colors(self,colors):
491 """Set the active color scheme and configure colors for the three
491 """Set the active color scheme and configure colors for the three
492 prompt subsystems."""
492 prompt subsystems."""
493
493
494 # FIXME: the prompt_specials global should be gobbled inside this
494 # FIXME: the prompt_specials global should be gobbled inside this
495 # class instead. Do it when cleaning up the whole 3-prompt system.
495 # class instead. Do it when cleaning up the whole 3-prompt system.
496 global prompt_specials
496 global prompt_specials
497 if colors.lower()=='nocolor':
497 if colors.lower()=='nocolor':
498 prompt_specials = prompt_specials_nocolor
498 prompt_specials = prompt_specials_nocolor
499 else:
499 else:
500 prompt_specials = prompt_specials_color
500 prompt_specials = prompt_specials_color
501
501
502 self.color_table.set_active_scheme(colors)
502 self.color_table.set_active_scheme(colors)
503 self.prompt1.set_colors()
503 self.prompt1.set_colors()
504 self.prompt2.set_colors()
504 self.prompt2.set_colors()
505 self.prompt_out.set_colors()
505 self.prompt_out.set_colors()
506
506
507 def __call__(self,arg=None):
507 def __call__(self,arg=None):
508 """Printing with history cache management.
508 """Printing with history cache management.
509
509
510 This is invoked everytime the interpreter needs to print, and is
510 This is invoked everytime the interpreter needs to print, and is
511 activated by setting the variable sys.displayhook to it."""
511 activated by setting the variable sys.displayhook to it."""
512
512
513 # If something injected a '_' variable in __builtin__, delete
513 # If something injected a '_' variable in __builtin__, delete
514 # ipython's automatic one so we don't clobber that. gettext() in
514 # ipython's automatic one so we don't clobber that. gettext() in
515 # particular uses _, so we need to stay away from it.
515 # particular uses _, so we need to stay away from it.
516 if '_' in __builtin__.__dict__:
516 if '_' in __builtin__.__dict__:
517 try:
517 try:
518 del self.user_ns['_']
518 del self.user_ns['_']
519 except KeyError:
519 except KeyError:
520 pass
520 pass
521 if arg is not None:
521 if arg is not None:
522 cout_write = Term.cout.write # fast lookup
522 cout_write = Term.cout.write # fast lookup
523 # first handle the cache and counters
523 # first handle the cache and counters
524
524
525 # do not print output if input ends in ';'
525 # do not print output if input ends in ';'
526 if self.input_hist[self.prompt_count].endswith(';\n'):
526 if self.input_hist[self.prompt_count].endswith(';\n'):
527 return
527 return
528 # don't use print, puts an extra space
528 # don't use print, puts an extra space
529 cout_write(self.output_sep)
529 cout_write(self.output_sep)
530 outprompt = self.shell.hooks.generate_output_prompt()
530 outprompt = self.shell.hooks.generate_output_prompt()
531 if self.do_full_cache:
531 if self.do_full_cache:
532 cout_write(outprompt)
532 cout_write(outprompt)
533
533
534 # and now call a possibly user-defined print mechanism
534 # and now call a possibly user-defined print mechanism
535 manipulated_val = self.display(arg)
535 manipulated_val = self.display(arg)
536
536
537 # user display hooks can change the variable to be stored in
537 # user display hooks can change the variable to be stored in
538 # output history
538 # output history
539
539
540 if manipulated_val is not None:
540 if manipulated_val is not None:
541 arg = manipulated_val
541 arg = manipulated_val
542
542
543 # avoid recursive reference when displaying _oh/Out
543 # avoid recursive reference when displaying _oh/Out
544 if arg is not self.user_ns['_oh']:
544 if arg is not self.user_ns['_oh']:
545 self.update(arg)
545 self.update(arg)
546
546
547 if self.logger.log_output:
547 if self.logger.log_output:
548 self.logger.log_write(repr(arg),'output')
548 self.logger.log_write(repr(arg),'output')
549 cout_write(self.output_sep2)
549 cout_write(self.output_sep2)
550 Term.cout.flush()
550 Term.cout.flush()
551
551
552 def _display(self,arg):
552 def _display(self,arg):
553 """Default printer method, uses pprint.
553 """Default printer method, uses pprint.
554
554
555 Do ip.set_hook("result_display", my_displayhook) for custom result
555 Do ip.set_hook("result_display", my_displayhook) for custom result
556 display, e.g. when your own objects need special formatting.
556 display, e.g. when your own objects need special formatting.
557 """
557 """
558 try:
558 try:
559 return IPython.generics.result_display(arg)
559 return IPython.generics.result_display(arg)
560 except TryNext:
560 except TryNext:
561 return self.shell.hooks.result_display(arg)
561 return self.shell.hooks.result_display(arg)
562
562
563 # Assign the default display method:
563 # Assign the default display method:
564 display = _display
564 display = _display
565
565
566 def update(self,arg):
566 def update(self,arg):
567 #print '***cache_count', self.cache_count # dbg
567 #print '***cache_count', self.cache_count # dbg
568 if len(self.user_ns['_oh']) >= self.cache_size and self.do_full_cache:
568 if len(self.user_ns['_oh']) >= self.cache_size and self.do_full_cache:
569 warn('Output cache limit (currently '+
569 warn('Output cache limit (currently '+
570 `self.cache_size`+' entries) hit.\n'
570 `self.cache_size`+' entries) hit.\n'
571 'Flushing cache and resetting history counter...\n'
571 'Flushing cache and resetting history counter...\n'
572 'The only history variables available will be _,__,___ and _1\n'
572 'The only history variables available will be _,__,___ and _1\n'
573 'with the current result.')
573 'with the current result.')
574
574
575 self.flush()
575 self.flush()
576 # Don't overwrite '_' and friends if '_' is in __builtin__ (otherwise
576 # Don't overwrite '_' and friends if '_' is in __builtin__ (otherwise
577 # we cause buggy behavior for things like gettext).
577 # we cause buggy behavior for things like gettext).
578 if '_' not in __builtin__.__dict__:
578 if '_' not in __builtin__.__dict__:
579 self.___ = self.__
579 self.___ = self.__
580 self.__ = self._
580 self.__ = self._
581 self._ = arg
581 self._ = arg
582 self.user_ns.update({'_':self._,'__':self.__,'___':self.___})
582 self.user_ns.update({'_':self._,'__':self.__,'___':self.___})
583
583
584 # hackish access to top-level namespace to create _1,_2... dynamically
584 # hackish access to top-level namespace to create _1,_2... dynamically
585 to_main = {}
585 to_main = {}
586 if self.do_full_cache:
586 if self.do_full_cache:
587 new_result = '_'+`self.prompt_count`
587 new_result = '_'+`self.prompt_count`
588 to_main[new_result] = arg
588 to_main[new_result] = arg
589 self.user_ns.update(to_main)
589 self.user_ns.update(to_main)
590 self.user_ns['_oh'][self.prompt_count] = arg
590 self.user_ns['_oh'][self.prompt_count] = arg
591
591
592 def flush(self):
592 def flush(self):
593 if not self.do_full_cache:
593 if not self.do_full_cache:
594 raise ValueError,"You shouldn't have reached the cache flush "\
594 raise ValueError,"You shouldn't have reached the cache flush "\
595 "if full caching is not enabled!"
595 "if full caching is not enabled!"
596 # delete auto-generated vars from global namespace
596 # delete auto-generated vars from global namespace
597
597
598 for n in range(1,self.prompt_count + 1):
598 for n in range(1,self.prompt_count + 1):
599 key = '_'+`n`
599 key = '_'+`n`
600 try:
600 try:
601 del self.user_ns[key]
601 del self.user_ns[key]
602 except: pass
602 except: pass
603 self.user_ns['_oh'].clear()
603 self.user_ns['_oh'].clear()
604
604
605 if '_' not in __builtin__.__dict__:
605 if '_' not in __builtin__.__dict__:
606 self.user_ns.update({'_':None,'__':None, '___':None})
606 self.user_ns.update({'_':None,'__':None, '___':None})
607 import gc
607 import gc
608 gc.collect() # xxx needed?
608 gc.collect() # xxx needed?
609
609
@@ -1,83 +1,83 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 2842 2007-10-11 21:30:26Z fperez $"""
4 $Id: Release.py 2855 2007-11-06 06:53:49Z vivainio $"""
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 = '2841'
25 revision = '2848'
26
26
27 version = '0.8.2.svn.r' + revision.rstrip('M')
27 version = '0.8.2.svn.r' + revision.rstrip('M')
28
28
29 description = "An enhanced interactive Python shell."
29 description = "An enhanced interactive Python shell."
30
30
31 long_description = \
31 long_description = \
32 """
32 """
33 IPython provides a replacement for the interactive Python interpreter with
33 IPython provides a replacement for the interactive Python interpreter with
34 extra functionality.
34 extra functionality.
35
35
36 Main features:
36 Main features:
37
37
38 * Comprehensive object introspection.
38 * Comprehensive object introspection.
39
39
40 * Input history, persistent across sessions.
40 * Input history, persistent across sessions.
41
41
42 * Caching of output results during a session with automatically generated
42 * Caching of output results during a session with automatically generated
43 references.
43 references.
44
44
45 * Readline based name completion.
45 * Readline based name completion.
46
46
47 * Extensible system of 'magic' commands for controlling the environment and
47 * Extensible system of 'magic' commands for controlling the environment and
48 performing many tasks related either to IPython or the operating system.
48 performing many tasks related either to IPython or the operating system.
49
49
50 * Configuration system with easy switching between different setups (simpler
50 * Configuration system with easy switching between different setups (simpler
51 than changing $PYTHONSTARTUP environment variables every time).
51 than changing $PYTHONSTARTUP environment variables every time).
52
52
53 * Session logging and reloading.
53 * Session logging and reloading.
54
54
55 * Extensible syntax processing for special purpose situations.
55 * Extensible syntax processing for special purpose situations.
56
56
57 * Access to the system shell with user-extensible alias system.
57 * Access to the system shell with user-extensible alias system.
58
58
59 * Easily embeddable in other Python programs.
59 * Easily embeddable in other Python programs.
60
60
61 * Integrated access to the pdb debugger and the Python profiler.
61 * Integrated access to the pdb debugger and the Python profiler.
62
62
63 The latest development version is always available at the IPython subversion
63 The latest development version is always available at the IPython subversion
64 repository_.
64 repository_.
65
65
66 .. _repository: http://ipython.scipy.org/svn/ipython/ipython/trunk#egg=ipython-dev
66 .. _repository: http://ipython.scipy.org/svn/ipython/ipython/trunk#egg=ipython-dev
67 """
67 """
68
68
69 license = 'BSD'
69 license = 'BSD'
70
70
71 authors = {'Fernando' : ('Fernando Perez','fperez@colorado.edu'),
71 authors = {'Fernando' : ('Fernando Perez','fperez@colorado.edu'),
72 'Janko' : ('Janko Hauser','jhauser@zscout.de'),
72 'Janko' : ('Janko Hauser','jhauser@zscout.de'),
73 'Nathan' : ('Nathaniel Gray','n8gray@caltech.edu'),
73 'Nathan' : ('Nathaniel Gray','n8gray@caltech.edu'),
74 'Ville' : ('Ville Vainio','vivainio@gmail.com')
74 'Ville' : ('Ville Vainio','vivainio@gmail.com')
75 }
75 }
76
76
77 url = 'http://ipython.scipy.org'
77 url = 'http://ipython.scipy.org'
78
78
79 download_url = 'http://ipython.scipy.org/dist'
79 download_url = 'http://ipython.scipy.org/dist'
80
80
81 platforms = ['Linux','Mac OSX','Windows XP/2000/NT','Windows 95/98/ME']
81 platforms = ['Linux','Mac OSX','Windows XP/2000/NT','Windows 95/98/ME']
82
82
83 keywords = ['Interactive','Interpreter','Shell']
83 keywords = ['Interactive','Interpreter','Shell']
@@ -1,7213 +1,7218 b''
1 2007-16-6 Ville Vainio <vivainio@gmail.com>
2
3 * Prompts.py: Do not update _oh and _123 when do_full_cache is not
4 true. Closes #194.
5
1 2007-11-01 Brian Granger <ellisonbg@gmail.com>
6 2007-11-01 Brian Granger <ellisonbg@gmail.com>
2
7
3 * iplib.py, rlineimpl.py: Applied Body Water's patches to get IPython
8 * iplib.py, rlineimpl.py: Applied Body Water's patches to get IPython
4 working with OS X 10.5 libedit implementation of readline.
9 working with OS X 10.5 libedit implementation of readline.
5
10
6 2007-10-24 Ville Vainio <vivainio@gmail.com>
11 2007-10-24 Ville Vainio <vivainio@gmail.com>
7
12
8 * iplib.py(user_setup): To route around buggy installations where
13 * iplib.py(user_setup): To route around buggy installations where
9 UserConfig is not available, create a minimal _ipython.
14 UserConfig is not available, create a minimal _ipython.
10
15
11 2007-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
16 2007-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
12
17
13 * IPython/OInspect.py (Inspector.pinfo): fix bug that could arise
18 * IPython/OInspect.py (Inspector.pinfo): fix bug that could arise
14 when querying objects with no __class__ attribute (such as
19 when querying objects with no __class__ attribute (such as
15 f2py-generated modules).
20 f2py-generated modules).
16
21
17 2007-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
22 2007-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
18
23
19 * IPython/Magic.py (magic_time): track compilation time and report
24 * IPython/Magic.py (magic_time): track compilation time and report
20 it if longer than 0.1s (fix done to %time and %timeit). After a
25 it if longer than 0.1s (fix done to %time and %timeit). After a
21 SAGE bug report: http://trac.sagemath.org/sage_trac/ticket/632.
26 SAGE bug report: http://trac.sagemath.org/sage_trac/ticket/632.
22
27
23 2007-09-18 Ville Vainio <vivainio@gmail.com>
28 2007-09-18 Ville Vainio <vivainio@gmail.com>
24
29
25 * genutils.py(make_quoted_expr): Do not use Itpl, it does
30 * genutils.py(make_quoted_expr): Do not use Itpl, it does
26 not support unicode at the moment. Fixes (many) magic calls with
31 not support unicode at the moment. Fixes (many) magic calls with
27 special characters.
32 special characters.
28
33
29 2007-09-14 Fernando Perez <Fernando.Perez@colorado.edu>
34 2007-09-14 Fernando Perez <Fernando.Perez@colorado.edu>
30
35
31 * IPython/genutils.py (doctest_reload): expose the doctest
36 * IPython/genutils.py (doctest_reload): expose the doctest
32 reloader to the user so that people can easily reset doctest while
37 reloader to the user so that people can easily reset doctest while
33 using it interactively. Fixes a problem reported by Jorgen.
38 using it interactively. Fixes a problem reported by Jorgen.
34
39
35 * IPython/iplib.py (InteractiveShell.__init__): protect the
40 * IPython/iplib.py (InteractiveShell.__init__): protect the
36 FakeModule instances used for __main__ in %run calls from
41 FakeModule instances used for __main__ in %run calls from
37 deletion, so that user code defined in them isn't left with
42 deletion, so that user code defined in them isn't left with
38 dangling references due to the Python module deletion machinery.
43 dangling references due to the Python module deletion machinery.
39 This should fix the problems reported by Darren.
44 This should fix the problems reported by Darren.
40
45
41 2007-09-10 Darren Dale <dd55@cornell.edu>
46 2007-09-10 Darren Dale <dd55@cornell.edu>
42
47
43 * Cleanup of IPShellQt and IPShellQt4
48 * Cleanup of IPShellQt and IPShellQt4
44
49
45 2007-09-09 Fernando Perez <Fernando.Perez@colorado.edu>
50 2007-09-09 Fernando Perez <Fernando.Perez@colorado.edu>
46
51
47 * IPython/FakeModule.py (FakeModule.__init__): further fixes for
52 * IPython/FakeModule.py (FakeModule.__init__): further fixes for
48 doctest support.
53 doctest support.
49
54
50 * IPython/iplib.py (safe_execfile): minor docstring improvements.
55 * IPython/iplib.py (safe_execfile): minor docstring improvements.
51
56
52 2007-09-08 Ville Vainio <vivainio@gmail.com>
57 2007-09-08 Ville Vainio <vivainio@gmail.com>
53
58
54 * Magic.py (%pushd, %popd, %dirs): Fix dir stack - push *current*
59 * Magic.py (%pushd, %popd, %dirs): Fix dir stack - push *current*
55 directory, not the target directory.
60 directory, not the target directory.
56
61
57 * ipapi.py, Magic.py, iplib.py: Add ipapi.UsageError, a lighter weight
62 * ipapi.py, Magic.py, iplib.py: Add ipapi.UsageError, a lighter weight
58 exception that won't print the tracebacks. Switched many magics to
63 exception that won't print the tracebacks. Switched many magics to
59 raise them on error situations, also GetoptError is not printed
64 raise them on error situations, also GetoptError is not printed
60 anymore.
65 anymore.
61
66
62 2007-09-07 Ville Vainio <vivainio@gmail.com>
67 2007-09-07 Ville Vainio <vivainio@gmail.com>
63
68
64 * iplib.py: do not auto-alias "dir", it screws up other dir auto
69 * iplib.py: do not auto-alias "dir", it screws up other dir auto
65 aliases.
70 aliases.
66
71
67 * genutils.py: SList.grep() implemented.
72 * genutils.py: SList.grep() implemented.
68
73
69 * ipy_editors.py, UserConfig/ipy_user_conf.py: Add some editors
74 * ipy_editors.py, UserConfig/ipy_user_conf.py: Add some editors
70 for easy "out of the box" setup of several common editors, so that
75 for easy "out of the box" setup of several common editors, so that
71 e.g. '%edit os.path.isfile' will jump to the correct line
76 e.g. '%edit os.path.isfile' will jump to the correct line
72 automatically. Contributions for command lines of your favourite
77 automatically. Contributions for command lines of your favourite
73 editors welcome.
78 editors welcome.
74
79
75 2007-09-07 Fernando Perez <Fernando.Perez@colorado.edu>
80 2007-09-07 Fernando Perez <Fernando.Perez@colorado.edu>
76
81
77 * IPython/OInspect.py (Inspector.pinfo): fixed bug that was
82 * IPython/OInspect.py (Inspector.pinfo): fixed bug that was
78 preventing source display in certain cases. In reality I think
83 preventing source display in certain cases. In reality I think
79 the problem is with Ubuntu's Python build, but this change works
84 the problem is with Ubuntu's Python build, but this change works
80 around the issue in some cases (not in all, unfortunately). I'd
85 around the issue in some cases (not in all, unfortunately). I'd
81 filed a Python bug on this with more details, but in the change of
86 filed a Python bug on this with more details, but in the change of
82 bug trackers it seems to have been lost.
87 bug trackers it seems to have been lost.
83
88
84 * IPython/Magic.py (magic_dhist): restore %dhist. No, cd -TAB is
89 * IPython/Magic.py (magic_dhist): restore %dhist. No, cd -TAB is
85 not the same, it's not self-documenting, doesn't allow range
90 not the same, it's not self-documenting, doesn't allow range
86 selection, and sorts alphabetically instead of numerically.
91 selection, and sorts alphabetically instead of numerically.
87 (magic_r): restore %r. No, "up + enter. One char magic" is not
92 (magic_r): restore %r. No, "up + enter. One char magic" is not
88 the same thing, since %r takes parameters to allow fast retrieval
93 the same thing, since %r takes parameters to allow fast retrieval
89 of old commands. I've received emails from users who use this a
94 of old commands. I've received emails from users who use this a
90 LOT, so it stays.
95 LOT, so it stays.
91 (magic_automagic): restore %automagic. "use _ip.option.automagic"
96 (magic_automagic): restore %automagic. "use _ip.option.automagic"
92 is not a valid replacement b/c it doesn't provide an complete
97 is not a valid replacement b/c it doesn't provide an complete
93 explanation (which the automagic docstring does).
98 explanation (which the automagic docstring does).
94 (magic_autocall): restore %autocall, with improved docstring.
99 (magic_autocall): restore %autocall, with improved docstring.
95 Same argument as for others, "use _ip.options.autocall" is not a
100 Same argument as for others, "use _ip.options.autocall" is not a
96 valid replacement.
101 valid replacement.
97 (magic_pdef): restore %pdef & friends. Used widely, mentioned in
102 (magic_pdef): restore %pdef & friends. Used widely, mentioned in
98 tutorials and online docs.
103 tutorials and online docs.
99
104
100 2007-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
105 2007-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
101
106
102 * IPython/usage.py (quick_reference): mention magics in quickref,
107 * IPython/usage.py (quick_reference): mention magics in quickref,
103 modified main banner to mention %quickref.
108 modified main banner to mention %quickref.
104
109
105 * IPython/FakeModule.py (FakeModule): fixes for doctest compatibility.
110 * IPython/FakeModule.py (FakeModule): fixes for doctest compatibility.
106
111
107 2007-09-06 Ville Vainio <vivainio@gmail.com>
112 2007-09-06 Ville Vainio <vivainio@gmail.com>
108
113
109 * ipy_rehashdir.py, ipy_workdir.py, ipy_fsops.py, iplib.py:
114 * ipy_rehashdir.py, ipy_workdir.py, ipy_fsops.py, iplib.py:
110 Callable aliases now pass the _ip as first arg. This breaks
115 Callable aliases now pass the _ip as first arg. This breaks
111 compatibility with earlier 0.8.2.svn series! (though they should
116 compatibility with earlier 0.8.2.svn series! (though they should
112 not have been in use yet outside these few extensions)
117 not have been in use yet outside these few extensions)
113
118
114 2007-09-05 Ville Vainio <vivainio@gmail.com>
119 2007-09-05 Ville Vainio <vivainio@gmail.com>
115
120
116 * external/mglob.py: expand('dirname') => ['dirname'], instead
121 * external/mglob.py: expand('dirname') => ['dirname'], instead
117 of ['dirname/foo','dirname/bar', ...].
122 of ['dirname/foo','dirname/bar', ...].
118
123
119 * Extensions/ipy_fsops.py: added, has usefull shell utils for plain
124 * Extensions/ipy_fsops.py: added, has usefull shell utils for plain
120 win32 installations: icp, imv, imkdir, igrep, irm, collect (collect
125 win32 installations: icp, imv, imkdir, igrep, irm, collect (collect
121 is useful for others as well).
126 is useful for others as well).
122
127
123 * iplib.py: on callable aliases (as opposed to old style aliases),
128 * iplib.py: on callable aliases (as opposed to old style aliases),
124 do var_expand() immediately, and use make_quoted_expr instead
129 do var_expand() immediately, and use make_quoted_expr instead
125 of hardcoded r"""
130 of hardcoded r"""
126
131
127 * Extensions/ipy_profile_sh.py: Try to detect cygwin on win32,
132 * Extensions/ipy_profile_sh.py: Try to detect cygwin on win32,
128 if not available load ipy_fsops.py for cp, mv, etc. replacements
133 if not available load ipy_fsops.py for cp, mv, etc. replacements
129
134
130 * OInspect.py, ipy_which.py: improve %which and obj? for callable
135 * OInspect.py, ipy_which.py: improve %which and obj? for callable
131 aliases
136 aliases
132
137
133 2007-09-04 Ville Vainio <vivainio@gmail.com>
138 2007-09-04 Ville Vainio <vivainio@gmail.com>
134
139
135 * ipy_profile_zope.py: add zope profile, by Stefan Eletzhofer.
140 * ipy_profile_zope.py: add zope profile, by Stefan Eletzhofer.
136 Relicensed under BSD with the authors approval.
141 Relicensed under BSD with the authors approval.
137
142
138 * ipmaker.py, usage.py: Remove %magic from default banner, improve
143 * ipmaker.py, usage.py: Remove %magic from default banner, improve
139 %quickref
144 %quickref
140
145
141 2007-09-03 Ville Vainio <vivainio@gmail.com>
146 2007-09-03 Ville Vainio <vivainio@gmail.com>
142
147
143 * Magic.py: %time now passes expression through prefilter,
148 * Magic.py: %time now passes expression through prefilter,
144 allowing IPython syntax.
149 allowing IPython syntax.
145
150
146 2007-09-01 Ville Vainio <vivainio@gmail.com>
151 2007-09-01 Ville Vainio <vivainio@gmail.com>
147
152
148 * ipmaker.py: Always show full traceback when newstyle config fails
153 * ipmaker.py: Always show full traceback when newstyle config fails
149
154
150 2007-08-27 Ville Vainio <vivainio@gmail.com>
155 2007-08-27 Ville Vainio <vivainio@gmail.com>
151
156
152 * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180
157 * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180
153
158
154 2007-08-26 Ville Vainio <vivainio@gmail.com>
159 2007-08-26 Ville Vainio <vivainio@gmail.com>
155
160
156 * ipmaker.py: Command line args have the highest priority again
161 * ipmaker.py: Command line args have the highest priority again
157
162
158 * iplib.py, ipmaker.py: -i command line argument now behaves as in
163 * iplib.py, ipmaker.py: -i command line argument now behaves as in
159 normal python, i.e. leaves the IPython session running after -c
164 normal python, i.e. leaves the IPython session running after -c
160 command or running a batch file from command line.
165 command or running a batch file from command line.
161
166
162 2007-08-22 Ville Vainio <vivainio@gmail.com>
167 2007-08-22 Ville Vainio <vivainio@gmail.com>
163
168
164 * iplib.py: no extra empty (last) line in raw hist w/ multiline
169 * iplib.py: no extra empty (last) line in raw hist w/ multiline
165 statements
170 statements
166
171
167 * logger.py: Fix bug where blank lines in history were not
172 * logger.py: Fix bug where blank lines in history were not
168 added until AFTER adding the current line; translated and raw
173 added until AFTER adding the current line; translated and raw
169 history should finally be in sync with prompt now.
174 history should finally be in sync with prompt now.
170
175
171 * ipy_completers.py: quick_completer now makes it easy to create
176 * ipy_completers.py: quick_completer now makes it easy to create
172 trivial custom completers
177 trivial custom completers
173
178
174 * clearcmd.py: shadow history compression & erasing, fixed input hist
179 * clearcmd.py: shadow history compression & erasing, fixed input hist
175 clearing.
180 clearing.
176
181
177 * envpersist.py, history.py: %env (sh profile only), %hist completers
182 * envpersist.py, history.py: %env (sh profile only), %hist completers
178
183
179 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
184 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
180 term title now include the drive letter, and always use / instead of
185 term title now include the drive letter, and always use / instead of
181 os.sep (as per recommended approach for win32 ipython in general).
186 os.sep (as per recommended approach for win32 ipython in general).
182
187
183 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
188 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
184 plain python scripts from ipykit command line by running
189 plain python scripts from ipykit command line by running
185 "py myscript.py", even w/o installed python.
190 "py myscript.py", even w/o installed python.
186
191
187 2007-08-21 Ville Vainio <vivainio@gmail.com>
192 2007-08-21 Ville Vainio <vivainio@gmail.com>
188
193
189 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
194 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
190 (for backwards compatibility)
195 (for backwards compatibility)
191
196
192 * history.py: switch back to %hist -t from %hist -r as default.
197 * history.py: switch back to %hist -t from %hist -r as default.
193 At least until raw history is fixed for good.
198 At least until raw history is fixed for good.
194
199
195 2007-08-20 Ville Vainio <vivainio@gmail.com>
200 2007-08-20 Ville Vainio <vivainio@gmail.com>
196
201
197 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
202 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
198 locate alias redeclarations etc. Also, avoid handling
203 locate alias redeclarations etc. Also, avoid handling
199 _ip.IP.alias_table directly, prefer using _ip.defalias.
204 _ip.IP.alias_table directly, prefer using _ip.defalias.
200
205
201
206
202 2007-08-15 Ville Vainio <vivainio@gmail.com>
207 2007-08-15 Ville Vainio <vivainio@gmail.com>
203
208
204 * prefilter.py: ! is now always served first
209 * prefilter.py: ! is now always served first
205
210
206 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
211 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
207
212
208 * IPython/iplib.py (safe_execfile): fix the SystemExit
213 * IPython/iplib.py (safe_execfile): fix the SystemExit
209 auto-suppression code to work in Python2.4 (the internal structure
214 auto-suppression code to work in Python2.4 (the internal structure
210 of that exception changed and I'd only tested the code with 2.5).
215 of that exception changed and I'd only tested the code with 2.5).
211 Bug reported by a SciPy attendee.
216 Bug reported by a SciPy attendee.
212
217
213 2007-08-13 Ville Vainio <vivainio@gmail.com>
218 2007-08-13 Ville Vainio <vivainio@gmail.com>
214
219
215 * prefilter.py: reverted !c:/bin/foo fix, made % in
220 * prefilter.py: reverted !c:/bin/foo fix, made % in
216 multiline specials work again
221 multiline specials work again
217
222
218 2007-08-13 Ville Vainio <vivainio@gmail.com>
223 2007-08-13 Ville Vainio <vivainio@gmail.com>
219
224
220 * prefilter.py: Take more care to special-case !, so that
225 * prefilter.py: Take more care to special-case !, so that
221 !c:/bin/foo.exe works.
226 !c:/bin/foo.exe works.
222
227
223 * setup.py: if we are building eggs, strip all docs and
228 * setup.py: if we are building eggs, strip all docs and
224 examples (it doesn't make sense to bytecompile examples,
229 examples (it doesn't make sense to bytecompile examples,
225 and docs would be in an awkward place anyway).
230 and docs would be in an awkward place anyway).
226
231
227 * Ryan Krauss' patch fixes start menu shortcuts when IPython
232 * Ryan Krauss' patch fixes start menu shortcuts when IPython
228 is installed into a directory that has spaces in the name.
233 is installed into a directory that has spaces in the name.
229
234
230 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
235 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
231
236
232 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
237 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
233 doctest profile and %doctest_mode, so they actually generate the
238 doctest profile and %doctest_mode, so they actually generate the
234 blank lines needed by doctest to separate individual tests.
239 blank lines needed by doctest to separate individual tests.
235
240
236 * IPython/iplib.py (safe_execfile): modify so that running code
241 * IPython/iplib.py (safe_execfile): modify so that running code
237 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
242 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
238 doesn't get a printed traceback. Any other value in sys.exit(),
243 doesn't get a printed traceback. Any other value in sys.exit(),
239 including the empty call, still generates a traceback. This
244 including the empty call, still generates a traceback. This
240 enables use of %run without having to pass '-e' for codes that
245 enables use of %run without having to pass '-e' for codes that
241 correctly set the exit status flag.
246 correctly set the exit status flag.
242
247
243 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
248 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
244
249
245 * IPython/iplib.py (InteractiveShell.post_config_initialization):
250 * IPython/iplib.py (InteractiveShell.post_config_initialization):
246 fix problems with doctests failing when run inside IPython due to
251 fix problems with doctests failing when run inside IPython due to
247 IPython's modifications of sys.displayhook.
252 IPython's modifications of sys.displayhook.
248
253
249 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
254 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
250
255
251 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
256 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
252 a string with names.
257 a string with names.
253
258
254 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
259 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
255
260
256 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
261 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
257 magic to toggle on/off the doctest pasting support without having
262 magic to toggle on/off the doctest pasting support without having
258 to leave a session to switch to a separate profile.
263 to leave a session to switch to a separate profile.
259
264
260 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
265 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
261
266
262 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
267 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
263 introduce a blank line between inputs, to conform to doctest
268 introduce a blank line between inputs, to conform to doctest
264 requirements.
269 requirements.
265
270
266 * IPython/OInspect.py (Inspector.pinfo): fix another part where
271 * IPython/OInspect.py (Inspector.pinfo): fix another part where
267 auto-generated docstrings for new-style classes were showing up.
272 auto-generated docstrings for new-style classes were showing up.
268
273
269 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
274 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
270
275
271 * api_changes: Add new file to track backward-incompatible
276 * api_changes: Add new file to track backward-incompatible
272 user-visible changes.
277 user-visible changes.
273
278
274 2007-08-06 Ville Vainio <vivainio@gmail.com>
279 2007-08-06 Ville Vainio <vivainio@gmail.com>
275
280
276 * ipmaker.py: fix bug where user_config_ns didn't exist at all
281 * ipmaker.py: fix bug where user_config_ns didn't exist at all
277 before all the config files were handled.
282 before all the config files were handled.
278
283
279 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
284 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
280
285
281 * IPython/irunner.py (RunnerFactory): Add new factory class for
286 * IPython/irunner.py (RunnerFactory): Add new factory class for
282 creating reusable runners based on filenames.
287 creating reusable runners based on filenames.
283
288
284 * IPython/Extensions/ipy_profile_doctest.py: New profile for
289 * IPython/Extensions/ipy_profile_doctest.py: New profile for
285 doctest support. It sets prompts/exceptions as similar to
290 doctest support. It sets prompts/exceptions as similar to
286 standard Python as possible, so that ipython sessions in this
291 standard Python as possible, so that ipython sessions in this
287 profile can be easily pasted as doctests with minimal
292 profile can be easily pasted as doctests with minimal
288 modifications. It also enables pasting of doctests from external
293 modifications. It also enables pasting of doctests from external
289 sources (even if they have leading whitespace), so that you can
294 sources (even if they have leading whitespace), so that you can
290 rerun doctests from existing sources.
295 rerun doctests from existing sources.
291
296
292 * IPython/iplib.py (_prefilter): fix a buglet where after entering
297 * IPython/iplib.py (_prefilter): fix a buglet where after entering
293 some whitespace, the prompt would become a continuation prompt
298 some whitespace, the prompt would become a continuation prompt
294 with no way of exiting it other than Ctrl-C. This fix brings us
299 with no way of exiting it other than Ctrl-C. This fix brings us
295 into conformity with how the default python prompt works.
300 into conformity with how the default python prompt works.
296
301
297 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
302 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
298 Add support for pasting not only lines that start with '>>>', but
303 Add support for pasting not only lines that start with '>>>', but
299 also with ' >>>'. That is, arbitrary whitespace can now precede
304 also with ' >>>'. That is, arbitrary whitespace can now precede
300 the prompts. This makes the system useful for pasting doctests
305 the prompts. This makes the system useful for pasting doctests
301 from docstrings back into a normal session.
306 from docstrings back into a normal session.
302
307
303 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
308 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
304
309
305 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
310 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
306 r1357, which had killed multiple invocations of an embedded
311 r1357, which had killed multiple invocations of an embedded
307 ipython (this means that example-embed has been broken for over 1
312 ipython (this means that example-embed has been broken for over 1
308 year!!!). Rather than possibly breaking the batch stuff for which
313 year!!!). Rather than possibly breaking the batch stuff for which
309 the code in iplib.py/interact was introduced, I worked around the
314 the code in iplib.py/interact was introduced, I worked around the
310 problem in the embedding class in Shell.py. We really need a
315 problem in the embedding class in Shell.py. We really need a
311 bloody test suite for this code, I'm sick of finding stuff that
316 bloody test suite for this code, I'm sick of finding stuff that
312 used to work breaking left and right every time I use an old
317 used to work breaking left and right every time I use an old
313 feature I hadn't touched in a few months.
318 feature I hadn't touched in a few months.
314 (kill_embedded): Add a new magic that only shows up in embedded
319 (kill_embedded): Add a new magic that only shows up in embedded
315 mode, to allow users to permanently deactivate an embedded instance.
320 mode, to allow users to permanently deactivate an embedded instance.
316
321
317 2007-08-01 Ville Vainio <vivainio@gmail.com>
322 2007-08-01 Ville Vainio <vivainio@gmail.com>
318
323
319 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
324 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
320 history gets out of sync on runlines (e.g. when running macros).
325 history gets out of sync on runlines (e.g. when running macros).
321
326
322 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
327 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
323
328
324 * IPython/Magic.py (magic_colors): fix win32-related error message
329 * IPython/Magic.py (magic_colors): fix win32-related error message
325 that could appear under *nix when readline was missing. Patch by
330 that could appear under *nix when readline was missing. Patch by
326 Scott Jackson, closes #175.
331 Scott Jackson, closes #175.
327
332
328 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
333 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
329
334
330 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
335 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
331 completer that it traits-aware, so that traits objects don't show
336 completer that it traits-aware, so that traits objects don't show
332 all of their internal attributes all the time.
337 all of their internal attributes all the time.
333
338
334 * IPython/genutils.py (dir2): moved this code from inside
339 * IPython/genutils.py (dir2): moved this code from inside
335 completer.py to expose it publicly, so I could use it in the
340 completer.py to expose it publicly, so I could use it in the
336 wildcards bugfix.
341 wildcards bugfix.
337
342
338 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
343 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
339 Stefan with Traits.
344 Stefan with Traits.
340
345
341 * IPython/completer.py (Completer.attr_matches): change internal
346 * IPython/completer.py (Completer.attr_matches): change internal
342 var name from 'object' to 'obj', since 'object' is now a builtin
347 var name from 'object' to 'obj', since 'object' is now a builtin
343 and this can lead to weird bugs if reusing this code elsewhere.
348 and this can lead to weird bugs if reusing this code elsewhere.
344
349
345 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
350 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
346
351
347 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
352 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
348 'foo?' and update the code to prevent printing of default
353 'foo?' and update the code to prevent printing of default
349 docstrings that started appearing after I added support for
354 docstrings that started appearing after I added support for
350 new-style classes. The approach I'm using isn't ideal (I just
355 new-style classes. The approach I'm using isn't ideal (I just
351 special-case those strings) but I'm not sure how to more robustly
356 special-case those strings) but I'm not sure how to more robustly
352 differentiate between truly user-written strings and Python's
357 differentiate between truly user-written strings and Python's
353 automatic ones.
358 automatic ones.
354
359
355 2007-07-09 Ville Vainio <vivainio@gmail.com>
360 2007-07-09 Ville Vainio <vivainio@gmail.com>
356
361
357 * completer.py: Applied Matthew Neeley's patch:
362 * completer.py: Applied Matthew Neeley's patch:
358 Dynamic attributes from trait_names and _getAttributeNames are added
363 Dynamic attributes from trait_names and _getAttributeNames are added
359 to the list of tab completions, but when this happens, the attribute
364 to the list of tab completions, but when this happens, the attribute
360 list is turned into a set, so the attributes are unordered when
365 list is turned into a set, so the attributes are unordered when
361 printed, which makes it hard to find the right completion. This patch
366 printed, which makes it hard to find the right completion. This patch
362 turns this set back into a list and sort it.
367 turns this set back into a list and sort it.
363
368
364 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
369 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
365
370
366 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
371 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
367 classes in various inspector functions.
372 classes in various inspector functions.
368
373
369 2007-06-28 Ville Vainio <vivainio@gmail.com>
374 2007-06-28 Ville Vainio <vivainio@gmail.com>
370
375
371 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
376 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
372 Implement "shadow" namespace, and callable aliases that reside there.
377 Implement "shadow" namespace, and callable aliases that reside there.
373 Use them by:
378 Use them by:
374
379
375 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
380 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
376
381
377 foo hello world
382 foo hello world
378 (gets translated to:)
383 (gets translated to:)
379 _sh.foo(r"""hello world""")
384 _sh.foo(r"""hello world""")
380
385
381 In practice, this kind of alias can take the role of a magic function
386 In practice, this kind of alias can take the role of a magic function
382
387
383 * New generic inspect_object, called on obj? and obj??
388 * New generic inspect_object, called on obj? and obj??
384
389
385 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
390 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
386
391
387 * IPython/ultraTB.py (findsource): fix a problem with
392 * IPython/ultraTB.py (findsource): fix a problem with
388 inspect.getfile that can cause crashes during traceback construction.
393 inspect.getfile that can cause crashes during traceback construction.
389
394
390 2007-06-14 Ville Vainio <vivainio@gmail.com>
395 2007-06-14 Ville Vainio <vivainio@gmail.com>
391
396
392 * iplib.py (handle_auto): Try to use ascii for printing "--->"
397 * iplib.py (handle_auto): Try to use ascii for printing "--->"
393 autocall rewrite indication, becausesometimes unicode fails to print
398 autocall rewrite indication, becausesometimes unicode fails to print
394 properly (and you get ' - - - '). Use plain uncoloured ---> for
399 properly (and you get ' - - - '). Use plain uncoloured ---> for
395 unicode.
400 unicode.
396
401
397 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
402 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
398
403
399 . pickleshare 'hash' commands (hget, hset, hcompress,
404 . pickleshare 'hash' commands (hget, hset, hcompress,
400 hdict) for efficient shadow history storage.
405 hdict) for efficient shadow history storage.
401
406
402 2007-06-13 Ville Vainio <vivainio@gmail.com>
407 2007-06-13 Ville Vainio <vivainio@gmail.com>
403
408
404 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
409 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
405 Added kw arg 'interactive', tell whether vars should be visible
410 Added kw arg 'interactive', tell whether vars should be visible
406 with %whos.
411 with %whos.
407
412
408 2007-06-11 Ville Vainio <vivainio@gmail.com>
413 2007-06-11 Ville Vainio <vivainio@gmail.com>
409
414
410 * pspersistence.py, Magic.py, iplib.py: directory history now saved
415 * pspersistence.py, Magic.py, iplib.py: directory history now saved
411 to db
416 to db
412
417
413 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
418 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
414 Also, it exits IPython immediately after evaluating the command (just like
419 Also, it exits IPython immediately after evaluating the command (just like
415 std python)
420 std python)
416
421
417 2007-06-05 Walter Doerwald <walter@livinglogic.de>
422 2007-06-05 Walter Doerwald <walter@livinglogic.de>
418
423
419 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
424 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
420 Python string and captures the output. (Idea and original patch by
425 Python string and captures the output. (Idea and original patch by
421 Stefan van der Walt)
426 Stefan van der Walt)
422
427
423 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
428 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
424
429
425 * IPython/ultraTB.py (VerboseTB.text): update printing of
430 * IPython/ultraTB.py (VerboseTB.text): update printing of
426 exception types for Python 2.5 (now all exceptions in the stdlib
431 exception types for Python 2.5 (now all exceptions in the stdlib
427 are new-style classes).
432 are new-style classes).
428
433
429 2007-05-31 Walter Doerwald <walter@livinglogic.de>
434 2007-05-31 Walter Doerwald <walter@livinglogic.de>
430
435
431 * IPython/Extensions/igrid.py: Add new commands refresh and
436 * IPython/Extensions/igrid.py: Add new commands refresh and
432 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
437 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
433 the iterator once (refresh) or after every x seconds (refresh_timer).
438 the iterator once (refresh) or after every x seconds (refresh_timer).
434 Add a working implementation of "searchexpression", where the text
439 Add a working implementation of "searchexpression", where the text
435 entered is not the text to search for, but an expression that must
440 entered is not the text to search for, but an expression that must
436 be true. Added display of shortcuts to the menu. Added commands "pickinput"
441 be true. Added display of shortcuts to the menu. Added commands "pickinput"
437 and "pickinputattr" that put the object or attribute under the cursor
442 and "pickinputattr" that put the object or attribute under the cursor
438 in the input line. Split the statusbar to be able to display the currently
443 in the input line. Split the statusbar to be able to display the currently
439 active refresh interval. (Patch by Nik Tautenhahn)
444 active refresh interval. (Patch by Nik Tautenhahn)
440
445
441 2007-05-29 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
446 2007-05-29 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
442
447
443 * fixing set_term_title to use ctypes as default
448 * fixing set_term_title to use ctypes as default
444
449
445 * fixing set_term_title fallback to work when curent dir
450 * fixing set_term_title fallback to work when curent dir
446 is on a windows network share
451 is on a windows network share
447
452
448 2007-05-28 Ville Vainio <vivainio@gmail.com>
453 2007-05-28 Ville Vainio <vivainio@gmail.com>
449
454
450 * %cpaste: strip + with > from left (diffs).
455 * %cpaste: strip + with > from left (diffs).
451
456
452 * iplib.py: Fix crash when readline not installed
457 * iplib.py: Fix crash when readline not installed
453
458
454 2007-05-26 Ville Vainio <vivainio@gmail.com>
459 2007-05-26 Ville Vainio <vivainio@gmail.com>
455
460
456 * generics.py: intruduce easy to extend result_display generic
461 * generics.py: intruduce easy to extend result_display generic
457 function (using simplegeneric.py).
462 function (using simplegeneric.py).
458
463
459 * Fixed the append functionality of %set.
464 * Fixed the append functionality of %set.
460
465
461 2007-05-25 Ville Vainio <vivainio@gmail.com>
466 2007-05-25 Ville Vainio <vivainio@gmail.com>
462
467
463 * New magic: %rep (fetch / run old commands from history)
468 * New magic: %rep (fetch / run old commands from history)
464
469
465 * New extension: mglob (%mglob magic), for powerful glob / find /filter
470 * New extension: mglob (%mglob magic), for powerful glob / find /filter
466 like functionality
471 like functionality
467
472
468 % maghistory.py: %hist -g PATTERM greps the history for pattern
473 % maghistory.py: %hist -g PATTERM greps the history for pattern
469
474
470 2007-05-24 Walter Doerwald <walter@livinglogic.de>
475 2007-05-24 Walter Doerwald <walter@livinglogic.de>
471
476
472 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
477 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
473 browse the IPython input history
478 browse the IPython input history
474
479
475 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
480 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
476 (mapped to "i") can be used to put the object under the curser in the input
481 (mapped to "i") can be used to put the object under the curser in the input
477 line. pickinputattr (mapped to "I") does the same for the attribute under
482 line. pickinputattr (mapped to "I") does the same for the attribute under
478 the cursor.
483 the cursor.
479
484
480 2007-05-24 Ville Vainio <vivainio@gmail.com>
485 2007-05-24 Ville Vainio <vivainio@gmail.com>
481
486
482 * Grand magic cleansing (changeset [2380]):
487 * Grand magic cleansing (changeset [2380]):
483
488
484 * Introduce ipy_legacy.py where the following magics were
489 * Introduce ipy_legacy.py where the following magics were
485 moved:
490 moved:
486
491
487 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
492 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
488
493
489 If you need them, either use default profile or "import ipy_legacy"
494 If you need them, either use default profile or "import ipy_legacy"
490 in your ipy_user_conf.py
495 in your ipy_user_conf.py
491
496
492 * Move sh and scipy profile to Extensions from UserConfig. this implies
497 * Move sh and scipy profile to Extensions from UserConfig. this implies
493 you should not edit them, but you don't need to run %upgrade when
498 you should not edit them, but you don't need to run %upgrade when
494 upgrading IPython anymore.
499 upgrading IPython anymore.
495
500
496 * %hist/%history now operates in "raw" mode by default. To get the old
501 * %hist/%history now operates in "raw" mode by default. To get the old
497 behaviour, run '%hist -n' (native mode).
502 behaviour, run '%hist -n' (native mode).
498
503
499 * split ipy_stock_completers.py to ipy_stock_completers.py and
504 * split ipy_stock_completers.py to ipy_stock_completers.py and
500 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
505 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
501 installed as default.
506 installed as default.
502
507
503 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
508 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
504 handling.
509 handling.
505
510
506 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
511 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
507 input if readline is available.
512 input if readline is available.
508
513
509 2007-05-23 Ville Vainio <vivainio@gmail.com>
514 2007-05-23 Ville Vainio <vivainio@gmail.com>
510
515
511 * macro.py: %store uses __getstate__ properly
516 * macro.py: %store uses __getstate__ properly
512
517
513 * exesetup.py: added new setup script for creating
518 * exesetup.py: added new setup script for creating
514 standalone IPython executables with py2exe (i.e.
519 standalone IPython executables with py2exe (i.e.
515 no python installation required).
520 no python installation required).
516
521
517 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
522 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
518 its place.
523 its place.
519
524
520 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
525 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
521
526
522 2007-05-21 Ville Vainio <vivainio@gmail.com>
527 2007-05-21 Ville Vainio <vivainio@gmail.com>
523
528
524 * platutil_win32.py (set_term_title): handle
529 * platutil_win32.py (set_term_title): handle
525 failure of 'title' system call properly.
530 failure of 'title' system call properly.
526
531
527 2007-05-17 Walter Doerwald <walter@livinglogic.de>
532 2007-05-17 Walter Doerwald <walter@livinglogic.de>
528
533
529 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
534 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
530 (Bug detected by Paul Mueller).
535 (Bug detected by Paul Mueller).
531
536
532 2007-05-16 Ville Vainio <vivainio@gmail.com>
537 2007-05-16 Ville Vainio <vivainio@gmail.com>
533
538
534 * ipy_profile_sci.py, ipython_win_post_install.py: Create
539 * ipy_profile_sci.py, ipython_win_post_install.py: Create
535 new "sci" profile, effectively a modern version of the old
540 new "sci" profile, effectively a modern version of the old
536 "scipy" profile (which is now slated for deprecation).
541 "scipy" profile (which is now slated for deprecation).
537
542
538 2007-05-15 Ville Vainio <vivainio@gmail.com>
543 2007-05-15 Ville Vainio <vivainio@gmail.com>
539
544
540 * pycolorize.py, pycolor.1: Paul Mueller's patches that
545 * pycolorize.py, pycolor.1: Paul Mueller's patches that
541 make pycolorize read input from stdin when run without arguments.
546 make pycolorize read input from stdin when run without arguments.
542
547
543 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
548 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
544
549
545 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
550 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
546 it in sh profile (instead of ipy_system_conf.py).
551 it in sh profile (instead of ipy_system_conf.py).
547
552
548 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
553 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
549 aliases are now lower case on windows (MyCommand.exe => mycommand).
554 aliases are now lower case on windows (MyCommand.exe => mycommand).
550
555
551 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
556 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
552 Macros are now callable objects that inherit from ipapi.IPyAutocall,
557 Macros are now callable objects that inherit from ipapi.IPyAutocall,
553 i.e. get autocalled regardless of system autocall setting.
558 i.e. get autocalled regardless of system autocall setting.
554
559
555 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
560 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
556
561
557 * IPython/rlineimpl.py: check for clear_history in readline and
562 * IPython/rlineimpl.py: check for clear_history in readline and
558 make it a dummy no-op if not available. This function isn't
563 make it a dummy no-op if not available. This function isn't
559 guaranteed to be in the API and appeared in Python 2.4, so we need
564 guaranteed to be in the API and appeared in Python 2.4, so we need
560 to check it ourselves. Also, clean up this file quite a bit.
565 to check it ourselves. Also, clean up this file quite a bit.
561
566
562 * ipython.1: update man page and full manual with information
567 * ipython.1: update man page and full manual with information
563 about threads (remove outdated warning). Closes #151.
568 about threads (remove outdated warning). Closes #151.
564
569
565 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
570 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
566
571
567 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
572 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
568 in trunk (note that this made it into the 0.8.1 release already,
573 in trunk (note that this made it into the 0.8.1 release already,
569 but the changelogs didn't get coordinated). Many thanks to Gael
574 but the changelogs didn't get coordinated). Many thanks to Gael
570 Varoquaux <gael.varoquaux-AT-normalesup.org>
575 Varoquaux <gael.varoquaux-AT-normalesup.org>
571
576
572 2007-05-09 *** Released version 0.8.1
577 2007-05-09 *** Released version 0.8.1
573
578
574 2007-05-10 Walter Doerwald <walter@livinglogic.de>
579 2007-05-10 Walter Doerwald <walter@livinglogic.de>
575
580
576 * IPython/Extensions/igrid.py: Incorporate html help into
581 * IPython/Extensions/igrid.py: Incorporate html help into
577 the module, so we don't have to search for the file.
582 the module, so we don't have to search for the file.
578
583
579 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
584 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
580
585
581 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
586 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
582
587
583 2007-04-30 Ville Vainio <vivainio@gmail.com>
588 2007-04-30 Ville Vainio <vivainio@gmail.com>
584
589
585 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
590 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
586 user has illegal (non-ascii) home directory name
591 user has illegal (non-ascii) home directory name
587
592
588 2007-04-27 Ville Vainio <vivainio@gmail.com>
593 2007-04-27 Ville Vainio <vivainio@gmail.com>
589
594
590 * platutils_win32.py: implement set_term_title for windows
595 * platutils_win32.py: implement set_term_title for windows
591
596
592 * Update version number
597 * Update version number
593
598
594 * ipy_profile_sh.py: more informative prompt (2 dir levels)
599 * ipy_profile_sh.py: more informative prompt (2 dir levels)
595
600
596 2007-04-26 Walter Doerwald <walter@livinglogic.de>
601 2007-04-26 Walter Doerwald <walter@livinglogic.de>
597
602
598 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
603 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
599 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
604 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
600 bug discovered by Ville).
605 bug discovered by Ville).
601
606
602 2007-04-26 Ville Vainio <vivainio@gmail.com>
607 2007-04-26 Ville Vainio <vivainio@gmail.com>
603
608
604 * Extensions/ipy_completers.py: Olivier's module completer now
609 * Extensions/ipy_completers.py: Olivier's module completer now
605 saves the list of root modules if it takes > 4 secs on the first run.
610 saves the list of root modules if it takes > 4 secs on the first run.
606
611
607 * Magic.py (%rehashx): %rehashx now clears the completer cache
612 * Magic.py (%rehashx): %rehashx now clears the completer cache
608
613
609
614
610 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
615 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
611
616
612 * ipython.el: fix incorrect color scheme, reported by Stefan.
617 * ipython.el: fix incorrect color scheme, reported by Stefan.
613 Closes #149.
618 Closes #149.
614
619
615 * IPython/PyColorize.py (Parser.format2): fix state-handling
620 * IPython/PyColorize.py (Parser.format2): fix state-handling
616 logic. I still don't like how that code handles state, but at
621 logic. I still don't like how that code handles state, but at
617 least now it should be correct, if inelegant. Closes #146.
622 least now it should be correct, if inelegant. Closes #146.
618
623
619 2007-04-25 Ville Vainio <vivainio@gmail.com>
624 2007-04-25 Ville Vainio <vivainio@gmail.com>
620
625
621 * Extensions/ipy_which.py: added extension for %which magic, works
626 * Extensions/ipy_which.py: added extension for %which magic, works
622 a lot like unix 'which' but also finds and expands aliases, and
627 a lot like unix 'which' but also finds and expands aliases, and
623 allows wildcards.
628 allows wildcards.
624
629
625 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
630 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
626 as opposed to returning nothing.
631 as opposed to returning nothing.
627
632
628 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
633 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
629 ipy_stock_completers on default profile, do import on sh profile.
634 ipy_stock_completers on default profile, do import on sh profile.
630
635
631 2007-04-22 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
636 2007-04-22 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
632
637
633 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
638 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
634 like ipython.py foo.py which raised a IndexError.
639 like ipython.py foo.py which raised a IndexError.
635
640
636 2007-04-21 Ville Vainio <vivainio@gmail.com>
641 2007-04-21 Ville Vainio <vivainio@gmail.com>
637
642
638 * Extensions/ipy_extutil.py: added extension to manage other ipython
643 * Extensions/ipy_extutil.py: added extension to manage other ipython
639 extensions. Now only supports 'ls' == list extensions.
644 extensions. Now only supports 'ls' == list extensions.
640
645
641 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
646 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
642
647
643 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
648 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
644 would prevent use of the exception system outside of a running
649 would prevent use of the exception system outside of a running
645 IPython instance.
650 IPython instance.
646
651
647 2007-04-20 Ville Vainio <vivainio@gmail.com>
652 2007-04-20 Ville Vainio <vivainio@gmail.com>
648
653
649 * Extensions/ipy_render.py: added extension for easy
654 * Extensions/ipy_render.py: added extension for easy
650 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
655 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
651 'Iptl' template notation,
656 'Iptl' template notation,
652
657
653 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
658 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
654 safer & faster 'import' completer.
659 safer & faster 'import' completer.
655
660
656 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
661 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
657 and _ip.defalias(name, command).
662 and _ip.defalias(name, command).
658
663
659 * Extensions/ipy_exportdb.py: New extension for exporting all the
664 * Extensions/ipy_exportdb.py: New extension for exporting all the
660 %store'd data in a portable format (normal ipapi calls like
665 %store'd data in a portable format (normal ipapi calls like
661 defmacro() etc.)
666 defmacro() etc.)
662
667
663 2007-04-19 Ville Vainio <vivainio@gmail.com>
668 2007-04-19 Ville Vainio <vivainio@gmail.com>
664
669
665 * upgrade_dir.py: skip junk files like *.pyc
670 * upgrade_dir.py: skip junk files like *.pyc
666
671
667 * Release.py: version number to 0.8.1
672 * Release.py: version number to 0.8.1
668
673
669 2007-04-18 Ville Vainio <vivainio@gmail.com>
674 2007-04-18 Ville Vainio <vivainio@gmail.com>
670
675
671 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
676 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
672 and later on win32.
677 and later on win32.
673
678
674 2007-04-16 Ville Vainio <vivainio@gmail.com>
679 2007-04-16 Ville Vainio <vivainio@gmail.com>
675
680
676 * iplib.py (showtraceback): Do not crash when running w/o readline.
681 * iplib.py (showtraceback): Do not crash when running w/o readline.
677
682
678 2007-04-12 Walter Doerwald <walter@livinglogic.de>
683 2007-04-12 Walter Doerwald <walter@livinglogic.de>
679
684
680 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
685 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
681 sorted (case sensitive with files and dirs mixed).
686 sorted (case sensitive with files and dirs mixed).
682
687
683 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
688 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
684
689
685 * IPython/Release.py (version): Open trunk for 0.8.1 development.
690 * IPython/Release.py (version): Open trunk for 0.8.1 development.
686
691
687 2007-04-10 *** Released version 0.8.0
692 2007-04-10 *** Released version 0.8.0
688
693
689 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
694 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
690
695
691 * Tag 0.8.0 for release.
696 * Tag 0.8.0 for release.
692
697
693 * IPython/iplib.py (reloadhist): add API function to cleanly
698 * IPython/iplib.py (reloadhist): add API function to cleanly
694 reload the readline history, which was growing inappropriately on
699 reload the readline history, which was growing inappropriately on
695 every %run call.
700 every %run call.
696
701
697 * win32_manual_post_install.py (run): apply last part of Nicolas
702 * win32_manual_post_install.py (run): apply last part of Nicolas
698 Pernetty's patch (I'd accidentally applied it in a different
703 Pernetty's patch (I'd accidentally applied it in a different
699 directory and this particular file didn't get patched).
704 directory and this particular file didn't get patched).
700
705
701 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
706 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
702
707
703 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
708 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
704 find the main thread id and use the proper API call. Thanks to
709 find the main thread id and use the proper API call. Thanks to
705 Stefan for the fix.
710 Stefan for the fix.
706
711
707 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
712 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
708 unit tests to reflect fixed ticket #52, and add more tests sent by
713 unit tests to reflect fixed ticket #52, and add more tests sent by
709 him.
714 him.
710
715
711 * IPython/iplib.py (raw_input): restore the readline completer
716 * IPython/iplib.py (raw_input): restore the readline completer
712 state on every input, in case third-party code messed it up.
717 state on every input, in case third-party code messed it up.
713 (_prefilter): revert recent addition of early-escape checks which
718 (_prefilter): revert recent addition of early-escape checks which
714 prevent many valid alias calls from working.
719 prevent many valid alias calls from working.
715
720
716 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
721 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
717 flag for sigint handler so we don't run a full signal() call on
722 flag for sigint handler so we don't run a full signal() call on
718 each runcode access.
723 each runcode access.
719
724
720 * IPython/Magic.py (magic_whos): small improvement to diagnostic
725 * IPython/Magic.py (magic_whos): small improvement to diagnostic
721 message.
726 message.
722
727
723 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
728 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
724
729
725 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
730 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
726 asynchronous exceptions working, i.e., Ctrl-C can actually
731 asynchronous exceptions working, i.e., Ctrl-C can actually
727 interrupt long-running code in the multithreaded shells.
732 interrupt long-running code in the multithreaded shells.
728
733
729 This is using Tomer Filiba's great ctypes-based trick:
734 This is using Tomer Filiba's great ctypes-based trick:
730 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
735 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
731 this in the past, but hadn't been able to make it work before. So
736 this in the past, but hadn't been able to make it work before. So
732 far it looks like it's actually running, but this needs more
737 far it looks like it's actually running, but this needs more
733 testing. If it really works, I'll be *very* happy, and we'll owe
738 testing. If it really works, I'll be *very* happy, and we'll owe
734 a huge thank you to Tomer. My current implementation is ugly,
739 a huge thank you to Tomer. My current implementation is ugly,
735 hackish and uses nasty globals, but I don't want to try and clean
740 hackish and uses nasty globals, but I don't want to try and clean
736 anything up until we know if it actually works.
741 anything up until we know if it actually works.
737
742
738 NOTE: this feature needs ctypes to work. ctypes is included in
743 NOTE: this feature needs ctypes to work. ctypes is included in
739 Python2.5, but 2.4 users will need to manually install it. This
744 Python2.5, but 2.4 users will need to manually install it. This
740 feature makes multi-threaded shells so much more usable that it's
745 feature makes multi-threaded shells so much more usable that it's
741 a minor price to pay (ctypes is very easy to install, already a
746 a minor price to pay (ctypes is very easy to install, already a
742 requirement for win32 and available in major linux distros).
747 requirement for win32 and available in major linux distros).
743
748
744 2007-04-04 Ville Vainio <vivainio@gmail.com>
749 2007-04-04 Ville Vainio <vivainio@gmail.com>
745
750
746 * Extensions/ipy_completers.py, ipy_stock_completers.py:
751 * Extensions/ipy_completers.py, ipy_stock_completers.py:
747 Moved implementations of 'bundled' completers to ipy_completers.py,
752 Moved implementations of 'bundled' completers to ipy_completers.py,
748 they are only enabled in ipy_stock_completers.py.
753 they are only enabled in ipy_stock_completers.py.
749
754
750 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
755 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
751
756
752 * IPython/PyColorize.py (Parser.format2): Fix identation of
757 * IPython/PyColorize.py (Parser.format2): Fix identation of
753 colorzied output and return early if color scheme is NoColor, to
758 colorzied output and return early if color scheme is NoColor, to
754 avoid unnecessary and expensive tokenization. Closes #131.
759 avoid unnecessary and expensive tokenization. Closes #131.
755
760
756 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
761 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
757
762
758 * IPython/Debugger.py: disable the use of pydb version 1.17. It
763 * IPython/Debugger.py: disable the use of pydb version 1.17. It
759 has a critical bug (a missing import that makes post-mortem not
764 has a critical bug (a missing import that makes post-mortem not
760 work at all). Unfortunately as of this time, this is the version
765 work at all). Unfortunately as of this time, this is the version
761 shipped with Ubuntu Edgy, so quite a few people have this one. I
766 shipped with Ubuntu Edgy, so quite a few people have this one. I
762 hope Edgy will update to a more recent package.
767 hope Edgy will update to a more recent package.
763
768
764 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
769 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
765
770
766 * IPython/iplib.py (_prefilter): close #52, second part of a patch
771 * IPython/iplib.py (_prefilter): close #52, second part of a patch
767 set by Stefan (only the first part had been applied before).
772 set by Stefan (only the first part had been applied before).
768
773
769 * IPython/Extensions/ipy_stock_completers.py (module_completer):
774 * IPython/Extensions/ipy_stock_completers.py (module_completer):
770 remove usage of the dangerous pkgutil.walk_packages(). See
775 remove usage of the dangerous pkgutil.walk_packages(). See
771 details in comments left in the code.
776 details in comments left in the code.
772
777
773 * IPython/Magic.py (magic_whos): add support for numpy arrays
778 * IPython/Magic.py (magic_whos): add support for numpy arrays
774 similar to what we had for Numeric.
779 similar to what we had for Numeric.
775
780
776 * IPython/completer.py (IPCompleter.complete): extend the
781 * IPython/completer.py (IPCompleter.complete): extend the
777 complete() call API to support completions by other mechanisms
782 complete() call API to support completions by other mechanisms
778 than readline. Closes #109.
783 than readline. Closes #109.
779
784
780 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
785 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
781 protect against a bug in Python's execfile(). Closes #123.
786 protect against a bug in Python's execfile(). Closes #123.
782
787
783 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
788 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
784
789
785 * IPython/iplib.py (split_user_input): ensure that when splitting
790 * IPython/iplib.py (split_user_input): ensure that when splitting
786 user input, the part that can be treated as a python name is pure
791 user input, the part that can be treated as a python name is pure
787 ascii (Python identifiers MUST be pure ascii). Part of the
792 ascii (Python identifiers MUST be pure ascii). Part of the
788 ongoing Unicode support work.
793 ongoing Unicode support work.
789
794
790 * IPython/Prompts.py (prompt_specials_color): Add \N for the
795 * IPython/Prompts.py (prompt_specials_color): Add \N for the
791 actual prompt number, without any coloring. This allows users to
796 actual prompt number, without any coloring. This allows users to
792 produce numbered prompts with their own colors. Added after a
797 produce numbered prompts with their own colors. Added after a
793 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
798 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
794
799
795 2007-03-31 Walter Doerwald <walter@livinglogic.de>
800 2007-03-31 Walter Doerwald <walter@livinglogic.de>
796
801
797 * IPython/Extensions/igrid.py: Map the return key
802 * IPython/Extensions/igrid.py: Map the return key
798 to enter() and shift-return to enterattr().
803 to enter() and shift-return to enterattr().
799
804
800 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
805 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
801
806
802 * IPython/Magic.py (magic_psearch): add unicode support by
807 * IPython/Magic.py (magic_psearch): add unicode support by
803 encoding to ascii the input, since this routine also only deals
808 encoding to ascii the input, since this routine also only deals
804 with valid Python names. Fixes a bug reported by Stefan.
809 with valid Python names. Fixes a bug reported by Stefan.
805
810
806 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
811 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
807
812
808 * IPython/Magic.py (_inspect): convert unicode input into ascii
813 * IPython/Magic.py (_inspect): convert unicode input into ascii
809 before trying to evaluate it as a Python identifier. This fixes a
814 before trying to evaluate it as a Python identifier. This fixes a
810 problem that the new unicode support had introduced when analyzing
815 problem that the new unicode support had introduced when analyzing
811 long definition lines for functions.
816 long definition lines for functions.
812
817
813 2007-03-24 Walter Doerwald <walter@livinglogic.de>
818 2007-03-24 Walter Doerwald <walter@livinglogic.de>
814
819
815 * IPython/Extensions/igrid.py: Fix picking. Using
820 * IPython/Extensions/igrid.py: Fix picking. Using
816 igrid with wxPython 2.6 and -wthread should work now.
821 igrid with wxPython 2.6 and -wthread should work now.
817 igrid.display() simply tries to create a frame without
822 igrid.display() simply tries to create a frame without
818 an application. Only if this fails an application is created.
823 an application. Only if this fails an application is created.
819
824
820 2007-03-23 Walter Doerwald <walter@livinglogic.de>
825 2007-03-23 Walter Doerwald <walter@livinglogic.de>
821
826
822 * IPython/Extensions/path.py: Updated to version 2.2.
827 * IPython/Extensions/path.py: Updated to version 2.2.
823
828
824 2007-03-23 Ville Vainio <vivainio@gmail.com>
829 2007-03-23 Ville Vainio <vivainio@gmail.com>
825
830
826 * iplib.py: recursive alias expansion now works better, so that
831 * iplib.py: recursive alias expansion now works better, so that
827 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
832 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
828 doesn't trip up the process, if 'd' has been aliased to 'ls'.
833 doesn't trip up the process, if 'd' has been aliased to 'ls'.
829
834
830 * Extensions/ipy_gnuglobal.py added, provides %global magic
835 * Extensions/ipy_gnuglobal.py added, provides %global magic
831 for users of http://www.gnu.org/software/global
836 for users of http://www.gnu.org/software/global
832
837
833 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
838 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
834 Closes #52. Patch by Stefan van der Walt.
839 Closes #52. Patch by Stefan van der Walt.
835
840
836 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
841 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
837
842
838 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
843 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
839 respect the __file__ attribute when using %run. Thanks to a bug
844 respect the __file__ attribute when using %run. Thanks to a bug
840 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
845 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
841
846
842 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
847 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
843
848
844 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
849 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
845 input. Patch sent by Stefan.
850 input. Patch sent by Stefan.
846
851
847 2007-03-20 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
852 2007-03-20 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
848 * IPython/Extensions/ipy_stock_completer.py
853 * IPython/Extensions/ipy_stock_completer.py
849 shlex_split, fix bug in shlex_split. len function
854 shlex_split, fix bug in shlex_split. len function
850 call was missing an if statement. Caused shlex_split to
855 call was missing an if statement. Caused shlex_split to
851 sometimes return "" as last element.
856 sometimes return "" as last element.
852
857
853 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
858 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
854
859
855 * IPython/completer.py
860 * IPython/completer.py
856 (IPCompleter.file_matches.single_dir_expand): fix a problem
861 (IPCompleter.file_matches.single_dir_expand): fix a problem
857 reported by Stefan, where directories containign a single subdir
862 reported by Stefan, where directories containign a single subdir
858 would be completed too early.
863 would be completed too early.
859
864
860 * IPython/Shell.py (_load_pylab): Make the execution of 'from
865 * IPython/Shell.py (_load_pylab): Make the execution of 'from
861 pylab import *' when -pylab is given be optional. A new flag,
866 pylab import *' when -pylab is given be optional. A new flag,
862 pylab_import_all controls this behavior, the default is True for
867 pylab_import_all controls this behavior, the default is True for
863 backwards compatibility.
868 backwards compatibility.
864
869
865 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
870 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
866 modified) R. Bernstein's patch for fully syntax highlighted
871 modified) R. Bernstein's patch for fully syntax highlighted
867 tracebacks. The functionality is also available under ultraTB for
872 tracebacks. The functionality is also available under ultraTB for
868 non-ipython users (someone using ultraTB but outside an ipython
873 non-ipython users (someone using ultraTB but outside an ipython
869 session). They can select the color scheme by setting the
874 session). They can select the color scheme by setting the
870 module-level global DEFAULT_SCHEME. The highlight functionality
875 module-level global DEFAULT_SCHEME. The highlight functionality
871 also works when debugging.
876 also works when debugging.
872
877
873 * IPython/genutils.py (IOStream.close): small patch by
878 * IPython/genutils.py (IOStream.close): small patch by
874 R. Bernstein for improved pydb support.
879 R. Bernstein for improved pydb support.
875
880
876 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
881 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
877 DaveS <davls@telus.net> to improve support of debugging under
882 DaveS <davls@telus.net> to improve support of debugging under
878 NTEmacs, including improved pydb behavior.
883 NTEmacs, including improved pydb behavior.
879
884
880 * IPython/Magic.py (magic_prun): Fix saving of profile info for
885 * IPython/Magic.py (magic_prun): Fix saving of profile info for
881 Python 2.5, where the stats object API changed a little. Thanks
886 Python 2.5, where the stats object API changed a little. Thanks
882 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
887 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
883
888
884 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
889 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
885 Pernetty's patch to improve support for (X)Emacs under Win32.
890 Pernetty's patch to improve support for (X)Emacs under Win32.
886
891
887 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
892 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
888
893
889 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
894 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
890 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
895 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
891 a report by Nik Tautenhahn.
896 a report by Nik Tautenhahn.
892
897
893 2007-03-16 Walter Doerwald <walter@livinglogic.de>
898 2007-03-16 Walter Doerwald <walter@livinglogic.de>
894
899
895 * setup.py: Add the igrid help files to the list of data files
900 * setup.py: Add the igrid help files to the list of data files
896 to be installed alongside igrid.
901 to be installed alongside igrid.
897 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
902 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
898 Show the input object of the igrid browser as the window tile.
903 Show the input object of the igrid browser as the window tile.
899 Show the object the cursor is on in the statusbar.
904 Show the object the cursor is on in the statusbar.
900
905
901 2007-03-15 Ville Vainio <vivainio@gmail.com>
906 2007-03-15 Ville Vainio <vivainio@gmail.com>
902
907
903 * Extensions/ipy_stock_completers.py: Fixed exception
908 * Extensions/ipy_stock_completers.py: Fixed exception
904 on mismatching quotes in %run completer. Patch by
909 on mismatching quotes in %run completer. Patch by
905 Jorgen Stenarson. Closes #127.
910 Jorgen Stenarson. Closes #127.
906
911
907 2007-03-14 Ville Vainio <vivainio@gmail.com>
912 2007-03-14 Ville Vainio <vivainio@gmail.com>
908
913
909 * Extensions/ext_rehashdir.py: Do not do auto_alias
914 * Extensions/ext_rehashdir.py: Do not do auto_alias
910 in %rehashdir, it clobbers %store'd aliases.
915 in %rehashdir, it clobbers %store'd aliases.
911
916
912 * UserConfig/ipy_profile_sh.py: envpersist.py extension
917 * UserConfig/ipy_profile_sh.py: envpersist.py extension
913 (beefed up %env) imported for sh profile.
918 (beefed up %env) imported for sh profile.
914
919
915 2007-03-10 Walter Doerwald <walter@livinglogic.de>
920 2007-03-10 Walter Doerwald <walter@livinglogic.de>
916
921
917 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
922 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
918 as the default browser.
923 as the default browser.
919 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
924 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
920 As igrid displays all attributes it ever encounters, fetch() (which has
925 As igrid displays all attributes it ever encounters, fetch() (which has
921 been renamed to _fetch()) doesn't have to recalculate the display attributes
926 been renamed to _fetch()) doesn't have to recalculate the display attributes
922 every time a new item is fetched. This should speed up scrolling.
927 every time a new item is fetched. This should speed up scrolling.
923
928
924 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
929 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
925
930
926 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
931 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
927 Schmolck's recently reported tab-completion bug (my previous one
932 Schmolck's recently reported tab-completion bug (my previous one
928 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
933 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
929
934
930 2007-03-09 Walter Doerwald <walter@livinglogic.de>
935 2007-03-09 Walter Doerwald <walter@livinglogic.de>
931
936
932 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
937 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
933 Close help window if exiting igrid.
938 Close help window if exiting igrid.
934
939
935 2007-03-02 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
940 2007-03-02 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
936
941
937 * IPython/Extensions/ipy_defaults.py: Check if readline is available
942 * IPython/Extensions/ipy_defaults.py: Check if readline is available
938 before calling functions from readline.
943 before calling functions from readline.
939
944
940 2007-03-02 Walter Doerwald <walter@livinglogic.de>
945 2007-03-02 Walter Doerwald <walter@livinglogic.de>
941
946
942 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
947 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
943 igrid is a wxPython-based display object for ipipe. If your system has
948 igrid is a wxPython-based display object for ipipe. If your system has
944 wx installed igrid will be the default display. Without wx ipipe falls
949 wx installed igrid will be the default display. Without wx ipipe falls
945 back to ibrowse (which needs curses). If no curses is installed ipipe
950 back to ibrowse (which needs curses). If no curses is installed ipipe
946 falls back to idump.
951 falls back to idump.
947
952
948 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
953 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
949
954
950 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
955 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
951 my changes from yesterday, they introduced bugs. Will reactivate
956 my changes from yesterday, they introduced bugs. Will reactivate
952 once I get a correct solution, which will be much easier thanks to
957 once I get a correct solution, which will be much easier thanks to
953 Dan Milstein's new prefilter test suite.
958 Dan Milstein's new prefilter test suite.
954
959
955 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
960 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
956
961
957 * IPython/iplib.py (split_user_input): fix input splitting so we
962 * IPython/iplib.py (split_user_input): fix input splitting so we
958 don't attempt attribute accesses on things that can't possibly be
963 don't attempt attribute accesses on things that can't possibly be
959 valid Python attributes. After a bug report by Alex Schmolck.
964 valid Python attributes. After a bug report by Alex Schmolck.
960 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
965 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
961 %magic with explicit % prefix.
966 %magic with explicit % prefix.
962
967
963 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
968 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
964
969
965 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
970 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
966 avoid a DeprecationWarning from GTK.
971 avoid a DeprecationWarning from GTK.
967
972
968 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
973 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
969
974
970 * IPython/genutils.py (clock): I modified clock() to return total
975 * IPython/genutils.py (clock): I modified clock() to return total
971 time, user+system. This is a more commonly needed metric. I also
976 time, user+system. This is a more commonly needed metric. I also
972 introduced the new clocku/clocks to get only user/system time if
977 introduced the new clocku/clocks to get only user/system time if
973 one wants those instead.
978 one wants those instead.
974
979
975 ***WARNING: API CHANGE*** clock() used to return only user time,
980 ***WARNING: API CHANGE*** clock() used to return only user time,
976 so if you want exactly the same results as before, use clocku
981 so if you want exactly the same results as before, use clocku
977 instead.
982 instead.
978
983
979 2007-02-22 Ville Vainio <vivainio@gmail.com>
984 2007-02-22 Ville Vainio <vivainio@gmail.com>
980
985
981 * IPython/Extensions/ipy_p4.py: Extension for improved
986 * IPython/Extensions/ipy_p4.py: Extension for improved
982 p4 (perforce version control system) experience.
987 p4 (perforce version control system) experience.
983 Adds %p4 magic with p4 command completion and
988 Adds %p4 magic with p4 command completion and
984 automatic -G argument (marshall output as python dict)
989 automatic -G argument (marshall output as python dict)
985
990
986 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
991 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
987
992
988 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
993 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
989 stop marks.
994 stop marks.
990 (ClearingMixin): a simple mixin to easily make a Demo class clear
995 (ClearingMixin): a simple mixin to easily make a Demo class clear
991 the screen in between blocks and have empty marquees. The
996 the screen in between blocks and have empty marquees. The
992 ClearDemo and ClearIPDemo classes that use it are included.
997 ClearDemo and ClearIPDemo classes that use it are included.
993
998
994 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
999 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
995
1000
996 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
1001 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
997 protect against exceptions at Python shutdown time. Patch
1002 protect against exceptions at Python shutdown time. Patch
998 sumbmitted to upstream.
1003 sumbmitted to upstream.
999
1004
1000 2007-02-14 Walter Doerwald <walter@livinglogic.de>
1005 2007-02-14 Walter Doerwald <walter@livinglogic.de>
1001
1006
1002 * IPython/Extensions/ibrowse.py: If entering the first object level
1007 * IPython/Extensions/ibrowse.py: If entering the first object level
1003 (i.e. the object for which the browser has been started) fails,
1008 (i.e. the object for which the browser has been started) fails,
1004 now the error is raised directly (aborting the browser) instead of
1009 now the error is raised directly (aborting the browser) instead of
1005 running into an empty levels list later.
1010 running into an empty levels list later.
1006
1011
1007 2007-02-03 Walter Doerwald <walter@livinglogic.de>
1012 2007-02-03 Walter Doerwald <walter@livinglogic.de>
1008
1013
1009 * IPython/Extensions/ipipe.py: Add an xrepr implementation
1014 * IPython/Extensions/ipipe.py: Add an xrepr implementation
1010 for the noitem object.
1015 for the noitem object.
1011
1016
1012 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
1017 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
1013
1018
1014 * IPython/completer.py (Completer.attr_matches): Fix small
1019 * IPython/completer.py (Completer.attr_matches): Fix small
1015 tab-completion bug with Enthought Traits objects with units.
1020 tab-completion bug with Enthought Traits objects with units.
1016 Thanks to a bug report by Tom Denniston
1021 Thanks to a bug report by Tom Denniston
1017 <tom.denniston-AT-alum.dartmouth.org>.
1022 <tom.denniston-AT-alum.dartmouth.org>.
1018
1023
1019 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
1024 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
1020
1025
1021 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
1026 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
1022 bug where only .ipy or .py would be completed. Once the first
1027 bug where only .ipy or .py would be completed. Once the first
1023 argument to %run has been given, all completions are valid because
1028 argument to %run has been given, all completions are valid because
1024 they are the arguments to the script, which may well be non-python
1029 they are the arguments to the script, which may well be non-python
1025 filenames.
1030 filenames.
1026
1031
1027 * IPython/irunner.py (InteractiveRunner.run_source): major updates
1032 * IPython/irunner.py (InteractiveRunner.run_source): major updates
1028 to irunner to allow it to correctly support real doctesting of
1033 to irunner to allow it to correctly support real doctesting of
1029 out-of-process ipython code.
1034 out-of-process ipython code.
1030
1035
1031 * IPython/Magic.py (magic_cd): Make the setting of the terminal
1036 * IPython/Magic.py (magic_cd): Make the setting of the terminal
1032 title an option (-noterm_title) because it completely breaks
1037 title an option (-noterm_title) because it completely breaks
1033 doctesting.
1038 doctesting.
1034
1039
1035 * IPython/demo.py: fix IPythonDemo class that was not actually working.
1040 * IPython/demo.py: fix IPythonDemo class that was not actually working.
1036
1041
1037 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
1042 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
1038
1043
1039 * IPython/irunner.py (main): fix small bug where extensions were
1044 * IPython/irunner.py (main): fix small bug where extensions were
1040 not being correctly recognized.
1045 not being correctly recognized.
1041
1046
1042 2007-01-23 Walter Doerwald <walter@livinglogic.de>
1047 2007-01-23 Walter Doerwald <walter@livinglogic.de>
1043
1048
1044 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
1049 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
1045 a string containing a single line yields the string itself as the
1050 a string containing a single line yields the string itself as the
1046 only item.
1051 only item.
1047
1052
1048 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
1053 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
1049 object if it's the same as the one on the last level (This avoids
1054 object if it's the same as the one on the last level (This avoids
1050 infinite recursion for one line strings).
1055 infinite recursion for one line strings).
1051
1056
1052 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1057 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1053
1058
1054 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
1059 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
1055 all output streams before printing tracebacks. This ensures that
1060 all output streams before printing tracebacks. This ensures that
1056 user output doesn't end up interleaved with traceback output.
1061 user output doesn't end up interleaved with traceback output.
1057
1062
1058 2007-01-10 Ville Vainio <vivainio@gmail.com>
1063 2007-01-10 Ville Vainio <vivainio@gmail.com>
1059
1064
1060 * Extensions/envpersist.py: Turbocharged %env that remembers
1065 * Extensions/envpersist.py: Turbocharged %env that remembers
1061 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
1066 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
1062 "%env VISUAL=jed".
1067 "%env VISUAL=jed".
1063
1068
1064 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
1069 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
1065
1070
1066 * IPython/iplib.py (showtraceback): ensure that we correctly call
1071 * IPython/iplib.py (showtraceback): ensure that we correctly call
1067 custom handlers in all cases (some with pdb were slipping through,
1072 custom handlers in all cases (some with pdb were slipping through,
1068 but I'm not exactly sure why).
1073 but I'm not exactly sure why).
1069
1074
1070 * IPython/Debugger.py (Tracer.__init__): added new class to
1075 * IPython/Debugger.py (Tracer.__init__): added new class to
1071 support set_trace-like usage of IPython's enhanced debugger.
1076 support set_trace-like usage of IPython's enhanced debugger.
1072
1077
1073 2006-12-24 Ville Vainio <vivainio@gmail.com>
1078 2006-12-24 Ville Vainio <vivainio@gmail.com>
1074
1079
1075 * ipmaker.py: more informative message when ipy_user_conf
1080 * ipmaker.py: more informative message when ipy_user_conf
1076 import fails (suggest running %upgrade).
1081 import fails (suggest running %upgrade).
1077
1082
1078 * tools/run_ipy_in_profiler.py: Utility to see where
1083 * tools/run_ipy_in_profiler.py: Utility to see where
1079 the time during IPython startup is spent.
1084 the time during IPython startup is spent.
1080
1085
1081 2006-12-20 Ville Vainio <vivainio@gmail.com>
1086 2006-12-20 Ville Vainio <vivainio@gmail.com>
1082
1087
1083 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
1088 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
1084
1089
1085 * ipapi.py: Add new ipapi method, expand_alias.
1090 * ipapi.py: Add new ipapi method, expand_alias.
1086
1091
1087 * Release.py: Bump up version to 0.7.4.svn
1092 * Release.py: Bump up version to 0.7.4.svn
1088
1093
1089 2006-12-17 Ville Vainio <vivainio@gmail.com>
1094 2006-12-17 Ville Vainio <vivainio@gmail.com>
1090
1095
1091 * Extensions/jobctrl.py: Fixed &cmd arg arg...
1096 * Extensions/jobctrl.py: Fixed &cmd arg arg...
1092 to work properly on posix too
1097 to work properly on posix too
1093
1098
1094 * Release.py: Update revnum (version is still just 0.7.3).
1099 * Release.py: Update revnum (version is still just 0.7.3).
1095
1100
1096 2006-12-15 Ville Vainio <vivainio@gmail.com>
1101 2006-12-15 Ville Vainio <vivainio@gmail.com>
1097
1102
1098 * scripts/ipython_win_post_install: create ipython.py in
1103 * scripts/ipython_win_post_install: create ipython.py in
1099 prefix + "/scripts".
1104 prefix + "/scripts".
1100
1105
1101 * Release.py: Update version to 0.7.3.
1106 * Release.py: Update version to 0.7.3.
1102
1107
1103 2006-12-14 Ville Vainio <vivainio@gmail.com>
1108 2006-12-14 Ville Vainio <vivainio@gmail.com>
1104
1109
1105 * scripts/ipython_win_post_install: Overwrite old shortcuts
1110 * scripts/ipython_win_post_install: Overwrite old shortcuts
1106 if they already exist
1111 if they already exist
1107
1112
1108 * Release.py: release 0.7.3rc2
1113 * Release.py: release 0.7.3rc2
1109
1114
1110 2006-12-13 Ville Vainio <vivainio@gmail.com>
1115 2006-12-13 Ville Vainio <vivainio@gmail.com>
1111
1116
1112 * Branch and update Release.py for 0.7.3rc1
1117 * Branch and update Release.py for 0.7.3rc1
1113
1118
1114 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
1119 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
1115
1120
1116 * IPython/Shell.py (IPShellWX): update for current WX naming
1121 * IPython/Shell.py (IPShellWX): update for current WX naming
1117 conventions, to avoid a deprecation warning with current WX
1122 conventions, to avoid a deprecation warning with current WX
1118 versions. Thanks to a report by Danny Shevitz.
1123 versions. Thanks to a report by Danny Shevitz.
1119
1124
1120 2006-12-12 Ville Vainio <vivainio@gmail.com>
1125 2006-12-12 Ville Vainio <vivainio@gmail.com>
1121
1126
1122 * ipmaker.py: apply david cournapeau's patch to make
1127 * ipmaker.py: apply david cournapeau's patch to make
1123 import_some work properly even when ipythonrc does
1128 import_some work properly even when ipythonrc does
1124 import_some on empty list (it was an old bug!).
1129 import_some on empty list (it was an old bug!).
1125
1130
1126 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
1131 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
1127 Add deprecation note to ipythonrc and a url to wiki
1132 Add deprecation note to ipythonrc and a url to wiki
1128 in ipy_user_conf.py
1133 in ipy_user_conf.py
1129
1134
1130
1135
1131 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
1136 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
1132 as if it was typed on IPython command prompt, i.e.
1137 as if it was typed on IPython command prompt, i.e.
1133 as IPython script.
1138 as IPython script.
1134
1139
1135 * example-magic.py, magic_grepl.py: remove outdated examples
1140 * example-magic.py, magic_grepl.py: remove outdated examples
1136
1141
1137 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
1142 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
1138
1143
1139 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
1144 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
1140 is called before any exception has occurred.
1145 is called before any exception has occurred.
1141
1146
1142 2006-12-08 Ville Vainio <vivainio@gmail.com>
1147 2006-12-08 Ville Vainio <vivainio@gmail.com>
1143
1148
1144 * Extensions/ipy_stock_completers.py: fix cd completer
1149 * Extensions/ipy_stock_completers.py: fix cd completer
1145 to translate /'s to \'s again.
1150 to translate /'s to \'s again.
1146
1151
1147 * completer.py: prevent traceback on file completions w/
1152 * completer.py: prevent traceback on file completions w/
1148 backslash.
1153 backslash.
1149
1154
1150 * Release.py: Update release number to 0.7.3b3 for release
1155 * Release.py: Update release number to 0.7.3b3 for release
1151
1156
1152 2006-12-07 Ville Vainio <vivainio@gmail.com>
1157 2006-12-07 Ville Vainio <vivainio@gmail.com>
1153
1158
1154 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
1159 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
1155 while executing external code. Provides more shell-like behaviour
1160 while executing external code. Provides more shell-like behaviour
1156 and overall better response to ctrl + C / ctrl + break.
1161 and overall better response to ctrl + C / ctrl + break.
1157
1162
1158 * tools/make_tarball.py: new script to create tarball straight from svn
1163 * tools/make_tarball.py: new script to create tarball straight from svn
1159 (setup.py sdist doesn't work on win32).
1164 (setup.py sdist doesn't work on win32).
1160
1165
1161 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1166 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1162 on dirnames with spaces and use the default completer instead.
1167 on dirnames with spaces and use the default completer instead.
1163
1168
1164 * Revision.py: Change version to 0.7.3b2 for release.
1169 * Revision.py: Change version to 0.7.3b2 for release.
1165
1170
1166 2006-12-05 Ville Vainio <vivainio@gmail.com>
1171 2006-12-05 Ville Vainio <vivainio@gmail.com>
1167
1172
1168 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1173 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1169 pydb patch 4 (rm debug printing, py 2.5 checking)
1174 pydb patch 4 (rm debug printing, py 2.5 checking)
1170
1175
1171 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1176 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1172 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1177 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1173 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1178 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1174 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1179 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1175 object the cursor was on before the refresh. The command "markrange" is
1180 object the cursor was on before the refresh. The command "markrange" is
1176 mapped to "%" now.
1181 mapped to "%" now.
1177 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1182 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1178
1183
1179 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1184 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1180
1185
1181 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1186 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1182 interactive debugger on the last traceback, without having to call
1187 interactive debugger on the last traceback, without having to call
1183 %pdb and rerun your code. Made minor changes in various modules,
1188 %pdb and rerun your code. Made minor changes in various modules,
1184 should automatically recognize pydb if available.
1189 should automatically recognize pydb if available.
1185
1190
1186 2006-11-28 Ville Vainio <vivainio@gmail.com>
1191 2006-11-28 Ville Vainio <vivainio@gmail.com>
1187
1192
1188 * completer.py: If the text start with !, show file completions
1193 * completer.py: If the text start with !, show file completions
1189 properly. This helps when trying to complete command name
1194 properly. This helps when trying to complete command name
1190 for shell escapes.
1195 for shell escapes.
1191
1196
1192 2006-11-27 Ville Vainio <vivainio@gmail.com>
1197 2006-11-27 Ville Vainio <vivainio@gmail.com>
1193
1198
1194 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1199 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1195 der Walt. Clean up svn and hg completers by using a common
1200 der Walt. Clean up svn and hg completers by using a common
1196 vcs_completer.
1201 vcs_completer.
1197
1202
1198 2006-11-26 Ville Vainio <vivainio@gmail.com>
1203 2006-11-26 Ville Vainio <vivainio@gmail.com>
1199
1204
1200 * Remove ipconfig and %config; you should use _ip.options structure
1205 * Remove ipconfig and %config; you should use _ip.options structure
1201 directly instead!
1206 directly instead!
1202
1207
1203 * genutils.py: add wrap_deprecated function for deprecating callables
1208 * genutils.py: add wrap_deprecated function for deprecating callables
1204
1209
1205 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1210 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1206 _ip.system instead. ipalias is redundant.
1211 _ip.system instead. ipalias is redundant.
1207
1212
1208 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1213 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1209 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1214 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1210 explicit.
1215 explicit.
1211
1216
1212 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1217 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1213 completer. Try it by entering 'hg ' and pressing tab.
1218 completer. Try it by entering 'hg ' and pressing tab.
1214
1219
1215 * macro.py: Give Macro a useful __repr__ method
1220 * macro.py: Give Macro a useful __repr__ method
1216
1221
1217 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1222 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1218
1223
1219 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1224 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1220 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1225 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1221 we don't get a duplicate ipipe module, where registration of the xrepr
1226 we don't get a duplicate ipipe module, where registration of the xrepr
1222 implementation for Text is useless.
1227 implementation for Text is useless.
1223
1228
1224 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1229 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1225
1230
1226 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1231 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1227
1232
1228 2006-11-24 Ville Vainio <vivainio@gmail.com>
1233 2006-11-24 Ville Vainio <vivainio@gmail.com>
1229
1234
1230 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1235 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1231 try to use "cProfile" instead of the slower pure python
1236 try to use "cProfile" instead of the slower pure python
1232 "profile"
1237 "profile"
1233
1238
1234 2006-11-23 Ville Vainio <vivainio@gmail.com>
1239 2006-11-23 Ville Vainio <vivainio@gmail.com>
1235
1240
1236 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1241 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1237 Qt+IPython+Designer link in documentation.
1242 Qt+IPython+Designer link in documentation.
1238
1243
1239 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1244 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1240 correct Pdb object to %pydb.
1245 correct Pdb object to %pydb.
1241
1246
1242
1247
1243 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1248 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1244 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1249 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1245 generic xrepr(), otherwise the list implementation would kick in.
1250 generic xrepr(), otherwise the list implementation would kick in.
1246
1251
1247 2006-11-21 Ville Vainio <vivainio@gmail.com>
1252 2006-11-21 Ville Vainio <vivainio@gmail.com>
1248
1253
1249 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1254 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1250 with one from UserConfig.
1255 with one from UserConfig.
1251
1256
1252 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1257 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1253 it was missing which broke the sh profile.
1258 it was missing which broke the sh profile.
1254
1259
1255 * completer.py: file completer now uses explicit '/' instead
1260 * completer.py: file completer now uses explicit '/' instead
1256 of os.path.join, expansion of 'foo' was broken on win32
1261 of os.path.join, expansion of 'foo' was broken on win32
1257 if there was one directory with name 'foobar'.
1262 if there was one directory with name 'foobar'.
1258
1263
1259 * A bunch of patches from Kirill Smelkov:
1264 * A bunch of patches from Kirill Smelkov:
1260
1265
1261 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1266 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1262
1267
1263 * [patch 7/9] Implement %page -r (page in raw mode) -
1268 * [patch 7/9] Implement %page -r (page in raw mode) -
1264
1269
1265 * [patch 5/9] ScientificPython webpage has moved
1270 * [patch 5/9] ScientificPython webpage has moved
1266
1271
1267 * [patch 4/9] The manual mentions %ds, should be %dhist
1272 * [patch 4/9] The manual mentions %ds, should be %dhist
1268
1273
1269 * [patch 3/9] Kill old bits from %prun doc.
1274 * [patch 3/9] Kill old bits from %prun doc.
1270
1275
1271 * [patch 1/9] Fix typos here and there.
1276 * [patch 1/9] Fix typos here and there.
1272
1277
1273 2006-11-08 Ville Vainio <vivainio@gmail.com>
1278 2006-11-08 Ville Vainio <vivainio@gmail.com>
1274
1279
1275 * completer.py (attr_matches): catch all exceptions raised
1280 * completer.py (attr_matches): catch all exceptions raised
1276 by eval of expr with dots.
1281 by eval of expr with dots.
1277
1282
1278 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1283 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1279
1284
1280 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1285 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1281 input if it starts with whitespace. This allows you to paste
1286 input if it starts with whitespace. This allows you to paste
1282 indented input from any editor without manually having to type in
1287 indented input from any editor without manually having to type in
1283 the 'if 1:', which is convenient when working interactively.
1288 the 'if 1:', which is convenient when working interactively.
1284 Slightly modifed version of a patch by Bo Peng
1289 Slightly modifed version of a patch by Bo Peng
1285 <bpeng-AT-rice.edu>.
1290 <bpeng-AT-rice.edu>.
1286
1291
1287 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1292 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1288
1293
1289 * IPython/irunner.py (main): modified irunner so it automatically
1294 * IPython/irunner.py (main): modified irunner so it automatically
1290 recognizes the right runner to use based on the extension (.py for
1295 recognizes the right runner to use based on the extension (.py for
1291 python, .ipy for ipython and .sage for sage).
1296 python, .ipy for ipython and .sage for sage).
1292
1297
1293 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1298 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1294 visible in ipapi as ip.config(), to programatically control the
1299 visible in ipapi as ip.config(), to programatically control the
1295 internal rc object. There's an accompanying %config magic for
1300 internal rc object. There's an accompanying %config magic for
1296 interactive use, which has been enhanced to match the
1301 interactive use, which has been enhanced to match the
1297 funtionality in ipconfig.
1302 funtionality in ipconfig.
1298
1303
1299 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1304 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1300 so it's not just a toggle, it now takes an argument. Add support
1305 so it's not just a toggle, it now takes an argument. Add support
1301 for a customizable header when making system calls, as the new
1306 for a customizable header when making system calls, as the new
1302 system_header variable in the ipythonrc file.
1307 system_header variable in the ipythonrc file.
1303
1308
1304 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1309 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1305
1310
1306 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1311 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1307 generic functions (using Philip J. Eby's simplegeneric package).
1312 generic functions (using Philip J. Eby's simplegeneric package).
1308 This makes it possible to customize the display of third-party classes
1313 This makes it possible to customize the display of third-party classes
1309 without having to monkeypatch them. xiter() no longer supports a mode
1314 without having to monkeypatch them. xiter() no longer supports a mode
1310 argument and the XMode class has been removed. The same functionality can
1315 argument and the XMode class has been removed. The same functionality can
1311 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1316 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1312 One consequence of the switch to generic functions is that xrepr() and
1317 One consequence of the switch to generic functions is that xrepr() and
1313 xattrs() implementation must define the default value for the mode
1318 xattrs() implementation must define the default value for the mode
1314 argument themselves and xattrs() implementations must return real
1319 argument themselves and xattrs() implementations must return real
1315 descriptors.
1320 descriptors.
1316
1321
1317 * IPython/external: This new subpackage will contain all third-party
1322 * IPython/external: This new subpackage will contain all third-party
1318 packages that are bundled with IPython. (The first one is simplegeneric).
1323 packages that are bundled with IPython. (The first one is simplegeneric).
1319
1324
1320 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1325 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1321 directory which as been dropped in r1703.
1326 directory which as been dropped in r1703.
1322
1327
1323 * IPython/Extensions/ipipe.py (iless): Fixed.
1328 * IPython/Extensions/ipipe.py (iless): Fixed.
1324
1329
1325 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1330 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1326
1331
1327 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1332 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1328
1333
1329 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1334 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1330 handling in variable expansion so that shells and magics recognize
1335 handling in variable expansion so that shells and magics recognize
1331 function local scopes correctly. Bug reported by Brian.
1336 function local scopes correctly. Bug reported by Brian.
1332
1337
1333 * scripts/ipython: remove the very first entry in sys.path which
1338 * scripts/ipython: remove the very first entry in sys.path which
1334 Python auto-inserts for scripts, so that sys.path under IPython is
1339 Python auto-inserts for scripts, so that sys.path under IPython is
1335 as similar as possible to that under plain Python.
1340 as similar as possible to that under plain Python.
1336
1341
1337 * IPython/completer.py (IPCompleter.file_matches): Fix
1342 * IPython/completer.py (IPCompleter.file_matches): Fix
1338 tab-completion so that quotes are not closed unless the completion
1343 tab-completion so that quotes are not closed unless the completion
1339 is unambiguous. After a request by Stefan. Minor cleanups in
1344 is unambiguous. After a request by Stefan. Minor cleanups in
1340 ipy_stock_completers.
1345 ipy_stock_completers.
1341
1346
1342 2006-11-02 Ville Vainio <vivainio@gmail.com>
1347 2006-11-02 Ville Vainio <vivainio@gmail.com>
1343
1348
1344 * ipy_stock_completers.py: Add %run and %cd completers.
1349 * ipy_stock_completers.py: Add %run and %cd completers.
1345
1350
1346 * completer.py: Try running custom completer for both
1351 * completer.py: Try running custom completer for both
1347 "foo" and "%foo" if the command is just "foo". Ignore case
1352 "foo" and "%foo" if the command is just "foo". Ignore case
1348 when filtering possible completions.
1353 when filtering possible completions.
1349
1354
1350 * UserConfig/ipy_user_conf.py: install stock completers as default
1355 * UserConfig/ipy_user_conf.py: install stock completers as default
1351
1356
1352 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1357 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1353 simplified readline history save / restore through a wrapper
1358 simplified readline history save / restore through a wrapper
1354 function
1359 function
1355
1360
1356
1361
1357 2006-10-31 Ville Vainio <vivainio@gmail.com>
1362 2006-10-31 Ville Vainio <vivainio@gmail.com>
1358
1363
1359 * strdispatch.py, completer.py, ipy_stock_completers.py:
1364 * strdispatch.py, completer.py, ipy_stock_completers.py:
1360 Allow str_key ("command") in completer hooks. Implement
1365 Allow str_key ("command") in completer hooks. Implement
1361 trivial completer for 'import' (stdlib modules only). Rename
1366 trivial completer for 'import' (stdlib modules only). Rename
1362 ipy_linux_package_managers.py to ipy_stock_completers.py.
1367 ipy_linux_package_managers.py to ipy_stock_completers.py.
1363 SVN completer.
1368 SVN completer.
1364
1369
1365 * Extensions/ledit.py: %magic line editor for easily and
1370 * Extensions/ledit.py: %magic line editor for easily and
1366 incrementally manipulating lists of strings. The magic command
1371 incrementally manipulating lists of strings. The magic command
1367 name is %led.
1372 name is %led.
1368
1373
1369 2006-10-30 Ville Vainio <vivainio@gmail.com>
1374 2006-10-30 Ville Vainio <vivainio@gmail.com>
1370
1375
1371 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1376 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1372 Bernsteins's patches for pydb integration.
1377 Bernsteins's patches for pydb integration.
1373 http://bashdb.sourceforge.net/pydb/
1378 http://bashdb.sourceforge.net/pydb/
1374
1379
1375 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1380 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1376 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1381 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1377 custom completer hook to allow the users to implement their own
1382 custom completer hook to allow the users to implement their own
1378 completers. See ipy_linux_package_managers.py for example. The
1383 completers. See ipy_linux_package_managers.py for example. The
1379 hook name is 'complete_command'.
1384 hook name is 'complete_command'.
1380
1385
1381 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1386 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1382
1387
1383 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1388 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1384 Numeric leftovers.
1389 Numeric leftovers.
1385
1390
1386 * ipython.el (py-execute-region): apply Stefan's patch to fix
1391 * ipython.el (py-execute-region): apply Stefan's patch to fix
1387 garbled results if the python shell hasn't been previously started.
1392 garbled results if the python shell hasn't been previously started.
1388
1393
1389 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1394 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1390 pretty generic function and useful for other things.
1395 pretty generic function and useful for other things.
1391
1396
1392 * IPython/OInspect.py (getsource): Add customizable source
1397 * IPython/OInspect.py (getsource): Add customizable source
1393 extractor. After a request/patch form W. Stein (SAGE).
1398 extractor. After a request/patch form W. Stein (SAGE).
1394
1399
1395 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1400 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1396 window size to a more reasonable value from what pexpect does,
1401 window size to a more reasonable value from what pexpect does,
1397 since their choice causes wrapping bugs with long input lines.
1402 since their choice causes wrapping bugs with long input lines.
1398
1403
1399 2006-10-28 Ville Vainio <vivainio@gmail.com>
1404 2006-10-28 Ville Vainio <vivainio@gmail.com>
1400
1405
1401 * Magic.py (%run): Save and restore the readline history from
1406 * Magic.py (%run): Save and restore the readline history from
1402 file around %run commands to prevent side effects from
1407 file around %run commands to prevent side effects from
1403 %runned programs that might use readline (e.g. pydb).
1408 %runned programs that might use readline (e.g. pydb).
1404
1409
1405 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1410 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1406 invoking the pydb enhanced debugger.
1411 invoking the pydb enhanced debugger.
1407
1412
1408 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1413 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1409
1414
1410 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1415 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1411 call the base class method and propagate the return value to
1416 call the base class method and propagate the return value to
1412 ifile. This is now done by path itself.
1417 ifile. This is now done by path itself.
1413
1418
1414 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1419 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1415
1420
1416 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1421 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1417 api: set_crash_handler(), to expose the ability to change the
1422 api: set_crash_handler(), to expose the ability to change the
1418 internal crash handler.
1423 internal crash handler.
1419
1424
1420 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1425 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1421 the various parameters of the crash handler so that apps using
1426 the various parameters of the crash handler so that apps using
1422 IPython as their engine can customize crash handling. Ipmlemented
1427 IPython as their engine can customize crash handling. Ipmlemented
1423 at the request of SAGE.
1428 at the request of SAGE.
1424
1429
1425 2006-10-14 Ville Vainio <vivainio@gmail.com>
1430 2006-10-14 Ville Vainio <vivainio@gmail.com>
1426
1431
1427 * Magic.py, ipython.el: applied first "safe" part of Rocky
1432 * Magic.py, ipython.el: applied first "safe" part of Rocky
1428 Bernstein's patch set for pydb integration.
1433 Bernstein's patch set for pydb integration.
1429
1434
1430 * Magic.py (%unalias, %alias): %store'd aliases can now be
1435 * Magic.py (%unalias, %alias): %store'd aliases can now be
1431 removed with '%unalias'. %alias w/o args now shows most
1436 removed with '%unalias'. %alias w/o args now shows most
1432 interesting (stored / manually defined) aliases last
1437 interesting (stored / manually defined) aliases last
1433 where they catch the eye w/o scrolling.
1438 where they catch the eye w/o scrolling.
1434
1439
1435 * Magic.py (%rehashx), ext_rehashdir.py: files with
1440 * Magic.py (%rehashx), ext_rehashdir.py: files with
1436 'py' extension are always considered executable, even
1441 'py' extension are always considered executable, even
1437 when not in PATHEXT environment variable.
1442 when not in PATHEXT environment variable.
1438
1443
1439 2006-10-12 Ville Vainio <vivainio@gmail.com>
1444 2006-10-12 Ville Vainio <vivainio@gmail.com>
1440
1445
1441 * jobctrl.py: Add new "jobctrl" extension for spawning background
1446 * jobctrl.py: Add new "jobctrl" extension for spawning background
1442 processes with "&find /". 'import jobctrl' to try it out. Requires
1447 processes with "&find /". 'import jobctrl' to try it out. Requires
1443 'subprocess' module, standard in python 2.4+.
1448 'subprocess' module, standard in python 2.4+.
1444
1449
1445 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1450 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1446 so if foo -> bar and bar -> baz, then foo -> baz.
1451 so if foo -> bar and bar -> baz, then foo -> baz.
1447
1452
1448 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1453 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1449
1454
1450 * IPython/Magic.py (Magic.parse_options): add a new posix option
1455 * IPython/Magic.py (Magic.parse_options): add a new posix option
1451 to allow parsing of input args in magics that doesn't strip quotes
1456 to allow parsing of input args in magics that doesn't strip quotes
1452 (if posix=False). This also closes %timeit bug reported by
1457 (if posix=False). This also closes %timeit bug reported by
1453 Stefan.
1458 Stefan.
1454
1459
1455 2006-10-03 Ville Vainio <vivainio@gmail.com>
1460 2006-10-03 Ville Vainio <vivainio@gmail.com>
1456
1461
1457 * iplib.py (raw_input, interact): Return ValueError catching for
1462 * iplib.py (raw_input, interact): Return ValueError catching for
1458 raw_input. Fixes infinite loop for sys.stdin.close() or
1463 raw_input. Fixes infinite loop for sys.stdin.close() or
1459 sys.stdout.close().
1464 sys.stdout.close().
1460
1465
1461 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1466 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1462
1467
1463 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1468 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1464 to help in handling doctests. irunner is now pretty useful for
1469 to help in handling doctests. irunner is now pretty useful for
1465 running standalone scripts and simulate a full interactive session
1470 running standalone scripts and simulate a full interactive session
1466 in a format that can be then pasted as a doctest.
1471 in a format that can be then pasted as a doctest.
1467
1472
1468 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1473 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1469 on top of the default (useless) ones. This also fixes the nasty
1474 on top of the default (useless) ones. This also fixes the nasty
1470 way in which 2.5's Quitter() exits (reverted [1785]).
1475 way in which 2.5's Quitter() exits (reverted [1785]).
1471
1476
1472 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1477 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1473 2.5.
1478 2.5.
1474
1479
1475 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1480 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1476 color scheme is updated as well when color scheme is changed
1481 color scheme is updated as well when color scheme is changed
1477 interactively.
1482 interactively.
1478
1483
1479 2006-09-27 Ville Vainio <vivainio@gmail.com>
1484 2006-09-27 Ville Vainio <vivainio@gmail.com>
1480
1485
1481 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1486 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1482 infinite loop and just exit. It's a hack, but will do for a while.
1487 infinite loop and just exit. It's a hack, but will do for a while.
1483
1488
1484 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1489 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1485
1490
1486 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1491 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1487 the constructor, this makes it possible to get a list of only directories
1492 the constructor, this makes it possible to get a list of only directories
1488 or only files.
1493 or only files.
1489
1494
1490 2006-08-12 Ville Vainio <vivainio@gmail.com>
1495 2006-08-12 Ville Vainio <vivainio@gmail.com>
1491
1496
1492 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1497 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1493 they broke unittest
1498 they broke unittest
1494
1499
1495 2006-08-11 Ville Vainio <vivainio@gmail.com>
1500 2006-08-11 Ville Vainio <vivainio@gmail.com>
1496
1501
1497 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1502 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1498 by resolving issue properly, i.e. by inheriting FakeModule
1503 by resolving issue properly, i.e. by inheriting FakeModule
1499 from types.ModuleType. Pickling ipython interactive data
1504 from types.ModuleType. Pickling ipython interactive data
1500 should still work as usual (testing appreciated).
1505 should still work as usual (testing appreciated).
1501
1506
1502 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1507 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1503
1508
1504 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1509 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1505 running under python 2.3 with code from 2.4 to fix a bug with
1510 running under python 2.3 with code from 2.4 to fix a bug with
1506 help(). Reported by the Debian maintainers, Norbert Tretkowski
1511 help(). Reported by the Debian maintainers, Norbert Tretkowski
1507 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1512 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1508 <afayolle-AT-debian.org>.
1513 <afayolle-AT-debian.org>.
1509
1514
1510 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1515 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1511
1516
1512 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1517 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1513 (which was displaying "quit" twice).
1518 (which was displaying "quit" twice).
1514
1519
1515 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1520 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1516
1521
1517 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1522 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1518 the mode argument).
1523 the mode argument).
1519
1524
1520 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1525 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1521
1526
1522 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1527 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1523 not running under IPython.
1528 not running under IPython.
1524
1529
1525 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1530 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1526 and make it iterable (iterating over the attribute itself). Add two new
1531 and make it iterable (iterating over the attribute itself). Add two new
1527 magic strings for __xattrs__(): If the string starts with "-", the attribute
1532 magic strings for __xattrs__(): If the string starts with "-", the attribute
1528 will not be displayed in ibrowse's detail view (but it can still be
1533 will not be displayed in ibrowse's detail view (but it can still be
1529 iterated over). This makes it possible to add attributes that are large
1534 iterated over). This makes it possible to add attributes that are large
1530 lists or generator methods to the detail view. Replace magic attribute names
1535 lists or generator methods to the detail view. Replace magic attribute names
1531 and _attrname() and _getattr() with "descriptors": For each type of magic
1536 and _attrname() and _getattr() with "descriptors": For each type of magic
1532 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1537 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1533 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1538 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1534 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1539 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1535 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1540 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1536 are still supported.
1541 are still supported.
1537
1542
1538 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1543 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1539 fails in ibrowse.fetch(), the exception object is added as the last item
1544 fails in ibrowse.fetch(), the exception object is added as the last item
1540 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1545 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1541 a generator throws an exception midway through execution.
1546 a generator throws an exception midway through execution.
1542
1547
1543 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1548 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1544 encoding into methods.
1549 encoding into methods.
1545
1550
1546 2006-07-26 Ville Vainio <vivainio@gmail.com>
1551 2006-07-26 Ville Vainio <vivainio@gmail.com>
1547
1552
1548 * iplib.py: history now stores multiline input as single
1553 * iplib.py: history now stores multiline input as single
1549 history entries. Patch by Jorgen Cederlof.
1554 history entries. Patch by Jorgen Cederlof.
1550
1555
1551 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1556 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1552
1557
1553 * IPython/Extensions/ibrowse.py: Make cursor visible over
1558 * IPython/Extensions/ibrowse.py: Make cursor visible over
1554 non existing attributes.
1559 non existing attributes.
1555
1560
1556 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1561 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1557
1562
1558 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1563 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1559 error output of the running command doesn't mess up the screen.
1564 error output of the running command doesn't mess up the screen.
1560
1565
1561 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1566 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1562
1567
1563 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1568 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1564 argument. This sorts the items themselves.
1569 argument. This sorts the items themselves.
1565
1570
1566 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1571 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1567
1572
1568 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1573 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1569 Compile expression strings into code objects. This should speed
1574 Compile expression strings into code objects. This should speed
1570 up ifilter and friends somewhat.
1575 up ifilter and friends somewhat.
1571
1576
1572 2006-07-08 Ville Vainio <vivainio@gmail.com>
1577 2006-07-08 Ville Vainio <vivainio@gmail.com>
1573
1578
1574 * Magic.py: %cpaste now strips > from the beginning of lines
1579 * Magic.py: %cpaste now strips > from the beginning of lines
1575 to ease pasting quoted code from emails. Contributed by
1580 to ease pasting quoted code from emails. Contributed by
1576 Stefan van der Walt.
1581 Stefan van der Walt.
1577
1582
1578 2006-06-29 Ville Vainio <vivainio@gmail.com>
1583 2006-06-29 Ville Vainio <vivainio@gmail.com>
1579
1584
1580 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1585 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1581 mode, patch contributed by Darren Dale. NEEDS TESTING!
1586 mode, patch contributed by Darren Dale. NEEDS TESTING!
1582
1587
1583 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1588 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1584
1589
1585 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1590 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1586 a blue background. Fix fetching new display rows when the browser
1591 a blue background. Fix fetching new display rows when the browser
1587 scrolls more than a screenful (e.g. by using the goto command).
1592 scrolls more than a screenful (e.g. by using the goto command).
1588
1593
1589 2006-06-27 Ville Vainio <vivainio@gmail.com>
1594 2006-06-27 Ville Vainio <vivainio@gmail.com>
1590
1595
1591 * Magic.py (_inspect, _ofind) Apply David Huard's
1596 * Magic.py (_inspect, _ofind) Apply David Huard's
1592 patch for displaying the correct docstring for 'property'
1597 patch for displaying the correct docstring for 'property'
1593 attributes.
1598 attributes.
1594
1599
1595 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1600 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1596
1601
1597 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1602 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1598 commands into the methods implementing them.
1603 commands into the methods implementing them.
1599
1604
1600 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1605 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1601
1606
1602 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1607 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1603 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1608 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1604 autoindent support was authored by Jin Liu.
1609 autoindent support was authored by Jin Liu.
1605
1610
1606 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1611 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1607
1612
1608 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1613 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1609 for keymaps with a custom class that simplifies handling.
1614 for keymaps with a custom class that simplifies handling.
1610
1615
1611 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1616 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1612
1617
1613 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1618 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1614 resizing. This requires Python 2.5 to work.
1619 resizing. This requires Python 2.5 to work.
1615
1620
1616 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1621 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1617
1622
1618 * IPython/Extensions/ibrowse.py: Add two new commands to
1623 * IPython/Extensions/ibrowse.py: Add two new commands to
1619 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1624 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1620 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1625 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1621 attributes again. Remapped the help command to "?". Display
1626 attributes again. Remapped the help command to "?". Display
1622 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1627 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1623 as keys for the "home" and "end" commands. Add three new commands
1628 as keys for the "home" and "end" commands. Add three new commands
1624 to the input mode for "find" and friends: "delend" (CTRL-K)
1629 to the input mode for "find" and friends: "delend" (CTRL-K)
1625 deletes to the end of line. "incsearchup" searches upwards in the
1630 deletes to the end of line. "incsearchup" searches upwards in the
1626 command history for an input that starts with the text before the cursor.
1631 command history for an input that starts with the text before the cursor.
1627 "incsearchdown" does the same downwards. Removed a bogus mapping of
1632 "incsearchdown" does the same downwards. Removed a bogus mapping of
1628 the x key to "delete".
1633 the x key to "delete".
1629
1634
1630 2006-06-15 Ville Vainio <vivainio@gmail.com>
1635 2006-06-15 Ville Vainio <vivainio@gmail.com>
1631
1636
1632 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1637 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1633 used to create prompts dynamically, instead of the "old" way of
1638 used to create prompts dynamically, instead of the "old" way of
1634 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1639 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1635 way still works (it's invoked by the default hook), of course.
1640 way still works (it's invoked by the default hook), of course.
1636
1641
1637 * Prompts.py: added generate_output_prompt hook for altering output
1642 * Prompts.py: added generate_output_prompt hook for altering output
1638 prompt
1643 prompt
1639
1644
1640 * Release.py: Changed version string to 0.7.3.svn.
1645 * Release.py: Changed version string to 0.7.3.svn.
1641
1646
1642 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1647 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1643
1648
1644 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1649 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1645 the call to fetch() always tries to fetch enough data for at least one
1650 the call to fetch() always tries to fetch enough data for at least one
1646 full screen. This makes it possible to simply call moveto(0,0,True) in
1651 full screen. This makes it possible to simply call moveto(0,0,True) in
1647 the constructor. Fix typos and removed the obsolete goto attribute.
1652 the constructor. Fix typos and removed the obsolete goto attribute.
1648
1653
1649 2006-06-12 Ville Vainio <vivainio@gmail.com>
1654 2006-06-12 Ville Vainio <vivainio@gmail.com>
1650
1655
1651 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1656 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1652 allowing $variable interpolation within multiline statements,
1657 allowing $variable interpolation within multiline statements,
1653 though so far only with "sh" profile for a testing period.
1658 though so far only with "sh" profile for a testing period.
1654 The patch also enables splitting long commands with \ but it
1659 The patch also enables splitting long commands with \ but it
1655 doesn't work properly yet.
1660 doesn't work properly yet.
1656
1661
1657 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1662 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1658
1663
1659 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1664 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1660 input history and the position of the cursor in the input history for
1665 input history and the position of the cursor in the input history for
1661 the find, findbackwards and goto command.
1666 the find, findbackwards and goto command.
1662
1667
1663 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1668 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1664
1669
1665 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1670 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1666 implements the basic functionality of browser commands that require
1671 implements the basic functionality of browser commands that require
1667 input. Reimplement the goto, find and findbackwards commands as
1672 input. Reimplement the goto, find and findbackwards commands as
1668 subclasses of _CommandInput. Add an input history and keymaps to those
1673 subclasses of _CommandInput. Add an input history and keymaps to those
1669 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1674 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1670 execute commands.
1675 execute commands.
1671
1676
1672 2006-06-07 Ville Vainio <vivainio@gmail.com>
1677 2006-06-07 Ville Vainio <vivainio@gmail.com>
1673
1678
1674 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1679 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1675 running the batch files instead of leaving the session open.
1680 running the batch files instead of leaving the session open.
1676
1681
1677 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1682 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1678
1683
1679 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1684 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1680 the original fix was incomplete. Patch submitted by W. Maier.
1685 the original fix was incomplete. Patch submitted by W. Maier.
1681
1686
1682 2006-06-07 Ville Vainio <vivainio@gmail.com>
1687 2006-06-07 Ville Vainio <vivainio@gmail.com>
1683
1688
1684 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1689 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1685 Confirmation prompts can be supressed by 'quiet' option.
1690 Confirmation prompts can be supressed by 'quiet' option.
1686 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1691 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1687
1692
1688 2006-06-06 *** Released version 0.7.2
1693 2006-06-06 *** Released version 0.7.2
1689
1694
1690 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1695 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1691
1696
1692 * IPython/Release.py (version): Made 0.7.2 final for release.
1697 * IPython/Release.py (version): Made 0.7.2 final for release.
1693 Repo tagged and release cut.
1698 Repo tagged and release cut.
1694
1699
1695 2006-06-05 Ville Vainio <vivainio@gmail.com>
1700 2006-06-05 Ville Vainio <vivainio@gmail.com>
1696
1701
1697 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1702 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1698 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1703 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1699
1704
1700 * upgrade_dir.py: try import 'path' module a bit harder
1705 * upgrade_dir.py: try import 'path' module a bit harder
1701 (for %upgrade)
1706 (for %upgrade)
1702
1707
1703 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1708 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1704
1709
1705 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1710 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1706 instead of looping 20 times.
1711 instead of looping 20 times.
1707
1712
1708 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1713 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1709 correctly at initialization time. Bug reported by Krishna Mohan
1714 correctly at initialization time. Bug reported by Krishna Mohan
1710 Gundu <gkmohan-AT-gmail.com> on the user list.
1715 Gundu <gkmohan-AT-gmail.com> on the user list.
1711
1716
1712 * IPython/Release.py (version): Mark 0.7.2 version to start
1717 * IPython/Release.py (version): Mark 0.7.2 version to start
1713 testing for release on 06/06.
1718 testing for release on 06/06.
1714
1719
1715 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1720 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1716
1721
1717 * scripts/irunner: thin script interface so users don't have to
1722 * scripts/irunner: thin script interface so users don't have to
1718 find the module and call it as an executable, since modules rarely
1723 find the module and call it as an executable, since modules rarely
1719 live in people's PATH.
1724 live in people's PATH.
1720
1725
1721 * IPython/irunner.py (InteractiveRunner.__init__): added
1726 * IPython/irunner.py (InteractiveRunner.__init__): added
1722 delaybeforesend attribute to control delays with newer versions of
1727 delaybeforesend attribute to control delays with newer versions of
1723 pexpect. Thanks to detailed help from pexpect's author, Noah
1728 pexpect. Thanks to detailed help from pexpect's author, Noah
1724 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1729 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1725 correctly (it works in NoColor mode).
1730 correctly (it works in NoColor mode).
1726
1731
1727 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1732 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1728 SAGE list, from improper log() calls.
1733 SAGE list, from improper log() calls.
1729
1734
1730 2006-05-31 Ville Vainio <vivainio@gmail.com>
1735 2006-05-31 Ville Vainio <vivainio@gmail.com>
1731
1736
1732 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1737 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1733 with args in parens to work correctly with dirs that have spaces.
1738 with args in parens to work correctly with dirs that have spaces.
1734
1739
1735 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1740 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1736
1741
1737 * IPython/Logger.py (Logger.logstart): add option to log raw input
1742 * IPython/Logger.py (Logger.logstart): add option to log raw input
1738 instead of the processed one. A -r flag was added to the
1743 instead of the processed one. A -r flag was added to the
1739 %logstart magic used for controlling logging.
1744 %logstart magic used for controlling logging.
1740
1745
1741 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1746 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1742
1747
1743 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1748 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1744 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1749 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1745 recognize the option. After a bug report by Will Maier. This
1750 recognize the option. After a bug report by Will Maier. This
1746 closes #64 (will do it after confirmation from W. Maier).
1751 closes #64 (will do it after confirmation from W. Maier).
1747
1752
1748 * IPython/irunner.py: New module to run scripts as if manually
1753 * IPython/irunner.py: New module to run scripts as if manually
1749 typed into an interactive environment, based on pexpect. After a
1754 typed into an interactive environment, based on pexpect. After a
1750 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1755 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1751 ipython-user list. Simple unittests in the tests/ directory.
1756 ipython-user list. Simple unittests in the tests/ directory.
1752
1757
1753 * tools/release: add Will Maier, OpenBSD port maintainer, to
1758 * tools/release: add Will Maier, OpenBSD port maintainer, to
1754 recepients list. We are now officially part of the OpenBSD ports:
1759 recepients list. We are now officially part of the OpenBSD ports:
1755 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1760 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1756 work.
1761 work.
1757
1762
1758 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1763 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1759
1764
1760 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1765 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1761 so that it doesn't break tkinter apps.
1766 so that it doesn't break tkinter apps.
1762
1767
1763 * IPython/iplib.py (_prefilter): fix bug where aliases would
1768 * IPython/iplib.py (_prefilter): fix bug where aliases would
1764 shadow variables when autocall was fully off. Reported by SAGE
1769 shadow variables when autocall was fully off. Reported by SAGE
1765 author William Stein.
1770 author William Stein.
1766
1771
1767 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1772 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1768 at what detail level strings are computed when foo? is requested.
1773 at what detail level strings are computed when foo? is requested.
1769 This allows users to ask for example that the string form of an
1774 This allows users to ask for example that the string form of an
1770 object is only computed when foo?? is called, or even never, by
1775 object is only computed when foo?? is called, or even never, by
1771 setting the object_info_string_level >= 2 in the configuration
1776 setting the object_info_string_level >= 2 in the configuration
1772 file. This new option has been added and documented. After a
1777 file. This new option has been added and documented. After a
1773 request by SAGE to be able to control the printing of very large
1778 request by SAGE to be able to control the printing of very large
1774 objects more easily.
1779 objects more easily.
1775
1780
1776 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1781 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1777
1782
1778 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1783 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1779 from sys.argv, to be 100% consistent with how Python itself works
1784 from sys.argv, to be 100% consistent with how Python itself works
1780 (as seen for example with python -i file.py). After a bug report
1785 (as seen for example with python -i file.py). After a bug report
1781 by Jeffrey Collins.
1786 by Jeffrey Collins.
1782
1787
1783 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1788 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1784 nasty bug which was preventing custom namespaces with -pylab,
1789 nasty bug which was preventing custom namespaces with -pylab,
1785 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1790 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1786 compatibility (long gone from mpl).
1791 compatibility (long gone from mpl).
1787
1792
1788 * IPython/ipapi.py (make_session): name change: create->make. We
1793 * IPython/ipapi.py (make_session): name change: create->make. We
1789 use make in other places (ipmaker,...), it's shorter and easier to
1794 use make in other places (ipmaker,...), it's shorter and easier to
1790 type and say, etc. I'm trying to clean things before 0.7.2 so
1795 type and say, etc. I'm trying to clean things before 0.7.2 so
1791 that I can keep things stable wrt to ipapi in the chainsaw branch.
1796 that I can keep things stable wrt to ipapi in the chainsaw branch.
1792
1797
1793 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1798 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1794 python-mode recognizes our debugger mode. Add support for
1799 python-mode recognizes our debugger mode. Add support for
1795 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1800 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1796 <m.liu.jin-AT-gmail.com> originally written by
1801 <m.liu.jin-AT-gmail.com> originally written by
1797 doxgen-AT-newsmth.net (with minor modifications for xemacs
1802 doxgen-AT-newsmth.net (with minor modifications for xemacs
1798 compatibility)
1803 compatibility)
1799
1804
1800 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1805 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1801 tracebacks when walking the stack so that the stack tracking system
1806 tracebacks when walking the stack so that the stack tracking system
1802 in emacs' python-mode can identify the frames correctly.
1807 in emacs' python-mode can identify the frames correctly.
1803
1808
1804 * IPython/ipmaker.py (make_IPython): make the internal (and
1809 * IPython/ipmaker.py (make_IPython): make the internal (and
1805 default config) autoedit_syntax value false by default. Too many
1810 default config) autoedit_syntax value false by default. Too many
1806 users have complained to me (both on and off-list) about problems
1811 users have complained to me (both on and off-list) about problems
1807 with this option being on by default, so I'm making it default to
1812 with this option being on by default, so I'm making it default to
1808 off. It can still be enabled by anyone via the usual mechanisms.
1813 off. It can still be enabled by anyone via the usual mechanisms.
1809
1814
1810 * IPython/completer.py (Completer.attr_matches): add support for
1815 * IPython/completer.py (Completer.attr_matches): add support for
1811 PyCrust-style _getAttributeNames magic method. Patch contributed
1816 PyCrust-style _getAttributeNames magic method. Patch contributed
1812 by <mscott-AT-goldenspud.com>. Closes #50.
1817 by <mscott-AT-goldenspud.com>. Closes #50.
1813
1818
1814 * IPython/iplib.py (InteractiveShell.__init__): remove the
1819 * IPython/iplib.py (InteractiveShell.__init__): remove the
1815 deletion of exit/quit from __builtin__, which can break
1820 deletion of exit/quit from __builtin__, which can break
1816 third-party tools like the Zope debugging console. The
1821 third-party tools like the Zope debugging console. The
1817 %exit/%quit magics remain. In general, it's probably a good idea
1822 %exit/%quit magics remain. In general, it's probably a good idea
1818 not to delete anything from __builtin__, since we never know what
1823 not to delete anything from __builtin__, since we never know what
1819 that will break. In any case, python now (for 2.5) will support
1824 that will break. In any case, python now (for 2.5) will support
1820 'real' exit/quit, so this issue is moot. Closes #55.
1825 'real' exit/quit, so this issue is moot. Closes #55.
1821
1826
1822 * IPython/genutils.py (with_obj): rename the 'with' function to
1827 * IPython/genutils.py (with_obj): rename the 'with' function to
1823 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1828 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1824 becomes a language keyword. Closes #53.
1829 becomes a language keyword. Closes #53.
1825
1830
1826 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1831 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1827 __file__ attribute to this so it fools more things into thinking
1832 __file__ attribute to this so it fools more things into thinking
1828 it is a real module. Closes #59.
1833 it is a real module. Closes #59.
1829
1834
1830 * IPython/Magic.py (magic_edit): add -n option to open the editor
1835 * IPython/Magic.py (magic_edit): add -n option to open the editor
1831 at a specific line number. After a patch by Stefan van der Walt.
1836 at a specific line number. After a patch by Stefan van der Walt.
1832
1837
1833 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1838 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1834
1839
1835 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1840 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1836 reason the file could not be opened. After automatic crash
1841 reason the file could not be opened. After automatic crash
1837 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1842 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1838 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1843 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1839 (_should_recompile): Don't fire editor if using %bg, since there
1844 (_should_recompile): Don't fire editor if using %bg, since there
1840 is no file in the first place. From the same report as above.
1845 is no file in the first place. From the same report as above.
1841 (raw_input): protect against faulty third-party prefilters. After
1846 (raw_input): protect against faulty third-party prefilters. After
1842 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1847 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1843 while running under SAGE.
1848 while running under SAGE.
1844
1849
1845 2006-05-23 Ville Vainio <vivainio@gmail.com>
1850 2006-05-23 Ville Vainio <vivainio@gmail.com>
1846
1851
1847 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1852 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1848 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1853 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1849 now returns None (again), unless dummy is specifically allowed by
1854 now returns None (again), unless dummy is specifically allowed by
1850 ipapi.get(allow_dummy=True).
1855 ipapi.get(allow_dummy=True).
1851
1856
1852 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1857 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1853
1858
1854 * IPython: remove all 2.2-compatibility objects and hacks from
1859 * IPython: remove all 2.2-compatibility objects and hacks from
1855 everywhere, since we only support 2.3 at this point. Docs
1860 everywhere, since we only support 2.3 at this point. Docs
1856 updated.
1861 updated.
1857
1862
1858 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1863 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1859 Anything requiring extra validation can be turned into a Python
1864 Anything requiring extra validation can be turned into a Python
1860 property in the future. I used a property for the db one b/c
1865 property in the future. I used a property for the db one b/c
1861 there was a nasty circularity problem with the initialization
1866 there was a nasty circularity problem with the initialization
1862 order, which right now I don't have time to clean up.
1867 order, which right now I don't have time to clean up.
1863
1868
1864 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1869 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1865 another locking bug reported by Jorgen. I'm not 100% sure though,
1870 another locking bug reported by Jorgen. I'm not 100% sure though,
1866 so more testing is needed...
1871 so more testing is needed...
1867
1872
1868 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1873 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1869
1874
1870 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1875 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1871 local variables from any routine in user code (typically executed
1876 local variables from any routine in user code (typically executed
1872 with %run) directly into the interactive namespace. Very useful
1877 with %run) directly into the interactive namespace. Very useful
1873 when doing complex debugging.
1878 when doing complex debugging.
1874 (IPythonNotRunning): Changed the default None object to a dummy
1879 (IPythonNotRunning): Changed the default None object to a dummy
1875 whose attributes can be queried as well as called without
1880 whose attributes can be queried as well as called without
1876 exploding, to ease writing code which works transparently both in
1881 exploding, to ease writing code which works transparently both in
1877 and out of ipython and uses some of this API.
1882 and out of ipython and uses some of this API.
1878
1883
1879 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1884 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1880
1885
1881 * IPython/hooks.py (result_display): Fix the fact that our display
1886 * IPython/hooks.py (result_display): Fix the fact that our display
1882 hook was using str() instead of repr(), as the default python
1887 hook was using str() instead of repr(), as the default python
1883 console does. This had gone unnoticed b/c it only happened if
1888 console does. This had gone unnoticed b/c it only happened if
1884 %Pprint was off, but the inconsistency was there.
1889 %Pprint was off, but the inconsistency was there.
1885
1890
1886 2006-05-15 Ville Vainio <vivainio@gmail.com>
1891 2006-05-15 Ville Vainio <vivainio@gmail.com>
1887
1892
1888 * Oinspect.py: Only show docstring for nonexisting/binary files
1893 * Oinspect.py: Only show docstring for nonexisting/binary files
1889 when doing object??, closing ticket #62
1894 when doing object??, closing ticket #62
1890
1895
1891 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1896 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1892
1897
1893 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1898 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1894 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1899 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1895 was being released in a routine which hadn't checked if it had
1900 was being released in a routine which hadn't checked if it had
1896 been the one to acquire it.
1901 been the one to acquire it.
1897
1902
1898 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1903 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1899
1904
1900 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1905 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1901
1906
1902 2006-04-11 Ville Vainio <vivainio@gmail.com>
1907 2006-04-11 Ville Vainio <vivainio@gmail.com>
1903
1908
1904 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1909 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1905 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1910 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1906 prefilters, allowing stuff like magics and aliases in the file.
1911 prefilters, allowing stuff like magics and aliases in the file.
1907
1912
1908 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1913 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1909 added. Supported now are "%clear in" and "%clear out" (clear input and
1914 added. Supported now are "%clear in" and "%clear out" (clear input and
1910 output history, respectively). Also fixed CachedOutput.flush to
1915 output history, respectively). Also fixed CachedOutput.flush to
1911 properly flush the output cache.
1916 properly flush the output cache.
1912
1917
1913 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1918 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1914 half-success (and fail explicitly).
1919 half-success (and fail explicitly).
1915
1920
1916 2006-03-28 Ville Vainio <vivainio@gmail.com>
1921 2006-03-28 Ville Vainio <vivainio@gmail.com>
1917
1922
1918 * iplib.py: Fix quoting of aliases so that only argless ones
1923 * iplib.py: Fix quoting of aliases so that only argless ones
1919 are quoted
1924 are quoted
1920
1925
1921 2006-03-28 Ville Vainio <vivainio@gmail.com>
1926 2006-03-28 Ville Vainio <vivainio@gmail.com>
1922
1927
1923 * iplib.py: Quote aliases with spaces in the name.
1928 * iplib.py: Quote aliases with spaces in the name.
1924 "c:\program files\blah\bin" is now legal alias target.
1929 "c:\program files\blah\bin" is now legal alias target.
1925
1930
1926 * ext_rehashdir.py: Space no longer allowed as arg
1931 * ext_rehashdir.py: Space no longer allowed as arg
1927 separator, since space is legal in path names.
1932 separator, since space is legal in path names.
1928
1933
1929 2006-03-16 Ville Vainio <vivainio@gmail.com>
1934 2006-03-16 Ville Vainio <vivainio@gmail.com>
1930
1935
1931 * upgrade_dir.py: Take path.py from Extensions, correcting
1936 * upgrade_dir.py: Take path.py from Extensions, correcting
1932 %upgrade magic
1937 %upgrade magic
1933
1938
1934 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1939 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1935
1940
1936 * hooks.py: Only enclose editor binary in quotes if legal and
1941 * hooks.py: Only enclose editor binary in quotes if legal and
1937 necessary (space in the name, and is an existing file). Fixes a bug
1942 necessary (space in the name, and is an existing file). Fixes a bug
1938 reported by Zachary Pincus.
1943 reported by Zachary Pincus.
1939
1944
1940 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1945 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1941
1946
1942 * Manual: thanks to a tip on proper color handling for Emacs, by
1947 * Manual: thanks to a tip on proper color handling for Emacs, by
1943 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1948 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1944
1949
1945 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1950 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1946 by applying the provided patch. Thanks to Liu Jin
1951 by applying the provided patch. Thanks to Liu Jin
1947 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1952 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1948 XEmacs/Linux, I'm trusting the submitter that it actually helps
1953 XEmacs/Linux, I'm trusting the submitter that it actually helps
1949 under win32/GNU Emacs. Will revisit if any problems are reported.
1954 under win32/GNU Emacs. Will revisit if any problems are reported.
1950
1955
1951 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1956 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1952
1957
1953 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1958 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1954 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1959 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1955
1960
1956 2006-03-12 Ville Vainio <vivainio@gmail.com>
1961 2006-03-12 Ville Vainio <vivainio@gmail.com>
1957
1962
1958 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1963 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1959 Torsten Marek.
1964 Torsten Marek.
1960
1965
1961 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1966 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1962
1967
1963 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1968 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1964 line ranges works again.
1969 line ranges works again.
1965
1970
1966 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1971 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1967
1972
1968 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1973 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1969 and friends, after a discussion with Zach Pincus on ipython-user.
1974 and friends, after a discussion with Zach Pincus on ipython-user.
1970 I'm not 100% sure, but after thinking about it quite a bit, it may
1975 I'm not 100% sure, but after thinking about it quite a bit, it may
1971 be OK. Testing with the multithreaded shells didn't reveal any
1976 be OK. Testing with the multithreaded shells didn't reveal any
1972 problems, but let's keep an eye out.
1977 problems, but let's keep an eye out.
1973
1978
1974 In the process, I fixed a few things which were calling
1979 In the process, I fixed a few things which were calling
1975 self.InteractiveTB() directly (like safe_execfile), which is a
1980 self.InteractiveTB() directly (like safe_execfile), which is a
1976 mistake: ALL exception reporting should be done by calling
1981 mistake: ALL exception reporting should be done by calling
1977 self.showtraceback(), which handles state and tab-completion and
1982 self.showtraceback(), which handles state and tab-completion and
1978 more.
1983 more.
1979
1984
1980 2006-03-01 Ville Vainio <vivainio@gmail.com>
1985 2006-03-01 Ville Vainio <vivainio@gmail.com>
1981
1986
1982 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1987 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1983 To use, do "from ipipe import *".
1988 To use, do "from ipipe import *".
1984
1989
1985 2006-02-24 Ville Vainio <vivainio@gmail.com>
1990 2006-02-24 Ville Vainio <vivainio@gmail.com>
1986
1991
1987 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1992 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1988 "cleanly" and safely than the older upgrade mechanism.
1993 "cleanly" and safely than the older upgrade mechanism.
1989
1994
1990 2006-02-21 Ville Vainio <vivainio@gmail.com>
1995 2006-02-21 Ville Vainio <vivainio@gmail.com>
1991
1996
1992 * Magic.py: %save works again.
1997 * Magic.py: %save works again.
1993
1998
1994 2006-02-15 Ville Vainio <vivainio@gmail.com>
1999 2006-02-15 Ville Vainio <vivainio@gmail.com>
1995
2000
1996 * Magic.py: %Pprint works again
2001 * Magic.py: %Pprint works again
1997
2002
1998 * Extensions/ipy_sane_defaults.py: Provide everything provided
2003 * Extensions/ipy_sane_defaults.py: Provide everything provided
1999 in default ipythonrc, to make it possible to have a completely empty
2004 in default ipythonrc, to make it possible to have a completely empty
2000 ipythonrc (and thus completely rc-file free configuration)
2005 ipythonrc (and thus completely rc-file free configuration)
2001
2006
2002 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
2007 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
2003
2008
2004 * IPython/hooks.py (editor): quote the call to the editor command,
2009 * IPython/hooks.py (editor): quote the call to the editor command,
2005 to allow commands with spaces in them. Problem noted by watching
2010 to allow commands with spaces in them. Problem noted by watching
2006 Ian Oswald's video about textpad under win32 at
2011 Ian Oswald's video about textpad under win32 at
2007 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
2012 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
2008
2013
2009 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
2014 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
2010 describing magics (we haven't used @ for a loong time).
2015 describing magics (we haven't used @ for a loong time).
2011
2016
2012 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
2017 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
2013 contributed by marienz to close
2018 contributed by marienz to close
2014 http://www.scipy.net/roundup/ipython/issue53.
2019 http://www.scipy.net/roundup/ipython/issue53.
2015
2020
2016 2006-02-10 Ville Vainio <vivainio@gmail.com>
2021 2006-02-10 Ville Vainio <vivainio@gmail.com>
2017
2022
2018 * genutils.py: getoutput now works in win32 too
2023 * genutils.py: getoutput now works in win32 too
2019
2024
2020 * completer.py: alias and magic completion only invoked
2025 * completer.py: alias and magic completion only invoked
2021 at the first "item" in the line, to avoid "cd %store"
2026 at the first "item" in the line, to avoid "cd %store"
2022 nonsense.
2027 nonsense.
2023
2028
2024 2006-02-09 Ville Vainio <vivainio@gmail.com>
2029 2006-02-09 Ville Vainio <vivainio@gmail.com>
2025
2030
2026 * test/*: Added a unit testing framework (finally).
2031 * test/*: Added a unit testing framework (finally).
2027 '%run runtests.py' to run test_*.
2032 '%run runtests.py' to run test_*.
2028
2033
2029 * ipapi.py: Exposed runlines and set_custom_exc
2034 * ipapi.py: Exposed runlines and set_custom_exc
2030
2035
2031 2006-02-07 Ville Vainio <vivainio@gmail.com>
2036 2006-02-07 Ville Vainio <vivainio@gmail.com>
2032
2037
2033 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
2038 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
2034 instead use "f(1 2)" as before.
2039 instead use "f(1 2)" as before.
2035
2040
2036 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
2041 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
2037
2042
2038 * IPython/demo.py (IPythonDemo): Add new classes to the demo
2043 * IPython/demo.py (IPythonDemo): Add new classes to the demo
2039 facilities, for demos processed by the IPython input filter
2044 facilities, for demos processed by the IPython input filter
2040 (IPythonDemo), and for running a script one-line-at-a-time as a
2045 (IPythonDemo), and for running a script one-line-at-a-time as a
2041 demo, both for pure Python (LineDemo) and for IPython-processed
2046 demo, both for pure Python (LineDemo) and for IPython-processed
2042 input (IPythonLineDemo). After a request by Dave Kohel, from the
2047 input (IPythonLineDemo). After a request by Dave Kohel, from the
2043 SAGE team.
2048 SAGE team.
2044 (Demo.edit): added an edit() method to the demo objects, to edit
2049 (Demo.edit): added an edit() method to the demo objects, to edit
2045 the in-memory copy of the last executed block.
2050 the in-memory copy of the last executed block.
2046
2051
2047 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
2052 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
2048 processing to %edit, %macro and %save. These commands can now be
2053 processing to %edit, %macro and %save. These commands can now be
2049 invoked on the unprocessed input as it was typed by the user
2054 invoked on the unprocessed input as it was typed by the user
2050 (without any prefilters applied). After requests by the SAGE team
2055 (without any prefilters applied). After requests by the SAGE team
2051 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
2056 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
2052
2057
2053 2006-02-01 Ville Vainio <vivainio@gmail.com>
2058 2006-02-01 Ville Vainio <vivainio@gmail.com>
2054
2059
2055 * setup.py, eggsetup.py: easy_install ipython==dev works
2060 * setup.py, eggsetup.py: easy_install ipython==dev works
2056 correctly now (on Linux)
2061 correctly now (on Linux)
2057
2062
2058 * ipy_user_conf,ipmaker: user config changes, removed spurious
2063 * ipy_user_conf,ipmaker: user config changes, removed spurious
2059 warnings
2064 warnings
2060
2065
2061 * iplib: if rc.banner is string, use it as is.
2066 * iplib: if rc.banner is string, use it as is.
2062
2067
2063 * Magic: %pycat accepts a string argument and pages it's contents.
2068 * Magic: %pycat accepts a string argument and pages it's contents.
2064
2069
2065
2070
2066 2006-01-30 Ville Vainio <vivainio@gmail.com>
2071 2006-01-30 Ville Vainio <vivainio@gmail.com>
2067
2072
2068 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
2073 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
2069 Now %store and bookmarks work through PickleShare, meaning that
2074 Now %store and bookmarks work through PickleShare, meaning that
2070 concurrent access is possible and all ipython sessions see the
2075 concurrent access is possible and all ipython sessions see the
2071 same database situation all the time, instead of snapshot of
2076 same database situation all the time, instead of snapshot of
2072 the situation when the session was started. Hence, %bookmark
2077 the situation when the session was started. Hence, %bookmark
2073 results are immediately accessible from othes sessions. The database
2078 results are immediately accessible from othes sessions. The database
2074 is also available for use by user extensions. See:
2079 is also available for use by user extensions. See:
2075 http://www.python.org/pypi/pickleshare
2080 http://www.python.org/pypi/pickleshare
2076
2081
2077 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
2082 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
2078
2083
2079 * aliases can now be %store'd
2084 * aliases can now be %store'd
2080
2085
2081 * path.py moved to Extensions so that pickleshare does not need
2086 * path.py moved to Extensions so that pickleshare does not need
2082 IPython-specific import. Extensions added to pythonpath right
2087 IPython-specific import. Extensions added to pythonpath right
2083 at __init__.
2088 at __init__.
2084
2089
2085 * iplib.py: ipalias deprecated/redundant; aliases are converted and
2090 * iplib.py: ipalias deprecated/redundant; aliases are converted and
2086 called with _ip.system and the pre-transformed command string.
2091 called with _ip.system and the pre-transformed command string.
2087
2092
2088 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
2093 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
2089
2094
2090 * IPython/iplib.py (interact): Fix that we were not catching
2095 * IPython/iplib.py (interact): Fix that we were not catching
2091 KeyboardInterrupt exceptions properly. I'm not quite sure why the
2096 KeyboardInterrupt exceptions properly. I'm not quite sure why the
2092 logic here had to change, but it's fixed now.
2097 logic here had to change, but it's fixed now.
2093
2098
2094 2006-01-29 Ville Vainio <vivainio@gmail.com>
2099 2006-01-29 Ville Vainio <vivainio@gmail.com>
2095
2100
2096 * iplib.py: Try to import pyreadline on Windows.
2101 * iplib.py: Try to import pyreadline on Windows.
2097
2102
2098 2006-01-27 Ville Vainio <vivainio@gmail.com>
2103 2006-01-27 Ville Vainio <vivainio@gmail.com>
2099
2104
2100 * iplib.py: Expose ipapi as _ip in builtin namespace.
2105 * iplib.py: Expose ipapi as _ip in builtin namespace.
2101 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
2106 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
2102 and ip_set_hook (-> _ip.set_hook) redundant. % and !
2107 and ip_set_hook (-> _ip.set_hook) redundant. % and !
2103 syntax now produce _ip.* variant of the commands.
2108 syntax now produce _ip.* variant of the commands.
2104
2109
2105 * "_ip.options().autoedit_syntax = 2" automatically throws
2110 * "_ip.options().autoedit_syntax = 2" automatically throws
2106 user to editor for syntax error correction without prompting.
2111 user to editor for syntax error correction without prompting.
2107
2112
2108 2006-01-27 Ville Vainio <vivainio@gmail.com>
2113 2006-01-27 Ville Vainio <vivainio@gmail.com>
2109
2114
2110 * ipmaker.py: Give "realistic" sys.argv for scripts (without
2115 * ipmaker.py: Give "realistic" sys.argv for scripts (without
2111 'ipython' at argv[0]) executed through command line.
2116 'ipython' at argv[0]) executed through command line.
2112 NOTE: this DEPRECATES calling ipython with multiple scripts
2117 NOTE: this DEPRECATES calling ipython with multiple scripts
2113 ("ipython a.py b.py c.py")
2118 ("ipython a.py b.py c.py")
2114
2119
2115 * iplib.py, hooks.py: Added configurable input prefilter,
2120 * iplib.py, hooks.py: Added configurable input prefilter,
2116 named 'input_prefilter'. See ext_rescapture.py for example
2121 named 'input_prefilter'. See ext_rescapture.py for example
2117 usage.
2122 usage.
2118
2123
2119 * ext_rescapture.py, Magic.py: Better system command output capture
2124 * ext_rescapture.py, Magic.py: Better system command output capture
2120 through 'var = !ls' (deprecates user-visible %sc). Same notation
2125 through 'var = !ls' (deprecates user-visible %sc). Same notation
2121 applies for magics, 'var = %alias' assigns alias list to var.
2126 applies for magics, 'var = %alias' assigns alias list to var.
2122
2127
2123 * ipapi.py: added meta() for accessing extension-usable data store.
2128 * ipapi.py: added meta() for accessing extension-usable data store.
2124
2129
2125 * iplib.py: added InteractiveShell.getapi(). New magics should be
2130 * iplib.py: added InteractiveShell.getapi(). New magics should be
2126 written doing self.getapi() instead of using the shell directly.
2131 written doing self.getapi() instead of using the shell directly.
2127
2132
2128 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
2133 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
2129 %store foo >> ~/myfoo.txt to store variables to files (in clean
2134 %store foo >> ~/myfoo.txt to store variables to files (in clean
2130 textual form, not a restorable pickle).
2135 textual form, not a restorable pickle).
2131
2136
2132 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
2137 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
2133
2138
2134 * usage.py, Magic.py: added %quickref
2139 * usage.py, Magic.py: added %quickref
2135
2140
2136 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
2141 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
2137
2142
2138 * GetoptErrors when invoking magics etc. with wrong args
2143 * GetoptErrors when invoking magics etc. with wrong args
2139 are now more helpful:
2144 are now more helpful:
2140 GetoptError: option -l not recognized (allowed: "qb" )
2145 GetoptError: option -l not recognized (allowed: "qb" )
2141
2146
2142 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
2147 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
2143
2148
2144 * IPython/demo.py (Demo.show): Flush stdout after each block, so
2149 * IPython/demo.py (Demo.show): Flush stdout after each block, so
2145 computationally intensive blocks don't appear to stall the demo.
2150 computationally intensive blocks don't appear to stall the demo.
2146
2151
2147 2006-01-24 Ville Vainio <vivainio@gmail.com>
2152 2006-01-24 Ville Vainio <vivainio@gmail.com>
2148
2153
2149 * iplib.py, hooks.py: 'result_display' hook can return a non-None
2154 * iplib.py, hooks.py: 'result_display' hook can return a non-None
2150 value to manipulate resulting history entry.
2155 value to manipulate resulting history entry.
2151
2156
2152 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
2157 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
2153 to instance methods of IPApi class, to make extending an embedded
2158 to instance methods of IPApi class, to make extending an embedded
2154 IPython feasible. See ext_rehashdir.py for example usage.
2159 IPython feasible. See ext_rehashdir.py for example usage.
2155
2160
2156 * Merged 1071-1076 from branches/0.7.1
2161 * Merged 1071-1076 from branches/0.7.1
2157
2162
2158
2163
2159 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2164 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2160
2165
2161 * tools/release (daystamp): Fix build tools to use the new
2166 * tools/release (daystamp): Fix build tools to use the new
2162 eggsetup.py script to build lightweight eggs.
2167 eggsetup.py script to build lightweight eggs.
2163
2168
2164 * Applied changesets 1062 and 1064 before 0.7.1 release.
2169 * Applied changesets 1062 and 1064 before 0.7.1 release.
2165
2170
2166 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2171 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2167 see the raw input history (without conversions like %ls ->
2172 see the raw input history (without conversions like %ls ->
2168 ipmagic("ls")). After a request from W. Stein, SAGE
2173 ipmagic("ls")). After a request from W. Stein, SAGE
2169 (http://modular.ucsd.edu/sage) developer. This information is
2174 (http://modular.ucsd.edu/sage) developer. This information is
2170 stored in the input_hist_raw attribute of the IPython instance, so
2175 stored in the input_hist_raw attribute of the IPython instance, so
2171 developers can access it if needed (it's an InputList instance).
2176 developers can access it if needed (it's an InputList instance).
2172
2177
2173 * Versionstring = 0.7.2.svn
2178 * Versionstring = 0.7.2.svn
2174
2179
2175 * eggsetup.py: A separate script for constructing eggs, creates
2180 * eggsetup.py: A separate script for constructing eggs, creates
2176 proper launch scripts even on Windows (an .exe file in
2181 proper launch scripts even on Windows (an .exe file in
2177 \python24\scripts).
2182 \python24\scripts).
2178
2183
2179 * ipapi.py: launch_new_instance, launch entry point needed for the
2184 * ipapi.py: launch_new_instance, launch entry point needed for the
2180 egg.
2185 egg.
2181
2186
2182 2006-01-23 Ville Vainio <vivainio@gmail.com>
2187 2006-01-23 Ville Vainio <vivainio@gmail.com>
2183
2188
2184 * Added %cpaste magic for pasting python code
2189 * Added %cpaste magic for pasting python code
2185
2190
2186 2006-01-22 Ville Vainio <vivainio@gmail.com>
2191 2006-01-22 Ville Vainio <vivainio@gmail.com>
2187
2192
2188 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2193 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2189
2194
2190 * Versionstring = 0.7.2.svn
2195 * Versionstring = 0.7.2.svn
2191
2196
2192 * eggsetup.py: A separate script for constructing eggs, creates
2197 * eggsetup.py: A separate script for constructing eggs, creates
2193 proper launch scripts even on Windows (an .exe file in
2198 proper launch scripts even on Windows (an .exe file in
2194 \python24\scripts).
2199 \python24\scripts).
2195
2200
2196 * ipapi.py: launch_new_instance, launch entry point needed for the
2201 * ipapi.py: launch_new_instance, launch entry point needed for the
2197 egg.
2202 egg.
2198
2203
2199 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2204 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2200
2205
2201 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2206 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2202 %pfile foo would print the file for foo even if it was a binary.
2207 %pfile foo would print the file for foo even if it was a binary.
2203 Now, extensions '.so' and '.dll' are skipped.
2208 Now, extensions '.so' and '.dll' are skipped.
2204
2209
2205 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2210 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2206 bug, where macros would fail in all threaded modes. I'm not 100%
2211 bug, where macros would fail in all threaded modes. I'm not 100%
2207 sure, so I'm going to put out an rc instead of making a release
2212 sure, so I'm going to put out an rc instead of making a release
2208 today, and wait for feedback for at least a few days.
2213 today, and wait for feedback for at least a few days.
2209
2214
2210 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2215 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2211 it...) the handling of pasting external code with autoindent on.
2216 it...) the handling of pasting external code with autoindent on.
2212 To get out of a multiline input, the rule will appear for most
2217 To get out of a multiline input, the rule will appear for most
2213 users unchanged: two blank lines or change the indent level
2218 users unchanged: two blank lines or change the indent level
2214 proposed by IPython. But there is a twist now: you can
2219 proposed by IPython. But there is a twist now: you can
2215 add/subtract only *one or two spaces*. If you add/subtract three
2220 add/subtract only *one or two spaces*. If you add/subtract three
2216 or more (unless you completely delete the line), IPython will
2221 or more (unless you completely delete the line), IPython will
2217 accept that line, and you'll need to enter a second one of pure
2222 accept that line, and you'll need to enter a second one of pure
2218 whitespace. I know it sounds complicated, but I can't find a
2223 whitespace. I know it sounds complicated, but I can't find a
2219 different solution that covers all the cases, with the right
2224 different solution that covers all the cases, with the right
2220 heuristics. Hopefully in actual use, nobody will really notice
2225 heuristics. Hopefully in actual use, nobody will really notice
2221 all these strange rules and things will 'just work'.
2226 all these strange rules and things will 'just work'.
2222
2227
2223 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2228 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2224
2229
2225 * IPython/iplib.py (interact): catch exceptions which can be
2230 * IPython/iplib.py (interact): catch exceptions which can be
2226 triggered asynchronously by signal handlers. Thanks to an
2231 triggered asynchronously by signal handlers. Thanks to an
2227 automatic crash report, submitted by Colin Kingsley
2232 automatic crash report, submitted by Colin Kingsley
2228 <tercel-AT-gentoo.org>.
2233 <tercel-AT-gentoo.org>.
2229
2234
2230 2006-01-20 Ville Vainio <vivainio@gmail.com>
2235 2006-01-20 Ville Vainio <vivainio@gmail.com>
2231
2236
2232 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2237 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2233 (%rehashdir, very useful, try it out) of how to extend ipython
2238 (%rehashdir, very useful, try it out) of how to extend ipython
2234 with new magics. Also added Extensions dir to pythonpath to make
2239 with new magics. Also added Extensions dir to pythonpath to make
2235 importing extensions easy.
2240 importing extensions easy.
2236
2241
2237 * %store now complains when trying to store interactively declared
2242 * %store now complains when trying to store interactively declared
2238 classes / instances of those classes.
2243 classes / instances of those classes.
2239
2244
2240 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2245 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2241 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2246 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2242 if they exist, and ipy_user_conf.py with some defaults is created for
2247 if they exist, and ipy_user_conf.py with some defaults is created for
2243 the user.
2248 the user.
2244
2249
2245 * Startup rehashing done by the config file, not InterpreterExec.
2250 * Startup rehashing done by the config file, not InterpreterExec.
2246 This means system commands are available even without selecting the
2251 This means system commands are available even without selecting the
2247 pysh profile. It's the sensible default after all.
2252 pysh profile. It's the sensible default after all.
2248
2253
2249 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2254 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2250
2255
2251 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2256 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2252 multiline code with autoindent on working. But I am really not
2257 multiline code with autoindent on working. But I am really not
2253 sure, so this needs more testing. Will commit a debug-enabled
2258 sure, so this needs more testing. Will commit a debug-enabled
2254 version for now, while I test it some more, so that Ville and
2259 version for now, while I test it some more, so that Ville and
2255 others may also catch any problems. Also made
2260 others may also catch any problems. Also made
2256 self.indent_current_str() a method, to ensure that there's no
2261 self.indent_current_str() a method, to ensure that there's no
2257 chance of the indent space count and the corresponding string
2262 chance of the indent space count and the corresponding string
2258 falling out of sync. All code needing the string should just call
2263 falling out of sync. All code needing the string should just call
2259 the method.
2264 the method.
2260
2265
2261 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2266 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2262
2267
2263 * IPython/Magic.py (magic_edit): fix check for when users don't
2268 * IPython/Magic.py (magic_edit): fix check for when users don't
2264 save their output files, the try/except was in the wrong section.
2269 save their output files, the try/except was in the wrong section.
2265
2270
2266 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2271 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2267
2272
2268 * IPython/Magic.py (magic_run): fix __file__ global missing from
2273 * IPython/Magic.py (magic_run): fix __file__ global missing from
2269 script's namespace when executed via %run. After a report by
2274 script's namespace when executed via %run. After a report by
2270 Vivian.
2275 Vivian.
2271
2276
2272 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2277 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2273 when using python 2.4. The parent constructor changed in 2.4, and
2278 when using python 2.4. The parent constructor changed in 2.4, and
2274 we need to track it directly (we can't call it, as it messes up
2279 we need to track it directly (we can't call it, as it messes up
2275 readline and tab-completion inside our pdb would stop working).
2280 readline and tab-completion inside our pdb would stop working).
2276 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2281 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2277
2282
2278 2006-01-16 Ville Vainio <vivainio@gmail.com>
2283 2006-01-16 Ville Vainio <vivainio@gmail.com>
2279
2284
2280 * Ipython/magic.py: Reverted back to old %edit functionality
2285 * Ipython/magic.py: Reverted back to old %edit functionality
2281 that returns file contents on exit.
2286 that returns file contents on exit.
2282
2287
2283 * IPython/path.py: Added Jason Orendorff's "path" module to
2288 * IPython/path.py: Added Jason Orendorff's "path" module to
2284 IPython tree, http://www.jorendorff.com/articles/python/path/.
2289 IPython tree, http://www.jorendorff.com/articles/python/path/.
2285 You can get path objects conveniently through %sc, and !!, e.g.:
2290 You can get path objects conveniently through %sc, and !!, e.g.:
2286 sc files=ls
2291 sc files=ls
2287 for p in files.paths: # or files.p
2292 for p in files.paths: # or files.p
2288 print p,p.mtime
2293 print p,p.mtime
2289
2294
2290 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2295 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2291 now work again without considering the exclusion regexp -
2296 now work again without considering the exclusion regexp -
2292 hence, things like ',foo my/path' turn to 'foo("my/path")'
2297 hence, things like ',foo my/path' turn to 'foo("my/path")'
2293 instead of syntax error.
2298 instead of syntax error.
2294
2299
2295
2300
2296 2006-01-14 Ville Vainio <vivainio@gmail.com>
2301 2006-01-14 Ville Vainio <vivainio@gmail.com>
2297
2302
2298 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2303 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2299 ipapi decorators for python 2.4 users, options() provides access to rc
2304 ipapi decorators for python 2.4 users, options() provides access to rc
2300 data.
2305 data.
2301
2306
2302 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2307 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2303 as path separators (even on Linux ;-). Space character after
2308 as path separators (even on Linux ;-). Space character after
2304 backslash (as yielded by tab completer) is still space;
2309 backslash (as yielded by tab completer) is still space;
2305 "%cd long\ name" works as expected.
2310 "%cd long\ name" works as expected.
2306
2311
2307 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2312 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2308 as "chain of command", with priority. API stays the same,
2313 as "chain of command", with priority. API stays the same,
2309 TryNext exception raised by a hook function signals that
2314 TryNext exception raised by a hook function signals that
2310 current hook failed and next hook should try handling it, as
2315 current hook failed and next hook should try handling it, as
2311 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2316 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2312 requested configurable display hook, which is now implemented.
2317 requested configurable display hook, which is now implemented.
2313
2318
2314 2006-01-13 Ville Vainio <vivainio@gmail.com>
2319 2006-01-13 Ville Vainio <vivainio@gmail.com>
2315
2320
2316 * IPython/platutils*.py: platform specific utility functions,
2321 * IPython/platutils*.py: platform specific utility functions,
2317 so far only set_term_title is implemented (change terminal
2322 so far only set_term_title is implemented (change terminal
2318 label in windowing systems). %cd now changes the title to
2323 label in windowing systems). %cd now changes the title to
2319 current dir.
2324 current dir.
2320
2325
2321 * IPython/Release.py: Added myself to "authors" list,
2326 * IPython/Release.py: Added myself to "authors" list,
2322 had to create new files.
2327 had to create new files.
2323
2328
2324 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2329 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2325 shell escape; not a known bug but had potential to be one in the
2330 shell escape; not a known bug but had potential to be one in the
2326 future.
2331 future.
2327
2332
2328 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2333 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2329 extension API for IPython! See the module for usage example. Fix
2334 extension API for IPython! See the module for usage example. Fix
2330 OInspect for docstring-less magic functions.
2335 OInspect for docstring-less magic functions.
2331
2336
2332
2337
2333 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2338 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2334
2339
2335 * IPython/iplib.py (raw_input): temporarily deactivate all
2340 * IPython/iplib.py (raw_input): temporarily deactivate all
2336 attempts at allowing pasting of code with autoindent on. It
2341 attempts at allowing pasting of code with autoindent on. It
2337 introduced bugs (reported by Prabhu) and I can't seem to find a
2342 introduced bugs (reported by Prabhu) and I can't seem to find a
2338 robust combination which works in all cases. Will have to revisit
2343 robust combination which works in all cases. Will have to revisit
2339 later.
2344 later.
2340
2345
2341 * IPython/genutils.py: remove isspace() function. We've dropped
2346 * IPython/genutils.py: remove isspace() function. We've dropped
2342 2.2 compatibility, so it's OK to use the string method.
2347 2.2 compatibility, so it's OK to use the string method.
2343
2348
2344 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2349 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2345
2350
2346 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2351 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2347 matching what NOT to autocall on, to include all python binary
2352 matching what NOT to autocall on, to include all python binary
2348 operators (including things like 'and', 'or', 'is' and 'in').
2353 operators (including things like 'and', 'or', 'is' and 'in').
2349 Prompted by a bug report on 'foo & bar', but I realized we had
2354 Prompted by a bug report on 'foo & bar', but I realized we had
2350 many more potential bug cases with other operators. The regexp is
2355 many more potential bug cases with other operators. The regexp is
2351 self.re_exclude_auto, it's fairly commented.
2356 self.re_exclude_auto, it's fairly commented.
2352
2357
2353 2006-01-12 Ville Vainio <vivainio@gmail.com>
2358 2006-01-12 Ville Vainio <vivainio@gmail.com>
2354
2359
2355 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2360 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2356 Prettified and hardened string/backslash quoting with ipsystem(),
2361 Prettified and hardened string/backslash quoting with ipsystem(),
2357 ipalias() and ipmagic(). Now even \ characters are passed to
2362 ipalias() and ipmagic(). Now even \ characters are passed to
2358 %magics, !shell escapes and aliases exactly as they are in the
2363 %magics, !shell escapes and aliases exactly as they are in the
2359 ipython command line. Should improve backslash experience,
2364 ipython command line. Should improve backslash experience,
2360 particularly in Windows (path delimiter for some commands that
2365 particularly in Windows (path delimiter for some commands that
2361 won't understand '/'), but Unix benefits as well (regexps). %cd
2366 won't understand '/'), but Unix benefits as well (regexps). %cd
2362 magic still doesn't support backslash path delimiters, though. Also
2367 magic still doesn't support backslash path delimiters, though. Also
2363 deleted all pretense of supporting multiline command strings in
2368 deleted all pretense of supporting multiline command strings in
2364 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2369 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2365
2370
2366 * doc/build_doc_instructions.txt added. Documentation on how to
2371 * doc/build_doc_instructions.txt added. Documentation on how to
2367 use doc/update_manual.py, added yesterday. Both files contributed
2372 use doc/update_manual.py, added yesterday. Both files contributed
2368 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2373 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2369 doc/*.sh for deprecation at a later date.
2374 doc/*.sh for deprecation at a later date.
2370
2375
2371 * /ipython.py Added ipython.py to root directory for
2376 * /ipython.py Added ipython.py to root directory for
2372 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2377 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2373 ipython.py) and development convenience (no need to keep doing
2378 ipython.py) and development convenience (no need to keep doing
2374 "setup.py install" between changes).
2379 "setup.py install" between changes).
2375
2380
2376 * Made ! and !! shell escapes work (again) in multiline expressions:
2381 * Made ! and !! shell escapes work (again) in multiline expressions:
2377 if 1:
2382 if 1:
2378 !ls
2383 !ls
2379 !!ls
2384 !!ls
2380
2385
2381 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2386 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2382
2387
2383 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2388 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2384 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2389 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2385 module in case-insensitive installation. Was causing crashes
2390 module in case-insensitive installation. Was causing crashes
2386 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2391 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2387
2392
2388 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2393 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2389 <marienz-AT-gentoo.org>, closes
2394 <marienz-AT-gentoo.org>, closes
2390 http://www.scipy.net/roundup/ipython/issue51.
2395 http://www.scipy.net/roundup/ipython/issue51.
2391
2396
2392 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2397 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2393
2398
2394 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2399 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2395 problem of excessive CPU usage under *nix and keyboard lag under
2400 problem of excessive CPU usage under *nix and keyboard lag under
2396 win32.
2401 win32.
2397
2402
2398 2006-01-10 *** Released version 0.7.0
2403 2006-01-10 *** Released version 0.7.0
2399
2404
2400 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2405 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2401
2406
2402 * IPython/Release.py (revision): tag version number to 0.7.0,
2407 * IPython/Release.py (revision): tag version number to 0.7.0,
2403 ready for release.
2408 ready for release.
2404
2409
2405 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2410 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2406 it informs the user of the name of the temp. file used. This can
2411 it informs the user of the name of the temp. file used. This can
2407 help if you decide later to reuse that same file, so you know
2412 help if you decide later to reuse that same file, so you know
2408 where to copy the info from.
2413 where to copy the info from.
2409
2414
2410 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2415 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2411
2416
2412 * setup_bdist_egg.py: little script to build an egg. Added
2417 * setup_bdist_egg.py: little script to build an egg. Added
2413 support in the release tools as well.
2418 support in the release tools as well.
2414
2419
2415 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2420 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2416
2421
2417 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2422 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2418 version selection (new -wxversion command line and ipythonrc
2423 version selection (new -wxversion command line and ipythonrc
2419 parameter). Patch contributed by Arnd Baecker
2424 parameter). Patch contributed by Arnd Baecker
2420 <arnd.baecker-AT-web.de>.
2425 <arnd.baecker-AT-web.de>.
2421
2426
2422 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2427 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2423 embedded instances, for variables defined at the interactive
2428 embedded instances, for variables defined at the interactive
2424 prompt of the embedded ipython. Reported by Arnd.
2429 prompt of the embedded ipython. Reported by Arnd.
2425
2430
2426 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2431 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2427 it can be used as a (stateful) toggle, or with a direct parameter.
2432 it can be used as a (stateful) toggle, or with a direct parameter.
2428
2433
2429 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2434 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2430 could be triggered in certain cases and cause the traceback
2435 could be triggered in certain cases and cause the traceback
2431 printer not to work.
2436 printer not to work.
2432
2437
2433 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2438 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2434
2439
2435 * IPython/iplib.py (_should_recompile): Small fix, closes
2440 * IPython/iplib.py (_should_recompile): Small fix, closes
2436 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2441 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2437
2442
2438 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2443 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2439
2444
2440 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2445 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2441 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2446 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2442 Moad for help with tracking it down.
2447 Moad for help with tracking it down.
2443
2448
2444 * IPython/iplib.py (handle_auto): fix autocall handling for
2449 * IPython/iplib.py (handle_auto): fix autocall handling for
2445 objects which support BOTH __getitem__ and __call__ (so that f [x]
2450 objects which support BOTH __getitem__ and __call__ (so that f [x]
2446 is left alone, instead of becoming f([x]) automatically).
2451 is left alone, instead of becoming f([x]) automatically).
2447
2452
2448 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2453 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2449 Ville's patch.
2454 Ville's patch.
2450
2455
2451 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2456 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2452
2457
2453 * IPython/iplib.py (handle_auto): changed autocall semantics to
2458 * IPython/iplib.py (handle_auto): changed autocall semantics to
2454 include 'smart' mode, where the autocall transformation is NOT
2459 include 'smart' mode, where the autocall transformation is NOT
2455 applied if there are no arguments on the line. This allows you to
2460 applied if there are no arguments on the line. This allows you to
2456 just type 'foo' if foo is a callable to see its internal form,
2461 just type 'foo' if foo is a callable to see its internal form,
2457 instead of having it called with no arguments (typically a
2462 instead of having it called with no arguments (typically a
2458 mistake). The old 'full' autocall still exists: for that, you
2463 mistake). The old 'full' autocall still exists: for that, you
2459 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2464 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2460
2465
2461 * IPython/completer.py (Completer.attr_matches): add
2466 * IPython/completer.py (Completer.attr_matches): add
2462 tab-completion support for Enthoughts' traits. After a report by
2467 tab-completion support for Enthoughts' traits. After a report by
2463 Arnd and a patch by Prabhu.
2468 Arnd and a patch by Prabhu.
2464
2469
2465 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2470 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2466
2471
2467 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2472 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2468 Schmolck's patch to fix inspect.getinnerframes().
2473 Schmolck's patch to fix inspect.getinnerframes().
2469
2474
2470 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2475 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2471 for embedded instances, regarding handling of namespaces and items
2476 for embedded instances, regarding handling of namespaces and items
2472 added to the __builtin__ one. Multiple embedded instances and
2477 added to the __builtin__ one. Multiple embedded instances and
2473 recursive embeddings should work better now (though I'm not sure
2478 recursive embeddings should work better now (though I'm not sure
2474 I've got all the corner cases fixed, that code is a bit of a brain
2479 I've got all the corner cases fixed, that code is a bit of a brain
2475 twister).
2480 twister).
2476
2481
2477 * IPython/Magic.py (magic_edit): added support to edit in-memory
2482 * IPython/Magic.py (magic_edit): added support to edit in-memory
2478 macros (automatically creates the necessary temp files). %edit
2483 macros (automatically creates the necessary temp files). %edit
2479 also doesn't return the file contents anymore, it's just noise.
2484 also doesn't return the file contents anymore, it's just noise.
2480
2485
2481 * IPython/completer.py (Completer.attr_matches): revert change to
2486 * IPython/completer.py (Completer.attr_matches): revert change to
2482 complete only on attributes listed in __all__. I realized it
2487 complete only on attributes listed in __all__. I realized it
2483 cripples the tab-completion system as a tool for exploring the
2488 cripples the tab-completion system as a tool for exploring the
2484 internals of unknown libraries (it renders any non-__all__
2489 internals of unknown libraries (it renders any non-__all__
2485 attribute off-limits). I got bit by this when trying to see
2490 attribute off-limits). I got bit by this when trying to see
2486 something inside the dis module.
2491 something inside the dis module.
2487
2492
2488 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2493 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2489
2494
2490 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2495 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2491 namespace for users and extension writers to hold data in. This
2496 namespace for users and extension writers to hold data in. This
2492 follows the discussion in
2497 follows the discussion in
2493 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2498 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2494
2499
2495 * IPython/completer.py (IPCompleter.complete): small patch to help
2500 * IPython/completer.py (IPCompleter.complete): small patch to help
2496 tab-completion under Emacs, after a suggestion by John Barnard
2501 tab-completion under Emacs, after a suggestion by John Barnard
2497 <barnarj-AT-ccf.org>.
2502 <barnarj-AT-ccf.org>.
2498
2503
2499 * IPython/Magic.py (Magic.extract_input_slices): added support for
2504 * IPython/Magic.py (Magic.extract_input_slices): added support for
2500 the slice notation in magics to use N-M to represent numbers N...M
2505 the slice notation in magics to use N-M to represent numbers N...M
2501 (closed endpoints). This is used by %macro and %save.
2506 (closed endpoints). This is used by %macro and %save.
2502
2507
2503 * IPython/completer.py (Completer.attr_matches): for modules which
2508 * IPython/completer.py (Completer.attr_matches): for modules which
2504 define __all__, complete only on those. After a patch by Jeffrey
2509 define __all__, complete only on those. After a patch by Jeffrey
2505 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2510 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2506 speed up this routine.
2511 speed up this routine.
2507
2512
2508 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2513 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2509 don't know if this is the end of it, but the behavior now is
2514 don't know if this is the end of it, but the behavior now is
2510 certainly much more correct. Note that coupled with macros,
2515 certainly much more correct. Note that coupled with macros,
2511 slightly surprising (at first) behavior may occur: a macro will in
2516 slightly surprising (at first) behavior may occur: a macro will in
2512 general expand to multiple lines of input, so upon exiting, the
2517 general expand to multiple lines of input, so upon exiting, the
2513 in/out counters will both be bumped by the corresponding amount
2518 in/out counters will both be bumped by the corresponding amount
2514 (as if the macro's contents had been typed interactively). Typing
2519 (as if the macro's contents had been typed interactively). Typing
2515 %hist will reveal the intermediate (silently processed) lines.
2520 %hist will reveal the intermediate (silently processed) lines.
2516
2521
2517 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2522 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2518 pickle to fail (%run was overwriting __main__ and not restoring
2523 pickle to fail (%run was overwriting __main__ and not restoring
2519 it, but pickle relies on __main__ to operate).
2524 it, but pickle relies on __main__ to operate).
2520
2525
2521 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2526 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2522 using properties, but forgot to make the main InteractiveShell
2527 using properties, but forgot to make the main InteractiveShell
2523 class a new-style class. Properties fail silently, and
2528 class a new-style class. Properties fail silently, and
2524 mysteriously, with old-style class (getters work, but
2529 mysteriously, with old-style class (getters work, but
2525 setters don't do anything).
2530 setters don't do anything).
2526
2531
2527 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2532 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2528
2533
2529 * IPython/Magic.py (magic_history): fix history reporting bug (I
2534 * IPython/Magic.py (magic_history): fix history reporting bug (I
2530 know some nasties are still there, I just can't seem to find a
2535 know some nasties are still there, I just can't seem to find a
2531 reproducible test case to track them down; the input history is
2536 reproducible test case to track them down; the input history is
2532 falling out of sync...)
2537 falling out of sync...)
2533
2538
2534 * IPython/iplib.py (handle_shell_escape): fix bug where both
2539 * IPython/iplib.py (handle_shell_escape): fix bug where both
2535 aliases and system accesses where broken for indented code (such
2540 aliases and system accesses where broken for indented code (such
2536 as loops).
2541 as loops).
2537
2542
2538 * IPython/genutils.py (shell): fix small but critical bug for
2543 * IPython/genutils.py (shell): fix small but critical bug for
2539 win32 system access.
2544 win32 system access.
2540
2545
2541 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2546 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2542
2547
2543 * IPython/iplib.py (showtraceback): remove use of the
2548 * IPython/iplib.py (showtraceback): remove use of the
2544 sys.last_{type/value/traceback} structures, which are non
2549 sys.last_{type/value/traceback} structures, which are non
2545 thread-safe.
2550 thread-safe.
2546 (_prefilter): change control flow to ensure that we NEVER
2551 (_prefilter): change control flow to ensure that we NEVER
2547 introspect objects when autocall is off. This will guarantee that
2552 introspect objects when autocall is off. This will guarantee that
2548 having an input line of the form 'x.y', where access to attribute
2553 having an input line of the form 'x.y', where access to attribute
2549 'y' has side effects, doesn't trigger the side effect TWICE. It
2554 'y' has side effects, doesn't trigger the side effect TWICE. It
2550 is important to note that, with autocall on, these side effects
2555 is important to note that, with autocall on, these side effects
2551 can still happen.
2556 can still happen.
2552 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2557 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2553 trio. IPython offers these three kinds of special calls which are
2558 trio. IPython offers these three kinds of special calls which are
2554 not python code, and it's a good thing to have their call method
2559 not python code, and it's a good thing to have their call method
2555 be accessible as pure python functions (not just special syntax at
2560 be accessible as pure python functions (not just special syntax at
2556 the command line). It gives us a better internal implementation
2561 the command line). It gives us a better internal implementation
2557 structure, as well as exposing these for user scripting more
2562 structure, as well as exposing these for user scripting more
2558 cleanly.
2563 cleanly.
2559
2564
2560 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2565 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2561 file. Now that they'll be more likely to be used with the
2566 file. Now that they'll be more likely to be used with the
2562 persistance system (%store), I want to make sure their module path
2567 persistance system (%store), I want to make sure their module path
2563 doesn't change in the future, so that we don't break things for
2568 doesn't change in the future, so that we don't break things for
2564 users' persisted data.
2569 users' persisted data.
2565
2570
2566 * IPython/iplib.py (autoindent_update): move indentation
2571 * IPython/iplib.py (autoindent_update): move indentation
2567 management into the _text_ processing loop, not the keyboard
2572 management into the _text_ processing loop, not the keyboard
2568 interactive one. This is necessary to correctly process non-typed
2573 interactive one. This is necessary to correctly process non-typed
2569 multiline input (such as macros).
2574 multiline input (such as macros).
2570
2575
2571 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2576 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2572 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2577 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2573 which was producing problems in the resulting manual.
2578 which was producing problems in the resulting manual.
2574 (magic_whos): improve reporting of instances (show their class,
2579 (magic_whos): improve reporting of instances (show their class,
2575 instead of simply printing 'instance' which isn't terribly
2580 instead of simply printing 'instance' which isn't terribly
2576 informative).
2581 informative).
2577
2582
2578 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2583 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2579 (minor mods) to support network shares under win32.
2584 (minor mods) to support network shares under win32.
2580
2585
2581 * IPython/winconsole.py (get_console_size): add new winconsole
2586 * IPython/winconsole.py (get_console_size): add new winconsole
2582 module and fixes to page_dumb() to improve its behavior under
2587 module and fixes to page_dumb() to improve its behavior under
2583 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2588 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2584
2589
2585 * IPython/Magic.py (Macro): simplified Macro class to just
2590 * IPython/Magic.py (Macro): simplified Macro class to just
2586 subclass list. We've had only 2.2 compatibility for a very long
2591 subclass list. We've had only 2.2 compatibility for a very long
2587 time, yet I was still avoiding subclassing the builtin types. No
2592 time, yet I was still avoiding subclassing the builtin types. No
2588 more (I'm also starting to use properties, though I won't shift to
2593 more (I'm also starting to use properties, though I won't shift to
2589 2.3-specific features quite yet).
2594 2.3-specific features quite yet).
2590 (magic_store): added Ville's patch for lightweight variable
2595 (magic_store): added Ville's patch for lightweight variable
2591 persistence, after a request on the user list by Matt Wilkie
2596 persistence, after a request on the user list by Matt Wilkie
2592 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2597 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2593 details.
2598 details.
2594
2599
2595 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2600 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2596 changed the default logfile name from 'ipython.log' to
2601 changed the default logfile name from 'ipython.log' to
2597 'ipython_log.py'. These logs are real python files, and now that
2602 'ipython_log.py'. These logs are real python files, and now that
2598 we have much better multiline support, people are more likely to
2603 we have much better multiline support, people are more likely to
2599 want to use them as such. Might as well name them correctly.
2604 want to use them as such. Might as well name them correctly.
2600
2605
2601 * IPython/Magic.py: substantial cleanup. While we can't stop
2606 * IPython/Magic.py: substantial cleanup. While we can't stop
2602 using magics as mixins, due to the existing customizations 'out
2607 using magics as mixins, due to the existing customizations 'out
2603 there' which rely on the mixin naming conventions, at least I
2608 there' which rely on the mixin naming conventions, at least I
2604 cleaned out all cross-class name usage. So once we are OK with
2609 cleaned out all cross-class name usage. So once we are OK with
2605 breaking compatibility, the two systems can be separated.
2610 breaking compatibility, the two systems can be separated.
2606
2611
2607 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2612 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2608 anymore, and the class is a fair bit less hideous as well. New
2613 anymore, and the class is a fair bit less hideous as well. New
2609 features were also introduced: timestamping of input, and logging
2614 features were also introduced: timestamping of input, and logging
2610 of output results. These are user-visible with the -t and -o
2615 of output results. These are user-visible with the -t and -o
2611 options to %logstart. Closes
2616 options to %logstart. Closes
2612 http://www.scipy.net/roundup/ipython/issue11 and a request by
2617 http://www.scipy.net/roundup/ipython/issue11 and a request by
2613 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2618 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2614
2619
2615 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2620 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2616
2621
2617 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2622 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2618 better handle backslashes in paths. See the thread 'More Windows
2623 better handle backslashes in paths. See the thread 'More Windows
2619 questions part 2 - \/ characters revisited' on the iypthon user
2624 questions part 2 - \/ characters revisited' on the iypthon user
2620 list:
2625 list:
2621 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2626 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2622
2627
2623 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2628 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2624
2629
2625 (InteractiveShell.__init__): change threaded shells to not use the
2630 (InteractiveShell.__init__): change threaded shells to not use the
2626 ipython crash handler. This was causing more problems than not,
2631 ipython crash handler. This was causing more problems than not,
2627 as exceptions in the main thread (GUI code, typically) would
2632 as exceptions in the main thread (GUI code, typically) would
2628 always show up as a 'crash', when they really weren't.
2633 always show up as a 'crash', when they really weren't.
2629
2634
2630 The colors and exception mode commands (%colors/%xmode) have been
2635 The colors and exception mode commands (%colors/%xmode) have been
2631 synchronized to also take this into account, so users can get
2636 synchronized to also take this into account, so users can get
2632 verbose exceptions for their threaded code as well. I also added
2637 verbose exceptions for their threaded code as well. I also added
2633 support for activating pdb inside this exception handler as well,
2638 support for activating pdb inside this exception handler as well,
2634 so now GUI authors can use IPython's enhanced pdb at runtime.
2639 so now GUI authors can use IPython's enhanced pdb at runtime.
2635
2640
2636 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2641 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2637 true by default, and add it to the shipped ipythonrc file. Since
2642 true by default, and add it to the shipped ipythonrc file. Since
2638 this asks the user before proceeding, I think it's OK to make it
2643 this asks the user before proceeding, I think it's OK to make it
2639 true by default.
2644 true by default.
2640
2645
2641 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2646 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2642 of the previous special-casing of input in the eval loop. I think
2647 of the previous special-casing of input in the eval loop. I think
2643 this is cleaner, as they really are commands and shouldn't have
2648 this is cleaner, as they really are commands and shouldn't have
2644 a special role in the middle of the core code.
2649 a special role in the middle of the core code.
2645
2650
2646 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2651 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2647
2652
2648 * IPython/iplib.py (edit_syntax_error): added support for
2653 * IPython/iplib.py (edit_syntax_error): added support for
2649 automatically reopening the editor if the file had a syntax error
2654 automatically reopening the editor if the file had a syntax error
2650 in it. Thanks to scottt who provided the patch at:
2655 in it. Thanks to scottt who provided the patch at:
2651 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2656 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2652 version committed).
2657 version committed).
2653
2658
2654 * IPython/iplib.py (handle_normal): add suport for multi-line
2659 * IPython/iplib.py (handle_normal): add suport for multi-line
2655 input with emtpy lines. This fixes
2660 input with emtpy lines. This fixes
2656 http://www.scipy.net/roundup/ipython/issue43 and a similar
2661 http://www.scipy.net/roundup/ipython/issue43 and a similar
2657 discussion on the user list.
2662 discussion on the user list.
2658
2663
2659 WARNING: a behavior change is necessarily introduced to support
2664 WARNING: a behavior change is necessarily introduced to support
2660 blank lines: now a single blank line with whitespace does NOT
2665 blank lines: now a single blank line with whitespace does NOT
2661 break the input loop, which means that when autoindent is on, by
2666 break the input loop, which means that when autoindent is on, by
2662 default hitting return on the next (indented) line does NOT exit.
2667 default hitting return on the next (indented) line does NOT exit.
2663
2668
2664 Instead, to exit a multiline input you can either have:
2669 Instead, to exit a multiline input you can either have:
2665
2670
2666 - TWO whitespace lines (just hit return again), or
2671 - TWO whitespace lines (just hit return again), or
2667 - a single whitespace line of a different length than provided
2672 - a single whitespace line of a different length than provided
2668 by the autoindent (add or remove a space).
2673 by the autoindent (add or remove a space).
2669
2674
2670 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2675 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2671 module to better organize all readline-related functionality.
2676 module to better organize all readline-related functionality.
2672 I've deleted FlexCompleter and put all completion clases here.
2677 I've deleted FlexCompleter and put all completion clases here.
2673
2678
2674 * IPython/iplib.py (raw_input): improve indentation management.
2679 * IPython/iplib.py (raw_input): improve indentation management.
2675 It is now possible to paste indented code with autoindent on, and
2680 It is now possible to paste indented code with autoindent on, and
2676 the code is interpreted correctly (though it still looks bad on
2681 the code is interpreted correctly (though it still looks bad on
2677 screen, due to the line-oriented nature of ipython).
2682 screen, due to the line-oriented nature of ipython).
2678 (MagicCompleter.complete): change behavior so that a TAB key on an
2683 (MagicCompleter.complete): change behavior so that a TAB key on an
2679 otherwise empty line actually inserts a tab, instead of completing
2684 otherwise empty line actually inserts a tab, instead of completing
2680 on the entire global namespace. This makes it easier to use the
2685 on the entire global namespace. This makes it easier to use the
2681 TAB key for indentation. After a request by Hans Meine
2686 TAB key for indentation. After a request by Hans Meine
2682 <hans_meine-AT-gmx.net>
2687 <hans_meine-AT-gmx.net>
2683 (_prefilter): add support so that typing plain 'exit' or 'quit'
2688 (_prefilter): add support so that typing plain 'exit' or 'quit'
2684 does a sensible thing. Originally I tried to deviate as little as
2689 does a sensible thing. Originally I tried to deviate as little as
2685 possible from the default python behavior, but even that one may
2690 possible from the default python behavior, but even that one may
2686 change in this direction (thread on python-dev to that effect).
2691 change in this direction (thread on python-dev to that effect).
2687 Regardless, ipython should do the right thing even if CPython's
2692 Regardless, ipython should do the right thing even if CPython's
2688 '>>>' prompt doesn't.
2693 '>>>' prompt doesn't.
2689 (InteractiveShell): removed subclassing code.InteractiveConsole
2694 (InteractiveShell): removed subclassing code.InteractiveConsole
2690 class. By now we'd overridden just about all of its methods: I've
2695 class. By now we'd overridden just about all of its methods: I've
2691 copied the remaining two over, and now ipython is a standalone
2696 copied the remaining two over, and now ipython is a standalone
2692 class. This will provide a clearer picture for the chainsaw
2697 class. This will provide a clearer picture for the chainsaw
2693 branch refactoring.
2698 branch refactoring.
2694
2699
2695 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2700 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2696
2701
2697 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2702 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2698 failures for objects which break when dir() is called on them.
2703 failures for objects which break when dir() is called on them.
2699
2704
2700 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2705 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2701 distinct local and global namespaces in the completer API. This
2706 distinct local and global namespaces in the completer API. This
2702 change allows us to properly handle completion with distinct
2707 change allows us to properly handle completion with distinct
2703 scopes, including in embedded instances (this had never really
2708 scopes, including in embedded instances (this had never really
2704 worked correctly).
2709 worked correctly).
2705
2710
2706 Note: this introduces a change in the constructor for
2711 Note: this introduces a change in the constructor for
2707 MagicCompleter, as a new global_namespace parameter is now the
2712 MagicCompleter, as a new global_namespace parameter is now the
2708 second argument (the others were bumped one position).
2713 second argument (the others were bumped one position).
2709
2714
2710 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2715 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2711
2716
2712 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2717 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2713 embedded instances (which can be done now thanks to Vivian's
2718 embedded instances (which can be done now thanks to Vivian's
2714 frame-handling fixes for pdb).
2719 frame-handling fixes for pdb).
2715 (InteractiveShell.__init__): Fix namespace handling problem in
2720 (InteractiveShell.__init__): Fix namespace handling problem in
2716 embedded instances. We were overwriting __main__ unconditionally,
2721 embedded instances. We were overwriting __main__ unconditionally,
2717 and this should only be done for 'full' (non-embedded) IPython;
2722 and this should only be done for 'full' (non-embedded) IPython;
2718 embedded instances must respect the caller's __main__. Thanks to
2723 embedded instances must respect the caller's __main__. Thanks to
2719 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2724 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2720
2725
2721 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2726 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2722
2727
2723 * setup.py: added download_url to setup(). This registers the
2728 * setup.py: added download_url to setup(). This registers the
2724 download address at PyPI, which is not only useful to humans
2729 download address at PyPI, which is not only useful to humans
2725 browsing the site, but is also picked up by setuptools (the Eggs
2730 browsing the site, but is also picked up by setuptools (the Eggs
2726 machinery). Thanks to Ville and R. Kern for the info/discussion
2731 machinery). Thanks to Ville and R. Kern for the info/discussion
2727 on this.
2732 on this.
2728
2733
2729 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2734 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2730
2735
2731 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2736 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2732 This brings a lot of nice functionality to the pdb mode, which now
2737 This brings a lot of nice functionality to the pdb mode, which now
2733 has tab-completion, syntax highlighting, and better stack handling
2738 has tab-completion, syntax highlighting, and better stack handling
2734 than before. Many thanks to Vivian De Smedt
2739 than before. Many thanks to Vivian De Smedt
2735 <vivian-AT-vdesmedt.com> for the original patches.
2740 <vivian-AT-vdesmedt.com> for the original patches.
2736
2741
2737 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2742 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2738
2743
2739 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2744 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2740 sequence to consistently accept the banner argument. The
2745 sequence to consistently accept the banner argument. The
2741 inconsistency was tripping SAGE, thanks to Gary Zablackis
2746 inconsistency was tripping SAGE, thanks to Gary Zablackis
2742 <gzabl-AT-yahoo.com> for the report.
2747 <gzabl-AT-yahoo.com> for the report.
2743
2748
2744 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2749 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2745
2750
2746 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2751 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2747 Fix bug where a naked 'alias' call in the ipythonrc file would
2752 Fix bug where a naked 'alias' call in the ipythonrc file would
2748 cause a crash. Bug reported by Jorgen Stenarson.
2753 cause a crash. Bug reported by Jorgen Stenarson.
2749
2754
2750 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2755 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2751
2756
2752 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2757 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2753 startup time.
2758 startup time.
2754
2759
2755 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2760 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2756 instances had introduced a bug with globals in normal code. Now
2761 instances had introduced a bug with globals in normal code. Now
2757 it's working in all cases.
2762 it's working in all cases.
2758
2763
2759 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2764 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2760 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2765 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2761 has been introduced to set the default case sensitivity of the
2766 has been introduced to set the default case sensitivity of the
2762 searches. Users can still select either mode at runtime on a
2767 searches. Users can still select either mode at runtime on a
2763 per-search basis.
2768 per-search basis.
2764
2769
2765 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2770 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2766
2771
2767 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2772 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2768 attributes in wildcard searches for subclasses. Modified version
2773 attributes in wildcard searches for subclasses. Modified version
2769 of a patch by Jorgen.
2774 of a patch by Jorgen.
2770
2775
2771 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2776 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2772
2777
2773 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2778 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2774 embedded instances. I added a user_global_ns attribute to the
2779 embedded instances. I added a user_global_ns attribute to the
2775 InteractiveShell class to handle this.
2780 InteractiveShell class to handle this.
2776
2781
2777 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2782 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2778
2783
2779 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2784 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2780 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2785 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2781 (reported under win32, but may happen also in other platforms).
2786 (reported under win32, but may happen also in other platforms).
2782 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2787 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2783
2788
2784 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2789 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2785
2790
2786 * IPython/Magic.py (magic_psearch): new support for wildcard
2791 * IPython/Magic.py (magic_psearch): new support for wildcard
2787 patterns. Now, typing ?a*b will list all names which begin with a
2792 patterns. Now, typing ?a*b will list all names which begin with a
2788 and end in b, for example. The %psearch magic has full
2793 and end in b, for example. The %psearch magic has full
2789 docstrings. Many thanks to JΓΆrgen Stenarson
2794 docstrings. Many thanks to JΓΆrgen Stenarson
2790 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2795 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2791 implementing this functionality.
2796 implementing this functionality.
2792
2797
2793 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2798 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2794
2799
2795 * Manual: fixed long-standing annoyance of double-dashes (as in
2800 * Manual: fixed long-standing annoyance of double-dashes (as in
2796 --prefix=~, for example) being stripped in the HTML version. This
2801 --prefix=~, for example) being stripped in the HTML version. This
2797 is a latex2html bug, but a workaround was provided. Many thanks
2802 is a latex2html bug, but a workaround was provided. Many thanks
2798 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2803 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2799 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2804 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2800 rolling. This seemingly small issue had tripped a number of users
2805 rolling. This seemingly small issue had tripped a number of users
2801 when first installing, so I'm glad to see it gone.
2806 when first installing, so I'm glad to see it gone.
2802
2807
2803 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2808 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2804
2809
2805 * IPython/Extensions/numeric_formats.py: fix missing import,
2810 * IPython/Extensions/numeric_formats.py: fix missing import,
2806 reported by Stephen Walton.
2811 reported by Stephen Walton.
2807
2812
2808 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2813 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2809
2814
2810 * IPython/demo.py: finish demo module, fully documented now.
2815 * IPython/demo.py: finish demo module, fully documented now.
2811
2816
2812 * IPython/genutils.py (file_read): simple little utility to read a
2817 * IPython/genutils.py (file_read): simple little utility to read a
2813 file and ensure it's closed afterwards.
2818 file and ensure it's closed afterwards.
2814
2819
2815 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2820 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2816
2821
2817 * IPython/demo.py (Demo.__init__): added support for individually
2822 * IPython/demo.py (Demo.__init__): added support for individually
2818 tagging blocks for automatic execution.
2823 tagging blocks for automatic execution.
2819
2824
2820 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2825 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2821 syntax-highlighted python sources, requested by John.
2826 syntax-highlighted python sources, requested by John.
2822
2827
2823 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2828 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2824
2829
2825 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2830 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2826 finishing.
2831 finishing.
2827
2832
2828 * IPython/genutils.py (shlex_split): moved from Magic to here,
2833 * IPython/genutils.py (shlex_split): moved from Magic to here,
2829 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2834 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2830
2835
2831 * IPython/demo.py (Demo.__init__): added support for silent
2836 * IPython/demo.py (Demo.__init__): added support for silent
2832 blocks, improved marks as regexps, docstrings written.
2837 blocks, improved marks as regexps, docstrings written.
2833 (Demo.__init__): better docstring, added support for sys.argv.
2838 (Demo.__init__): better docstring, added support for sys.argv.
2834
2839
2835 * IPython/genutils.py (marquee): little utility used by the demo
2840 * IPython/genutils.py (marquee): little utility used by the demo
2836 code, handy in general.
2841 code, handy in general.
2837
2842
2838 * IPython/demo.py (Demo.__init__): new class for interactive
2843 * IPython/demo.py (Demo.__init__): new class for interactive
2839 demos. Not documented yet, I just wrote it in a hurry for
2844 demos. Not documented yet, I just wrote it in a hurry for
2840 scipy'05. Will docstring later.
2845 scipy'05. Will docstring later.
2841
2846
2842 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2847 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2843
2848
2844 * IPython/Shell.py (sigint_handler): Drastic simplification which
2849 * IPython/Shell.py (sigint_handler): Drastic simplification which
2845 also seems to make Ctrl-C work correctly across threads! This is
2850 also seems to make Ctrl-C work correctly across threads! This is
2846 so simple, that I can't beleive I'd missed it before. Needs more
2851 so simple, that I can't beleive I'd missed it before. Needs more
2847 testing, though.
2852 testing, though.
2848 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2853 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2849 like this before...
2854 like this before...
2850
2855
2851 * IPython/genutils.py (get_home_dir): add protection against
2856 * IPython/genutils.py (get_home_dir): add protection against
2852 non-dirs in win32 registry.
2857 non-dirs in win32 registry.
2853
2858
2854 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2859 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2855 bug where dict was mutated while iterating (pysh crash).
2860 bug where dict was mutated while iterating (pysh crash).
2856
2861
2857 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2862 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2858
2863
2859 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2864 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2860 spurious newlines added by this routine. After a report by
2865 spurious newlines added by this routine. After a report by
2861 F. Mantegazza.
2866 F. Mantegazza.
2862
2867
2863 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2868 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2864
2869
2865 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2870 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2866 calls. These were a leftover from the GTK 1.x days, and can cause
2871 calls. These were a leftover from the GTK 1.x days, and can cause
2867 problems in certain cases (after a report by John Hunter).
2872 problems in certain cases (after a report by John Hunter).
2868
2873
2869 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2874 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2870 os.getcwd() fails at init time. Thanks to patch from David Remahl
2875 os.getcwd() fails at init time. Thanks to patch from David Remahl
2871 <chmod007-AT-mac.com>.
2876 <chmod007-AT-mac.com>.
2872 (InteractiveShell.__init__): prevent certain special magics from
2877 (InteractiveShell.__init__): prevent certain special magics from
2873 being shadowed by aliases. Closes
2878 being shadowed by aliases. Closes
2874 http://www.scipy.net/roundup/ipython/issue41.
2879 http://www.scipy.net/roundup/ipython/issue41.
2875
2880
2876 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2881 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2877
2882
2878 * IPython/iplib.py (InteractiveShell.complete): Added new
2883 * IPython/iplib.py (InteractiveShell.complete): Added new
2879 top-level completion method to expose the completion mechanism
2884 top-level completion method to expose the completion mechanism
2880 beyond readline-based environments.
2885 beyond readline-based environments.
2881
2886
2882 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2887 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2883
2888
2884 * tools/ipsvnc (svnversion): fix svnversion capture.
2889 * tools/ipsvnc (svnversion): fix svnversion capture.
2885
2890
2886 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2891 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2887 attribute to self, which was missing. Before, it was set by a
2892 attribute to self, which was missing. Before, it was set by a
2888 routine which in certain cases wasn't being called, so the
2893 routine which in certain cases wasn't being called, so the
2889 instance could end up missing the attribute. This caused a crash.
2894 instance could end up missing the attribute. This caused a crash.
2890 Closes http://www.scipy.net/roundup/ipython/issue40.
2895 Closes http://www.scipy.net/roundup/ipython/issue40.
2891
2896
2892 2005-08-16 Fernando Perez <fperez@colorado.edu>
2897 2005-08-16 Fernando Perez <fperez@colorado.edu>
2893
2898
2894 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2899 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2895 contains non-string attribute. Closes
2900 contains non-string attribute. Closes
2896 http://www.scipy.net/roundup/ipython/issue38.
2901 http://www.scipy.net/roundup/ipython/issue38.
2897
2902
2898 2005-08-14 Fernando Perez <fperez@colorado.edu>
2903 2005-08-14 Fernando Perez <fperez@colorado.edu>
2899
2904
2900 * tools/ipsvnc: Minor improvements, to add changeset info.
2905 * tools/ipsvnc: Minor improvements, to add changeset info.
2901
2906
2902 2005-08-12 Fernando Perez <fperez@colorado.edu>
2907 2005-08-12 Fernando Perez <fperez@colorado.edu>
2903
2908
2904 * IPython/iplib.py (runsource): remove self.code_to_run_src
2909 * IPython/iplib.py (runsource): remove self.code_to_run_src
2905 attribute. I realized this is nothing more than
2910 attribute. I realized this is nothing more than
2906 '\n'.join(self.buffer), and having the same data in two different
2911 '\n'.join(self.buffer), and having the same data in two different
2907 places is just asking for synchronization bugs. This may impact
2912 places is just asking for synchronization bugs. This may impact
2908 people who have custom exception handlers, so I need to warn
2913 people who have custom exception handlers, so I need to warn
2909 ipython-dev about it (F. Mantegazza may use them).
2914 ipython-dev about it (F. Mantegazza may use them).
2910
2915
2911 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2916 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2912
2917
2913 * IPython/genutils.py: fix 2.2 compatibility (generators)
2918 * IPython/genutils.py: fix 2.2 compatibility (generators)
2914
2919
2915 2005-07-18 Fernando Perez <fperez@colorado.edu>
2920 2005-07-18 Fernando Perez <fperez@colorado.edu>
2916
2921
2917 * IPython/genutils.py (get_home_dir): fix to help users with
2922 * IPython/genutils.py (get_home_dir): fix to help users with
2918 invalid $HOME under win32.
2923 invalid $HOME under win32.
2919
2924
2920 2005-07-17 Fernando Perez <fperez@colorado.edu>
2925 2005-07-17 Fernando Perez <fperez@colorado.edu>
2921
2926
2922 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2927 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2923 some old hacks and clean up a bit other routines; code should be
2928 some old hacks and clean up a bit other routines; code should be
2924 simpler and a bit faster.
2929 simpler and a bit faster.
2925
2930
2926 * IPython/iplib.py (interact): removed some last-resort attempts
2931 * IPython/iplib.py (interact): removed some last-resort attempts
2927 to survive broken stdout/stderr. That code was only making it
2932 to survive broken stdout/stderr. That code was only making it
2928 harder to abstract out the i/o (necessary for gui integration),
2933 harder to abstract out the i/o (necessary for gui integration),
2929 and the crashes it could prevent were extremely rare in practice
2934 and the crashes it could prevent were extremely rare in practice
2930 (besides being fully user-induced in a pretty violent manner).
2935 (besides being fully user-induced in a pretty violent manner).
2931
2936
2932 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2937 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2933 Nothing major yet, but the code is simpler to read; this should
2938 Nothing major yet, but the code is simpler to read; this should
2934 make it easier to do more serious modifications in the future.
2939 make it easier to do more serious modifications in the future.
2935
2940
2936 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2941 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2937 which broke in .15 (thanks to a report by Ville).
2942 which broke in .15 (thanks to a report by Ville).
2938
2943
2939 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2944 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2940 be quite correct, I know next to nothing about unicode). This
2945 be quite correct, I know next to nothing about unicode). This
2941 will allow unicode strings to be used in prompts, amongst other
2946 will allow unicode strings to be used in prompts, amongst other
2942 cases. It also will prevent ipython from crashing when unicode
2947 cases. It also will prevent ipython from crashing when unicode
2943 shows up unexpectedly in many places. If ascii encoding fails, we
2948 shows up unexpectedly in many places. If ascii encoding fails, we
2944 assume utf_8. Currently the encoding is not a user-visible
2949 assume utf_8. Currently the encoding is not a user-visible
2945 setting, though it could be made so if there is demand for it.
2950 setting, though it could be made so if there is demand for it.
2946
2951
2947 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2952 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2948
2953
2949 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2954 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2950
2955
2951 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2956 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2952
2957
2953 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2958 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2954 code can work transparently for 2.2/2.3.
2959 code can work transparently for 2.2/2.3.
2955
2960
2956 2005-07-16 Fernando Perez <fperez@colorado.edu>
2961 2005-07-16 Fernando Perez <fperez@colorado.edu>
2957
2962
2958 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2963 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2959 out of the color scheme table used for coloring exception
2964 out of the color scheme table used for coloring exception
2960 tracebacks. This allows user code to add new schemes at runtime.
2965 tracebacks. This allows user code to add new schemes at runtime.
2961 This is a minimally modified version of the patch at
2966 This is a minimally modified version of the patch at
2962 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2967 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2963 for the contribution.
2968 for the contribution.
2964
2969
2965 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2970 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2966 slightly modified version of the patch in
2971 slightly modified version of the patch in
2967 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2972 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2968 to remove the previous try/except solution (which was costlier).
2973 to remove the previous try/except solution (which was costlier).
2969 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2974 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2970
2975
2971 2005-06-08 Fernando Perez <fperez@colorado.edu>
2976 2005-06-08 Fernando Perez <fperez@colorado.edu>
2972
2977
2973 * IPython/iplib.py (write/write_err): Add methods to abstract all
2978 * IPython/iplib.py (write/write_err): Add methods to abstract all
2974 I/O a bit more.
2979 I/O a bit more.
2975
2980
2976 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2981 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2977 warning, reported by Aric Hagberg, fix by JD Hunter.
2982 warning, reported by Aric Hagberg, fix by JD Hunter.
2978
2983
2979 2005-06-02 *** Released version 0.6.15
2984 2005-06-02 *** Released version 0.6.15
2980
2985
2981 2005-06-01 Fernando Perez <fperez@colorado.edu>
2986 2005-06-01 Fernando Perez <fperez@colorado.edu>
2982
2987
2983 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2988 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2984 tab-completion of filenames within open-quoted strings. Note that
2989 tab-completion of filenames within open-quoted strings. Note that
2985 this requires that in ~/.ipython/ipythonrc, users change the
2990 this requires that in ~/.ipython/ipythonrc, users change the
2986 readline delimiters configuration to read:
2991 readline delimiters configuration to read:
2987
2992
2988 readline_remove_delims -/~
2993 readline_remove_delims -/~
2989
2994
2990
2995
2991 2005-05-31 *** Released version 0.6.14
2996 2005-05-31 *** Released version 0.6.14
2992
2997
2993 2005-05-29 Fernando Perez <fperez@colorado.edu>
2998 2005-05-29 Fernando Perez <fperez@colorado.edu>
2994
2999
2995 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
3000 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2996 with files not on the filesystem. Reported by Eliyahu Sandler
3001 with files not on the filesystem. Reported by Eliyahu Sandler
2997 <eli@gondolin.net>
3002 <eli@gondolin.net>
2998
3003
2999 2005-05-22 Fernando Perez <fperez@colorado.edu>
3004 2005-05-22 Fernando Perez <fperez@colorado.edu>
3000
3005
3001 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
3006 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
3002 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
3007 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
3003
3008
3004 2005-05-19 Fernando Perez <fperez@colorado.edu>
3009 2005-05-19 Fernando Perez <fperez@colorado.edu>
3005
3010
3006 * IPython/iplib.py (safe_execfile): close a file which could be
3011 * IPython/iplib.py (safe_execfile): close a file which could be
3007 left open (causing problems in win32, which locks open files).
3012 left open (causing problems in win32, which locks open files).
3008 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
3013 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
3009
3014
3010 2005-05-18 Fernando Perez <fperez@colorado.edu>
3015 2005-05-18 Fernando Perez <fperez@colorado.edu>
3011
3016
3012 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
3017 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
3013 keyword arguments correctly to safe_execfile().
3018 keyword arguments correctly to safe_execfile().
3014
3019
3015 2005-05-13 Fernando Perez <fperez@colorado.edu>
3020 2005-05-13 Fernando Perez <fperez@colorado.edu>
3016
3021
3017 * ipython.1: Added info about Qt to manpage, and threads warning
3022 * ipython.1: Added info about Qt to manpage, and threads warning
3018 to usage page (invoked with --help).
3023 to usage page (invoked with --help).
3019
3024
3020 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
3025 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
3021 new matcher (it goes at the end of the priority list) to do
3026 new matcher (it goes at the end of the priority list) to do
3022 tab-completion on named function arguments. Submitted by George
3027 tab-completion on named function arguments. Submitted by George
3023 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
3028 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
3024 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
3029 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
3025 for more details.
3030 for more details.
3026
3031
3027 * IPython/Magic.py (magic_run): Added new -e flag to ignore
3032 * IPython/Magic.py (magic_run): Added new -e flag to ignore
3028 SystemExit exceptions in the script being run. Thanks to a report
3033 SystemExit exceptions in the script being run. Thanks to a report
3029 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
3034 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
3030 producing very annoying behavior when running unit tests.
3035 producing very annoying behavior when running unit tests.
3031
3036
3032 2005-05-12 Fernando Perez <fperez@colorado.edu>
3037 2005-05-12 Fernando Perez <fperez@colorado.edu>
3033
3038
3034 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
3039 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
3035 which I'd broken (again) due to a changed regexp. In the process,
3040 which I'd broken (again) due to a changed regexp. In the process,
3036 added ';' as an escape to auto-quote the whole line without
3041 added ';' as an escape to auto-quote the whole line without
3037 splitting its arguments. Thanks to a report by Jerry McRae
3042 splitting its arguments. Thanks to a report by Jerry McRae
3038 <qrs0xyc02-AT-sneakemail.com>.
3043 <qrs0xyc02-AT-sneakemail.com>.
3039
3044
3040 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
3045 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
3041 possible crashes caused by a TokenError. Reported by Ed Schofield
3046 possible crashes caused by a TokenError. Reported by Ed Schofield
3042 <schofield-AT-ftw.at>.
3047 <schofield-AT-ftw.at>.
3043
3048
3044 2005-05-06 Fernando Perez <fperez@colorado.edu>
3049 2005-05-06 Fernando Perez <fperez@colorado.edu>
3045
3050
3046 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
3051 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
3047
3052
3048 2005-04-29 Fernando Perez <fperez@colorado.edu>
3053 2005-04-29 Fernando Perez <fperez@colorado.edu>
3049
3054
3050 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
3055 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
3051 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
3056 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
3052 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
3057 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
3053 which provides support for Qt interactive usage (similar to the
3058 which provides support for Qt interactive usage (similar to the
3054 existing one for WX and GTK). This had been often requested.
3059 existing one for WX and GTK). This had been often requested.
3055
3060
3056 2005-04-14 *** Released version 0.6.13
3061 2005-04-14 *** Released version 0.6.13
3057
3062
3058 2005-04-08 Fernando Perez <fperez@colorado.edu>
3063 2005-04-08 Fernando Perez <fperez@colorado.edu>
3059
3064
3060 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
3065 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
3061 from _ofind, which gets called on almost every input line. Now,
3066 from _ofind, which gets called on almost every input line. Now,
3062 we only try to get docstrings if they are actually going to be
3067 we only try to get docstrings if they are actually going to be
3063 used (the overhead of fetching unnecessary docstrings can be
3068 used (the overhead of fetching unnecessary docstrings can be
3064 noticeable for certain objects, such as Pyro proxies).
3069 noticeable for certain objects, such as Pyro proxies).
3065
3070
3066 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
3071 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
3067 for completers. For some reason I had been passing them the state
3072 for completers. For some reason I had been passing them the state
3068 variable, which completers never actually need, and was in
3073 variable, which completers never actually need, and was in
3069 conflict with the rlcompleter API. Custom completers ONLY need to
3074 conflict with the rlcompleter API. Custom completers ONLY need to
3070 take the text parameter.
3075 take the text parameter.
3071
3076
3072 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
3077 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
3073 work correctly in pysh. I've also moved all the logic which used
3078 work correctly in pysh. I've also moved all the logic which used
3074 to be in pysh.py here, which will prevent problems with future
3079 to be in pysh.py here, which will prevent problems with future
3075 upgrades. However, this time I must warn users to update their
3080 upgrades. However, this time I must warn users to update their
3076 pysh profile to include the line
3081 pysh profile to include the line
3077
3082
3078 import_all IPython.Extensions.InterpreterExec
3083 import_all IPython.Extensions.InterpreterExec
3079
3084
3080 because otherwise things won't work for them. They MUST also
3085 because otherwise things won't work for them. They MUST also
3081 delete pysh.py and the line
3086 delete pysh.py and the line
3082
3087
3083 execfile pysh.py
3088 execfile pysh.py
3084
3089
3085 from their ipythonrc-pysh.
3090 from their ipythonrc-pysh.
3086
3091
3087 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
3092 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
3088 robust in the face of objects whose dir() returns non-strings
3093 robust in the face of objects whose dir() returns non-strings
3089 (which it shouldn't, but some broken libs like ITK do). Thanks to
3094 (which it shouldn't, but some broken libs like ITK do). Thanks to
3090 a patch by John Hunter (implemented differently, though). Also
3095 a patch by John Hunter (implemented differently, though). Also
3091 minor improvements by using .extend instead of + on lists.
3096 minor improvements by using .extend instead of + on lists.
3092
3097
3093 * pysh.py:
3098 * pysh.py:
3094
3099
3095 2005-04-06 Fernando Perez <fperez@colorado.edu>
3100 2005-04-06 Fernando Perez <fperez@colorado.edu>
3096
3101
3097 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
3102 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
3098 by default, so that all users benefit from it. Those who don't
3103 by default, so that all users benefit from it. Those who don't
3099 want it can still turn it off.
3104 want it can still turn it off.
3100
3105
3101 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
3106 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
3102 config file, I'd forgotten about this, so users were getting it
3107 config file, I'd forgotten about this, so users were getting it
3103 off by default.
3108 off by default.
3104
3109
3105 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
3110 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
3106 consistency. Now magics can be called in multiline statements,
3111 consistency. Now magics can be called in multiline statements,
3107 and python variables can be expanded in magic calls via $var.
3112 and python variables can be expanded in magic calls via $var.
3108 This makes the magic system behave just like aliases or !system
3113 This makes the magic system behave just like aliases or !system
3109 calls.
3114 calls.
3110
3115
3111 2005-03-28 Fernando Perez <fperez@colorado.edu>
3116 2005-03-28 Fernando Perez <fperez@colorado.edu>
3112
3117
3113 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
3118 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
3114 expensive string additions for building command. Add support for
3119 expensive string additions for building command. Add support for
3115 trailing ';' when autocall is used.
3120 trailing ';' when autocall is used.
3116
3121
3117 2005-03-26 Fernando Perez <fperez@colorado.edu>
3122 2005-03-26 Fernando Perez <fperez@colorado.edu>
3118
3123
3119 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
3124 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
3120 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
3125 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
3121 ipython.el robust against prompts with any number of spaces
3126 ipython.el robust against prompts with any number of spaces
3122 (including 0) after the ':' character.
3127 (including 0) after the ':' character.
3123
3128
3124 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
3129 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
3125 continuation prompt, which misled users to think the line was
3130 continuation prompt, which misled users to think the line was
3126 already indented. Closes debian Bug#300847, reported to me by
3131 already indented. Closes debian Bug#300847, reported to me by
3127 Norbert Tretkowski <tretkowski-AT-inittab.de>.
3132 Norbert Tretkowski <tretkowski-AT-inittab.de>.
3128
3133
3129 2005-03-23 Fernando Perez <fperez@colorado.edu>
3134 2005-03-23 Fernando Perez <fperez@colorado.edu>
3130
3135
3131 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
3136 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
3132 properly aligned if they have embedded newlines.
3137 properly aligned if they have embedded newlines.
3133
3138
3134 * IPython/iplib.py (runlines): Add a public method to expose
3139 * IPython/iplib.py (runlines): Add a public method to expose
3135 IPython's code execution machinery, so that users can run strings
3140 IPython's code execution machinery, so that users can run strings
3136 as if they had been typed at the prompt interactively.
3141 as if they had been typed at the prompt interactively.
3137 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
3142 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
3138 methods which can call the system shell, but with python variable
3143 methods which can call the system shell, but with python variable
3139 expansion. The three such methods are: __IPYTHON__.system,
3144 expansion. The three such methods are: __IPYTHON__.system,
3140 .getoutput and .getoutputerror. These need to be documented in a
3145 .getoutput and .getoutputerror. These need to be documented in a
3141 'public API' section (to be written) of the manual.
3146 'public API' section (to be written) of the manual.
3142
3147
3143 2005-03-20 Fernando Perez <fperez@colorado.edu>
3148 2005-03-20 Fernando Perez <fperez@colorado.edu>
3144
3149
3145 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
3150 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
3146 for custom exception handling. This is quite powerful, and it
3151 for custom exception handling. This is quite powerful, and it
3147 allows for user-installable exception handlers which can trap
3152 allows for user-installable exception handlers which can trap
3148 custom exceptions at runtime and treat them separately from
3153 custom exceptions at runtime and treat them separately from
3149 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
3154 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
3150 Mantegazza <mantegazza-AT-ill.fr>.
3155 Mantegazza <mantegazza-AT-ill.fr>.
3151 (InteractiveShell.set_custom_completer): public API function to
3156 (InteractiveShell.set_custom_completer): public API function to
3152 add new completers at runtime.
3157 add new completers at runtime.
3153
3158
3154 2005-03-19 Fernando Perez <fperez@colorado.edu>
3159 2005-03-19 Fernando Perez <fperez@colorado.edu>
3155
3160
3156 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
3161 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
3157 allow objects which provide their docstrings via non-standard
3162 allow objects which provide their docstrings via non-standard
3158 mechanisms (like Pyro proxies) to still be inspected by ipython's
3163 mechanisms (like Pyro proxies) to still be inspected by ipython's
3159 ? system.
3164 ? system.
3160
3165
3161 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3166 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3162 automatic capture system. I tried quite hard to make it work
3167 automatic capture system. I tried quite hard to make it work
3163 reliably, and simply failed. I tried many combinations with the
3168 reliably, and simply failed. I tried many combinations with the
3164 subprocess module, but eventually nothing worked in all needed
3169 subprocess module, but eventually nothing worked in all needed
3165 cases (not blocking stdin for the child, duplicating stdout
3170 cases (not blocking stdin for the child, duplicating stdout
3166 without blocking, etc). The new %sc/%sx still do capture to these
3171 without blocking, etc). The new %sc/%sx still do capture to these
3167 magical list/string objects which make shell use much more
3172 magical list/string objects which make shell use much more
3168 conveninent, so not all is lost.
3173 conveninent, so not all is lost.
3169
3174
3170 XXX - FIX MANUAL for the change above!
3175 XXX - FIX MANUAL for the change above!
3171
3176
3172 (runsource): I copied code.py's runsource() into ipython to modify
3177 (runsource): I copied code.py's runsource() into ipython to modify
3173 it a bit. Now the code object and source to be executed are
3178 it a bit. Now the code object and source to be executed are
3174 stored in ipython. This makes this info accessible to third-party
3179 stored in ipython. This makes this info accessible to third-party
3175 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3180 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3176 Mantegazza <mantegazza-AT-ill.fr>.
3181 Mantegazza <mantegazza-AT-ill.fr>.
3177
3182
3178 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3183 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3179 history-search via readline (like C-p/C-n). I'd wanted this for a
3184 history-search via readline (like C-p/C-n). I'd wanted this for a
3180 long time, but only recently found out how to do it. For users
3185 long time, but only recently found out how to do it. For users
3181 who already have their ipythonrc files made and want this, just
3186 who already have their ipythonrc files made and want this, just
3182 add:
3187 add:
3183
3188
3184 readline_parse_and_bind "\e[A": history-search-backward
3189 readline_parse_and_bind "\e[A": history-search-backward
3185 readline_parse_and_bind "\e[B": history-search-forward
3190 readline_parse_and_bind "\e[B": history-search-forward
3186
3191
3187 2005-03-18 Fernando Perez <fperez@colorado.edu>
3192 2005-03-18 Fernando Perez <fperez@colorado.edu>
3188
3193
3189 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3194 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3190 LSString and SList classes which allow transparent conversions
3195 LSString and SList classes which allow transparent conversions
3191 between list mode and whitespace-separated string.
3196 between list mode and whitespace-separated string.
3192 (magic_r): Fix recursion problem in %r.
3197 (magic_r): Fix recursion problem in %r.
3193
3198
3194 * IPython/genutils.py (LSString): New class to be used for
3199 * IPython/genutils.py (LSString): New class to be used for
3195 automatic storage of the results of all alias/system calls in _o
3200 automatic storage of the results of all alias/system calls in _o
3196 and _e (stdout/err). These provide a .l/.list attribute which
3201 and _e (stdout/err). These provide a .l/.list attribute which
3197 does automatic splitting on newlines. This means that for most
3202 does automatic splitting on newlines. This means that for most
3198 uses, you'll never need to do capturing of output with %sc/%sx
3203 uses, you'll never need to do capturing of output with %sc/%sx
3199 anymore, since ipython keeps this always done for you. Note that
3204 anymore, since ipython keeps this always done for you. Note that
3200 only the LAST results are stored, the _o/e variables are
3205 only the LAST results are stored, the _o/e variables are
3201 overwritten on each call. If you need to save their contents
3206 overwritten on each call. If you need to save their contents
3202 further, simply bind them to any other name.
3207 further, simply bind them to any other name.
3203
3208
3204 2005-03-17 Fernando Perez <fperez@colorado.edu>
3209 2005-03-17 Fernando Perez <fperez@colorado.edu>
3205
3210
3206 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3211 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3207 prompt namespace handling.
3212 prompt namespace handling.
3208
3213
3209 2005-03-16 Fernando Perez <fperez@colorado.edu>
3214 2005-03-16 Fernando Perez <fperez@colorado.edu>
3210
3215
3211 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3216 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3212 classic prompts to be '>>> ' (final space was missing, and it
3217 classic prompts to be '>>> ' (final space was missing, and it
3213 trips the emacs python mode).
3218 trips the emacs python mode).
3214 (BasePrompt.__str__): Added safe support for dynamic prompt
3219 (BasePrompt.__str__): Added safe support for dynamic prompt
3215 strings. Now you can set your prompt string to be '$x', and the
3220 strings. Now you can set your prompt string to be '$x', and the
3216 value of x will be printed from your interactive namespace. The
3221 value of x will be printed from your interactive namespace. The
3217 interpolation syntax includes the full Itpl support, so
3222 interpolation syntax includes the full Itpl support, so
3218 ${foo()+x+bar()} is a valid prompt string now, and the function
3223 ${foo()+x+bar()} is a valid prompt string now, and the function
3219 calls will be made at runtime.
3224 calls will be made at runtime.
3220
3225
3221 2005-03-15 Fernando Perez <fperez@colorado.edu>
3226 2005-03-15 Fernando Perez <fperez@colorado.edu>
3222
3227
3223 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3228 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3224 avoid name clashes in pylab. %hist still works, it just forwards
3229 avoid name clashes in pylab. %hist still works, it just forwards
3225 the call to %history.
3230 the call to %history.
3226
3231
3227 2005-03-02 *** Released version 0.6.12
3232 2005-03-02 *** Released version 0.6.12
3228
3233
3229 2005-03-02 Fernando Perez <fperez@colorado.edu>
3234 2005-03-02 Fernando Perez <fperez@colorado.edu>
3230
3235
3231 * IPython/iplib.py (handle_magic): log magic calls properly as
3236 * IPython/iplib.py (handle_magic): log magic calls properly as
3232 ipmagic() function calls.
3237 ipmagic() function calls.
3233
3238
3234 * IPython/Magic.py (magic_time): Improved %time to support
3239 * IPython/Magic.py (magic_time): Improved %time to support
3235 statements and provide wall-clock as well as CPU time.
3240 statements and provide wall-clock as well as CPU time.
3236
3241
3237 2005-02-27 Fernando Perez <fperez@colorado.edu>
3242 2005-02-27 Fernando Perez <fperez@colorado.edu>
3238
3243
3239 * IPython/hooks.py: New hooks module, to expose user-modifiable
3244 * IPython/hooks.py: New hooks module, to expose user-modifiable
3240 IPython functionality in a clean manner. For now only the editor
3245 IPython functionality in a clean manner. For now only the editor
3241 hook is actually written, and other thigns which I intend to turn
3246 hook is actually written, and other thigns which I intend to turn
3242 into proper hooks aren't yet there. The display and prefilter
3247 into proper hooks aren't yet there. The display and prefilter
3243 stuff, for example, should be hooks. But at least now the
3248 stuff, for example, should be hooks. But at least now the
3244 framework is in place, and the rest can be moved here with more
3249 framework is in place, and the rest can be moved here with more
3245 time later. IPython had had a .hooks variable for a long time for
3250 time later. IPython had had a .hooks variable for a long time for
3246 this purpose, but I'd never actually used it for anything.
3251 this purpose, but I'd never actually used it for anything.
3247
3252
3248 2005-02-26 Fernando Perez <fperez@colorado.edu>
3253 2005-02-26 Fernando Perez <fperez@colorado.edu>
3249
3254
3250 * IPython/ipmaker.py (make_IPython): make the default ipython
3255 * IPython/ipmaker.py (make_IPython): make the default ipython
3251 directory be called _ipython under win32, to follow more the
3256 directory be called _ipython under win32, to follow more the
3252 naming peculiarities of that platform (where buggy software like
3257 naming peculiarities of that platform (where buggy software like
3253 Visual Sourcesafe breaks with .named directories). Reported by
3258 Visual Sourcesafe breaks with .named directories). Reported by
3254 Ville Vainio.
3259 Ville Vainio.
3255
3260
3256 2005-02-23 Fernando Perez <fperez@colorado.edu>
3261 2005-02-23 Fernando Perez <fperez@colorado.edu>
3257
3262
3258 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3263 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3259 auto_aliases for win32 which were causing problems. Users can
3264 auto_aliases for win32 which were causing problems. Users can
3260 define the ones they personally like.
3265 define the ones they personally like.
3261
3266
3262 2005-02-21 Fernando Perez <fperez@colorado.edu>
3267 2005-02-21 Fernando Perez <fperez@colorado.edu>
3263
3268
3264 * IPython/Magic.py (magic_time): new magic to time execution of
3269 * IPython/Magic.py (magic_time): new magic to time execution of
3265 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3270 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3266
3271
3267 2005-02-19 Fernando Perez <fperez@colorado.edu>
3272 2005-02-19 Fernando Perez <fperez@colorado.edu>
3268
3273
3269 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3274 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3270 into keys (for prompts, for example).
3275 into keys (for prompts, for example).
3271
3276
3272 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3277 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3273 prompts in case users want them. This introduces a small behavior
3278 prompts in case users want them. This introduces a small behavior
3274 change: ipython does not automatically add a space to all prompts
3279 change: ipython does not automatically add a space to all prompts
3275 anymore. To get the old prompts with a space, users should add it
3280 anymore. To get the old prompts with a space, users should add it
3276 manually to their ipythonrc file, so for example prompt_in1 should
3281 manually to their ipythonrc file, so for example prompt_in1 should
3277 now read 'In [\#]: ' instead of 'In [\#]:'.
3282 now read 'In [\#]: ' instead of 'In [\#]:'.
3278 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3283 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3279 file) to control left-padding of secondary prompts.
3284 file) to control left-padding of secondary prompts.
3280
3285
3281 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3286 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3282 the profiler can't be imported. Fix for Debian, which removed
3287 the profiler can't be imported. Fix for Debian, which removed
3283 profile.py because of License issues. I applied a slightly
3288 profile.py because of License issues. I applied a slightly
3284 modified version of the original Debian patch at
3289 modified version of the original Debian patch at
3285 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3290 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3286
3291
3287 2005-02-17 Fernando Perez <fperez@colorado.edu>
3292 2005-02-17 Fernando Perez <fperez@colorado.edu>
3288
3293
3289 * IPython/genutils.py (native_line_ends): Fix bug which would
3294 * IPython/genutils.py (native_line_ends): Fix bug which would
3290 cause improper line-ends under win32 b/c I was not opening files
3295 cause improper line-ends under win32 b/c I was not opening files
3291 in binary mode. Bug report and fix thanks to Ville.
3296 in binary mode. Bug report and fix thanks to Ville.
3292
3297
3293 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3298 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3294 trying to catch spurious foo[1] autocalls. My fix actually broke
3299 trying to catch spurious foo[1] autocalls. My fix actually broke
3295 ',/' autoquote/call with explicit escape (bad regexp).
3300 ',/' autoquote/call with explicit escape (bad regexp).
3296
3301
3297 2005-02-15 *** Released version 0.6.11
3302 2005-02-15 *** Released version 0.6.11
3298
3303
3299 2005-02-14 Fernando Perez <fperez@colorado.edu>
3304 2005-02-14 Fernando Perez <fperez@colorado.edu>
3300
3305
3301 * IPython/background_jobs.py: New background job management
3306 * IPython/background_jobs.py: New background job management
3302 subsystem. This is implemented via a new set of classes, and
3307 subsystem. This is implemented via a new set of classes, and
3303 IPython now provides a builtin 'jobs' object for background job
3308 IPython now provides a builtin 'jobs' object for background job
3304 execution. A convenience %bg magic serves as a lightweight
3309 execution. A convenience %bg magic serves as a lightweight
3305 frontend for starting the more common type of calls. This was
3310 frontend for starting the more common type of calls. This was
3306 inspired by discussions with B. Granger and the BackgroundCommand
3311 inspired by discussions with B. Granger and the BackgroundCommand
3307 class described in the book Python Scripting for Computational
3312 class described in the book Python Scripting for Computational
3308 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3313 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3309 (although ultimately no code from this text was used, as IPython's
3314 (although ultimately no code from this text was used, as IPython's
3310 system is a separate implementation).
3315 system is a separate implementation).
3311
3316
3312 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3317 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3313 to control the completion of single/double underscore names
3318 to control the completion of single/double underscore names
3314 separately. As documented in the example ipytonrc file, the
3319 separately. As documented in the example ipytonrc file, the
3315 readline_omit__names variable can now be set to 2, to omit even
3320 readline_omit__names variable can now be set to 2, to omit even
3316 single underscore names. Thanks to a patch by Brian Wong
3321 single underscore names. Thanks to a patch by Brian Wong
3317 <BrianWong-AT-AirgoNetworks.Com>.
3322 <BrianWong-AT-AirgoNetworks.Com>.
3318 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3323 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3319 be autocalled as foo([1]) if foo were callable. A problem for
3324 be autocalled as foo([1]) if foo were callable. A problem for
3320 things which are both callable and implement __getitem__.
3325 things which are both callable and implement __getitem__.
3321 (init_readline): Fix autoindentation for win32. Thanks to a patch
3326 (init_readline): Fix autoindentation for win32. Thanks to a patch
3322 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3327 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3323
3328
3324 2005-02-12 Fernando Perez <fperez@colorado.edu>
3329 2005-02-12 Fernando Perez <fperez@colorado.edu>
3325
3330
3326 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3331 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3327 which I had written long ago to sort out user error messages which
3332 which I had written long ago to sort out user error messages which
3328 may occur during startup. This seemed like a good idea initially,
3333 may occur during startup. This seemed like a good idea initially,
3329 but it has proven a disaster in retrospect. I don't want to
3334 but it has proven a disaster in retrospect. I don't want to
3330 change much code for now, so my fix is to set the internal 'debug'
3335 change much code for now, so my fix is to set the internal 'debug'
3331 flag to true everywhere, whose only job was precisely to control
3336 flag to true everywhere, whose only job was precisely to control
3332 this subsystem. This closes issue 28 (as well as avoiding all
3337 this subsystem. This closes issue 28 (as well as avoiding all
3333 sorts of strange hangups which occur from time to time).
3338 sorts of strange hangups which occur from time to time).
3334
3339
3335 2005-02-07 Fernando Perez <fperez@colorado.edu>
3340 2005-02-07 Fernando Perez <fperez@colorado.edu>
3336
3341
3337 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3342 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3338 previous call produced a syntax error.
3343 previous call produced a syntax error.
3339
3344
3340 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3345 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3341 classes without constructor.
3346 classes without constructor.
3342
3347
3343 2005-02-06 Fernando Perez <fperez@colorado.edu>
3348 2005-02-06 Fernando Perez <fperez@colorado.edu>
3344
3349
3345 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3350 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3346 completions with the results of each matcher, so we return results
3351 completions with the results of each matcher, so we return results
3347 to the user from all namespaces. This breaks with ipython
3352 to the user from all namespaces. This breaks with ipython
3348 tradition, but I think it's a nicer behavior. Now you get all
3353 tradition, but I think it's a nicer behavior. Now you get all
3349 possible completions listed, from all possible namespaces (python,
3354 possible completions listed, from all possible namespaces (python,
3350 filesystem, magics...) After a request by John Hunter
3355 filesystem, magics...) After a request by John Hunter
3351 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3356 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3352
3357
3353 2005-02-05 Fernando Perez <fperez@colorado.edu>
3358 2005-02-05 Fernando Perez <fperez@colorado.edu>
3354
3359
3355 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3360 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3356 the call had quote characters in it (the quotes were stripped).
3361 the call had quote characters in it (the quotes were stripped).
3357
3362
3358 2005-01-31 Fernando Perez <fperez@colorado.edu>
3363 2005-01-31 Fernando Perez <fperez@colorado.edu>
3359
3364
3360 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3365 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3361 Itpl.itpl() to make the code more robust against psyco
3366 Itpl.itpl() to make the code more robust against psyco
3362 optimizations.
3367 optimizations.
3363
3368
3364 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3369 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3365 of causing an exception. Quicker, cleaner.
3370 of causing an exception. Quicker, cleaner.
3366
3371
3367 2005-01-28 Fernando Perez <fperez@colorado.edu>
3372 2005-01-28 Fernando Perez <fperez@colorado.edu>
3368
3373
3369 * scripts/ipython_win_post_install.py (install): hardcode
3374 * scripts/ipython_win_post_install.py (install): hardcode
3370 sys.prefix+'python.exe' as the executable path. It turns out that
3375 sys.prefix+'python.exe' as the executable path. It turns out that
3371 during the post-installation run, sys.executable resolves to the
3376 during the post-installation run, sys.executable resolves to the
3372 name of the binary installer! I should report this as a distutils
3377 name of the binary installer! I should report this as a distutils
3373 bug, I think. I updated the .10 release with this tiny fix, to
3378 bug, I think. I updated the .10 release with this tiny fix, to
3374 avoid annoying the lists further.
3379 avoid annoying the lists further.
3375
3380
3376 2005-01-27 *** Released version 0.6.10
3381 2005-01-27 *** Released version 0.6.10
3377
3382
3378 2005-01-27 Fernando Perez <fperez@colorado.edu>
3383 2005-01-27 Fernando Perez <fperez@colorado.edu>
3379
3384
3380 * IPython/numutils.py (norm): Added 'inf' as optional name for
3385 * IPython/numutils.py (norm): Added 'inf' as optional name for
3381 L-infinity norm, included references to mathworld.com for vector
3386 L-infinity norm, included references to mathworld.com for vector
3382 norm definitions.
3387 norm definitions.
3383 (amin/amax): added amin/amax for array min/max. Similar to what
3388 (amin/amax): added amin/amax for array min/max. Similar to what
3384 pylab ships with after the recent reorganization of names.
3389 pylab ships with after the recent reorganization of names.
3385 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3390 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3386
3391
3387 * ipython.el: committed Alex's recent fixes and improvements.
3392 * ipython.el: committed Alex's recent fixes and improvements.
3388 Tested with python-mode from CVS, and it looks excellent. Since
3393 Tested with python-mode from CVS, and it looks excellent. Since
3389 python-mode hasn't released anything in a while, I'm temporarily
3394 python-mode hasn't released anything in a while, I'm temporarily
3390 putting a copy of today's CVS (v 4.70) of python-mode in:
3395 putting a copy of today's CVS (v 4.70) of python-mode in:
3391 http://ipython.scipy.org/tmp/python-mode.el
3396 http://ipython.scipy.org/tmp/python-mode.el
3392
3397
3393 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3398 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3394 sys.executable for the executable name, instead of assuming it's
3399 sys.executable for the executable name, instead of assuming it's
3395 called 'python.exe' (the post-installer would have produced broken
3400 called 'python.exe' (the post-installer would have produced broken
3396 setups on systems with a differently named python binary).
3401 setups on systems with a differently named python binary).
3397
3402
3398 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3403 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3399 references to os.linesep, to make the code more
3404 references to os.linesep, to make the code more
3400 platform-independent. This is also part of the win32 coloring
3405 platform-independent. This is also part of the win32 coloring
3401 fixes.
3406 fixes.
3402
3407
3403 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3408 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3404 lines, which actually cause coloring bugs because the length of
3409 lines, which actually cause coloring bugs because the length of
3405 the line is very difficult to correctly compute with embedded
3410 the line is very difficult to correctly compute with embedded
3406 escapes. This was the source of all the coloring problems under
3411 escapes. This was the source of all the coloring problems under
3407 Win32. I think that _finally_, Win32 users have a properly
3412 Win32. I think that _finally_, Win32 users have a properly
3408 working ipython in all respects. This would never have happened
3413 working ipython in all respects. This would never have happened
3409 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3414 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3410
3415
3411 2005-01-26 *** Released version 0.6.9
3416 2005-01-26 *** Released version 0.6.9
3412
3417
3413 2005-01-25 Fernando Perez <fperez@colorado.edu>
3418 2005-01-25 Fernando Perez <fperez@colorado.edu>
3414
3419
3415 * setup.py: finally, we have a true Windows installer, thanks to
3420 * setup.py: finally, we have a true Windows installer, thanks to
3416 the excellent work of Viktor Ransmayr
3421 the excellent work of Viktor Ransmayr
3417 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3422 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3418 Windows users. The setup routine is quite a bit cleaner thanks to
3423 Windows users. The setup routine is quite a bit cleaner thanks to
3419 this, and the post-install script uses the proper functions to
3424 this, and the post-install script uses the proper functions to
3420 allow a clean de-installation using the standard Windows Control
3425 allow a clean de-installation using the standard Windows Control
3421 Panel.
3426 Panel.
3422
3427
3423 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3428 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3424 environment variable under all OSes (including win32) if
3429 environment variable under all OSes (including win32) if
3425 available. This will give consistency to win32 users who have set
3430 available. This will give consistency to win32 users who have set
3426 this variable for any reason. If os.environ['HOME'] fails, the
3431 this variable for any reason. If os.environ['HOME'] fails, the
3427 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3432 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3428
3433
3429 2005-01-24 Fernando Perez <fperez@colorado.edu>
3434 2005-01-24 Fernando Perez <fperez@colorado.edu>
3430
3435
3431 * IPython/numutils.py (empty_like): add empty_like(), similar to
3436 * IPython/numutils.py (empty_like): add empty_like(), similar to
3432 zeros_like() but taking advantage of the new empty() Numeric routine.
3437 zeros_like() but taking advantage of the new empty() Numeric routine.
3433
3438
3434 2005-01-23 *** Released version 0.6.8
3439 2005-01-23 *** Released version 0.6.8
3435
3440
3436 2005-01-22 Fernando Perez <fperez@colorado.edu>
3441 2005-01-22 Fernando Perez <fperez@colorado.edu>
3437
3442
3438 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3443 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3439 automatic show() calls. After discussing things with JDH, it
3444 automatic show() calls. After discussing things with JDH, it
3440 turns out there are too many corner cases where this can go wrong.
3445 turns out there are too many corner cases where this can go wrong.
3441 It's best not to try to be 'too smart', and simply have ipython
3446 It's best not to try to be 'too smart', and simply have ipython
3442 reproduce as much as possible the default behavior of a normal
3447 reproduce as much as possible the default behavior of a normal
3443 python shell.
3448 python shell.
3444
3449
3445 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3450 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3446 line-splitting regexp and _prefilter() to avoid calling getattr()
3451 line-splitting regexp and _prefilter() to avoid calling getattr()
3447 on assignments. This closes
3452 on assignments. This closes
3448 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3453 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3449 readline uses getattr(), so a simple <TAB> keypress is still
3454 readline uses getattr(), so a simple <TAB> keypress is still
3450 enough to trigger getattr() calls on an object.
3455 enough to trigger getattr() calls on an object.
3451
3456
3452 2005-01-21 Fernando Perez <fperez@colorado.edu>
3457 2005-01-21 Fernando Perez <fperez@colorado.edu>
3453
3458
3454 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3459 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3455 docstring under pylab so it doesn't mask the original.
3460 docstring under pylab so it doesn't mask the original.
3456
3461
3457 2005-01-21 *** Released version 0.6.7
3462 2005-01-21 *** Released version 0.6.7
3458
3463
3459 2005-01-21 Fernando Perez <fperez@colorado.edu>
3464 2005-01-21 Fernando Perez <fperez@colorado.edu>
3460
3465
3461 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3466 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3462 signal handling for win32 users in multithreaded mode.
3467 signal handling for win32 users in multithreaded mode.
3463
3468
3464 2005-01-17 Fernando Perez <fperez@colorado.edu>
3469 2005-01-17 Fernando Perez <fperez@colorado.edu>
3465
3470
3466 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3471 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3467 instances with no __init__. After a crash report by Norbert Nemec
3472 instances with no __init__. After a crash report by Norbert Nemec
3468 <Norbert-AT-nemec-online.de>.
3473 <Norbert-AT-nemec-online.de>.
3469
3474
3470 2005-01-14 Fernando Perez <fperez@colorado.edu>
3475 2005-01-14 Fernando Perez <fperez@colorado.edu>
3471
3476
3472 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3477 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3473 names for verbose exceptions, when multiple dotted names and the
3478 names for verbose exceptions, when multiple dotted names and the
3474 'parent' object were present on the same line.
3479 'parent' object were present on the same line.
3475
3480
3476 2005-01-11 Fernando Perez <fperez@colorado.edu>
3481 2005-01-11 Fernando Perez <fperez@colorado.edu>
3477
3482
3478 * IPython/genutils.py (flag_calls): new utility to trap and flag
3483 * IPython/genutils.py (flag_calls): new utility to trap and flag
3479 calls in functions. I need it to clean up matplotlib support.
3484 calls in functions. I need it to clean up matplotlib support.
3480 Also removed some deprecated code in genutils.
3485 Also removed some deprecated code in genutils.
3481
3486
3482 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3487 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3483 that matplotlib scripts called with %run, which don't call show()
3488 that matplotlib scripts called with %run, which don't call show()
3484 themselves, still have their plotting windows open.
3489 themselves, still have their plotting windows open.
3485
3490
3486 2005-01-05 Fernando Perez <fperez@colorado.edu>
3491 2005-01-05 Fernando Perez <fperez@colorado.edu>
3487
3492
3488 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3493 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3489 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3494 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3490
3495
3491 2004-12-19 Fernando Perez <fperez@colorado.edu>
3496 2004-12-19 Fernando Perez <fperez@colorado.edu>
3492
3497
3493 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3498 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3494 parent_runcode, which was an eyesore. The same result can be
3499 parent_runcode, which was an eyesore. The same result can be
3495 obtained with Python's regular superclass mechanisms.
3500 obtained with Python's regular superclass mechanisms.
3496
3501
3497 2004-12-17 Fernando Perez <fperez@colorado.edu>
3502 2004-12-17 Fernando Perez <fperez@colorado.edu>
3498
3503
3499 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3504 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3500 reported by Prabhu.
3505 reported by Prabhu.
3501 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3506 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3502 sys.stderr) instead of explicitly calling sys.stderr. This helps
3507 sys.stderr) instead of explicitly calling sys.stderr. This helps
3503 maintain our I/O abstractions clean, for future GUI embeddings.
3508 maintain our I/O abstractions clean, for future GUI embeddings.
3504
3509
3505 * IPython/genutils.py (info): added new utility for sys.stderr
3510 * IPython/genutils.py (info): added new utility for sys.stderr
3506 unified info message handling (thin wrapper around warn()).
3511 unified info message handling (thin wrapper around warn()).
3507
3512
3508 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3513 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3509 composite (dotted) names on verbose exceptions.
3514 composite (dotted) names on verbose exceptions.
3510 (VerboseTB.nullrepr): harden against another kind of errors which
3515 (VerboseTB.nullrepr): harden against another kind of errors which
3511 Python's inspect module can trigger, and which were crashing
3516 Python's inspect module can trigger, and which were crashing
3512 IPython. Thanks to a report by Marco Lombardi
3517 IPython. Thanks to a report by Marco Lombardi
3513 <mlombard-AT-ma010192.hq.eso.org>.
3518 <mlombard-AT-ma010192.hq.eso.org>.
3514
3519
3515 2004-12-13 *** Released version 0.6.6
3520 2004-12-13 *** Released version 0.6.6
3516
3521
3517 2004-12-12 Fernando Perez <fperez@colorado.edu>
3522 2004-12-12 Fernando Perez <fperez@colorado.edu>
3518
3523
3519 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3524 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3520 generated by pygtk upon initialization if it was built without
3525 generated by pygtk upon initialization if it was built without
3521 threads (for matplotlib users). After a crash reported by
3526 threads (for matplotlib users). After a crash reported by
3522 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3527 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3523
3528
3524 * IPython/ipmaker.py (make_IPython): fix small bug in the
3529 * IPython/ipmaker.py (make_IPython): fix small bug in the
3525 import_some parameter for multiple imports.
3530 import_some parameter for multiple imports.
3526
3531
3527 * IPython/iplib.py (ipmagic): simplified the interface of
3532 * IPython/iplib.py (ipmagic): simplified the interface of
3528 ipmagic() to take a single string argument, just as it would be
3533 ipmagic() to take a single string argument, just as it would be
3529 typed at the IPython cmd line.
3534 typed at the IPython cmd line.
3530 (ipalias): Added new ipalias() with an interface identical to
3535 (ipalias): Added new ipalias() with an interface identical to
3531 ipmagic(). This completes exposing a pure python interface to the
3536 ipmagic(). This completes exposing a pure python interface to the
3532 alias and magic system, which can be used in loops or more complex
3537 alias and magic system, which can be used in loops or more complex
3533 code where IPython's automatic line mangling is not active.
3538 code where IPython's automatic line mangling is not active.
3534
3539
3535 * IPython/genutils.py (timing): changed interface of timing to
3540 * IPython/genutils.py (timing): changed interface of timing to
3536 simply run code once, which is the most common case. timings()
3541 simply run code once, which is the most common case. timings()
3537 remains unchanged, for the cases where you want multiple runs.
3542 remains unchanged, for the cases where you want multiple runs.
3538
3543
3539 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3544 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3540 bug where Python2.2 crashes with exec'ing code which does not end
3545 bug where Python2.2 crashes with exec'ing code which does not end
3541 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3546 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3542 before.
3547 before.
3543
3548
3544 2004-12-10 Fernando Perez <fperez@colorado.edu>
3549 2004-12-10 Fernando Perez <fperez@colorado.edu>
3545
3550
3546 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3551 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3547 -t to -T, to accomodate the new -t flag in %run (the %run and
3552 -t to -T, to accomodate the new -t flag in %run (the %run and
3548 %prun options are kind of intermixed, and it's not easy to change
3553 %prun options are kind of intermixed, and it's not easy to change
3549 this with the limitations of python's getopt).
3554 this with the limitations of python's getopt).
3550
3555
3551 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3556 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3552 the execution of scripts. It's not as fine-tuned as timeit.py,
3557 the execution of scripts. It's not as fine-tuned as timeit.py,
3553 but it works from inside ipython (and under 2.2, which lacks
3558 but it works from inside ipython (and under 2.2, which lacks
3554 timeit.py). Optionally a number of runs > 1 can be given for
3559 timeit.py). Optionally a number of runs > 1 can be given for
3555 timing very short-running code.
3560 timing very short-running code.
3556
3561
3557 * IPython/genutils.py (uniq_stable): new routine which returns a
3562 * IPython/genutils.py (uniq_stable): new routine which returns a
3558 list of unique elements in any iterable, but in stable order of
3563 list of unique elements in any iterable, but in stable order of
3559 appearance. I needed this for the ultraTB fixes, and it's a handy
3564 appearance. I needed this for the ultraTB fixes, and it's a handy
3560 utility.
3565 utility.
3561
3566
3562 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3567 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3563 dotted names in Verbose exceptions. This had been broken since
3568 dotted names in Verbose exceptions. This had been broken since
3564 the very start, now x.y will properly be printed in a Verbose
3569 the very start, now x.y will properly be printed in a Verbose
3565 traceback, instead of x being shown and y appearing always as an
3570 traceback, instead of x being shown and y appearing always as an
3566 'undefined global'. Getting this to work was a bit tricky,
3571 'undefined global'. Getting this to work was a bit tricky,
3567 because by default python tokenizers are stateless. Saved by
3572 because by default python tokenizers are stateless. Saved by
3568 python's ability to easily add a bit of state to an arbitrary
3573 python's ability to easily add a bit of state to an arbitrary
3569 function (without needing to build a full-blown callable object).
3574 function (without needing to build a full-blown callable object).
3570
3575
3571 Also big cleanup of this code, which had horrendous runtime
3576 Also big cleanup of this code, which had horrendous runtime
3572 lookups of zillions of attributes for colorization. Moved all
3577 lookups of zillions of attributes for colorization. Moved all
3573 this code into a few templates, which make it cleaner and quicker.
3578 this code into a few templates, which make it cleaner and quicker.
3574
3579
3575 Printout quality was also improved for Verbose exceptions: one
3580 Printout quality was also improved for Verbose exceptions: one
3576 variable per line, and memory addresses are printed (this can be
3581 variable per line, and memory addresses are printed (this can be
3577 quite handy in nasty debugging situations, which is what Verbose
3582 quite handy in nasty debugging situations, which is what Verbose
3578 is for).
3583 is for).
3579
3584
3580 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3585 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3581 the command line as scripts to be loaded by embedded instances.
3586 the command line as scripts to be loaded by embedded instances.
3582 Doing so has the potential for an infinite recursion if there are
3587 Doing so has the potential for an infinite recursion if there are
3583 exceptions thrown in the process. This fixes a strange crash
3588 exceptions thrown in the process. This fixes a strange crash
3584 reported by Philippe MULLER <muller-AT-irit.fr>.
3589 reported by Philippe MULLER <muller-AT-irit.fr>.
3585
3590
3586 2004-12-09 Fernando Perez <fperez@colorado.edu>
3591 2004-12-09 Fernando Perez <fperez@colorado.edu>
3587
3592
3588 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3593 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3589 to reflect new names in matplotlib, which now expose the
3594 to reflect new names in matplotlib, which now expose the
3590 matlab-compatible interface via a pylab module instead of the
3595 matlab-compatible interface via a pylab module instead of the
3591 'matlab' name. The new code is backwards compatible, so users of
3596 'matlab' name. The new code is backwards compatible, so users of
3592 all matplotlib versions are OK. Patch by J. Hunter.
3597 all matplotlib versions are OK. Patch by J. Hunter.
3593
3598
3594 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3599 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3595 of __init__ docstrings for instances (class docstrings are already
3600 of __init__ docstrings for instances (class docstrings are already
3596 automatically printed). Instances with customized docstrings
3601 automatically printed). Instances with customized docstrings
3597 (indep. of the class) are also recognized and all 3 separate
3602 (indep. of the class) are also recognized and all 3 separate
3598 docstrings are printed (instance, class, constructor). After some
3603 docstrings are printed (instance, class, constructor). After some
3599 comments/suggestions by J. Hunter.
3604 comments/suggestions by J. Hunter.
3600
3605
3601 2004-12-05 Fernando Perez <fperez@colorado.edu>
3606 2004-12-05 Fernando Perez <fperez@colorado.edu>
3602
3607
3603 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3608 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3604 warnings when tab-completion fails and triggers an exception.
3609 warnings when tab-completion fails and triggers an exception.
3605
3610
3606 2004-12-03 Fernando Perez <fperez@colorado.edu>
3611 2004-12-03 Fernando Perez <fperez@colorado.edu>
3607
3612
3608 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3613 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3609 be triggered when using 'run -p'. An incorrect option flag was
3614 be triggered when using 'run -p'. An incorrect option flag was
3610 being set ('d' instead of 'D').
3615 being set ('d' instead of 'D').
3611 (manpage): fix missing escaped \- sign.
3616 (manpage): fix missing escaped \- sign.
3612
3617
3613 2004-11-30 *** Released version 0.6.5
3618 2004-11-30 *** Released version 0.6.5
3614
3619
3615 2004-11-30 Fernando Perez <fperez@colorado.edu>
3620 2004-11-30 Fernando Perez <fperez@colorado.edu>
3616
3621
3617 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3622 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3618 setting with -d option.
3623 setting with -d option.
3619
3624
3620 * setup.py (docfiles): Fix problem where the doc glob I was using
3625 * setup.py (docfiles): Fix problem where the doc glob I was using
3621 was COMPLETELY BROKEN. It was giving the right files by pure
3626 was COMPLETELY BROKEN. It was giving the right files by pure
3622 accident, but failed once I tried to include ipython.el. Note:
3627 accident, but failed once I tried to include ipython.el. Note:
3623 glob() does NOT allow you to do exclusion on multiple endings!
3628 glob() does NOT allow you to do exclusion on multiple endings!
3624
3629
3625 2004-11-29 Fernando Perez <fperez@colorado.edu>
3630 2004-11-29 Fernando Perez <fperez@colorado.edu>
3626
3631
3627 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3632 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3628 the manpage as the source. Better formatting & consistency.
3633 the manpage as the source. Better formatting & consistency.
3629
3634
3630 * IPython/Magic.py (magic_run): Added new -d option, to run
3635 * IPython/Magic.py (magic_run): Added new -d option, to run
3631 scripts under the control of the python pdb debugger. Note that
3636 scripts under the control of the python pdb debugger. Note that
3632 this required changing the %prun option -d to -D, to avoid a clash
3637 this required changing the %prun option -d to -D, to avoid a clash
3633 (since %run must pass options to %prun, and getopt is too dumb to
3638 (since %run must pass options to %prun, and getopt is too dumb to
3634 handle options with string values with embedded spaces). Thanks
3639 handle options with string values with embedded spaces). Thanks
3635 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3640 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3636 (magic_who_ls): added type matching to %who and %whos, so that one
3641 (magic_who_ls): added type matching to %who and %whos, so that one
3637 can filter their output to only include variables of certain
3642 can filter their output to only include variables of certain
3638 types. Another suggestion by Matthew.
3643 types. Another suggestion by Matthew.
3639 (magic_whos): Added memory summaries in kb and Mb for arrays.
3644 (magic_whos): Added memory summaries in kb and Mb for arrays.
3640 (magic_who): Improve formatting (break lines every 9 vars).
3645 (magic_who): Improve formatting (break lines every 9 vars).
3641
3646
3642 2004-11-28 Fernando Perez <fperez@colorado.edu>
3647 2004-11-28 Fernando Perez <fperez@colorado.edu>
3643
3648
3644 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3649 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3645 cache when empty lines were present.
3650 cache when empty lines were present.
3646
3651
3647 2004-11-24 Fernando Perez <fperez@colorado.edu>
3652 2004-11-24 Fernando Perez <fperez@colorado.edu>
3648
3653
3649 * IPython/usage.py (__doc__): document the re-activated threading
3654 * IPython/usage.py (__doc__): document the re-activated threading
3650 options for WX and GTK.
3655 options for WX and GTK.
3651
3656
3652 2004-11-23 Fernando Perez <fperez@colorado.edu>
3657 2004-11-23 Fernando Perez <fperez@colorado.edu>
3653
3658
3654 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3659 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3655 the -wthread and -gthread options, along with a new -tk one to try
3660 the -wthread and -gthread options, along with a new -tk one to try
3656 and coordinate Tk threading with wx/gtk. The tk support is very
3661 and coordinate Tk threading with wx/gtk. The tk support is very
3657 platform dependent, since it seems to require Tcl and Tk to be
3662 platform dependent, since it seems to require Tcl and Tk to be
3658 built with threads (Fedora1/2 appears NOT to have it, but in
3663 built with threads (Fedora1/2 appears NOT to have it, but in
3659 Prabhu's Debian boxes it works OK). But even with some Tk
3664 Prabhu's Debian boxes it works OK). But even with some Tk
3660 limitations, this is a great improvement.
3665 limitations, this is a great improvement.
3661
3666
3662 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3667 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3663 info in user prompts. Patch by Prabhu.
3668 info in user prompts. Patch by Prabhu.
3664
3669
3665 2004-11-18 Fernando Perez <fperez@colorado.edu>
3670 2004-11-18 Fernando Perez <fperez@colorado.edu>
3666
3671
3667 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3672 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3668 EOFErrors and bail, to avoid infinite loops if a non-terminating
3673 EOFErrors and bail, to avoid infinite loops if a non-terminating
3669 file is fed into ipython. Patch submitted in issue 19 by user,
3674 file is fed into ipython. Patch submitted in issue 19 by user,
3670 many thanks.
3675 many thanks.
3671
3676
3672 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3677 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3673 autoquote/parens in continuation prompts, which can cause lots of
3678 autoquote/parens in continuation prompts, which can cause lots of
3674 problems. Closes roundup issue 20.
3679 problems. Closes roundup issue 20.
3675
3680
3676 2004-11-17 Fernando Perez <fperez@colorado.edu>
3681 2004-11-17 Fernando Perez <fperez@colorado.edu>
3677
3682
3678 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3683 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3679 reported as debian bug #280505. I'm not sure my local changelog
3684 reported as debian bug #280505. I'm not sure my local changelog
3680 entry has the proper debian format (Jack?).
3685 entry has the proper debian format (Jack?).
3681
3686
3682 2004-11-08 *** Released version 0.6.4
3687 2004-11-08 *** Released version 0.6.4
3683
3688
3684 2004-11-08 Fernando Perez <fperez@colorado.edu>
3689 2004-11-08 Fernando Perez <fperez@colorado.edu>
3685
3690
3686 * IPython/iplib.py (init_readline): Fix exit message for Windows
3691 * IPython/iplib.py (init_readline): Fix exit message for Windows
3687 when readline is active. Thanks to a report by Eric Jones
3692 when readline is active. Thanks to a report by Eric Jones
3688 <eric-AT-enthought.com>.
3693 <eric-AT-enthought.com>.
3689
3694
3690 2004-11-07 Fernando Perez <fperez@colorado.edu>
3695 2004-11-07 Fernando Perez <fperez@colorado.edu>
3691
3696
3692 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3697 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3693 sometimes seen by win2k/cygwin users.
3698 sometimes seen by win2k/cygwin users.
3694
3699
3695 2004-11-06 Fernando Perez <fperez@colorado.edu>
3700 2004-11-06 Fernando Perez <fperez@colorado.edu>
3696
3701
3697 * IPython/iplib.py (interact): Change the handling of %Exit from
3702 * IPython/iplib.py (interact): Change the handling of %Exit from
3698 trying to propagate a SystemExit to an internal ipython flag.
3703 trying to propagate a SystemExit to an internal ipython flag.
3699 This is less elegant than using Python's exception mechanism, but
3704 This is less elegant than using Python's exception mechanism, but
3700 I can't get that to work reliably with threads, so under -pylab
3705 I can't get that to work reliably with threads, so under -pylab
3701 %Exit was hanging IPython. Cross-thread exception handling is
3706 %Exit was hanging IPython. Cross-thread exception handling is
3702 really a bitch. Thaks to a bug report by Stephen Walton
3707 really a bitch. Thaks to a bug report by Stephen Walton
3703 <stephen.walton-AT-csun.edu>.
3708 <stephen.walton-AT-csun.edu>.
3704
3709
3705 2004-11-04 Fernando Perez <fperez@colorado.edu>
3710 2004-11-04 Fernando Perez <fperez@colorado.edu>
3706
3711
3707 * IPython/iplib.py (raw_input_original): store a pointer to the
3712 * IPython/iplib.py (raw_input_original): store a pointer to the
3708 true raw_input to harden against code which can modify it
3713 true raw_input to harden against code which can modify it
3709 (wx.py.PyShell does this and would otherwise crash ipython).
3714 (wx.py.PyShell does this and would otherwise crash ipython).
3710 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3715 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3711
3716
3712 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3717 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3713 Ctrl-C problem, which does not mess up the input line.
3718 Ctrl-C problem, which does not mess up the input line.
3714
3719
3715 2004-11-03 Fernando Perez <fperez@colorado.edu>
3720 2004-11-03 Fernando Perez <fperez@colorado.edu>
3716
3721
3717 * IPython/Release.py: Changed licensing to BSD, in all files.
3722 * IPython/Release.py: Changed licensing to BSD, in all files.
3718 (name): lowercase name for tarball/RPM release.
3723 (name): lowercase name for tarball/RPM release.
3719
3724
3720 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3725 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3721 use throughout ipython.
3726 use throughout ipython.
3722
3727
3723 * IPython/Magic.py (Magic._ofind): Switch to using the new
3728 * IPython/Magic.py (Magic._ofind): Switch to using the new
3724 OInspect.getdoc() function.
3729 OInspect.getdoc() function.
3725
3730
3726 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3731 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3727 of the line currently being canceled via Ctrl-C. It's extremely
3732 of the line currently being canceled via Ctrl-C. It's extremely
3728 ugly, but I don't know how to do it better (the problem is one of
3733 ugly, but I don't know how to do it better (the problem is one of
3729 handling cross-thread exceptions).
3734 handling cross-thread exceptions).
3730
3735
3731 2004-10-28 Fernando Perez <fperez@colorado.edu>
3736 2004-10-28 Fernando Perez <fperez@colorado.edu>
3732
3737
3733 * IPython/Shell.py (signal_handler): add signal handlers to trap
3738 * IPython/Shell.py (signal_handler): add signal handlers to trap
3734 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3739 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3735 report by Francesc Alted.
3740 report by Francesc Alted.
3736
3741
3737 2004-10-21 Fernando Perez <fperez@colorado.edu>
3742 2004-10-21 Fernando Perez <fperez@colorado.edu>
3738
3743
3739 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3744 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3740 to % for pysh syntax extensions.
3745 to % for pysh syntax extensions.
3741
3746
3742 2004-10-09 Fernando Perez <fperez@colorado.edu>
3747 2004-10-09 Fernando Perez <fperez@colorado.edu>
3743
3748
3744 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3749 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3745 arrays to print a more useful summary, without calling str(arr).
3750 arrays to print a more useful summary, without calling str(arr).
3746 This avoids the problem of extremely lengthy computations which
3751 This avoids the problem of extremely lengthy computations which
3747 occur if arr is large, and appear to the user as a system lockup
3752 occur if arr is large, and appear to the user as a system lockup
3748 with 100% cpu activity. After a suggestion by Kristian Sandberg
3753 with 100% cpu activity. After a suggestion by Kristian Sandberg
3749 <Kristian.Sandberg@colorado.edu>.
3754 <Kristian.Sandberg@colorado.edu>.
3750 (Magic.__init__): fix bug in global magic escapes not being
3755 (Magic.__init__): fix bug in global magic escapes not being
3751 correctly set.
3756 correctly set.
3752
3757
3753 2004-10-08 Fernando Perez <fperez@colorado.edu>
3758 2004-10-08 Fernando Perez <fperez@colorado.edu>
3754
3759
3755 * IPython/Magic.py (__license__): change to absolute imports of
3760 * IPython/Magic.py (__license__): change to absolute imports of
3756 ipython's own internal packages, to start adapting to the absolute
3761 ipython's own internal packages, to start adapting to the absolute
3757 import requirement of PEP-328.
3762 import requirement of PEP-328.
3758
3763
3759 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3764 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3760 files, and standardize author/license marks through the Release
3765 files, and standardize author/license marks through the Release
3761 module instead of having per/file stuff (except for files with
3766 module instead of having per/file stuff (except for files with
3762 particular licenses, like the MIT/PSF-licensed codes).
3767 particular licenses, like the MIT/PSF-licensed codes).
3763
3768
3764 * IPython/Debugger.py: remove dead code for python 2.1
3769 * IPython/Debugger.py: remove dead code for python 2.1
3765
3770
3766 2004-10-04 Fernando Perez <fperez@colorado.edu>
3771 2004-10-04 Fernando Perez <fperez@colorado.edu>
3767
3772
3768 * IPython/iplib.py (ipmagic): New function for accessing magics
3773 * IPython/iplib.py (ipmagic): New function for accessing magics
3769 via a normal python function call.
3774 via a normal python function call.
3770
3775
3771 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3776 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3772 from '@' to '%', to accomodate the new @decorator syntax of python
3777 from '@' to '%', to accomodate the new @decorator syntax of python
3773 2.4.
3778 2.4.
3774
3779
3775 2004-09-29 Fernando Perez <fperez@colorado.edu>
3780 2004-09-29 Fernando Perez <fperez@colorado.edu>
3776
3781
3777 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3782 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3778 matplotlib.use to prevent running scripts which try to switch
3783 matplotlib.use to prevent running scripts which try to switch
3779 interactive backends from within ipython. This will just crash
3784 interactive backends from within ipython. This will just crash
3780 the python interpreter, so we can't allow it (but a detailed error
3785 the python interpreter, so we can't allow it (but a detailed error
3781 is given to the user).
3786 is given to the user).
3782
3787
3783 2004-09-28 Fernando Perez <fperez@colorado.edu>
3788 2004-09-28 Fernando Perez <fperez@colorado.edu>
3784
3789
3785 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3790 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3786 matplotlib-related fixes so that using @run with non-matplotlib
3791 matplotlib-related fixes so that using @run with non-matplotlib
3787 scripts doesn't pop up spurious plot windows. This requires
3792 scripts doesn't pop up spurious plot windows. This requires
3788 matplotlib >= 0.63, where I had to make some changes as well.
3793 matplotlib >= 0.63, where I had to make some changes as well.
3789
3794
3790 * IPython/ipmaker.py (make_IPython): update version requirement to
3795 * IPython/ipmaker.py (make_IPython): update version requirement to
3791 python 2.2.
3796 python 2.2.
3792
3797
3793 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3798 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3794 banner arg for embedded customization.
3799 banner arg for embedded customization.
3795
3800
3796 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3801 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3797 explicit uses of __IP as the IPython's instance name. Now things
3802 explicit uses of __IP as the IPython's instance name. Now things
3798 are properly handled via the shell.name value. The actual code
3803 are properly handled via the shell.name value. The actual code
3799 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3804 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3800 is much better than before. I'll clean things completely when the
3805 is much better than before. I'll clean things completely when the
3801 magic stuff gets a real overhaul.
3806 magic stuff gets a real overhaul.
3802
3807
3803 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3808 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3804 minor changes to debian dir.
3809 minor changes to debian dir.
3805
3810
3806 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3811 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3807 pointer to the shell itself in the interactive namespace even when
3812 pointer to the shell itself in the interactive namespace even when
3808 a user-supplied dict is provided. This is needed for embedding
3813 a user-supplied dict is provided. This is needed for embedding
3809 purposes (found by tests with Michel Sanner).
3814 purposes (found by tests with Michel Sanner).
3810
3815
3811 2004-09-27 Fernando Perez <fperez@colorado.edu>
3816 2004-09-27 Fernando Perez <fperez@colorado.edu>
3812
3817
3813 * IPython/UserConfig/ipythonrc: remove []{} from
3818 * IPython/UserConfig/ipythonrc: remove []{} from
3814 readline_remove_delims, so that things like [modname.<TAB> do
3819 readline_remove_delims, so that things like [modname.<TAB> do
3815 proper completion. This disables [].TAB, but that's a less common
3820 proper completion. This disables [].TAB, but that's a less common
3816 case than module names in list comprehensions, for example.
3821 case than module names in list comprehensions, for example.
3817 Thanks to a report by Andrea Riciputi.
3822 Thanks to a report by Andrea Riciputi.
3818
3823
3819 2004-09-09 Fernando Perez <fperez@colorado.edu>
3824 2004-09-09 Fernando Perez <fperez@colorado.edu>
3820
3825
3821 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3826 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3822 blocking problems in win32 and osx. Fix by John.
3827 blocking problems in win32 and osx. Fix by John.
3823
3828
3824 2004-09-08 Fernando Perez <fperez@colorado.edu>
3829 2004-09-08 Fernando Perez <fperez@colorado.edu>
3825
3830
3826 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3831 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3827 for Win32 and OSX. Fix by John Hunter.
3832 for Win32 and OSX. Fix by John Hunter.
3828
3833
3829 2004-08-30 *** Released version 0.6.3
3834 2004-08-30 *** Released version 0.6.3
3830
3835
3831 2004-08-30 Fernando Perez <fperez@colorado.edu>
3836 2004-08-30 Fernando Perez <fperez@colorado.edu>
3832
3837
3833 * setup.py (isfile): Add manpages to list of dependent files to be
3838 * setup.py (isfile): Add manpages to list of dependent files to be
3834 updated.
3839 updated.
3835
3840
3836 2004-08-27 Fernando Perez <fperez@colorado.edu>
3841 2004-08-27 Fernando Perez <fperez@colorado.edu>
3837
3842
3838 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3843 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3839 for now. They don't really work with standalone WX/GTK code
3844 for now. They don't really work with standalone WX/GTK code
3840 (though matplotlib IS working fine with both of those backends).
3845 (though matplotlib IS working fine with both of those backends).
3841 This will neeed much more testing. I disabled most things with
3846 This will neeed much more testing. I disabled most things with
3842 comments, so turning it back on later should be pretty easy.
3847 comments, so turning it back on later should be pretty easy.
3843
3848
3844 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3849 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3845 autocalling of expressions like r'foo', by modifying the line
3850 autocalling of expressions like r'foo', by modifying the line
3846 split regexp. Closes
3851 split regexp. Closes
3847 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3852 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3848 Riley <ipythonbugs-AT-sabi.net>.
3853 Riley <ipythonbugs-AT-sabi.net>.
3849 (InteractiveShell.mainloop): honor --nobanner with banner
3854 (InteractiveShell.mainloop): honor --nobanner with banner
3850 extensions.
3855 extensions.
3851
3856
3852 * IPython/Shell.py: Significant refactoring of all classes, so
3857 * IPython/Shell.py: Significant refactoring of all classes, so
3853 that we can really support ALL matplotlib backends and threading
3858 that we can really support ALL matplotlib backends and threading
3854 models (John spotted a bug with Tk which required this). Now we
3859 models (John spotted a bug with Tk which required this). Now we
3855 should support single-threaded, WX-threads and GTK-threads, both
3860 should support single-threaded, WX-threads and GTK-threads, both
3856 for generic code and for matplotlib.
3861 for generic code and for matplotlib.
3857
3862
3858 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3863 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3859 -pylab, to simplify things for users. Will also remove the pylab
3864 -pylab, to simplify things for users. Will also remove the pylab
3860 profile, since now all of matplotlib configuration is directly
3865 profile, since now all of matplotlib configuration is directly
3861 handled here. This also reduces startup time.
3866 handled here. This also reduces startup time.
3862
3867
3863 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3868 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3864 shell wasn't being correctly called. Also in IPShellWX.
3869 shell wasn't being correctly called. Also in IPShellWX.
3865
3870
3866 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3871 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3867 fine-tune banner.
3872 fine-tune banner.
3868
3873
3869 * IPython/numutils.py (spike): Deprecate these spike functions,
3874 * IPython/numutils.py (spike): Deprecate these spike functions,
3870 delete (long deprecated) gnuplot_exec handler.
3875 delete (long deprecated) gnuplot_exec handler.
3871
3876
3872 2004-08-26 Fernando Perez <fperez@colorado.edu>
3877 2004-08-26 Fernando Perez <fperez@colorado.edu>
3873
3878
3874 * ipython.1: Update for threading options, plus some others which
3879 * ipython.1: Update for threading options, plus some others which
3875 were missing.
3880 were missing.
3876
3881
3877 * IPython/ipmaker.py (__call__): Added -wthread option for
3882 * IPython/ipmaker.py (__call__): Added -wthread option for
3878 wxpython thread handling. Make sure threading options are only
3883 wxpython thread handling. Make sure threading options are only
3879 valid at the command line.
3884 valid at the command line.
3880
3885
3881 * scripts/ipython: moved shell selection into a factory function
3886 * scripts/ipython: moved shell selection into a factory function
3882 in Shell.py, to keep the starter script to a minimum.
3887 in Shell.py, to keep the starter script to a minimum.
3883
3888
3884 2004-08-25 Fernando Perez <fperez@colorado.edu>
3889 2004-08-25 Fernando Perez <fperez@colorado.edu>
3885
3890
3886 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3891 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3887 John. Along with some recent changes he made to matplotlib, the
3892 John. Along with some recent changes he made to matplotlib, the
3888 next versions of both systems should work very well together.
3893 next versions of both systems should work very well together.
3889
3894
3890 2004-08-24 Fernando Perez <fperez@colorado.edu>
3895 2004-08-24 Fernando Perez <fperez@colorado.edu>
3891
3896
3892 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3897 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3893 tried to switch the profiling to using hotshot, but I'm getting
3898 tried to switch the profiling to using hotshot, but I'm getting
3894 strange errors from prof.runctx() there. I may be misreading the
3899 strange errors from prof.runctx() there. I may be misreading the
3895 docs, but it looks weird. For now the profiling code will
3900 docs, but it looks weird. For now the profiling code will
3896 continue to use the standard profiler.
3901 continue to use the standard profiler.
3897
3902
3898 2004-08-23 Fernando Perez <fperez@colorado.edu>
3903 2004-08-23 Fernando Perez <fperez@colorado.edu>
3899
3904
3900 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3905 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3901 threaded shell, by John Hunter. It's not quite ready yet, but
3906 threaded shell, by John Hunter. It's not quite ready yet, but
3902 close.
3907 close.
3903
3908
3904 2004-08-22 Fernando Perez <fperez@colorado.edu>
3909 2004-08-22 Fernando Perez <fperez@colorado.edu>
3905
3910
3906 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3911 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3907 in Magic and ultraTB.
3912 in Magic and ultraTB.
3908
3913
3909 * ipython.1: document threading options in manpage.
3914 * ipython.1: document threading options in manpage.
3910
3915
3911 * scripts/ipython: Changed name of -thread option to -gthread,
3916 * scripts/ipython: Changed name of -thread option to -gthread,
3912 since this is GTK specific. I want to leave the door open for a
3917 since this is GTK specific. I want to leave the door open for a
3913 -wthread option for WX, which will most likely be necessary. This
3918 -wthread option for WX, which will most likely be necessary. This
3914 change affects usage and ipmaker as well.
3919 change affects usage and ipmaker as well.
3915
3920
3916 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3921 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3917 handle the matplotlib shell issues. Code by John Hunter
3922 handle the matplotlib shell issues. Code by John Hunter
3918 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3923 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3919 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3924 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3920 broken (and disabled for end users) for now, but it puts the
3925 broken (and disabled for end users) for now, but it puts the
3921 infrastructure in place.
3926 infrastructure in place.
3922
3927
3923 2004-08-21 Fernando Perez <fperez@colorado.edu>
3928 2004-08-21 Fernando Perez <fperez@colorado.edu>
3924
3929
3925 * ipythonrc-pylab: Add matplotlib support.
3930 * ipythonrc-pylab: Add matplotlib support.
3926
3931
3927 * matplotlib_config.py: new files for matplotlib support, part of
3932 * matplotlib_config.py: new files for matplotlib support, part of
3928 the pylab profile.
3933 the pylab profile.
3929
3934
3930 * IPython/usage.py (__doc__): documented the threading options.
3935 * IPython/usage.py (__doc__): documented the threading options.
3931
3936
3932 2004-08-20 Fernando Perez <fperez@colorado.edu>
3937 2004-08-20 Fernando Perez <fperez@colorado.edu>
3933
3938
3934 * ipython: Modified the main calling routine to handle the -thread
3939 * ipython: Modified the main calling routine to handle the -thread
3935 and -mpthread options. This needs to be done as a top-level hack,
3940 and -mpthread options. This needs to be done as a top-level hack,
3936 because it determines which class to instantiate for IPython
3941 because it determines which class to instantiate for IPython
3937 itself.
3942 itself.
3938
3943
3939 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3944 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3940 classes to support multithreaded GTK operation without blocking,
3945 classes to support multithreaded GTK operation without blocking,
3941 and matplotlib with all backends. This is a lot of still very
3946 and matplotlib with all backends. This is a lot of still very
3942 experimental code, and threads are tricky. So it may still have a
3947 experimental code, and threads are tricky. So it may still have a
3943 few rough edges... This code owes a lot to
3948 few rough edges... This code owes a lot to
3944 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3949 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3945 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3950 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3946 to John Hunter for all the matplotlib work.
3951 to John Hunter for all the matplotlib work.
3947
3952
3948 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3953 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3949 options for gtk thread and matplotlib support.
3954 options for gtk thread and matplotlib support.
3950
3955
3951 2004-08-16 Fernando Perez <fperez@colorado.edu>
3956 2004-08-16 Fernando Perez <fperez@colorado.edu>
3952
3957
3953 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3958 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3954 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3959 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3955 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3960 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3956
3961
3957 2004-08-11 Fernando Perez <fperez@colorado.edu>
3962 2004-08-11 Fernando Perez <fperez@colorado.edu>
3958
3963
3959 * setup.py (isfile): Fix build so documentation gets updated for
3964 * setup.py (isfile): Fix build so documentation gets updated for
3960 rpms (it was only done for .tgz builds).
3965 rpms (it was only done for .tgz builds).
3961
3966
3962 2004-08-10 Fernando Perez <fperez@colorado.edu>
3967 2004-08-10 Fernando Perez <fperez@colorado.edu>
3963
3968
3964 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3969 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3965
3970
3966 * iplib.py : Silence syntax error exceptions in tab-completion.
3971 * iplib.py : Silence syntax error exceptions in tab-completion.
3967
3972
3968 2004-08-05 Fernando Perez <fperez@colorado.edu>
3973 2004-08-05 Fernando Perez <fperez@colorado.edu>
3969
3974
3970 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3975 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3971 'color off' mark for continuation prompts. This was causing long
3976 'color off' mark for continuation prompts. This was causing long
3972 continuation lines to mis-wrap.
3977 continuation lines to mis-wrap.
3973
3978
3974 2004-08-01 Fernando Perez <fperez@colorado.edu>
3979 2004-08-01 Fernando Perez <fperez@colorado.edu>
3975
3980
3976 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3981 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3977 for building ipython to be a parameter. All this is necessary
3982 for building ipython to be a parameter. All this is necessary
3978 right now to have a multithreaded version, but this insane
3983 right now to have a multithreaded version, but this insane
3979 non-design will be cleaned up soon. For now, it's a hack that
3984 non-design will be cleaned up soon. For now, it's a hack that
3980 works.
3985 works.
3981
3986
3982 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3987 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3983 args in various places. No bugs so far, but it's a dangerous
3988 args in various places. No bugs so far, but it's a dangerous
3984 practice.
3989 practice.
3985
3990
3986 2004-07-31 Fernando Perez <fperez@colorado.edu>
3991 2004-07-31 Fernando Perez <fperez@colorado.edu>
3987
3992
3988 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3993 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3989 fix completion of files with dots in their names under most
3994 fix completion of files with dots in their names under most
3990 profiles (pysh was OK because the completion order is different).
3995 profiles (pysh was OK because the completion order is different).
3991
3996
3992 2004-07-27 Fernando Perez <fperez@colorado.edu>
3997 2004-07-27 Fernando Perez <fperez@colorado.edu>
3993
3998
3994 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3999 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3995 keywords manually, b/c the one in keyword.py was removed in python
4000 keywords manually, b/c the one in keyword.py was removed in python
3996 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
4001 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3997 This is NOT a bug under python 2.3 and earlier.
4002 This is NOT a bug under python 2.3 and earlier.
3998
4003
3999 2004-07-26 Fernando Perez <fperez@colorado.edu>
4004 2004-07-26 Fernando Perez <fperez@colorado.edu>
4000
4005
4001 * IPython/ultraTB.py (VerboseTB.text): Add another
4006 * IPython/ultraTB.py (VerboseTB.text): Add another
4002 linecache.checkcache() call to try to prevent inspect.py from
4007 linecache.checkcache() call to try to prevent inspect.py from
4003 crashing under python 2.3. I think this fixes
4008 crashing under python 2.3. I think this fixes
4004 http://www.scipy.net/roundup/ipython/issue17.
4009 http://www.scipy.net/roundup/ipython/issue17.
4005
4010
4006 2004-07-26 *** Released version 0.6.2
4011 2004-07-26 *** Released version 0.6.2
4007
4012
4008 2004-07-26 Fernando Perez <fperez@colorado.edu>
4013 2004-07-26 Fernando Perez <fperez@colorado.edu>
4009
4014
4010 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
4015 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
4011 fail for any number.
4016 fail for any number.
4012 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
4017 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
4013 empty bookmarks.
4018 empty bookmarks.
4014
4019
4015 2004-07-26 *** Released version 0.6.1
4020 2004-07-26 *** Released version 0.6.1
4016
4021
4017 2004-07-26 Fernando Perez <fperez@colorado.edu>
4022 2004-07-26 Fernando Perez <fperez@colorado.edu>
4018
4023
4019 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
4024 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
4020
4025
4021 * IPython/iplib.py (protect_filename): Applied Ville's patch for
4026 * IPython/iplib.py (protect_filename): Applied Ville's patch for
4022 escaping '()[]{}' in filenames.
4027 escaping '()[]{}' in filenames.
4023
4028
4024 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
4029 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
4025 Python 2.2 users who lack a proper shlex.split.
4030 Python 2.2 users who lack a proper shlex.split.
4026
4031
4027 2004-07-19 Fernando Perez <fperez@colorado.edu>
4032 2004-07-19 Fernando Perez <fperez@colorado.edu>
4028
4033
4029 * IPython/iplib.py (InteractiveShell.init_readline): Add support
4034 * IPython/iplib.py (InteractiveShell.init_readline): Add support
4030 for reading readline's init file. I follow the normal chain:
4035 for reading readline's init file. I follow the normal chain:
4031 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
4036 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
4032 report by Mike Heeter. This closes
4037 report by Mike Heeter. This closes
4033 http://www.scipy.net/roundup/ipython/issue16.
4038 http://www.scipy.net/roundup/ipython/issue16.
4034
4039
4035 2004-07-18 Fernando Perez <fperez@colorado.edu>
4040 2004-07-18 Fernando Perez <fperez@colorado.edu>
4036
4041
4037 * IPython/iplib.py (__init__): Add better handling of '\' under
4042 * IPython/iplib.py (__init__): Add better handling of '\' under
4038 Win32 for filenames. After a patch by Ville.
4043 Win32 for filenames. After a patch by Ville.
4039
4044
4040 2004-07-17 Fernando Perez <fperez@colorado.edu>
4045 2004-07-17 Fernando Perez <fperez@colorado.edu>
4041
4046
4042 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4047 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4043 autocalling would be triggered for 'foo is bar' if foo is
4048 autocalling would be triggered for 'foo is bar' if foo is
4044 callable. I also cleaned up the autocall detection code to use a
4049 callable. I also cleaned up the autocall detection code to use a
4045 regexp, which is faster. Bug reported by Alexander Schmolck.
4050 regexp, which is faster. Bug reported by Alexander Schmolck.
4046
4051
4047 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
4052 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
4048 '?' in them would confuse the help system. Reported by Alex
4053 '?' in them would confuse the help system. Reported by Alex
4049 Schmolck.
4054 Schmolck.
4050
4055
4051 2004-07-16 Fernando Perez <fperez@colorado.edu>
4056 2004-07-16 Fernando Perez <fperez@colorado.edu>
4052
4057
4053 * IPython/GnuplotInteractive.py (__all__): added plot2.
4058 * IPython/GnuplotInteractive.py (__all__): added plot2.
4054
4059
4055 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
4060 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
4056 plotting dictionaries, lists or tuples of 1d arrays.
4061 plotting dictionaries, lists or tuples of 1d arrays.
4057
4062
4058 * IPython/Magic.py (Magic.magic_hist): small clenaups and
4063 * IPython/Magic.py (Magic.magic_hist): small clenaups and
4059 optimizations.
4064 optimizations.
4060
4065
4061 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
4066 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
4062 the information which was there from Janko's original IPP code:
4067 the information which was there from Janko's original IPP code:
4063
4068
4064 03.05.99 20:53 porto.ifm.uni-kiel.de
4069 03.05.99 20:53 porto.ifm.uni-kiel.de
4065 --Started changelog.
4070 --Started changelog.
4066 --make clear do what it say it does
4071 --make clear do what it say it does
4067 --added pretty output of lines from inputcache
4072 --added pretty output of lines from inputcache
4068 --Made Logger a mixin class, simplifies handling of switches
4073 --Made Logger a mixin class, simplifies handling of switches
4069 --Added own completer class. .string<TAB> expands to last history
4074 --Added own completer class. .string<TAB> expands to last history
4070 line which starts with string. The new expansion is also present
4075 line which starts with string. The new expansion is also present
4071 with Ctrl-r from the readline library. But this shows, who this
4076 with Ctrl-r from the readline library. But this shows, who this
4072 can be done for other cases.
4077 can be done for other cases.
4073 --Added convention that all shell functions should accept a
4078 --Added convention that all shell functions should accept a
4074 parameter_string This opens the door for different behaviour for
4079 parameter_string This opens the door for different behaviour for
4075 each function. @cd is a good example of this.
4080 each function. @cd is a good example of this.
4076
4081
4077 04.05.99 12:12 porto.ifm.uni-kiel.de
4082 04.05.99 12:12 porto.ifm.uni-kiel.de
4078 --added logfile rotation
4083 --added logfile rotation
4079 --added new mainloop method which freezes first the namespace
4084 --added new mainloop method which freezes first the namespace
4080
4085
4081 07.05.99 21:24 porto.ifm.uni-kiel.de
4086 07.05.99 21:24 porto.ifm.uni-kiel.de
4082 --added the docreader classes. Now there is a help system.
4087 --added the docreader classes. Now there is a help system.
4083 -This is only a first try. Currently it's not easy to put new
4088 -This is only a first try. Currently it's not easy to put new
4084 stuff in the indices. But this is the way to go. Info would be
4089 stuff in the indices. But this is the way to go. Info would be
4085 better, but HTML is every where and not everybody has an info
4090 better, but HTML is every where and not everybody has an info
4086 system installed and it's not so easy to change html-docs to info.
4091 system installed and it's not so easy to change html-docs to info.
4087 --added global logfile option
4092 --added global logfile option
4088 --there is now a hook for object inspection method pinfo needs to
4093 --there is now a hook for object inspection method pinfo needs to
4089 be provided for this. Can be reached by two '??'.
4094 be provided for this. Can be reached by two '??'.
4090
4095
4091 08.05.99 20:51 porto.ifm.uni-kiel.de
4096 08.05.99 20:51 porto.ifm.uni-kiel.de
4092 --added a README
4097 --added a README
4093 --bug in rc file. Something has changed so functions in the rc
4098 --bug in rc file. Something has changed so functions in the rc
4094 file need to reference the shell and not self. Not clear if it's a
4099 file need to reference the shell and not self. Not clear if it's a
4095 bug or feature.
4100 bug or feature.
4096 --changed rc file for new behavior
4101 --changed rc file for new behavior
4097
4102
4098 2004-07-15 Fernando Perez <fperez@colorado.edu>
4103 2004-07-15 Fernando Perez <fperez@colorado.edu>
4099
4104
4100 * IPython/Logger.py (Logger.log): fixed recent bug where the input
4105 * IPython/Logger.py (Logger.log): fixed recent bug where the input
4101 cache was falling out of sync in bizarre manners when multi-line
4106 cache was falling out of sync in bizarre manners when multi-line
4102 input was present. Minor optimizations and cleanup.
4107 input was present. Minor optimizations and cleanup.
4103
4108
4104 (Logger): Remove old Changelog info for cleanup. This is the
4109 (Logger): Remove old Changelog info for cleanup. This is the
4105 information which was there from Janko's original code:
4110 information which was there from Janko's original code:
4106
4111
4107 Changes to Logger: - made the default log filename a parameter
4112 Changes to Logger: - made the default log filename a parameter
4108
4113
4109 - put a check for lines beginning with !@? in log(). Needed
4114 - put a check for lines beginning with !@? in log(). Needed
4110 (even if the handlers properly log their lines) for mid-session
4115 (even if the handlers properly log their lines) for mid-session
4111 logging activation to work properly. Without this, lines logged
4116 logging activation to work properly. Without this, lines logged
4112 in mid session, which get read from the cache, would end up
4117 in mid session, which get read from the cache, would end up
4113 'bare' (with !@? in the open) in the log. Now they are caught
4118 'bare' (with !@? in the open) in the log. Now they are caught
4114 and prepended with a #.
4119 and prepended with a #.
4115
4120
4116 * IPython/iplib.py (InteractiveShell.init_readline): added check
4121 * IPython/iplib.py (InteractiveShell.init_readline): added check
4117 in case MagicCompleter fails to be defined, so we don't crash.
4122 in case MagicCompleter fails to be defined, so we don't crash.
4118
4123
4119 2004-07-13 Fernando Perez <fperez@colorado.edu>
4124 2004-07-13 Fernando Perez <fperez@colorado.edu>
4120
4125
4121 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
4126 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
4122 of EPS if the requested filename ends in '.eps'.
4127 of EPS if the requested filename ends in '.eps'.
4123
4128
4124 2004-07-04 Fernando Perez <fperez@colorado.edu>
4129 2004-07-04 Fernando Perez <fperez@colorado.edu>
4125
4130
4126 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
4131 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
4127 escaping of quotes when calling the shell.
4132 escaping of quotes when calling the shell.
4128
4133
4129 2004-07-02 Fernando Perez <fperez@colorado.edu>
4134 2004-07-02 Fernando Perez <fperez@colorado.edu>
4130
4135
4131 * IPython/Prompts.py (CachedOutput.update): Fix problem with
4136 * IPython/Prompts.py (CachedOutput.update): Fix problem with
4132 gettext not working because we were clobbering '_'. Fixes
4137 gettext not working because we were clobbering '_'. Fixes
4133 http://www.scipy.net/roundup/ipython/issue6.
4138 http://www.scipy.net/roundup/ipython/issue6.
4134
4139
4135 2004-07-01 Fernando Perez <fperez@colorado.edu>
4140 2004-07-01 Fernando Perez <fperez@colorado.edu>
4136
4141
4137 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
4142 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
4138 into @cd. Patch by Ville.
4143 into @cd. Patch by Ville.
4139
4144
4140 * IPython/iplib.py (InteractiveShell.post_config_initialization):
4145 * IPython/iplib.py (InteractiveShell.post_config_initialization):
4141 new function to store things after ipmaker runs. Patch by Ville.
4146 new function to store things after ipmaker runs. Patch by Ville.
4142 Eventually this will go away once ipmaker is removed and the class
4147 Eventually this will go away once ipmaker is removed and the class
4143 gets cleaned up, but for now it's ok. Key functionality here is
4148 gets cleaned up, but for now it's ok. Key functionality here is
4144 the addition of the persistent storage mechanism, a dict for
4149 the addition of the persistent storage mechanism, a dict for
4145 keeping data across sessions (for now just bookmarks, but more can
4150 keeping data across sessions (for now just bookmarks, but more can
4146 be implemented later).
4151 be implemented later).
4147
4152
4148 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
4153 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
4149 persistent across sections. Patch by Ville, I modified it
4154 persistent across sections. Patch by Ville, I modified it
4150 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
4155 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
4151 added a '-l' option to list all bookmarks.
4156 added a '-l' option to list all bookmarks.
4152
4157
4153 * IPython/iplib.py (InteractiveShell.atexit_operations): new
4158 * IPython/iplib.py (InteractiveShell.atexit_operations): new
4154 center for cleanup. Registered with atexit.register(). I moved
4159 center for cleanup. Registered with atexit.register(). I moved
4155 here the old exit_cleanup(). After a patch by Ville.
4160 here the old exit_cleanup(). After a patch by Ville.
4156
4161
4157 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4162 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4158 characters in the hacked shlex_split for python 2.2.
4163 characters in the hacked shlex_split for python 2.2.
4159
4164
4160 * IPython/iplib.py (file_matches): more fixes to filenames with
4165 * IPython/iplib.py (file_matches): more fixes to filenames with
4161 whitespace in them. It's not perfect, but limitations in python's
4166 whitespace in them. It's not perfect, but limitations in python's
4162 readline make it impossible to go further.
4167 readline make it impossible to go further.
4163
4168
4164 2004-06-29 Fernando Perez <fperez@colorado.edu>
4169 2004-06-29 Fernando Perez <fperez@colorado.edu>
4165
4170
4166 * IPython/iplib.py (file_matches): escape whitespace correctly in
4171 * IPython/iplib.py (file_matches): escape whitespace correctly in
4167 filename completions. Bug reported by Ville.
4172 filename completions. Bug reported by Ville.
4168
4173
4169 2004-06-28 Fernando Perez <fperez@colorado.edu>
4174 2004-06-28 Fernando Perez <fperez@colorado.edu>
4170
4175
4171 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4176 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4172 the history file will be called 'history-PROFNAME' (or just
4177 the history file will be called 'history-PROFNAME' (or just
4173 'history' if no profile is loaded). I was getting annoyed at
4178 'history' if no profile is loaded). I was getting annoyed at
4174 getting my Numerical work history clobbered by pysh sessions.
4179 getting my Numerical work history clobbered by pysh sessions.
4175
4180
4176 * IPython/iplib.py (InteractiveShell.__init__): Internal
4181 * IPython/iplib.py (InteractiveShell.__init__): Internal
4177 getoutputerror() function so that we can honor the system_verbose
4182 getoutputerror() function so that we can honor the system_verbose
4178 flag for _all_ system calls. I also added escaping of #
4183 flag for _all_ system calls. I also added escaping of #
4179 characters here to avoid confusing Itpl.
4184 characters here to avoid confusing Itpl.
4180
4185
4181 * IPython/Magic.py (shlex_split): removed call to shell in
4186 * IPython/Magic.py (shlex_split): removed call to shell in
4182 parse_options and replaced it with shlex.split(). The annoying
4187 parse_options and replaced it with shlex.split(). The annoying
4183 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4188 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4184 to backport it from 2.3, with several frail hacks (the shlex
4189 to backport it from 2.3, with several frail hacks (the shlex
4185 module is rather limited in 2.2). Thanks to a suggestion by Ville
4190 module is rather limited in 2.2). Thanks to a suggestion by Ville
4186 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4191 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4187 problem.
4192 problem.
4188
4193
4189 (Magic.magic_system_verbose): new toggle to print the actual
4194 (Magic.magic_system_verbose): new toggle to print the actual
4190 system calls made by ipython. Mainly for debugging purposes.
4195 system calls made by ipython. Mainly for debugging purposes.
4191
4196
4192 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4197 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4193 doesn't support persistence. Reported (and fix suggested) by
4198 doesn't support persistence. Reported (and fix suggested) by
4194 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4199 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4195
4200
4196 2004-06-26 Fernando Perez <fperez@colorado.edu>
4201 2004-06-26 Fernando Perez <fperez@colorado.edu>
4197
4202
4198 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4203 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4199 continue prompts.
4204 continue prompts.
4200
4205
4201 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4206 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4202 function (basically a big docstring) and a few more things here to
4207 function (basically a big docstring) and a few more things here to
4203 speedup startup. pysh.py is now very lightweight. We want because
4208 speedup startup. pysh.py is now very lightweight. We want because
4204 it gets execfile'd, while InterpreterExec gets imported, so
4209 it gets execfile'd, while InterpreterExec gets imported, so
4205 byte-compilation saves time.
4210 byte-compilation saves time.
4206
4211
4207 2004-06-25 Fernando Perez <fperez@colorado.edu>
4212 2004-06-25 Fernando Perez <fperez@colorado.edu>
4208
4213
4209 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4214 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4210 -NUM', which was recently broken.
4215 -NUM', which was recently broken.
4211
4216
4212 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4217 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4213 in multi-line input (but not !!, which doesn't make sense there).
4218 in multi-line input (but not !!, which doesn't make sense there).
4214
4219
4215 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4220 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4216 It's just too useful, and people can turn it off in the less
4221 It's just too useful, and people can turn it off in the less
4217 common cases where it's a problem.
4222 common cases where it's a problem.
4218
4223
4219 2004-06-24 Fernando Perez <fperez@colorado.edu>
4224 2004-06-24 Fernando Perez <fperez@colorado.edu>
4220
4225
4221 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4226 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4222 special syntaxes (like alias calling) is now allied in multi-line
4227 special syntaxes (like alias calling) is now allied in multi-line
4223 input. This is still _very_ experimental, but it's necessary for
4228 input. This is still _very_ experimental, but it's necessary for
4224 efficient shell usage combining python looping syntax with system
4229 efficient shell usage combining python looping syntax with system
4225 calls. For now it's restricted to aliases, I don't think it
4230 calls. For now it's restricted to aliases, I don't think it
4226 really even makes sense to have this for magics.
4231 really even makes sense to have this for magics.
4227
4232
4228 2004-06-23 Fernando Perez <fperez@colorado.edu>
4233 2004-06-23 Fernando Perez <fperez@colorado.edu>
4229
4234
4230 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4235 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4231 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4236 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4232
4237
4233 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4238 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4234 extensions under Windows (after code sent by Gary Bishop). The
4239 extensions under Windows (after code sent by Gary Bishop). The
4235 extensions considered 'executable' are stored in IPython's rc
4240 extensions considered 'executable' are stored in IPython's rc
4236 structure as win_exec_ext.
4241 structure as win_exec_ext.
4237
4242
4238 * IPython/genutils.py (shell): new function, like system() but
4243 * IPython/genutils.py (shell): new function, like system() but
4239 without return value. Very useful for interactive shell work.
4244 without return value. Very useful for interactive shell work.
4240
4245
4241 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4246 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4242 delete aliases.
4247 delete aliases.
4243
4248
4244 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4249 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4245 sure that the alias table doesn't contain python keywords.
4250 sure that the alias table doesn't contain python keywords.
4246
4251
4247 2004-06-21 Fernando Perez <fperez@colorado.edu>
4252 2004-06-21 Fernando Perez <fperez@colorado.edu>
4248
4253
4249 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4254 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4250 non-existent items are found in $PATH. Reported by Thorsten.
4255 non-existent items are found in $PATH. Reported by Thorsten.
4251
4256
4252 2004-06-20 Fernando Perez <fperez@colorado.edu>
4257 2004-06-20 Fernando Perez <fperez@colorado.edu>
4253
4258
4254 * IPython/iplib.py (complete): modified the completer so that the
4259 * IPython/iplib.py (complete): modified the completer so that the
4255 order of priorities can be easily changed at runtime.
4260 order of priorities can be easily changed at runtime.
4256
4261
4257 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4262 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4258 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4263 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4259
4264
4260 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4265 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4261 expand Python variables prepended with $ in all system calls. The
4266 expand Python variables prepended with $ in all system calls. The
4262 same was done to InteractiveShell.handle_shell_escape. Now all
4267 same was done to InteractiveShell.handle_shell_escape. Now all
4263 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4268 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4264 expansion of python variables and expressions according to the
4269 expansion of python variables and expressions according to the
4265 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4270 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4266
4271
4267 Though PEP-215 has been rejected, a similar (but simpler) one
4272 Though PEP-215 has been rejected, a similar (but simpler) one
4268 seems like it will go into Python 2.4, PEP-292 -
4273 seems like it will go into Python 2.4, PEP-292 -
4269 http://www.python.org/peps/pep-0292.html.
4274 http://www.python.org/peps/pep-0292.html.
4270
4275
4271 I'll keep the full syntax of PEP-215, since IPython has since the
4276 I'll keep the full syntax of PEP-215, since IPython has since the
4272 start used Ka-Ping Yee's reference implementation discussed there
4277 start used Ka-Ping Yee's reference implementation discussed there
4273 (Itpl), and I actually like the powerful semantics it offers.
4278 (Itpl), and I actually like the powerful semantics it offers.
4274
4279
4275 In order to access normal shell variables, the $ has to be escaped
4280 In order to access normal shell variables, the $ has to be escaped
4276 via an extra $. For example:
4281 via an extra $. For example:
4277
4282
4278 In [7]: PATH='a python variable'
4283 In [7]: PATH='a python variable'
4279
4284
4280 In [8]: !echo $PATH
4285 In [8]: !echo $PATH
4281 a python variable
4286 a python variable
4282
4287
4283 In [9]: !echo $$PATH
4288 In [9]: !echo $$PATH
4284 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4289 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4285
4290
4286 (Magic.parse_options): escape $ so the shell doesn't evaluate
4291 (Magic.parse_options): escape $ so the shell doesn't evaluate
4287 things prematurely.
4292 things prematurely.
4288
4293
4289 * IPython/iplib.py (InteractiveShell.call_alias): added the
4294 * IPython/iplib.py (InteractiveShell.call_alias): added the
4290 ability for aliases to expand python variables via $.
4295 ability for aliases to expand python variables via $.
4291
4296
4292 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4297 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4293 system, now there's a @rehash/@rehashx pair of magics. These work
4298 system, now there's a @rehash/@rehashx pair of magics. These work
4294 like the csh rehash command, and can be invoked at any time. They
4299 like the csh rehash command, and can be invoked at any time. They
4295 build a table of aliases to everything in the user's $PATH
4300 build a table of aliases to everything in the user's $PATH
4296 (@rehash uses everything, @rehashx is slower but only adds
4301 (@rehash uses everything, @rehashx is slower but only adds
4297 executable files). With this, the pysh.py-based shell profile can
4302 executable files). With this, the pysh.py-based shell profile can
4298 now simply call rehash upon startup, and full access to all
4303 now simply call rehash upon startup, and full access to all
4299 programs in the user's path is obtained.
4304 programs in the user's path is obtained.
4300
4305
4301 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4306 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4302 functionality is now fully in place. I removed the old dynamic
4307 functionality is now fully in place. I removed the old dynamic
4303 code generation based approach, in favor of a much lighter one
4308 code generation based approach, in favor of a much lighter one
4304 based on a simple dict. The advantage is that this allows me to
4309 based on a simple dict. The advantage is that this allows me to
4305 now have thousands of aliases with negligible cost (unthinkable
4310 now have thousands of aliases with negligible cost (unthinkable
4306 with the old system).
4311 with the old system).
4307
4312
4308 2004-06-19 Fernando Perez <fperez@colorado.edu>
4313 2004-06-19 Fernando Perez <fperez@colorado.edu>
4309
4314
4310 * IPython/iplib.py (__init__): extended MagicCompleter class to
4315 * IPython/iplib.py (__init__): extended MagicCompleter class to
4311 also complete (last in priority) on user aliases.
4316 also complete (last in priority) on user aliases.
4312
4317
4313 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4318 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4314 call to eval.
4319 call to eval.
4315 (ItplNS.__init__): Added a new class which functions like Itpl,
4320 (ItplNS.__init__): Added a new class which functions like Itpl,
4316 but allows configuring the namespace for the evaluation to occur
4321 but allows configuring the namespace for the evaluation to occur
4317 in.
4322 in.
4318
4323
4319 2004-06-18 Fernando Perez <fperez@colorado.edu>
4324 2004-06-18 Fernando Perez <fperez@colorado.edu>
4320
4325
4321 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4326 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4322 better message when 'exit' or 'quit' are typed (a common newbie
4327 better message when 'exit' or 'quit' are typed (a common newbie
4323 confusion).
4328 confusion).
4324
4329
4325 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4330 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4326 check for Windows users.
4331 check for Windows users.
4327
4332
4328 * IPython/iplib.py (InteractiveShell.user_setup): removed
4333 * IPython/iplib.py (InteractiveShell.user_setup): removed
4329 disabling of colors for Windows. I'll test at runtime and issue a
4334 disabling of colors for Windows. I'll test at runtime and issue a
4330 warning if Gary's readline isn't found, as to nudge users to
4335 warning if Gary's readline isn't found, as to nudge users to
4331 download it.
4336 download it.
4332
4337
4333 2004-06-16 Fernando Perez <fperez@colorado.edu>
4338 2004-06-16 Fernando Perez <fperez@colorado.edu>
4334
4339
4335 * IPython/genutils.py (Stream.__init__): changed to print errors
4340 * IPython/genutils.py (Stream.__init__): changed to print errors
4336 to sys.stderr. I had a circular dependency here. Now it's
4341 to sys.stderr. I had a circular dependency here. Now it's
4337 possible to run ipython as IDLE's shell (consider this pre-alpha,
4342 possible to run ipython as IDLE's shell (consider this pre-alpha,
4338 since true stdout things end up in the starting terminal instead
4343 since true stdout things end up in the starting terminal instead
4339 of IDLE's out).
4344 of IDLE's out).
4340
4345
4341 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4346 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4342 users who haven't # updated their prompt_in2 definitions. Remove
4347 users who haven't # updated their prompt_in2 definitions. Remove
4343 eventually.
4348 eventually.
4344 (multiple_replace): added credit to original ASPN recipe.
4349 (multiple_replace): added credit to original ASPN recipe.
4345
4350
4346 2004-06-15 Fernando Perez <fperez@colorado.edu>
4351 2004-06-15 Fernando Perez <fperez@colorado.edu>
4347
4352
4348 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4353 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4349 list of auto-defined aliases.
4354 list of auto-defined aliases.
4350
4355
4351 2004-06-13 Fernando Perez <fperez@colorado.edu>
4356 2004-06-13 Fernando Perez <fperez@colorado.edu>
4352
4357
4353 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4358 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4354 install was really requested (so setup.py can be used for other
4359 install was really requested (so setup.py can be used for other
4355 things under Windows).
4360 things under Windows).
4356
4361
4357 2004-06-10 Fernando Perez <fperez@colorado.edu>
4362 2004-06-10 Fernando Perez <fperez@colorado.edu>
4358
4363
4359 * IPython/Logger.py (Logger.create_log): Manually remove any old
4364 * IPython/Logger.py (Logger.create_log): Manually remove any old
4360 backup, since os.remove may fail under Windows. Fixes bug
4365 backup, since os.remove may fail under Windows. Fixes bug
4361 reported by Thorsten.
4366 reported by Thorsten.
4362
4367
4363 2004-06-09 Fernando Perez <fperez@colorado.edu>
4368 2004-06-09 Fernando Perez <fperez@colorado.edu>
4364
4369
4365 * examples/example-embed.py: fixed all references to %n (replaced
4370 * examples/example-embed.py: fixed all references to %n (replaced
4366 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4371 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4367 for all examples and the manual as well.
4372 for all examples and the manual as well.
4368
4373
4369 2004-06-08 Fernando Perez <fperez@colorado.edu>
4374 2004-06-08 Fernando Perez <fperez@colorado.edu>
4370
4375
4371 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4376 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4372 alignment and color management. All 3 prompt subsystems now
4377 alignment and color management. All 3 prompt subsystems now
4373 inherit from BasePrompt.
4378 inherit from BasePrompt.
4374
4379
4375 * tools/release: updates for windows installer build and tag rpms
4380 * tools/release: updates for windows installer build and tag rpms
4376 with python version (since paths are fixed).
4381 with python version (since paths are fixed).
4377
4382
4378 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4383 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4379 which will become eventually obsolete. Also fixed the default
4384 which will become eventually obsolete. Also fixed the default
4380 prompt_in2 to use \D, so at least new users start with the correct
4385 prompt_in2 to use \D, so at least new users start with the correct
4381 defaults.
4386 defaults.
4382 WARNING: Users with existing ipythonrc files will need to apply
4387 WARNING: Users with existing ipythonrc files will need to apply
4383 this fix manually!
4388 this fix manually!
4384
4389
4385 * setup.py: make windows installer (.exe). This is finally the
4390 * setup.py: make windows installer (.exe). This is finally the
4386 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4391 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4387 which I hadn't included because it required Python 2.3 (or recent
4392 which I hadn't included because it required Python 2.3 (or recent
4388 distutils).
4393 distutils).
4389
4394
4390 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4395 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4391 usage of new '\D' escape.
4396 usage of new '\D' escape.
4392
4397
4393 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4398 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4394 lacks os.getuid())
4399 lacks os.getuid())
4395 (CachedOutput.set_colors): Added the ability to turn coloring
4400 (CachedOutput.set_colors): Added the ability to turn coloring
4396 on/off with @colors even for manually defined prompt colors. It
4401 on/off with @colors even for manually defined prompt colors. It
4397 uses a nasty global, but it works safely and via the generic color
4402 uses a nasty global, but it works safely and via the generic color
4398 handling mechanism.
4403 handling mechanism.
4399 (Prompt2.__init__): Introduced new escape '\D' for continuation
4404 (Prompt2.__init__): Introduced new escape '\D' for continuation
4400 prompts. It represents the counter ('\#') as dots.
4405 prompts. It represents the counter ('\#') as dots.
4401 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4406 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4402 need to update their ipythonrc files and replace '%n' with '\D' in
4407 need to update their ipythonrc files and replace '%n' with '\D' in
4403 their prompt_in2 settings everywhere. Sorry, but there's
4408 their prompt_in2 settings everywhere. Sorry, but there's
4404 otherwise no clean way to get all prompts to properly align. The
4409 otherwise no clean way to get all prompts to properly align. The
4405 ipythonrc shipped with IPython has been updated.
4410 ipythonrc shipped with IPython has been updated.
4406
4411
4407 2004-06-07 Fernando Perez <fperez@colorado.edu>
4412 2004-06-07 Fernando Perez <fperez@colorado.edu>
4408
4413
4409 * setup.py (isfile): Pass local_icons option to latex2html, so the
4414 * setup.py (isfile): Pass local_icons option to latex2html, so the
4410 resulting HTML file is self-contained. Thanks to
4415 resulting HTML file is self-contained. Thanks to
4411 dryice-AT-liu.com.cn for the tip.
4416 dryice-AT-liu.com.cn for the tip.
4412
4417
4413 * pysh.py: I created a new profile 'shell', which implements a
4418 * pysh.py: I created a new profile 'shell', which implements a
4414 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4419 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4415 system shell, nor will it become one anytime soon. It's mainly
4420 system shell, nor will it become one anytime soon. It's mainly
4416 meant to illustrate the use of the new flexible bash-like prompts.
4421 meant to illustrate the use of the new flexible bash-like prompts.
4417 I guess it could be used by hardy souls for true shell management,
4422 I guess it could be used by hardy souls for true shell management,
4418 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4423 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4419 profile. This uses the InterpreterExec extension provided by
4424 profile. This uses the InterpreterExec extension provided by
4420 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4425 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4421
4426
4422 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4427 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4423 auto-align itself with the length of the previous input prompt
4428 auto-align itself with the length of the previous input prompt
4424 (taking into account the invisible color escapes).
4429 (taking into account the invisible color escapes).
4425 (CachedOutput.__init__): Large restructuring of this class. Now
4430 (CachedOutput.__init__): Large restructuring of this class. Now
4426 all three prompts (primary1, primary2, output) are proper objects,
4431 all three prompts (primary1, primary2, output) are proper objects,
4427 managed by the 'parent' CachedOutput class. The code is still a
4432 managed by the 'parent' CachedOutput class. The code is still a
4428 bit hackish (all prompts share state via a pointer to the cache),
4433 bit hackish (all prompts share state via a pointer to the cache),
4429 but it's overall far cleaner than before.
4434 but it's overall far cleaner than before.
4430
4435
4431 * IPython/genutils.py (getoutputerror): modified to add verbose,
4436 * IPython/genutils.py (getoutputerror): modified to add verbose,
4432 debug and header options. This makes the interface of all getout*
4437 debug and header options. This makes the interface of all getout*
4433 functions uniform.
4438 functions uniform.
4434 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4439 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4435
4440
4436 * IPython/Magic.py (Magic.default_option): added a function to
4441 * IPython/Magic.py (Magic.default_option): added a function to
4437 allow registering default options for any magic command. This
4442 allow registering default options for any magic command. This
4438 makes it easy to have profiles which customize the magics globally
4443 makes it easy to have profiles which customize the magics globally
4439 for a certain use. The values set through this function are
4444 for a certain use. The values set through this function are
4440 picked up by the parse_options() method, which all magics should
4445 picked up by the parse_options() method, which all magics should
4441 use to parse their options.
4446 use to parse their options.
4442
4447
4443 * IPython/genutils.py (warn): modified the warnings framework to
4448 * IPython/genutils.py (warn): modified the warnings framework to
4444 use the Term I/O class. I'm trying to slowly unify all of
4449 use the Term I/O class. I'm trying to slowly unify all of
4445 IPython's I/O operations to pass through Term.
4450 IPython's I/O operations to pass through Term.
4446
4451
4447 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4452 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4448 the secondary prompt to correctly match the length of the primary
4453 the secondary prompt to correctly match the length of the primary
4449 one for any prompt. Now multi-line code will properly line up
4454 one for any prompt. Now multi-line code will properly line up
4450 even for path dependent prompts, such as the new ones available
4455 even for path dependent prompts, such as the new ones available
4451 via the prompt_specials.
4456 via the prompt_specials.
4452
4457
4453 2004-06-06 Fernando Perez <fperez@colorado.edu>
4458 2004-06-06 Fernando Perez <fperez@colorado.edu>
4454
4459
4455 * IPython/Prompts.py (prompt_specials): Added the ability to have
4460 * IPython/Prompts.py (prompt_specials): Added the ability to have
4456 bash-like special sequences in the prompts, which get
4461 bash-like special sequences in the prompts, which get
4457 automatically expanded. Things like hostname, current working
4462 automatically expanded. Things like hostname, current working
4458 directory and username are implemented already, but it's easy to
4463 directory and username are implemented already, but it's easy to
4459 add more in the future. Thanks to a patch by W.J. van der Laan
4464 add more in the future. Thanks to a patch by W.J. van der Laan
4460 <gnufnork-AT-hetdigitalegat.nl>
4465 <gnufnork-AT-hetdigitalegat.nl>
4461 (prompt_specials): Added color support for prompt strings, so
4466 (prompt_specials): Added color support for prompt strings, so
4462 users can define arbitrary color setups for their prompts.
4467 users can define arbitrary color setups for their prompts.
4463
4468
4464 2004-06-05 Fernando Perez <fperez@colorado.edu>
4469 2004-06-05 Fernando Perez <fperez@colorado.edu>
4465
4470
4466 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4471 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4467 code to load Gary Bishop's readline and configure it
4472 code to load Gary Bishop's readline and configure it
4468 automatically. Thanks to Gary for help on this.
4473 automatically. Thanks to Gary for help on this.
4469
4474
4470 2004-06-01 Fernando Perez <fperez@colorado.edu>
4475 2004-06-01 Fernando Perez <fperez@colorado.edu>
4471
4476
4472 * IPython/Logger.py (Logger.create_log): fix bug for logging
4477 * IPython/Logger.py (Logger.create_log): fix bug for logging
4473 with no filename (previous fix was incomplete).
4478 with no filename (previous fix was incomplete).
4474
4479
4475 2004-05-25 Fernando Perez <fperez@colorado.edu>
4480 2004-05-25 Fernando Perez <fperez@colorado.edu>
4476
4481
4477 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4482 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4478 parens would get passed to the shell.
4483 parens would get passed to the shell.
4479
4484
4480 2004-05-20 Fernando Perez <fperez@colorado.edu>
4485 2004-05-20 Fernando Perez <fperez@colorado.edu>
4481
4486
4482 * IPython/Magic.py (Magic.magic_prun): changed default profile
4487 * IPython/Magic.py (Magic.magic_prun): changed default profile
4483 sort order to 'time' (the more common profiling need).
4488 sort order to 'time' (the more common profiling need).
4484
4489
4485 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4490 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4486 so that source code shown is guaranteed in sync with the file on
4491 so that source code shown is guaranteed in sync with the file on
4487 disk (also changed in psource). Similar fix to the one for
4492 disk (also changed in psource). Similar fix to the one for
4488 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4493 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4489 <yann.ledu-AT-noos.fr>.
4494 <yann.ledu-AT-noos.fr>.
4490
4495
4491 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4496 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4492 with a single option would not be correctly parsed. Closes
4497 with a single option would not be correctly parsed. Closes
4493 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4498 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4494 introduced in 0.6.0 (on 2004-05-06).
4499 introduced in 0.6.0 (on 2004-05-06).
4495
4500
4496 2004-05-13 *** Released version 0.6.0
4501 2004-05-13 *** Released version 0.6.0
4497
4502
4498 2004-05-13 Fernando Perez <fperez@colorado.edu>
4503 2004-05-13 Fernando Perez <fperez@colorado.edu>
4499
4504
4500 * debian/: Added debian/ directory to CVS, so that debian support
4505 * debian/: Added debian/ directory to CVS, so that debian support
4501 is publicly accessible. The debian package is maintained by Jack
4506 is publicly accessible. The debian package is maintained by Jack
4502 Moffit <jack-AT-xiph.org>.
4507 Moffit <jack-AT-xiph.org>.
4503
4508
4504 * Documentation: included the notes about an ipython-based system
4509 * Documentation: included the notes about an ipython-based system
4505 shell (the hypothetical 'pysh') into the new_design.pdf document,
4510 shell (the hypothetical 'pysh') into the new_design.pdf document,
4506 so that these ideas get distributed to users along with the
4511 so that these ideas get distributed to users along with the
4507 official documentation.
4512 official documentation.
4508
4513
4509 2004-05-10 Fernando Perez <fperez@colorado.edu>
4514 2004-05-10 Fernando Perez <fperez@colorado.edu>
4510
4515
4511 * IPython/Logger.py (Logger.create_log): fix recently introduced
4516 * IPython/Logger.py (Logger.create_log): fix recently introduced
4512 bug (misindented line) where logstart would fail when not given an
4517 bug (misindented line) where logstart would fail when not given an
4513 explicit filename.
4518 explicit filename.
4514
4519
4515 2004-05-09 Fernando Perez <fperez@colorado.edu>
4520 2004-05-09 Fernando Perez <fperez@colorado.edu>
4516
4521
4517 * IPython/Magic.py (Magic.parse_options): skip system call when
4522 * IPython/Magic.py (Magic.parse_options): skip system call when
4518 there are no options to look for. Faster, cleaner for the common
4523 there are no options to look for. Faster, cleaner for the common
4519 case.
4524 case.
4520
4525
4521 * Documentation: many updates to the manual: describing Windows
4526 * Documentation: many updates to the manual: describing Windows
4522 support better, Gnuplot updates, credits, misc small stuff. Also
4527 support better, Gnuplot updates, credits, misc small stuff. Also
4523 updated the new_design doc a bit.
4528 updated the new_design doc a bit.
4524
4529
4525 2004-05-06 *** Released version 0.6.0.rc1
4530 2004-05-06 *** Released version 0.6.0.rc1
4526
4531
4527 2004-05-06 Fernando Perez <fperez@colorado.edu>
4532 2004-05-06 Fernando Perez <fperez@colorado.edu>
4528
4533
4529 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4534 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4530 operations to use the vastly more efficient list/''.join() method.
4535 operations to use the vastly more efficient list/''.join() method.
4531 (FormattedTB.text): Fix
4536 (FormattedTB.text): Fix
4532 http://www.scipy.net/roundup/ipython/issue12 - exception source
4537 http://www.scipy.net/roundup/ipython/issue12 - exception source
4533 extract not updated after reload. Thanks to Mike Salib
4538 extract not updated after reload. Thanks to Mike Salib
4534 <msalib-AT-mit.edu> for pinning the source of the problem.
4539 <msalib-AT-mit.edu> for pinning the source of the problem.
4535 Fortunately, the solution works inside ipython and doesn't require
4540 Fortunately, the solution works inside ipython and doesn't require
4536 any changes to python proper.
4541 any changes to python proper.
4537
4542
4538 * IPython/Magic.py (Magic.parse_options): Improved to process the
4543 * IPython/Magic.py (Magic.parse_options): Improved to process the
4539 argument list as a true shell would (by actually using the
4544 argument list as a true shell would (by actually using the
4540 underlying system shell). This way, all @magics automatically get
4545 underlying system shell). This way, all @magics automatically get
4541 shell expansion for variables. Thanks to a comment by Alex
4546 shell expansion for variables. Thanks to a comment by Alex
4542 Schmolck.
4547 Schmolck.
4543
4548
4544 2004-04-04 Fernando Perez <fperez@colorado.edu>
4549 2004-04-04 Fernando Perez <fperez@colorado.edu>
4545
4550
4546 * IPython/iplib.py (InteractiveShell.interact): Added a special
4551 * IPython/iplib.py (InteractiveShell.interact): Added a special
4547 trap for a debugger quit exception, which is basically impossible
4552 trap for a debugger quit exception, which is basically impossible
4548 to handle by normal mechanisms, given what pdb does to the stack.
4553 to handle by normal mechanisms, given what pdb does to the stack.
4549 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4554 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4550
4555
4551 2004-04-03 Fernando Perez <fperez@colorado.edu>
4556 2004-04-03 Fernando Perez <fperez@colorado.edu>
4552
4557
4553 * IPython/genutils.py (Term): Standardized the names of the Term
4558 * IPython/genutils.py (Term): Standardized the names of the Term
4554 class streams to cin/cout/cerr, following C++ naming conventions
4559 class streams to cin/cout/cerr, following C++ naming conventions
4555 (I can't use in/out/err because 'in' is not a valid attribute
4560 (I can't use in/out/err because 'in' is not a valid attribute
4556 name).
4561 name).
4557
4562
4558 * IPython/iplib.py (InteractiveShell.interact): don't increment
4563 * IPython/iplib.py (InteractiveShell.interact): don't increment
4559 the prompt if there's no user input. By Daniel 'Dang' Griffith
4564 the prompt if there's no user input. By Daniel 'Dang' Griffith
4560 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4565 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4561 Francois Pinard.
4566 Francois Pinard.
4562
4567
4563 2004-04-02 Fernando Perez <fperez@colorado.edu>
4568 2004-04-02 Fernando Perez <fperez@colorado.edu>
4564
4569
4565 * IPython/genutils.py (Stream.__init__): Modified to survive at
4570 * IPython/genutils.py (Stream.__init__): Modified to survive at
4566 least importing in contexts where stdin/out/err aren't true file
4571 least importing in contexts where stdin/out/err aren't true file
4567 objects, such as PyCrust (they lack fileno() and mode). However,
4572 objects, such as PyCrust (they lack fileno() and mode). However,
4568 the recovery facilities which rely on these things existing will
4573 the recovery facilities which rely on these things existing will
4569 not work.
4574 not work.
4570
4575
4571 2004-04-01 Fernando Perez <fperez@colorado.edu>
4576 2004-04-01 Fernando Perez <fperez@colorado.edu>
4572
4577
4573 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4578 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4574 use the new getoutputerror() function, so it properly
4579 use the new getoutputerror() function, so it properly
4575 distinguishes stdout/err.
4580 distinguishes stdout/err.
4576
4581
4577 * IPython/genutils.py (getoutputerror): added a function to
4582 * IPython/genutils.py (getoutputerror): added a function to
4578 capture separately the standard output and error of a command.
4583 capture separately the standard output and error of a command.
4579 After a comment from dang on the mailing lists. This code is
4584 After a comment from dang on the mailing lists. This code is
4580 basically a modified version of commands.getstatusoutput(), from
4585 basically a modified version of commands.getstatusoutput(), from
4581 the standard library.
4586 the standard library.
4582
4587
4583 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4588 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4584 '!!' as a special syntax (shorthand) to access @sx.
4589 '!!' as a special syntax (shorthand) to access @sx.
4585
4590
4586 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4591 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4587 command and return its output as a list split on '\n'.
4592 command and return its output as a list split on '\n'.
4588
4593
4589 2004-03-31 Fernando Perez <fperez@colorado.edu>
4594 2004-03-31 Fernando Perez <fperez@colorado.edu>
4590
4595
4591 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4596 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4592 method to dictionaries used as FakeModule instances if they lack
4597 method to dictionaries used as FakeModule instances if they lack
4593 it. At least pydoc in python2.3 breaks for runtime-defined
4598 it. At least pydoc in python2.3 breaks for runtime-defined
4594 functions without this hack. At some point I need to _really_
4599 functions without this hack. At some point I need to _really_
4595 understand what FakeModule is doing, because it's a gross hack.
4600 understand what FakeModule is doing, because it's a gross hack.
4596 But it solves Arnd's problem for now...
4601 But it solves Arnd's problem for now...
4597
4602
4598 2004-02-27 Fernando Perez <fperez@colorado.edu>
4603 2004-02-27 Fernando Perez <fperez@colorado.edu>
4599
4604
4600 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4605 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4601 mode would behave erratically. Also increased the number of
4606 mode would behave erratically. Also increased the number of
4602 possible logs in rotate mod to 999. Thanks to Rod Holland
4607 possible logs in rotate mod to 999. Thanks to Rod Holland
4603 <rhh@StructureLABS.com> for the report and fixes.
4608 <rhh@StructureLABS.com> for the report and fixes.
4604
4609
4605 2004-02-26 Fernando Perez <fperez@colorado.edu>
4610 2004-02-26 Fernando Perez <fperez@colorado.edu>
4606
4611
4607 * IPython/genutils.py (page): Check that the curses module really
4612 * IPython/genutils.py (page): Check that the curses module really
4608 has the initscr attribute before trying to use it. For some
4613 has the initscr attribute before trying to use it. For some
4609 reason, the Solaris curses module is missing this. I think this
4614 reason, the Solaris curses module is missing this. I think this
4610 should be considered a Solaris python bug, but I'm not sure.
4615 should be considered a Solaris python bug, but I'm not sure.
4611
4616
4612 2004-01-17 Fernando Perez <fperez@colorado.edu>
4617 2004-01-17 Fernando Perez <fperez@colorado.edu>
4613
4618
4614 * IPython/genutils.py (Stream.__init__): Changes to try to make
4619 * IPython/genutils.py (Stream.__init__): Changes to try to make
4615 ipython robust against stdin/out/err being closed by the user.
4620 ipython robust against stdin/out/err being closed by the user.
4616 This is 'user error' (and blocks a normal python session, at least
4621 This is 'user error' (and blocks a normal python session, at least
4617 the stdout case). However, Ipython should be able to survive such
4622 the stdout case). However, Ipython should be able to survive such
4618 instances of abuse as gracefully as possible. To simplify the
4623 instances of abuse as gracefully as possible. To simplify the
4619 coding and maintain compatibility with Gary Bishop's Term
4624 coding and maintain compatibility with Gary Bishop's Term
4620 contributions, I've made use of classmethods for this. I think
4625 contributions, I've made use of classmethods for this. I think
4621 this introduces a dependency on python 2.2.
4626 this introduces a dependency on python 2.2.
4622
4627
4623 2004-01-13 Fernando Perez <fperez@colorado.edu>
4628 2004-01-13 Fernando Perez <fperez@colorado.edu>
4624
4629
4625 * IPython/numutils.py (exp_safe): simplified the code a bit and
4630 * IPython/numutils.py (exp_safe): simplified the code a bit and
4626 removed the need for importing the kinds module altogether.
4631 removed the need for importing the kinds module altogether.
4627
4632
4628 2004-01-06 Fernando Perez <fperez@colorado.edu>
4633 2004-01-06 Fernando Perez <fperez@colorado.edu>
4629
4634
4630 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4635 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4631 a magic function instead, after some community feedback. No
4636 a magic function instead, after some community feedback. No
4632 special syntax will exist for it, but its name is deliberately
4637 special syntax will exist for it, but its name is deliberately
4633 very short.
4638 very short.
4634
4639
4635 2003-12-20 Fernando Perez <fperez@colorado.edu>
4640 2003-12-20 Fernando Perez <fperez@colorado.edu>
4636
4641
4637 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4642 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4638 new functionality, to automagically assign the result of a shell
4643 new functionality, to automagically assign the result of a shell
4639 command to a variable. I'll solicit some community feedback on
4644 command to a variable. I'll solicit some community feedback on
4640 this before making it permanent.
4645 this before making it permanent.
4641
4646
4642 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4647 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4643 requested about callables for which inspect couldn't obtain a
4648 requested about callables for which inspect couldn't obtain a
4644 proper argspec. Thanks to a crash report sent by Etienne
4649 proper argspec. Thanks to a crash report sent by Etienne
4645 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4650 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4646
4651
4647 2003-12-09 Fernando Perez <fperez@colorado.edu>
4652 2003-12-09 Fernando Perez <fperez@colorado.edu>
4648
4653
4649 * IPython/genutils.py (page): patch for the pager to work across
4654 * IPython/genutils.py (page): patch for the pager to work across
4650 various versions of Windows. By Gary Bishop.
4655 various versions of Windows. By Gary Bishop.
4651
4656
4652 2003-12-04 Fernando Perez <fperez@colorado.edu>
4657 2003-12-04 Fernando Perez <fperez@colorado.edu>
4653
4658
4654 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4659 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4655 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4660 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4656 While I tested this and it looks ok, there may still be corner
4661 While I tested this and it looks ok, there may still be corner
4657 cases I've missed.
4662 cases I've missed.
4658
4663
4659 2003-12-01 Fernando Perez <fperez@colorado.edu>
4664 2003-12-01 Fernando Perez <fperez@colorado.edu>
4660
4665
4661 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4666 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4662 where a line like 'p,q=1,2' would fail because the automagic
4667 where a line like 'p,q=1,2' would fail because the automagic
4663 system would be triggered for @p.
4668 system would be triggered for @p.
4664
4669
4665 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4670 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4666 cleanups, code unmodified.
4671 cleanups, code unmodified.
4667
4672
4668 * IPython/genutils.py (Term): added a class for IPython to handle
4673 * IPython/genutils.py (Term): added a class for IPython to handle
4669 output. In most cases it will just be a proxy for stdout/err, but
4674 output. In most cases it will just be a proxy for stdout/err, but
4670 having this allows modifications to be made for some platforms,
4675 having this allows modifications to be made for some platforms,
4671 such as handling color escapes under Windows. All of this code
4676 such as handling color escapes under Windows. All of this code
4672 was contributed by Gary Bishop, with minor modifications by me.
4677 was contributed by Gary Bishop, with minor modifications by me.
4673 The actual changes affect many files.
4678 The actual changes affect many files.
4674
4679
4675 2003-11-30 Fernando Perez <fperez@colorado.edu>
4680 2003-11-30 Fernando Perez <fperez@colorado.edu>
4676
4681
4677 * IPython/iplib.py (file_matches): new completion code, courtesy
4682 * IPython/iplib.py (file_matches): new completion code, courtesy
4678 of Jeff Collins. This enables filename completion again under
4683 of Jeff Collins. This enables filename completion again under
4679 python 2.3, which disabled it at the C level.
4684 python 2.3, which disabled it at the C level.
4680
4685
4681 2003-11-11 Fernando Perez <fperez@colorado.edu>
4686 2003-11-11 Fernando Perez <fperez@colorado.edu>
4682
4687
4683 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4688 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4684 for Numeric.array(map(...)), but often convenient.
4689 for Numeric.array(map(...)), but often convenient.
4685
4690
4686 2003-11-05 Fernando Perez <fperez@colorado.edu>
4691 2003-11-05 Fernando Perez <fperez@colorado.edu>
4687
4692
4688 * IPython/numutils.py (frange): Changed a call from int() to
4693 * IPython/numutils.py (frange): Changed a call from int() to
4689 int(round()) to prevent a problem reported with arange() in the
4694 int(round()) to prevent a problem reported with arange() in the
4690 numpy list.
4695 numpy list.
4691
4696
4692 2003-10-06 Fernando Perez <fperez@colorado.edu>
4697 2003-10-06 Fernando Perez <fperez@colorado.edu>
4693
4698
4694 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4699 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4695 prevent crashes if sys lacks an argv attribute (it happens with
4700 prevent crashes if sys lacks an argv attribute (it happens with
4696 embedded interpreters which build a bare-bones sys module).
4701 embedded interpreters which build a bare-bones sys module).
4697 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4702 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4698
4703
4699 2003-09-24 Fernando Perez <fperez@colorado.edu>
4704 2003-09-24 Fernando Perez <fperez@colorado.edu>
4700
4705
4701 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4706 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4702 to protect against poorly written user objects where __getattr__
4707 to protect against poorly written user objects where __getattr__
4703 raises exceptions other than AttributeError. Thanks to a bug
4708 raises exceptions other than AttributeError. Thanks to a bug
4704 report by Oliver Sander <osander-AT-gmx.de>.
4709 report by Oliver Sander <osander-AT-gmx.de>.
4705
4710
4706 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4711 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4707 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4712 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4708
4713
4709 2003-09-09 Fernando Perez <fperez@colorado.edu>
4714 2003-09-09 Fernando Perez <fperez@colorado.edu>
4710
4715
4711 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4716 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4712 unpacking a list whith a callable as first element would
4717 unpacking a list whith a callable as first element would
4713 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4718 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4714 Collins.
4719 Collins.
4715
4720
4716 2003-08-25 *** Released version 0.5.0
4721 2003-08-25 *** Released version 0.5.0
4717
4722
4718 2003-08-22 Fernando Perez <fperez@colorado.edu>
4723 2003-08-22 Fernando Perez <fperez@colorado.edu>
4719
4724
4720 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4725 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4721 improperly defined user exceptions. Thanks to feedback from Mark
4726 improperly defined user exceptions. Thanks to feedback from Mark
4722 Russell <mrussell-AT-verio.net>.
4727 Russell <mrussell-AT-verio.net>.
4723
4728
4724 2003-08-20 Fernando Perez <fperez@colorado.edu>
4729 2003-08-20 Fernando Perez <fperez@colorado.edu>
4725
4730
4726 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4731 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4727 printing so that it would print multi-line string forms starting
4732 printing so that it would print multi-line string forms starting
4728 with a new line. This way the formatting is better respected for
4733 with a new line. This way the formatting is better respected for
4729 objects which work hard to make nice string forms.
4734 objects which work hard to make nice string forms.
4730
4735
4731 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4736 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4732 autocall would overtake data access for objects with both
4737 autocall would overtake data access for objects with both
4733 __getitem__ and __call__.
4738 __getitem__ and __call__.
4734
4739
4735 2003-08-19 *** Released version 0.5.0-rc1
4740 2003-08-19 *** Released version 0.5.0-rc1
4736
4741
4737 2003-08-19 Fernando Perez <fperez@colorado.edu>
4742 2003-08-19 Fernando Perez <fperez@colorado.edu>
4738
4743
4739 * IPython/deep_reload.py (load_tail): single tiny change here
4744 * IPython/deep_reload.py (load_tail): single tiny change here
4740 seems to fix the long-standing bug of dreload() failing to work
4745 seems to fix the long-standing bug of dreload() failing to work
4741 for dotted names. But this module is pretty tricky, so I may have
4746 for dotted names. But this module is pretty tricky, so I may have
4742 missed some subtlety. Needs more testing!.
4747 missed some subtlety. Needs more testing!.
4743
4748
4744 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4749 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4745 exceptions which have badly implemented __str__ methods.
4750 exceptions which have badly implemented __str__ methods.
4746 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4751 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4747 which I've been getting reports about from Python 2.3 users. I
4752 which I've been getting reports about from Python 2.3 users. I
4748 wish I had a simple test case to reproduce the problem, so I could
4753 wish I had a simple test case to reproduce the problem, so I could
4749 either write a cleaner workaround or file a bug report if
4754 either write a cleaner workaround or file a bug report if
4750 necessary.
4755 necessary.
4751
4756
4752 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4757 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4753 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4758 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4754 a bug report by Tjabo Kloppenburg.
4759 a bug report by Tjabo Kloppenburg.
4755
4760
4756 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4761 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4757 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4762 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4758 seems rather unstable. Thanks to a bug report by Tjabo
4763 seems rather unstable. Thanks to a bug report by Tjabo
4759 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4764 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4760
4765
4761 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4766 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4762 this out soon because of the critical fixes in the inner loop for
4767 this out soon because of the critical fixes in the inner loop for
4763 generators.
4768 generators.
4764
4769
4765 * IPython/Magic.py (Magic.getargspec): removed. This (and
4770 * IPython/Magic.py (Magic.getargspec): removed. This (and
4766 _get_def) have been obsoleted by OInspect for a long time, I
4771 _get_def) have been obsoleted by OInspect for a long time, I
4767 hadn't noticed that they were dead code.
4772 hadn't noticed that they were dead code.
4768 (Magic._ofind): restored _ofind functionality for a few literals
4773 (Magic._ofind): restored _ofind functionality for a few literals
4769 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4774 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4770 for things like "hello".capitalize?, since that would require a
4775 for things like "hello".capitalize?, since that would require a
4771 potentially dangerous eval() again.
4776 potentially dangerous eval() again.
4772
4777
4773 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4778 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4774 logic a bit more to clean up the escapes handling and minimize the
4779 logic a bit more to clean up the escapes handling and minimize the
4775 use of _ofind to only necessary cases. The interactive 'feel' of
4780 use of _ofind to only necessary cases. The interactive 'feel' of
4776 IPython should have improved quite a bit with the changes in
4781 IPython should have improved quite a bit with the changes in
4777 _prefilter and _ofind (besides being far safer than before).
4782 _prefilter and _ofind (besides being far safer than before).
4778
4783
4779 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4784 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4780 obscure, never reported). Edit would fail to find the object to
4785 obscure, never reported). Edit would fail to find the object to
4781 edit under some circumstances.
4786 edit under some circumstances.
4782 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4787 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4783 which were causing double-calling of generators. Those eval calls
4788 which were causing double-calling of generators. Those eval calls
4784 were _very_ dangerous, since code with side effects could be
4789 were _very_ dangerous, since code with side effects could be
4785 triggered. As they say, 'eval is evil'... These were the
4790 triggered. As they say, 'eval is evil'... These were the
4786 nastiest evals in IPython. Besides, _ofind is now far simpler,
4791 nastiest evals in IPython. Besides, _ofind is now far simpler,
4787 and it should also be quite a bit faster. Its use of inspect is
4792 and it should also be quite a bit faster. Its use of inspect is
4788 also safer, so perhaps some of the inspect-related crashes I've
4793 also safer, so perhaps some of the inspect-related crashes I've
4789 seen lately with Python 2.3 might be taken care of. That will
4794 seen lately with Python 2.3 might be taken care of. That will
4790 need more testing.
4795 need more testing.
4791
4796
4792 2003-08-17 Fernando Perez <fperez@colorado.edu>
4797 2003-08-17 Fernando Perez <fperez@colorado.edu>
4793
4798
4794 * IPython/iplib.py (InteractiveShell._prefilter): significant
4799 * IPython/iplib.py (InteractiveShell._prefilter): significant
4795 simplifications to the logic for handling user escapes. Faster
4800 simplifications to the logic for handling user escapes. Faster
4796 and simpler code.
4801 and simpler code.
4797
4802
4798 2003-08-14 Fernando Perez <fperez@colorado.edu>
4803 2003-08-14 Fernando Perez <fperez@colorado.edu>
4799
4804
4800 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4805 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4801 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4806 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4802 but it should be quite a bit faster. And the recursive version
4807 but it should be quite a bit faster. And the recursive version
4803 generated O(log N) intermediate storage for all rank>1 arrays,
4808 generated O(log N) intermediate storage for all rank>1 arrays,
4804 even if they were contiguous.
4809 even if they were contiguous.
4805 (l1norm): Added this function.
4810 (l1norm): Added this function.
4806 (norm): Added this function for arbitrary norms (including
4811 (norm): Added this function for arbitrary norms (including
4807 l-infinity). l1 and l2 are still special cases for convenience
4812 l-infinity). l1 and l2 are still special cases for convenience
4808 and speed.
4813 and speed.
4809
4814
4810 2003-08-03 Fernando Perez <fperez@colorado.edu>
4815 2003-08-03 Fernando Perez <fperez@colorado.edu>
4811
4816
4812 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4817 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4813 exceptions, which now raise PendingDeprecationWarnings in Python
4818 exceptions, which now raise PendingDeprecationWarnings in Python
4814 2.3. There were some in Magic and some in Gnuplot2.
4819 2.3. There were some in Magic and some in Gnuplot2.
4815
4820
4816 2003-06-30 Fernando Perez <fperez@colorado.edu>
4821 2003-06-30 Fernando Perez <fperez@colorado.edu>
4817
4822
4818 * IPython/genutils.py (page): modified to call curses only for
4823 * IPython/genutils.py (page): modified to call curses only for
4819 terminals where TERM=='xterm'. After problems under many other
4824 terminals where TERM=='xterm'. After problems under many other
4820 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4825 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4821
4826
4822 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4827 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4823 would be triggered when readline was absent. This was just an old
4828 would be triggered when readline was absent. This was just an old
4824 debugging statement I'd forgotten to take out.
4829 debugging statement I'd forgotten to take out.
4825
4830
4826 2003-06-20 Fernando Perez <fperez@colorado.edu>
4831 2003-06-20 Fernando Perez <fperez@colorado.edu>
4827
4832
4828 * IPython/genutils.py (clock): modified to return only user time
4833 * IPython/genutils.py (clock): modified to return only user time
4829 (not counting system time), after a discussion on scipy. While
4834 (not counting system time), after a discussion on scipy. While
4830 system time may be a useful quantity occasionally, it may much
4835 system time may be a useful quantity occasionally, it may much
4831 more easily be skewed by occasional swapping or other similar
4836 more easily be skewed by occasional swapping or other similar
4832 activity.
4837 activity.
4833
4838
4834 2003-06-05 Fernando Perez <fperez@colorado.edu>
4839 2003-06-05 Fernando Perez <fperez@colorado.edu>
4835
4840
4836 * IPython/numutils.py (identity): new function, for building
4841 * IPython/numutils.py (identity): new function, for building
4837 arbitrary rank Kronecker deltas (mostly backwards compatible with
4842 arbitrary rank Kronecker deltas (mostly backwards compatible with
4838 Numeric.identity)
4843 Numeric.identity)
4839
4844
4840 2003-06-03 Fernando Perez <fperez@colorado.edu>
4845 2003-06-03 Fernando Perez <fperez@colorado.edu>
4841
4846
4842 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4847 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4843 arguments passed to magics with spaces, to allow trailing '\' to
4848 arguments passed to magics with spaces, to allow trailing '\' to
4844 work normally (mainly for Windows users).
4849 work normally (mainly for Windows users).
4845
4850
4846 2003-05-29 Fernando Perez <fperez@colorado.edu>
4851 2003-05-29 Fernando Perez <fperez@colorado.edu>
4847
4852
4848 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4853 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4849 instead of pydoc.help. This fixes a bizarre behavior where
4854 instead of pydoc.help. This fixes a bizarre behavior where
4850 printing '%s' % locals() would trigger the help system. Now
4855 printing '%s' % locals() would trigger the help system. Now
4851 ipython behaves like normal python does.
4856 ipython behaves like normal python does.
4852
4857
4853 Note that if one does 'from pydoc import help', the bizarre
4858 Note that if one does 'from pydoc import help', the bizarre
4854 behavior returns, but this will also happen in normal python, so
4859 behavior returns, but this will also happen in normal python, so
4855 it's not an ipython bug anymore (it has to do with how pydoc.help
4860 it's not an ipython bug anymore (it has to do with how pydoc.help
4856 is implemented).
4861 is implemented).
4857
4862
4858 2003-05-22 Fernando Perez <fperez@colorado.edu>
4863 2003-05-22 Fernando Perez <fperez@colorado.edu>
4859
4864
4860 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4865 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4861 return [] instead of None when nothing matches, also match to end
4866 return [] instead of None when nothing matches, also match to end
4862 of line. Patch by Gary Bishop.
4867 of line. Patch by Gary Bishop.
4863
4868
4864 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4869 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4865 protection as before, for files passed on the command line. This
4870 protection as before, for files passed on the command line. This
4866 prevents the CrashHandler from kicking in if user files call into
4871 prevents the CrashHandler from kicking in if user files call into
4867 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4872 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4868 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4873 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4869
4874
4870 2003-05-20 *** Released version 0.4.0
4875 2003-05-20 *** Released version 0.4.0
4871
4876
4872 2003-05-20 Fernando Perez <fperez@colorado.edu>
4877 2003-05-20 Fernando Perez <fperez@colorado.edu>
4873
4878
4874 * setup.py: added support for manpages. It's a bit hackish b/c of
4879 * setup.py: added support for manpages. It's a bit hackish b/c of
4875 a bug in the way the bdist_rpm distutils target handles gzipped
4880 a bug in the way the bdist_rpm distutils target handles gzipped
4876 manpages, but it works. After a patch by Jack.
4881 manpages, but it works. After a patch by Jack.
4877
4882
4878 2003-05-19 Fernando Perez <fperez@colorado.edu>
4883 2003-05-19 Fernando Perez <fperez@colorado.edu>
4879
4884
4880 * IPython/numutils.py: added a mockup of the kinds module, since
4885 * IPython/numutils.py: added a mockup of the kinds module, since
4881 it was recently removed from Numeric. This way, numutils will
4886 it was recently removed from Numeric. This way, numutils will
4882 work for all users even if they are missing kinds.
4887 work for all users even if they are missing kinds.
4883
4888
4884 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4889 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4885 failure, which can occur with SWIG-wrapped extensions. After a
4890 failure, which can occur with SWIG-wrapped extensions. After a
4886 crash report from Prabhu.
4891 crash report from Prabhu.
4887
4892
4888 2003-05-16 Fernando Perez <fperez@colorado.edu>
4893 2003-05-16 Fernando Perez <fperez@colorado.edu>
4889
4894
4890 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4895 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4891 protect ipython from user code which may call directly
4896 protect ipython from user code which may call directly
4892 sys.excepthook (this looks like an ipython crash to the user, even
4897 sys.excepthook (this looks like an ipython crash to the user, even
4893 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4898 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4894 This is especially important to help users of WxWindows, but may
4899 This is especially important to help users of WxWindows, but may
4895 also be useful in other cases.
4900 also be useful in other cases.
4896
4901
4897 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4902 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4898 an optional tb_offset to be specified, and to preserve exception
4903 an optional tb_offset to be specified, and to preserve exception
4899 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4904 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4900
4905
4901 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4906 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4902
4907
4903 2003-05-15 Fernando Perez <fperez@colorado.edu>
4908 2003-05-15 Fernando Perez <fperez@colorado.edu>
4904
4909
4905 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4910 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4906 installing for a new user under Windows.
4911 installing for a new user under Windows.
4907
4912
4908 2003-05-12 Fernando Perez <fperez@colorado.edu>
4913 2003-05-12 Fernando Perez <fperez@colorado.edu>
4909
4914
4910 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4915 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4911 handler for Emacs comint-based lines. Currently it doesn't do
4916 handler for Emacs comint-based lines. Currently it doesn't do
4912 much (but importantly, it doesn't update the history cache). In
4917 much (but importantly, it doesn't update the history cache). In
4913 the future it may be expanded if Alex needs more functionality
4918 the future it may be expanded if Alex needs more functionality
4914 there.
4919 there.
4915
4920
4916 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4921 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4917 info to crash reports.
4922 info to crash reports.
4918
4923
4919 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4924 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4920 just like Python's -c. Also fixed crash with invalid -color
4925 just like Python's -c. Also fixed crash with invalid -color
4921 option value at startup. Thanks to Will French
4926 option value at startup. Thanks to Will French
4922 <wfrench-AT-bestweb.net> for the bug report.
4927 <wfrench-AT-bestweb.net> for the bug report.
4923
4928
4924 2003-05-09 Fernando Perez <fperez@colorado.edu>
4929 2003-05-09 Fernando Perez <fperez@colorado.edu>
4925
4930
4926 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4931 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4927 to EvalDict (it's a mapping, after all) and simplified its code
4932 to EvalDict (it's a mapping, after all) and simplified its code
4928 quite a bit, after a nice discussion on c.l.py where Gustavo
4933 quite a bit, after a nice discussion on c.l.py where Gustavo
4929 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4934 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4930
4935
4931 2003-04-30 Fernando Perez <fperez@colorado.edu>
4936 2003-04-30 Fernando Perez <fperez@colorado.edu>
4932
4937
4933 * IPython/genutils.py (timings_out): modified it to reduce its
4938 * IPython/genutils.py (timings_out): modified it to reduce its
4934 overhead in the common reps==1 case.
4939 overhead in the common reps==1 case.
4935
4940
4936 2003-04-29 Fernando Perez <fperez@colorado.edu>
4941 2003-04-29 Fernando Perez <fperez@colorado.edu>
4937
4942
4938 * IPython/genutils.py (timings_out): Modified to use the resource
4943 * IPython/genutils.py (timings_out): Modified to use the resource
4939 module, which avoids the wraparound problems of time.clock().
4944 module, which avoids the wraparound problems of time.clock().
4940
4945
4941 2003-04-17 *** Released version 0.2.15pre4
4946 2003-04-17 *** Released version 0.2.15pre4
4942
4947
4943 2003-04-17 Fernando Perez <fperez@colorado.edu>
4948 2003-04-17 Fernando Perez <fperez@colorado.edu>
4944
4949
4945 * setup.py (scriptfiles): Split windows-specific stuff over to a
4950 * setup.py (scriptfiles): Split windows-specific stuff over to a
4946 separate file, in an attempt to have a Windows GUI installer.
4951 separate file, in an attempt to have a Windows GUI installer.
4947 That didn't work, but part of the groundwork is done.
4952 That didn't work, but part of the groundwork is done.
4948
4953
4949 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4954 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4950 indent/unindent with 4 spaces. Particularly useful in combination
4955 indent/unindent with 4 spaces. Particularly useful in combination
4951 with the new auto-indent option.
4956 with the new auto-indent option.
4952
4957
4953 2003-04-16 Fernando Perez <fperez@colorado.edu>
4958 2003-04-16 Fernando Perez <fperez@colorado.edu>
4954
4959
4955 * IPython/Magic.py: various replacements of self.rc for
4960 * IPython/Magic.py: various replacements of self.rc for
4956 self.shell.rc. A lot more remains to be done to fully disentangle
4961 self.shell.rc. A lot more remains to be done to fully disentangle
4957 this class from the main Shell class.
4962 this class from the main Shell class.
4958
4963
4959 * IPython/GnuplotRuntime.py: added checks for mouse support so
4964 * IPython/GnuplotRuntime.py: added checks for mouse support so
4960 that we don't try to enable it if the current gnuplot doesn't
4965 that we don't try to enable it if the current gnuplot doesn't
4961 really support it. Also added checks so that we don't try to
4966 really support it. Also added checks so that we don't try to
4962 enable persist under Windows (where Gnuplot doesn't recognize the
4967 enable persist under Windows (where Gnuplot doesn't recognize the
4963 option).
4968 option).
4964
4969
4965 * IPython/iplib.py (InteractiveShell.interact): Added optional
4970 * IPython/iplib.py (InteractiveShell.interact): Added optional
4966 auto-indenting code, after a patch by King C. Shu
4971 auto-indenting code, after a patch by King C. Shu
4967 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4972 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4968 get along well with pasting indented code. If I ever figure out
4973 get along well with pasting indented code. If I ever figure out
4969 how to make that part go well, it will become on by default.
4974 how to make that part go well, it will become on by default.
4970
4975
4971 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4976 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4972 crash ipython if there was an unmatched '%' in the user's prompt
4977 crash ipython if there was an unmatched '%' in the user's prompt
4973 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4978 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4974
4979
4975 * IPython/iplib.py (InteractiveShell.interact): removed the
4980 * IPython/iplib.py (InteractiveShell.interact): removed the
4976 ability to ask the user whether he wants to crash or not at the
4981 ability to ask the user whether he wants to crash or not at the
4977 'last line' exception handler. Calling functions at that point
4982 'last line' exception handler. Calling functions at that point
4978 changes the stack, and the error reports would have incorrect
4983 changes the stack, and the error reports would have incorrect
4979 tracebacks.
4984 tracebacks.
4980
4985
4981 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4986 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4982 pass through a peger a pretty-printed form of any object. After a
4987 pass through a peger a pretty-printed form of any object. After a
4983 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4988 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4984
4989
4985 2003-04-14 Fernando Perez <fperez@colorado.edu>
4990 2003-04-14 Fernando Perez <fperez@colorado.edu>
4986
4991
4987 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4992 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4988 all files in ~ would be modified at first install (instead of
4993 all files in ~ would be modified at first install (instead of
4989 ~/.ipython). This could be potentially disastrous, as the
4994 ~/.ipython). This could be potentially disastrous, as the
4990 modification (make line-endings native) could damage binary files.
4995 modification (make line-endings native) could damage binary files.
4991
4996
4992 2003-04-10 Fernando Perez <fperez@colorado.edu>
4997 2003-04-10 Fernando Perez <fperez@colorado.edu>
4993
4998
4994 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4999 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4995 handle only lines which are invalid python. This now means that
5000 handle only lines which are invalid python. This now means that
4996 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
5001 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4997 for the bug report.
5002 for the bug report.
4998
5003
4999 2003-04-01 Fernando Perez <fperez@colorado.edu>
5004 2003-04-01 Fernando Perez <fperez@colorado.edu>
5000
5005
5001 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
5006 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
5002 where failing to set sys.last_traceback would crash pdb.pm().
5007 where failing to set sys.last_traceback would crash pdb.pm().
5003 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
5008 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
5004 report.
5009 report.
5005
5010
5006 2003-03-25 Fernando Perez <fperez@colorado.edu>
5011 2003-03-25 Fernando Perez <fperez@colorado.edu>
5007
5012
5008 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
5013 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
5009 before printing it (it had a lot of spurious blank lines at the
5014 before printing it (it had a lot of spurious blank lines at the
5010 end).
5015 end).
5011
5016
5012 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
5017 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
5013 output would be sent 21 times! Obviously people don't use this
5018 output would be sent 21 times! Obviously people don't use this
5014 too often, or I would have heard about it.
5019 too often, or I would have heard about it.
5015
5020
5016 2003-03-24 Fernando Perez <fperez@colorado.edu>
5021 2003-03-24 Fernando Perez <fperez@colorado.edu>
5017
5022
5018 * setup.py (scriptfiles): renamed the data_files parameter from
5023 * setup.py (scriptfiles): renamed the data_files parameter from
5019 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
5024 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
5020 for the patch.
5025 for the patch.
5021
5026
5022 2003-03-20 Fernando Perez <fperez@colorado.edu>
5027 2003-03-20 Fernando Perez <fperez@colorado.edu>
5023
5028
5024 * IPython/genutils.py (error): added error() and fatal()
5029 * IPython/genutils.py (error): added error() and fatal()
5025 functions.
5030 functions.
5026
5031
5027 2003-03-18 *** Released version 0.2.15pre3
5032 2003-03-18 *** Released version 0.2.15pre3
5028
5033
5029 2003-03-18 Fernando Perez <fperez@colorado.edu>
5034 2003-03-18 Fernando Perez <fperez@colorado.edu>
5030
5035
5031 * setupext/install_data_ext.py
5036 * setupext/install_data_ext.py
5032 (install_data_ext.initialize_options): Class contributed by Jack
5037 (install_data_ext.initialize_options): Class contributed by Jack
5033 Moffit for fixing the old distutils hack. He is sending this to
5038 Moffit for fixing the old distutils hack. He is sending this to
5034 the distutils folks so in the future we may not need it as a
5039 the distutils folks so in the future we may not need it as a
5035 private fix.
5040 private fix.
5036
5041
5037 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
5042 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
5038 changes for Debian packaging. See his patch for full details.
5043 changes for Debian packaging. See his patch for full details.
5039 The old distutils hack of making the ipythonrc* files carry a
5044 The old distutils hack of making the ipythonrc* files carry a
5040 bogus .py extension is gone, at last. Examples were moved to a
5045 bogus .py extension is gone, at last. Examples were moved to a
5041 separate subdir under doc/, and the separate executable scripts
5046 separate subdir under doc/, and the separate executable scripts
5042 now live in their own directory. Overall a great cleanup. The
5047 now live in their own directory. Overall a great cleanup. The
5043 manual was updated to use the new files, and setup.py has been
5048 manual was updated to use the new files, and setup.py has been
5044 fixed for this setup.
5049 fixed for this setup.
5045
5050
5046 * IPython/PyColorize.py (Parser.usage): made non-executable and
5051 * IPython/PyColorize.py (Parser.usage): made non-executable and
5047 created a pycolor wrapper around it to be included as a script.
5052 created a pycolor wrapper around it to be included as a script.
5048
5053
5049 2003-03-12 *** Released version 0.2.15pre2
5054 2003-03-12 *** Released version 0.2.15pre2
5050
5055
5051 2003-03-12 Fernando Perez <fperez@colorado.edu>
5056 2003-03-12 Fernando Perez <fperez@colorado.edu>
5052
5057
5053 * IPython/ColorANSI.py (make_color_table): Finally fixed the
5058 * IPython/ColorANSI.py (make_color_table): Finally fixed the
5054 long-standing problem with garbage characters in some terminals.
5059 long-standing problem with garbage characters in some terminals.
5055 The issue was really that the \001 and \002 escapes must _only_ be
5060 The issue was really that the \001 and \002 escapes must _only_ be
5056 passed to input prompts (which call readline), but _never_ to
5061 passed to input prompts (which call readline), but _never_ to
5057 normal text to be printed on screen. I changed ColorANSI to have
5062 normal text to be printed on screen. I changed ColorANSI to have
5058 two classes: TermColors and InputTermColors, each with the
5063 two classes: TermColors and InputTermColors, each with the
5059 appropriate escapes for input prompts or normal text. The code in
5064 appropriate escapes for input prompts or normal text. The code in
5060 Prompts.py got slightly more complicated, but this very old and
5065 Prompts.py got slightly more complicated, but this very old and
5061 annoying bug is finally fixed.
5066 annoying bug is finally fixed.
5062
5067
5063 All the credit for nailing down the real origin of this problem
5068 All the credit for nailing down the real origin of this problem
5064 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
5069 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
5065 *Many* thanks to him for spending quite a bit of effort on this.
5070 *Many* thanks to him for spending quite a bit of effort on this.
5066
5071
5067 2003-03-05 *** Released version 0.2.15pre1
5072 2003-03-05 *** Released version 0.2.15pre1
5068
5073
5069 2003-03-03 Fernando Perez <fperez@colorado.edu>
5074 2003-03-03 Fernando Perez <fperez@colorado.edu>
5070
5075
5071 * IPython/FakeModule.py: Moved the former _FakeModule to a
5076 * IPython/FakeModule.py: Moved the former _FakeModule to a
5072 separate file, because it's also needed by Magic (to fix a similar
5077 separate file, because it's also needed by Magic (to fix a similar
5073 pickle-related issue in @run).
5078 pickle-related issue in @run).
5074
5079
5075 2003-03-02 Fernando Perez <fperez@colorado.edu>
5080 2003-03-02 Fernando Perez <fperez@colorado.edu>
5076
5081
5077 * IPython/Magic.py (Magic.magic_autocall): new magic to control
5082 * IPython/Magic.py (Magic.magic_autocall): new magic to control
5078 the autocall option at runtime.
5083 the autocall option at runtime.
5079 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
5084 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
5080 across Magic.py to start separating Magic from InteractiveShell.
5085 across Magic.py to start separating Magic from InteractiveShell.
5081 (Magic._ofind): Fixed to return proper namespace for dotted
5086 (Magic._ofind): Fixed to return proper namespace for dotted
5082 names. Before, a dotted name would always return 'not currently
5087 names. Before, a dotted name would always return 'not currently
5083 defined', because it would find the 'parent'. s.x would be found,
5088 defined', because it would find the 'parent'. s.x would be found,
5084 but since 'x' isn't defined by itself, it would get confused.
5089 but since 'x' isn't defined by itself, it would get confused.
5085 (Magic.magic_run): Fixed pickling problems reported by Ralf
5090 (Magic.magic_run): Fixed pickling problems reported by Ralf
5086 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
5091 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
5087 that I'd used when Mike Heeter reported similar issues at the
5092 that I'd used when Mike Heeter reported similar issues at the
5088 top-level, but now for @run. It boils down to injecting the
5093 top-level, but now for @run. It boils down to injecting the
5089 namespace where code is being executed with something that looks
5094 namespace where code is being executed with something that looks
5090 enough like a module to fool pickle.dump(). Since a pickle stores
5095 enough like a module to fool pickle.dump(). Since a pickle stores
5091 a named reference to the importing module, we need this for
5096 a named reference to the importing module, we need this for
5092 pickles to save something sensible.
5097 pickles to save something sensible.
5093
5098
5094 * IPython/ipmaker.py (make_IPython): added an autocall option.
5099 * IPython/ipmaker.py (make_IPython): added an autocall option.
5095
5100
5096 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
5101 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
5097 the auto-eval code. Now autocalling is an option, and the code is
5102 the auto-eval code. Now autocalling is an option, and the code is
5098 also vastly safer. There is no more eval() involved at all.
5103 also vastly safer. There is no more eval() involved at all.
5099
5104
5100 2003-03-01 Fernando Perez <fperez@colorado.edu>
5105 2003-03-01 Fernando Perez <fperez@colorado.edu>
5101
5106
5102 * IPython/Magic.py (Magic._ofind): Changed interface to return a
5107 * IPython/Magic.py (Magic._ofind): Changed interface to return a
5103 dict with named keys instead of a tuple.
5108 dict with named keys instead of a tuple.
5104
5109
5105 * IPython: Started using CVS for IPython as of 0.2.15pre1.
5110 * IPython: Started using CVS for IPython as of 0.2.15pre1.
5106
5111
5107 * setup.py (make_shortcut): Fixed message about directories
5112 * setup.py (make_shortcut): Fixed message about directories
5108 created during Windows installation (the directories were ok, just
5113 created during Windows installation (the directories were ok, just
5109 the printed message was misleading). Thanks to Chris Liechti
5114 the printed message was misleading). Thanks to Chris Liechti
5110 <cliechti-AT-gmx.net> for the heads up.
5115 <cliechti-AT-gmx.net> for the heads up.
5111
5116
5112 2003-02-21 Fernando Perez <fperez@colorado.edu>
5117 2003-02-21 Fernando Perez <fperez@colorado.edu>
5113
5118
5114 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
5119 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
5115 of ValueError exception when checking for auto-execution. This
5120 of ValueError exception when checking for auto-execution. This
5116 one is raised by things like Numeric arrays arr.flat when the
5121 one is raised by things like Numeric arrays arr.flat when the
5117 array is non-contiguous.
5122 array is non-contiguous.
5118
5123
5119 2003-01-31 Fernando Perez <fperez@colorado.edu>
5124 2003-01-31 Fernando Perez <fperez@colorado.edu>
5120
5125
5121 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
5126 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
5122 not return any value at all (even though the command would get
5127 not return any value at all (even though the command would get
5123 executed).
5128 executed).
5124 (xsys): Flush stdout right after printing the command to ensure
5129 (xsys): Flush stdout right after printing the command to ensure
5125 proper ordering of commands and command output in the total
5130 proper ordering of commands and command output in the total
5126 output.
5131 output.
5127 (SystemExec/xsys/bq): Switched the names of xsys/bq and
5132 (SystemExec/xsys/bq): Switched the names of xsys/bq and
5128 system/getoutput as defaults. The old ones are kept for
5133 system/getoutput as defaults. The old ones are kept for
5129 compatibility reasons, so no code which uses this library needs
5134 compatibility reasons, so no code which uses this library needs
5130 changing.
5135 changing.
5131
5136
5132 2003-01-27 *** Released version 0.2.14
5137 2003-01-27 *** Released version 0.2.14
5133
5138
5134 2003-01-25 Fernando Perez <fperez@colorado.edu>
5139 2003-01-25 Fernando Perez <fperez@colorado.edu>
5135
5140
5136 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
5141 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
5137 functions defined in previous edit sessions could not be re-edited
5142 functions defined in previous edit sessions could not be re-edited
5138 (because the temp files were immediately removed). Now temp files
5143 (because the temp files were immediately removed). Now temp files
5139 are removed only at IPython's exit.
5144 are removed only at IPython's exit.
5140 (Magic.magic_run): Improved @run to perform shell-like expansions
5145 (Magic.magic_run): Improved @run to perform shell-like expansions
5141 on its arguments (~users and $VARS). With this, @run becomes more
5146 on its arguments (~users and $VARS). With this, @run becomes more
5142 like a normal command-line.
5147 like a normal command-line.
5143
5148
5144 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
5149 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
5145 bugs related to embedding and cleaned up that code. A fairly
5150 bugs related to embedding and cleaned up that code. A fairly
5146 important one was the impossibility to access the global namespace
5151 important one was the impossibility to access the global namespace
5147 through the embedded IPython (only local variables were visible).
5152 through the embedded IPython (only local variables were visible).
5148
5153
5149 2003-01-14 Fernando Perez <fperez@colorado.edu>
5154 2003-01-14 Fernando Perez <fperez@colorado.edu>
5150
5155
5151 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
5156 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
5152 auto-calling to be a bit more conservative. Now it doesn't get
5157 auto-calling to be a bit more conservative. Now it doesn't get
5153 triggered if any of '!=()<>' are in the rest of the input line, to
5158 triggered if any of '!=()<>' are in the rest of the input line, to
5154 allow comparing callables. Thanks to Alex for the heads up.
5159 allow comparing callables. Thanks to Alex for the heads up.
5155
5160
5156 2003-01-07 Fernando Perez <fperez@colorado.edu>
5161 2003-01-07 Fernando Perez <fperez@colorado.edu>
5157
5162
5158 * IPython/genutils.py (page): fixed estimation of the number of
5163 * IPython/genutils.py (page): fixed estimation of the number of
5159 lines in a string to be paged to simply count newlines. This
5164 lines in a string to be paged to simply count newlines. This
5160 prevents over-guessing due to embedded escape sequences. A better
5165 prevents over-guessing due to embedded escape sequences. A better
5161 long-term solution would involve stripping out the control chars
5166 long-term solution would involve stripping out the control chars
5162 for the count, but it's potentially so expensive I just don't
5167 for the count, but it's potentially so expensive I just don't
5163 think it's worth doing.
5168 think it's worth doing.
5164
5169
5165 2002-12-19 *** Released version 0.2.14pre50
5170 2002-12-19 *** Released version 0.2.14pre50
5166
5171
5167 2002-12-19 Fernando Perez <fperez@colorado.edu>
5172 2002-12-19 Fernando Perez <fperez@colorado.edu>
5168
5173
5169 * tools/release (version): Changed release scripts to inform
5174 * tools/release (version): Changed release scripts to inform
5170 Andrea and build a NEWS file with a list of recent changes.
5175 Andrea and build a NEWS file with a list of recent changes.
5171
5176
5172 * IPython/ColorANSI.py (__all__): changed terminal detection
5177 * IPython/ColorANSI.py (__all__): changed terminal detection
5173 code. Seems to work better for xterms without breaking
5178 code. Seems to work better for xterms without breaking
5174 konsole. Will need more testing to determine if WinXP and Mac OSX
5179 konsole. Will need more testing to determine if WinXP and Mac OSX
5175 also work ok.
5180 also work ok.
5176
5181
5177 2002-12-18 *** Released version 0.2.14pre49
5182 2002-12-18 *** Released version 0.2.14pre49
5178
5183
5179 2002-12-18 Fernando Perez <fperez@colorado.edu>
5184 2002-12-18 Fernando Perez <fperez@colorado.edu>
5180
5185
5181 * Docs: added new info about Mac OSX, from Andrea.
5186 * Docs: added new info about Mac OSX, from Andrea.
5182
5187
5183 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5188 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5184 allow direct plotting of python strings whose format is the same
5189 allow direct plotting of python strings whose format is the same
5185 of gnuplot data files.
5190 of gnuplot data files.
5186
5191
5187 2002-12-16 Fernando Perez <fperez@colorado.edu>
5192 2002-12-16 Fernando Perez <fperez@colorado.edu>
5188
5193
5189 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5194 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5190 value of exit question to be acknowledged.
5195 value of exit question to be acknowledged.
5191
5196
5192 2002-12-03 Fernando Perez <fperez@colorado.edu>
5197 2002-12-03 Fernando Perez <fperez@colorado.edu>
5193
5198
5194 * IPython/ipmaker.py: removed generators, which had been added
5199 * IPython/ipmaker.py: removed generators, which had been added
5195 by mistake in an earlier debugging run. This was causing trouble
5200 by mistake in an earlier debugging run. This was causing trouble
5196 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5201 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5197 for pointing this out.
5202 for pointing this out.
5198
5203
5199 2002-11-17 Fernando Perez <fperez@colorado.edu>
5204 2002-11-17 Fernando Perez <fperez@colorado.edu>
5200
5205
5201 * Manual: updated the Gnuplot section.
5206 * Manual: updated the Gnuplot section.
5202
5207
5203 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5208 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5204 a much better split of what goes in Runtime and what goes in
5209 a much better split of what goes in Runtime and what goes in
5205 Interactive.
5210 Interactive.
5206
5211
5207 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5212 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5208 being imported from iplib.
5213 being imported from iplib.
5209
5214
5210 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5215 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5211 for command-passing. Now the global Gnuplot instance is called
5216 for command-passing. Now the global Gnuplot instance is called
5212 'gp' instead of 'g', which was really a far too fragile and
5217 'gp' instead of 'g', which was really a far too fragile and
5213 common name.
5218 common name.
5214
5219
5215 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5220 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5216 bounding boxes generated by Gnuplot for square plots.
5221 bounding boxes generated by Gnuplot for square plots.
5217
5222
5218 * IPython/genutils.py (popkey): new function added. I should
5223 * IPython/genutils.py (popkey): new function added. I should
5219 suggest this on c.l.py as a dict method, it seems useful.
5224 suggest this on c.l.py as a dict method, it seems useful.
5220
5225
5221 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5226 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5222 to transparently handle PostScript generation. MUCH better than
5227 to transparently handle PostScript generation. MUCH better than
5223 the previous plot_eps/replot_eps (which I removed now). The code
5228 the previous plot_eps/replot_eps (which I removed now). The code
5224 is also fairly clean and well documented now (including
5229 is also fairly clean and well documented now (including
5225 docstrings).
5230 docstrings).
5226
5231
5227 2002-11-13 Fernando Perez <fperez@colorado.edu>
5232 2002-11-13 Fernando Perez <fperez@colorado.edu>
5228
5233
5229 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5234 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5230 (inconsistent with options).
5235 (inconsistent with options).
5231
5236
5232 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5237 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5233 manually disabled, I don't know why. Fixed it.
5238 manually disabled, I don't know why. Fixed it.
5234 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5239 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5235 eps output.
5240 eps output.
5236
5241
5237 2002-11-12 Fernando Perez <fperez@colorado.edu>
5242 2002-11-12 Fernando Perez <fperez@colorado.edu>
5238
5243
5239 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5244 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5240 don't propagate up to caller. Fixes crash reported by François
5245 don't propagate up to caller. Fixes crash reported by François
5241 Pinard.
5246 Pinard.
5242
5247
5243 2002-11-09 Fernando Perez <fperez@colorado.edu>
5248 2002-11-09 Fernando Perez <fperez@colorado.edu>
5244
5249
5245 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5250 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5246 history file for new users.
5251 history file for new users.
5247 (make_IPython): fixed bug where initial install would leave the
5252 (make_IPython): fixed bug where initial install would leave the
5248 user running in the .ipython dir.
5253 user running in the .ipython dir.
5249 (make_IPython): fixed bug where config dir .ipython would be
5254 (make_IPython): fixed bug where config dir .ipython would be
5250 created regardless of the given -ipythondir option. Thanks to Cory
5255 created regardless of the given -ipythondir option. Thanks to Cory
5251 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5256 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5252
5257
5253 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5258 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5254 type confirmations. Will need to use it in all of IPython's code
5259 type confirmations. Will need to use it in all of IPython's code
5255 consistently.
5260 consistently.
5256
5261
5257 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5262 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5258 context to print 31 lines instead of the default 5. This will make
5263 context to print 31 lines instead of the default 5. This will make
5259 the crash reports extremely detailed in case the problem is in
5264 the crash reports extremely detailed in case the problem is in
5260 libraries I don't have access to.
5265 libraries I don't have access to.
5261
5266
5262 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5267 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5263 line of defense' code to still crash, but giving users fair
5268 line of defense' code to still crash, but giving users fair
5264 warning. I don't want internal errors to go unreported: if there's
5269 warning. I don't want internal errors to go unreported: if there's
5265 an internal problem, IPython should crash and generate a full
5270 an internal problem, IPython should crash and generate a full
5266 report.
5271 report.
5267
5272
5268 2002-11-08 Fernando Perez <fperez@colorado.edu>
5273 2002-11-08 Fernando Perez <fperez@colorado.edu>
5269
5274
5270 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5275 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5271 otherwise uncaught exceptions which can appear if people set
5276 otherwise uncaught exceptions which can appear if people set
5272 sys.stdout to something badly broken. Thanks to a crash report
5277 sys.stdout to something badly broken. Thanks to a crash report
5273 from henni-AT-mail.brainbot.com.
5278 from henni-AT-mail.brainbot.com.
5274
5279
5275 2002-11-04 Fernando Perez <fperez@colorado.edu>
5280 2002-11-04 Fernando Perez <fperez@colorado.edu>
5276
5281
5277 * IPython/iplib.py (InteractiveShell.interact): added
5282 * IPython/iplib.py (InteractiveShell.interact): added
5278 __IPYTHON__active to the builtins. It's a flag which goes on when
5283 __IPYTHON__active to the builtins. It's a flag which goes on when
5279 the interaction starts and goes off again when it stops. This
5284 the interaction starts and goes off again when it stops. This
5280 allows embedding code to detect being inside IPython. Before this
5285 allows embedding code to detect being inside IPython. Before this
5281 was done via __IPYTHON__, but that only shows that an IPython
5286 was done via __IPYTHON__, but that only shows that an IPython
5282 instance has been created.
5287 instance has been created.
5283
5288
5284 * IPython/Magic.py (Magic.magic_env): I realized that in a
5289 * IPython/Magic.py (Magic.magic_env): I realized that in a
5285 UserDict, instance.data holds the data as a normal dict. So I
5290 UserDict, instance.data holds the data as a normal dict. So I
5286 modified @env to return os.environ.data instead of rebuilding a
5291 modified @env to return os.environ.data instead of rebuilding a
5287 dict by hand.
5292 dict by hand.
5288
5293
5289 2002-11-02 Fernando Perez <fperez@colorado.edu>
5294 2002-11-02 Fernando Perez <fperez@colorado.edu>
5290
5295
5291 * IPython/genutils.py (warn): changed so that level 1 prints no
5296 * IPython/genutils.py (warn): changed so that level 1 prints no
5292 header. Level 2 is now the default (with 'WARNING' header, as
5297 header. Level 2 is now the default (with 'WARNING' header, as
5293 before). I think I tracked all places where changes were needed in
5298 before). I think I tracked all places where changes were needed in
5294 IPython, but outside code using the old level numbering may have
5299 IPython, but outside code using the old level numbering may have
5295 broken.
5300 broken.
5296
5301
5297 * IPython/iplib.py (InteractiveShell.runcode): added this to
5302 * IPython/iplib.py (InteractiveShell.runcode): added this to
5298 handle the tracebacks in SystemExit traps correctly. The previous
5303 handle the tracebacks in SystemExit traps correctly. The previous
5299 code (through interact) was printing more of the stack than
5304 code (through interact) was printing more of the stack than
5300 necessary, showing IPython internal code to the user.
5305 necessary, showing IPython internal code to the user.
5301
5306
5302 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5307 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5303 default. Now that the default at the confirmation prompt is yes,
5308 default. Now that the default at the confirmation prompt is yes,
5304 it's not so intrusive. François' argument that ipython sessions
5309 it's not so intrusive. François' argument that ipython sessions
5305 tend to be complex enough not to lose them from an accidental C-d,
5310 tend to be complex enough not to lose them from an accidental C-d,
5306 is a valid one.
5311 is a valid one.
5307
5312
5308 * IPython/iplib.py (InteractiveShell.interact): added a
5313 * IPython/iplib.py (InteractiveShell.interact): added a
5309 showtraceback() call to the SystemExit trap, and modified the exit
5314 showtraceback() call to the SystemExit trap, and modified the exit
5310 confirmation to have yes as the default.
5315 confirmation to have yes as the default.
5311
5316
5312 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5317 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5313 this file. It's been gone from the code for a long time, this was
5318 this file. It's been gone from the code for a long time, this was
5314 simply leftover junk.
5319 simply leftover junk.
5315
5320
5316 2002-11-01 Fernando Perez <fperez@colorado.edu>
5321 2002-11-01 Fernando Perez <fperez@colorado.edu>
5317
5322
5318 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5323 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5319 added. If set, IPython now traps EOF and asks for
5324 added. If set, IPython now traps EOF and asks for
5320 confirmation. After a request by François Pinard.
5325 confirmation. After a request by François Pinard.
5321
5326
5322 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5327 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5323 of @abort, and with a new (better) mechanism for handling the
5328 of @abort, and with a new (better) mechanism for handling the
5324 exceptions.
5329 exceptions.
5325
5330
5326 2002-10-27 Fernando Perez <fperez@colorado.edu>
5331 2002-10-27 Fernando Perez <fperez@colorado.edu>
5327
5332
5328 * IPython/usage.py (__doc__): updated the --help information and
5333 * IPython/usage.py (__doc__): updated the --help information and
5329 the ipythonrc file to indicate that -log generates
5334 the ipythonrc file to indicate that -log generates
5330 ./ipython.log. Also fixed the corresponding info in @logstart.
5335 ./ipython.log. Also fixed the corresponding info in @logstart.
5331 This and several other fixes in the manuals thanks to reports by
5336 This and several other fixes in the manuals thanks to reports by
5332 François Pinard <pinard-AT-iro.umontreal.ca>.
5337 François Pinard <pinard-AT-iro.umontreal.ca>.
5333
5338
5334 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5339 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5335 refer to @logstart (instead of @log, which doesn't exist).
5340 refer to @logstart (instead of @log, which doesn't exist).
5336
5341
5337 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5342 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5338 AttributeError crash. Thanks to Christopher Armstrong
5343 AttributeError crash. Thanks to Christopher Armstrong
5339 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5344 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5340 introduced recently (in 0.2.14pre37) with the fix to the eval
5345 introduced recently (in 0.2.14pre37) with the fix to the eval
5341 problem mentioned below.
5346 problem mentioned below.
5342
5347
5343 2002-10-17 Fernando Perez <fperez@colorado.edu>
5348 2002-10-17 Fernando Perez <fperez@colorado.edu>
5344
5349
5345 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5350 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5346 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5351 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5347
5352
5348 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5353 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5349 this function to fix a problem reported by Alex Schmolck. He saw
5354 this function to fix a problem reported by Alex Schmolck. He saw
5350 it with list comprehensions and generators, which were getting
5355 it with list comprehensions and generators, which were getting
5351 called twice. The real problem was an 'eval' call in testing for
5356 called twice. The real problem was an 'eval' call in testing for
5352 automagic which was evaluating the input line silently.
5357 automagic which was evaluating the input line silently.
5353
5358
5354 This is a potentially very nasty bug, if the input has side
5359 This is a potentially very nasty bug, if the input has side
5355 effects which must not be repeated. The code is much cleaner now,
5360 effects which must not be repeated. The code is much cleaner now,
5356 without any blanket 'except' left and with a regexp test for
5361 without any blanket 'except' left and with a regexp test for
5357 actual function names.
5362 actual function names.
5358
5363
5359 But an eval remains, which I'm not fully comfortable with. I just
5364 But an eval remains, which I'm not fully comfortable with. I just
5360 don't know how to find out if an expression could be a callable in
5365 don't know how to find out if an expression could be a callable in
5361 the user's namespace without doing an eval on the string. However
5366 the user's namespace without doing an eval on the string. However
5362 that string is now much more strictly checked so that no code
5367 that string is now much more strictly checked so that no code
5363 slips by, so the eval should only happen for things that can
5368 slips by, so the eval should only happen for things that can
5364 really be only function/method names.
5369 really be only function/method names.
5365
5370
5366 2002-10-15 Fernando Perez <fperez@colorado.edu>
5371 2002-10-15 Fernando Perez <fperez@colorado.edu>
5367
5372
5368 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5373 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5369 OSX information to main manual, removed README_Mac_OSX file from
5374 OSX information to main manual, removed README_Mac_OSX file from
5370 distribution. Also updated credits for recent additions.
5375 distribution. Also updated credits for recent additions.
5371
5376
5372 2002-10-10 Fernando Perez <fperez@colorado.edu>
5377 2002-10-10 Fernando Perez <fperez@colorado.edu>
5373
5378
5374 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5379 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5375 terminal-related issues. Many thanks to Andrea Riciputi
5380 terminal-related issues. Many thanks to Andrea Riciputi
5376 <andrea.riciputi-AT-libero.it> for writing it.
5381 <andrea.riciputi-AT-libero.it> for writing it.
5377
5382
5378 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5383 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5379 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5384 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5380
5385
5381 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5386 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5382 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5387 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5383 <syver-en-AT-online.no> who both submitted patches for this problem.
5388 <syver-en-AT-online.no> who both submitted patches for this problem.
5384
5389
5385 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5390 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5386 global embedding to make sure that things don't overwrite user
5391 global embedding to make sure that things don't overwrite user
5387 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5392 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5388
5393
5389 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5394 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5390 compatibility. Thanks to Hayden Callow
5395 compatibility. Thanks to Hayden Callow
5391 <h.callow-AT-elec.canterbury.ac.nz>
5396 <h.callow-AT-elec.canterbury.ac.nz>
5392
5397
5393 2002-10-04 Fernando Perez <fperez@colorado.edu>
5398 2002-10-04 Fernando Perez <fperez@colorado.edu>
5394
5399
5395 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5400 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5396 Gnuplot.File objects.
5401 Gnuplot.File objects.
5397
5402
5398 2002-07-23 Fernando Perez <fperez@colorado.edu>
5403 2002-07-23 Fernando Perez <fperez@colorado.edu>
5399
5404
5400 * IPython/genutils.py (timing): Added timings() and timing() for
5405 * IPython/genutils.py (timing): Added timings() and timing() for
5401 quick access to the most commonly needed data, the execution
5406 quick access to the most commonly needed data, the execution
5402 times. Old timing() renamed to timings_out().
5407 times. Old timing() renamed to timings_out().
5403
5408
5404 2002-07-18 Fernando Perez <fperez@colorado.edu>
5409 2002-07-18 Fernando Perez <fperez@colorado.edu>
5405
5410
5406 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5411 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5407 bug with nested instances disrupting the parent's tab completion.
5412 bug with nested instances disrupting the parent's tab completion.
5408
5413
5409 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5414 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5410 all_completions code to begin the emacs integration.
5415 all_completions code to begin the emacs integration.
5411
5416
5412 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5417 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5413 argument to allow titling individual arrays when plotting.
5418 argument to allow titling individual arrays when plotting.
5414
5419
5415 2002-07-15 Fernando Perez <fperez@colorado.edu>
5420 2002-07-15 Fernando Perez <fperez@colorado.edu>
5416
5421
5417 * setup.py (make_shortcut): changed to retrieve the value of
5422 * setup.py (make_shortcut): changed to retrieve the value of
5418 'Program Files' directory from the registry (this value changes in
5423 'Program Files' directory from the registry (this value changes in
5419 non-english versions of Windows). Thanks to Thomas Fanslau
5424 non-english versions of Windows). Thanks to Thomas Fanslau
5420 <tfanslau-AT-gmx.de> for the report.
5425 <tfanslau-AT-gmx.de> for the report.
5421
5426
5422 2002-07-10 Fernando Perez <fperez@colorado.edu>
5427 2002-07-10 Fernando Perez <fperez@colorado.edu>
5423
5428
5424 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5429 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5425 a bug in pdb, which crashes if a line with only whitespace is
5430 a bug in pdb, which crashes if a line with only whitespace is
5426 entered. Bug report submitted to sourceforge.
5431 entered. Bug report submitted to sourceforge.
5427
5432
5428 2002-07-09 Fernando Perez <fperez@colorado.edu>
5433 2002-07-09 Fernando Perez <fperez@colorado.edu>
5429
5434
5430 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5435 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5431 reporting exceptions (it's a bug in inspect.py, I just set a
5436 reporting exceptions (it's a bug in inspect.py, I just set a
5432 workaround).
5437 workaround).
5433
5438
5434 2002-07-08 Fernando Perez <fperez@colorado.edu>
5439 2002-07-08 Fernando Perez <fperez@colorado.edu>
5435
5440
5436 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5441 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5437 __IPYTHON__ in __builtins__ to show up in user_ns.
5442 __IPYTHON__ in __builtins__ to show up in user_ns.
5438
5443
5439 2002-07-03 Fernando Perez <fperez@colorado.edu>
5444 2002-07-03 Fernando Perez <fperez@colorado.edu>
5440
5445
5441 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5446 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5442 name from @gp_set_instance to @gp_set_default.
5447 name from @gp_set_instance to @gp_set_default.
5443
5448
5444 * IPython/ipmaker.py (make_IPython): default editor value set to
5449 * IPython/ipmaker.py (make_IPython): default editor value set to
5445 '0' (a string), to match the rc file. Otherwise will crash when
5450 '0' (a string), to match the rc file. Otherwise will crash when
5446 .strip() is called on it.
5451 .strip() is called on it.
5447
5452
5448
5453
5449 2002-06-28 Fernando Perez <fperez@colorado.edu>
5454 2002-06-28 Fernando Perez <fperez@colorado.edu>
5450
5455
5451 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5456 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5452 of files in current directory when a file is executed via
5457 of files in current directory when a file is executed via
5453 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5458 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5454
5459
5455 * setup.py (manfiles): fix for rpm builds, submitted by RA
5460 * setup.py (manfiles): fix for rpm builds, submitted by RA
5456 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5461 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5457
5462
5458 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5463 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5459 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5464 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5460 string!). A. Schmolck caught this one.
5465 string!). A. Schmolck caught this one.
5461
5466
5462 2002-06-27 Fernando Perez <fperez@colorado.edu>
5467 2002-06-27 Fernando Perez <fperez@colorado.edu>
5463
5468
5464 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5469 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5465 defined files at the cmd line. __name__ wasn't being set to
5470 defined files at the cmd line. __name__ wasn't being set to
5466 __main__.
5471 __main__.
5467
5472
5468 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5473 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5469 regular lists and tuples besides Numeric arrays.
5474 regular lists and tuples besides Numeric arrays.
5470
5475
5471 * IPython/Prompts.py (CachedOutput.__call__): Added output
5476 * IPython/Prompts.py (CachedOutput.__call__): Added output
5472 supression for input ending with ';'. Similar to Mathematica and
5477 supression for input ending with ';'. Similar to Mathematica and
5473 Matlab. The _* vars and Out[] list are still updated, just like
5478 Matlab. The _* vars and Out[] list are still updated, just like
5474 Mathematica behaves.
5479 Mathematica behaves.
5475
5480
5476 2002-06-25 Fernando Perez <fperez@colorado.edu>
5481 2002-06-25 Fernando Perez <fperez@colorado.edu>
5477
5482
5478 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5483 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5479 .ini extensions for profiels under Windows.
5484 .ini extensions for profiels under Windows.
5480
5485
5481 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5486 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5482 string form. Fix contributed by Alexander Schmolck
5487 string form. Fix contributed by Alexander Schmolck
5483 <a.schmolck-AT-gmx.net>
5488 <a.schmolck-AT-gmx.net>
5484
5489
5485 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5490 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5486 pre-configured Gnuplot instance.
5491 pre-configured Gnuplot instance.
5487
5492
5488 2002-06-21 Fernando Perez <fperez@colorado.edu>
5493 2002-06-21 Fernando Perez <fperez@colorado.edu>
5489
5494
5490 * IPython/numutils.py (exp_safe): new function, works around the
5495 * IPython/numutils.py (exp_safe): new function, works around the
5491 underflow problems in Numeric.
5496 underflow problems in Numeric.
5492 (log2): New fn. Safe log in base 2: returns exact integer answer
5497 (log2): New fn. Safe log in base 2: returns exact integer answer
5493 for exact integer powers of 2.
5498 for exact integer powers of 2.
5494
5499
5495 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5500 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5496 properly.
5501 properly.
5497
5502
5498 2002-06-20 Fernando Perez <fperez@colorado.edu>
5503 2002-06-20 Fernando Perez <fperez@colorado.edu>
5499
5504
5500 * IPython/genutils.py (timing): new function like
5505 * IPython/genutils.py (timing): new function like
5501 Mathematica's. Similar to time_test, but returns more info.
5506 Mathematica's. Similar to time_test, but returns more info.
5502
5507
5503 2002-06-18 Fernando Perez <fperez@colorado.edu>
5508 2002-06-18 Fernando Perez <fperez@colorado.edu>
5504
5509
5505 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5510 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5506 according to Mike Heeter's suggestions.
5511 according to Mike Heeter's suggestions.
5507
5512
5508 2002-06-16 Fernando Perez <fperez@colorado.edu>
5513 2002-06-16 Fernando Perez <fperez@colorado.edu>
5509
5514
5510 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5515 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5511 system. GnuplotMagic is gone as a user-directory option. New files
5516 system. GnuplotMagic is gone as a user-directory option. New files
5512 make it easier to use all the gnuplot stuff both from external
5517 make it easier to use all the gnuplot stuff both from external
5513 programs as well as from IPython. Had to rewrite part of
5518 programs as well as from IPython. Had to rewrite part of
5514 hardcopy() b/c of a strange bug: often the ps files simply don't
5519 hardcopy() b/c of a strange bug: often the ps files simply don't
5515 get created, and require a repeat of the command (often several
5520 get created, and require a repeat of the command (often several
5516 times).
5521 times).
5517
5522
5518 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5523 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5519 resolve output channel at call time, so that if sys.stderr has
5524 resolve output channel at call time, so that if sys.stderr has
5520 been redirected by user this gets honored.
5525 been redirected by user this gets honored.
5521
5526
5522 2002-06-13 Fernando Perez <fperez@colorado.edu>
5527 2002-06-13 Fernando Perez <fperez@colorado.edu>
5523
5528
5524 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5529 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5525 IPShell. Kept a copy with the old names to avoid breaking people's
5530 IPShell. Kept a copy with the old names to avoid breaking people's
5526 embedded code.
5531 embedded code.
5527
5532
5528 * IPython/ipython: simplified it to the bare minimum after
5533 * IPython/ipython: simplified it to the bare minimum after
5529 Holger's suggestions. Added info about how to use it in
5534 Holger's suggestions. Added info about how to use it in
5530 PYTHONSTARTUP.
5535 PYTHONSTARTUP.
5531
5536
5532 * IPython/Shell.py (IPythonShell): changed the options passing
5537 * IPython/Shell.py (IPythonShell): changed the options passing
5533 from a string with funky %s replacements to a straight list. Maybe
5538 from a string with funky %s replacements to a straight list. Maybe
5534 a bit more typing, but it follows sys.argv conventions, so there's
5539 a bit more typing, but it follows sys.argv conventions, so there's
5535 less special-casing to remember.
5540 less special-casing to remember.
5536
5541
5537 2002-06-12 Fernando Perez <fperez@colorado.edu>
5542 2002-06-12 Fernando Perez <fperez@colorado.edu>
5538
5543
5539 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5544 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5540 command. Thanks to a suggestion by Mike Heeter.
5545 command. Thanks to a suggestion by Mike Heeter.
5541 (Magic.magic_pfile): added behavior to look at filenames if given
5546 (Magic.magic_pfile): added behavior to look at filenames if given
5542 arg is not a defined object.
5547 arg is not a defined object.
5543 (Magic.magic_save): New @save function to save code snippets. Also
5548 (Magic.magic_save): New @save function to save code snippets. Also
5544 a Mike Heeter idea.
5549 a Mike Heeter idea.
5545
5550
5546 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5551 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5547 plot() and replot(). Much more convenient now, especially for
5552 plot() and replot(). Much more convenient now, especially for
5548 interactive use.
5553 interactive use.
5549
5554
5550 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5555 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5551 filenames.
5556 filenames.
5552
5557
5553 2002-06-02 Fernando Perez <fperez@colorado.edu>
5558 2002-06-02 Fernando Perez <fperez@colorado.edu>
5554
5559
5555 * IPython/Struct.py (Struct.__init__): modified to admit
5560 * IPython/Struct.py (Struct.__init__): modified to admit
5556 initialization via another struct.
5561 initialization via another struct.
5557
5562
5558 * IPython/genutils.py (SystemExec.__init__): New stateful
5563 * IPython/genutils.py (SystemExec.__init__): New stateful
5559 interface to xsys and bq. Useful for writing system scripts.
5564 interface to xsys and bq. Useful for writing system scripts.
5560
5565
5561 2002-05-30 Fernando Perez <fperez@colorado.edu>
5566 2002-05-30 Fernando Perez <fperez@colorado.edu>
5562
5567
5563 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5568 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5564 documents. This will make the user download smaller (it's getting
5569 documents. This will make the user download smaller (it's getting
5565 too big).
5570 too big).
5566
5571
5567 2002-05-29 Fernando Perez <fperez@colorado.edu>
5572 2002-05-29 Fernando Perez <fperez@colorado.edu>
5568
5573
5569 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5574 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5570 fix problems with shelve and pickle. Seems to work, but I don't
5575 fix problems with shelve and pickle. Seems to work, but I don't
5571 know if corner cases break it. Thanks to Mike Heeter
5576 know if corner cases break it. Thanks to Mike Heeter
5572 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5577 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5573
5578
5574 2002-05-24 Fernando Perez <fperez@colorado.edu>
5579 2002-05-24 Fernando Perez <fperez@colorado.edu>
5575
5580
5576 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5581 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5577 macros having broken.
5582 macros having broken.
5578
5583
5579 2002-05-21 Fernando Perez <fperez@colorado.edu>
5584 2002-05-21 Fernando Perez <fperez@colorado.edu>
5580
5585
5581 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5586 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5582 introduced logging bug: all history before logging started was
5587 introduced logging bug: all history before logging started was
5583 being written one character per line! This came from the redesign
5588 being written one character per line! This came from the redesign
5584 of the input history as a special list which slices to strings,
5589 of the input history as a special list which slices to strings,
5585 not to lists.
5590 not to lists.
5586
5591
5587 2002-05-20 Fernando Perez <fperez@colorado.edu>
5592 2002-05-20 Fernando Perez <fperez@colorado.edu>
5588
5593
5589 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5594 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5590 be an attribute of all classes in this module. The design of these
5595 be an attribute of all classes in this module. The design of these
5591 classes needs some serious overhauling.
5596 classes needs some serious overhauling.
5592
5597
5593 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5598 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5594 which was ignoring '_' in option names.
5599 which was ignoring '_' in option names.
5595
5600
5596 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5601 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5597 'Verbose_novars' to 'Context' and made it the new default. It's a
5602 'Verbose_novars' to 'Context' and made it the new default. It's a
5598 bit more readable and also safer than verbose.
5603 bit more readable and also safer than verbose.
5599
5604
5600 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5605 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5601 triple-quoted strings.
5606 triple-quoted strings.
5602
5607
5603 * IPython/OInspect.py (__all__): new module exposing the object
5608 * IPython/OInspect.py (__all__): new module exposing the object
5604 introspection facilities. Now the corresponding magics are dummy
5609 introspection facilities. Now the corresponding magics are dummy
5605 wrappers around this. Having this module will make it much easier
5610 wrappers around this. Having this module will make it much easier
5606 to put these functions into our modified pdb.
5611 to put these functions into our modified pdb.
5607 This new object inspector system uses the new colorizing module,
5612 This new object inspector system uses the new colorizing module,
5608 so source code and other things are nicely syntax highlighted.
5613 so source code and other things are nicely syntax highlighted.
5609
5614
5610 2002-05-18 Fernando Perez <fperez@colorado.edu>
5615 2002-05-18 Fernando Perez <fperez@colorado.edu>
5611
5616
5612 * IPython/ColorANSI.py: Split the coloring tools into a separate
5617 * IPython/ColorANSI.py: Split the coloring tools into a separate
5613 module so I can use them in other code easier (they were part of
5618 module so I can use them in other code easier (they were part of
5614 ultraTB).
5619 ultraTB).
5615
5620
5616 2002-05-17 Fernando Perez <fperez@colorado.edu>
5621 2002-05-17 Fernando Perez <fperez@colorado.edu>
5617
5622
5618 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5623 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5619 fixed it to set the global 'g' also to the called instance, as
5624 fixed it to set the global 'g' also to the called instance, as
5620 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5625 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5621 user's 'g' variables).
5626 user's 'g' variables).
5622
5627
5623 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5628 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5624 global variables (aliases to _ih,_oh) so that users which expect
5629 global variables (aliases to _ih,_oh) so that users which expect
5625 In[5] or Out[7] to work aren't unpleasantly surprised.
5630 In[5] or Out[7] to work aren't unpleasantly surprised.
5626 (InputList.__getslice__): new class to allow executing slices of
5631 (InputList.__getslice__): new class to allow executing slices of
5627 input history directly. Very simple class, complements the use of
5632 input history directly. Very simple class, complements the use of
5628 macros.
5633 macros.
5629
5634
5630 2002-05-16 Fernando Perez <fperez@colorado.edu>
5635 2002-05-16 Fernando Perez <fperez@colorado.edu>
5631
5636
5632 * setup.py (docdirbase): make doc directory be just doc/IPython
5637 * setup.py (docdirbase): make doc directory be just doc/IPython
5633 without version numbers, it will reduce clutter for users.
5638 without version numbers, it will reduce clutter for users.
5634
5639
5635 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5640 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5636 execfile call to prevent possible memory leak. See for details:
5641 execfile call to prevent possible memory leak. See for details:
5637 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5642 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5638
5643
5639 2002-05-15 Fernando Perez <fperez@colorado.edu>
5644 2002-05-15 Fernando Perez <fperez@colorado.edu>
5640
5645
5641 * IPython/Magic.py (Magic.magic_psource): made the object
5646 * IPython/Magic.py (Magic.magic_psource): made the object
5642 introspection names be more standard: pdoc, pdef, pfile and
5647 introspection names be more standard: pdoc, pdef, pfile and
5643 psource. They all print/page their output, and it makes
5648 psource. They all print/page their output, and it makes
5644 remembering them easier. Kept old names for compatibility as
5649 remembering them easier. Kept old names for compatibility as
5645 aliases.
5650 aliases.
5646
5651
5647 2002-05-14 Fernando Perez <fperez@colorado.edu>
5652 2002-05-14 Fernando Perez <fperez@colorado.edu>
5648
5653
5649 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5654 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5650 what the mouse problem was. The trick is to use gnuplot with temp
5655 what the mouse problem was. The trick is to use gnuplot with temp
5651 files and NOT with pipes (for data communication), because having
5656 files and NOT with pipes (for data communication), because having
5652 both pipes and the mouse on is bad news.
5657 both pipes and the mouse on is bad news.
5653
5658
5654 2002-05-13 Fernando Perez <fperez@colorado.edu>
5659 2002-05-13 Fernando Perez <fperez@colorado.edu>
5655
5660
5656 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5661 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5657 bug. Information would be reported about builtins even when
5662 bug. Information would be reported about builtins even when
5658 user-defined functions overrode them.
5663 user-defined functions overrode them.
5659
5664
5660 2002-05-11 Fernando Perez <fperez@colorado.edu>
5665 2002-05-11 Fernando Perez <fperez@colorado.edu>
5661
5666
5662 * IPython/__init__.py (__all__): removed FlexCompleter from
5667 * IPython/__init__.py (__all__): removed FlexCompleter from
5663 __all__ so that things don't fail in platforms without readline.
5668 __all__ so that things don't fail in platforms without readline.
5664
5669
5665 2002-05-10 Fernando Perez <fperez@colorado.edu>
5670 2002-05-10 Fernando Perez <fperez@colorado.edu>
5666
5671
5667 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5672 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5668 it requires Numeric, effectively making Numeric a dependency for
5673 it requires Numeric, effectively making Numeric a dependency for
5669 IPython.
5674 IPython.
5670
5675
5671 * Released 0.2.13
5676 * Released 0.2.13
5672
5677
5673 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5678 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5674 profiler interface. Now all the major options from the profiler
5679 profiler interface. Now all the major options from the profiler
5675 module are directly supported in IPython, both for single
5680 module are directly supported in IPython, both for single
5676 expressions (@prun) and for full programs (@run -p).
5681 expressions (@prun) and for full programs (@run -p).
5677
5682
5678 2002-05-09 Fernando Perez <fperez@colorado.edu>
5683 2002-05-09 Fernando Perez <fperez@colorado.edu>
5679
5684
5680 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5685 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5681 magic properly formatted for screen.
5686 magic properly formatted for screen.
5682
5687
5683 * setup.py (make_shortcut): Changed things to put pdf version in
5688 * setup.py (make_shortcut): Changed things to put pdf version in
5684 doc/ instead of doc/manual (had to change lyxport a bit).
5689 doc/ instead of doc/manual (had to change lyxport a bit).
5685
5690
5686 * IPython/Magic.py (Profile.string_stats): made profile runs go
5691 * IPython/Magic.py (Profile.string_stats): made profile runs go
5687 through pager (they are long and a pager allows searching, saving,
5692 through pager (they are long and a pager allows searching, saving,
5688 etc.)
5693 etc.)
5689
5694
5690 2002-05-08 Fernando Perez <fperez@colorado.edu>
5695 2002-05-08 Fernando Perez <fperez@colorado.edu>
5691
5696
5692 * Released 0.2.12
5697 * Released 0.2.12
5693
5698
5694 2002-05-06 Fernando Perez <fperez@colorado.edu>
5699 2002-05-06 Fernando Perez <fperez@colorado.edu>
5695
5700
5696 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5701 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5697 introduced); 'hist n1 n2' was broken.
5702 introduced); 'hist n1 n2' was broken.
5698 (Magic.magic_pdb): added optional on/off arguments to @pdb
5703 (Magic.magic_pdb): added optional on/off arguments to @pdb
5699 (Magic.magic_run): added option -i to @run, which executes code in
5704 (Magic.magic_run): added option -i to @run, which executes code in
5700 the IPython namespace instead of a clean one. Also added @irun as
5705 the IPython namespace instead of a clean one. Also added @irun as
5701 an alias to @run -i.
5706 an alias to @run -i.
5702
5707
5703 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5708 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5704 fixed (it didn't really do anything, the namespaces were wrong).
5709 fixed (it didn't really do anything, the namespaces were wrong).
5705
5710
5706 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5711 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5707
5712
5708 * IPython/__init__.py (__all__): Fixed package namespace, now
5713 * IPython/__init__.py (__all__): Fixed package namespace, now
5709 'import IPython' does give access to IPython.<all> as
5714 'import IPython' does give access to IPython.<all> as
5710 expected. Also renamed __release__ to Release.
5715 expected. Also renamed __release__ to Release.
5711
5716
5712 * IPython/Debugger.py (__license__): created new Pdb class which
5717 * IPython/Debugger.py (__license__): created new Pdb class which
5713 functions like a drop-in for the normal pdb.Pdb but does NOT
5718 functions like a drop-in for the normal pdb.Pdb but does NOT
5714 import readline by default. This way it doesn't muck up IPython's
5719 import readline by default. This way it doesn't muck up IPython's
5715 readline handling, and now tab-completion finally works in the
5720 readline handling, and now tab-completion finally works in the
5716 debugger -- sort of. It completes things globally visible, but the
5721 debugger -- sort of. It completes things globally visible, but the
5717 completer doesn't track the stack as pdb walks it. That's a bit
5722 completer doesn't track the stack as pdb walks it. That's a bit
5718 tricky, and I'll have to implement it later.
5723 tricky, and I'll have to implement it later.
5719
5724
5720 2002-05-05 Fernando Perez <fperez@colorado.edu>
5725 2002-05-05 Fernando Perez <fperez@colorado.edu>
5721
5726
5722 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5727 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5723 magic docstrings when printed via ? (explicit \'s were being
5728 magic docstrings when printed via ? (explicit \'s were being
5724 printed).
5729 printed).
5725
5730
5726 * IPython/ipmaker.py (make_IPython): fixed namespace
5731 * IPython/ipmaker.py (make_IPython): fixed namespace
5727 identification bug. Now variables loaded via logs or command-line
5732 identification bug. Now variables loaded via logs or command-line
5728 files are recognized in the interactive namespace by @who.
5733 files are recognized in the interactive namespace by @who.
5729
5734
5730 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5735 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5731 log replay system stemming from the string form of Structs.
5736 log replay system stemming from the string form of Structs.
5732
5737
5733 * IPython/Magic.py (Macro.__init__): improved macros to properly
5738 * IPython/Magic.py (Macro.__init__): improved macros to properly
5734 handle magic commands in them.
5739 handle magic commands in them.
5735 (Magic.magic_logstart): usernames are now expanded so 'logstart
5740 (Magic.magic_logstart): usernames are now expanded so 'logstart
5736 ~/mylog' now works.
5741 ~/mylog' now works.
5737
5742
5738 * IPython/iplib.py (complete): fixed bug where paths starting with
5743 * IPython/iplib.py (complete): fixed bug where paths starting with
5739 '/' would be completed as magic names.
5744 '/' would be completed as magic names.
5740
5745
5741 2002-05-04 Fernando Perez <fperez@colorado.edu>
5746 2002-05-04 Fernando Perez <fperez@colorado.edu>
5742
5747
5743 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5748 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5744 allow running full programs under the profiler's control.
5749 allow running full programs under the profiler's control.
5745
5750
5746 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5751 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5747 mode to report exceptions verbosely but without formatting
5752 mode to report exceptions verbosely but without formatting
5748 variables. This addresses the issue of ipython 'freezing' (it's
5753 variables. This addresses the issue of ipython 'freezing' (it's
5749 not frozen, but caught in an expensive formatting loop) when huge
5754 not frozen, but caught in an expensive formatting loop) when huge
5750 variables are in the context of an exception.
5755 variables are in the context of an exception.
5751 (VerboseTB.text): Added '--->' markers at line where exception was
5756 (VerboseTB.text): Added '--->' markers at line where exception was
5752 triggered. Much clearer to read, especially in NoColor modes.
5757 triggered. Much clearer to read, especially in NoColor modes.
5753
5758
5754 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5759 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5755 implemented in reverse when changing to the new parse_options().
5760 implemented in reverse when changing to the new parse_options().
5756
5761
5757 2002-05-03 Fernando Perez <fperez@colorado.edu>
5762 2002-05-03 Fernando Perez <fperez@colorado.edu>
5758
5763
5759 * IPython/Magic.py (Magic.parse_options): new function so that
5764 * IPython/Magic.py (Magic.parse_options): new function so that
5760 magics can parse options easier.
5765 magics can parse options easier.
5761 (Magic.magic_prun): new function similar to profile.run(),
5766 (Magic.magic_prun): new function similar to profile.run(),
5762 suggested by Chris Hart.
5767 suggested by Chris Hart.
5763 (Magic.magic_cd): fixed behavior so that it only changes if
5768 (Magic.magic_cd): fixed behavior so that it only changes if
5764 directory actually is in history.
5769 directory actually is in history.
5765
5770
5766 * IPython/usage.py (__doc__): added information about potential
5771 * IPython/usage.py (__doc__): added information about potential
5767 slowness of Verbose exception mode when there are huge data
5772 slowness of Verbose exception mode when there are huge data
5768 structures to be formatted (thanks to Archie Paulson).
5773 structures to be formatted (thanks to Archie Paulson).
5769
5774
5770 * IPython/ipmaker.py (make_IPython): Changed default logging
5775 * IPython/ipmaker.py (make_IPython): Changed default logging
5771 (when simply called with -log) to use curr_dir/ipython.log in
5776 (when simply called with -log) to use curr_dir/ipython.log in
5772 rotate mode. Fixed crash which was occuring with -log before
5777 rotate mode. Fixed crash which was occuring with -log before
5773 (thanks to Jim Boyle).
5778 (thanks to Jim Boyle).
5774
5779
5775 2002-05-01 Fernando Perez <fperez@colorado.edu>
5780 2002-05-01 Fernando Perez <fperez@colorado.edu>
5776
5781
5777 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5782 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5778 was nasty -- though somewhat of a corner case).
5783 was nasty -- though somewhat of a corner case).
5779
5784
5780 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5785 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5781 text (was a bug).
5786 text (was a bug).
5782
5787
5783 2002-04-30 Fernando Perez <fperez@colorado.edu>
5788 2002-04-30 Fernando Perez <fperez@colorado.edu>
5784
5789
5785 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5790 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5786 a print after ^D or ^C from the user so that the In[] prompt
5791 a print after ^D or ^C from the user so that the In[] prompt
5787 doesn't over-run the gnuplot one.
5792 doesn't over-run the gnuplot one.
5788
5793
5789 2002-04-29 Fernando Perez <fperez@colorado.edu>
5794 2002-04-29 Fernando Perez <fperez@colorado.edu>
5790
5795
5791 * Released 0.2.10
5796 * Released 0.2.10
5792
5797
5793 * IPython/__release__.py (version): get date dynamically.
5798 * IPython/__release__.py (version): get date dynamically.
5794
5799
5795 * Misc. documentation updates thanks to Arnd's comments. Also ran
5800 * Misc. documentation updates thanks to Arnd's comments. Also ran
5796 a full spellcheck on the manual (hadn't been done in a while).
5801 a full spellcheck on the manual (hadn't been done in a while).
5797
5802
5798 2002-04-27 Fernando Perez <fperez@colorado.edu>
5803 2002-04-27 Fernando Perez <fperez@colorado.edu>
5799
5804
5800 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5805 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5801 starting a log in mid-session would reset the input history list.
5806 starting a log in mid-session would reset the input history list.
5802
5807
5803 2002-04-26 Fernando Perez <fperez@colorado.edu>
5808 2002-04-26 Fernando Perez <fperez@colorado.edu>
5804
5809
5805 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5810 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5806 all files were being included in an update. Now anything in
5811 all files were being included in an update. Now anything in
5807 UserConfig that matches [A-Za-z]*.py will go (this excludes
5812 UserConfig that matches [A-Za-z]*.py will go (this excludes
5808 __init__.py)
5813 __init__.py)
5809
5814
5810 2002-04-25 Fernando Perez <fperez@colorado.edu>
5815 2002-04-25 Fernando Perez <fperez@colorado.edu>
5811
5816
5812 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5817 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5813 to __builtins__ so that any form of embedded or imported code can
5818 to __builtins__ so that any form of embedded or imported code can
5814 test for being inside IPython.
5819 test for being inside IPython.
5815
5820
5816 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5821 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5817 changed to GnuplotMagic because it's now an importable module,
5822 changed to GnuplotMagic because it's now an importable module,
5818 this makes the name follow that of the standard Gnuplot module.
5823 this makes the name follow that of the standard Gnuplot module.
5819 GnuplotMagic can now be loaded at any time in mid-session.
5824 GnuplotMagic can now be loaded at any time in mid-session.
5820
5825
5821 2002-04-24 Fernando Perez <fperez@colorado.edu>
5826 2002-04-24 Fernando Perez <fperez@colorado.edu>
5822
5827
5823 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5828 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5824 the globals (IPython has its own namespace) and the
5829 the globals (IPython has its own namespace) and the
5825 PhysicalQuantity stuff is much better anyway.
5830 PhysicalQuantity stuff is much better anyway.
5826
5831
5827 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5832 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5828 embedding example to standard user directory for
5833 embedding example to standard user directory for
5829 distribution. Also put it in the manual.
5834 distribution. Also put it in the manual.
5830
5835
5831 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5836 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5832 instance as first argument (so it doesn't rely on some obscure
5837 instance as first argument (so it doesn't rely on some obscure
5833 hidden global).
5838 hidden global).
5834
5839
5835 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5840 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5836 delimiters. While it prevents ().TAB from working, it allows
5841 delimiters. While it prevents ().TAB from working, it allows
5837 completions in open (... expressions. This is by far a more common
5842 completions in open (... expressions. This is by far a more common
5838 case.
5843 case.
5839
5844
5840 2002-04-23 Fernando Perez <fperez@colorado.edu>
5845 2002-04-23 Fernando Perez <fperez@colorado.edu>
5841
5846
5842 * IPython/Extensions/InterpreterPasteInput.py: new
5847 * IPython/Extensions/InterpreterPasteInput.py: new
5843 syntax-processing module for pasting lines with >>> or ... at the
5848 syntax-processing module for pasting lines with >>> or ... at the
5844 start.
5849 start.
5845
5850
5846 * IPython/Extensions/PhysicalQ_Interactive.py
5851 * IPython/Extensions/PhysicalQ_Interactive.py
5847 (PhysicalQuantityInteractive.__int__): fixed to work with either
5852 (PhysicalQuantityInteractive.__int__): fixed to work with either
5848 Numeric or math.
5853 Numeric or math.
5849
5854
5850 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5855 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5851 provided profiles. Now we have:
5856 provided profiles. Now we have:
5852 -math -> math module as * and cmath with its own namespace.
5857 -math -> math module as * and cmath with its own namespace.
5853 -numeric -> Numeric as *, plus gnuplot & grace
5858 -numeric -> Numeric as *, plus gnuplot & grace
5854 -physics -> same as before
5859 -physics -> same as before
5855
5860
5856 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5861 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5857 user-defined magics wouldn't be found by @magic if they were
5862 user-defined magics wouldn't be found by @magic if they were
5858 defined as class methods. Also cleaned up the namespace search
5863 defined as class methods. Also cleaned up the namespace search
5859 logic and the string building (to use %s instead of many repeated
5864 logic and the string building (to use %s instead of many repeated
5860 string adds).
5865 string adds).
5861
5866
5862 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5867 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5863 of user-defined magics to operate with class methods (cleaner, in
5868 of user-defined magics to operate with class methods (cleaner, in
5864 line with the gnuplot code).
5869 line with the gnuplot code).
5865
5870
5866 2002-04-22 Fernando Perez <fperez@colorado.edu>
5871 2002-04-22 Fernando Perez <fperez@colorado.edu>
5867
5872
5868 * setup.py: updated dependency list so that manual is updated when
5873 * setup.py: updated dependency list so that manual is updated when
5869 all included files change.
5874 all included files change.
5870
5875
5871 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5876 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5872 the delimiter removal option (the fix is ugly right now).
5877 the delimiter removal option (the fix is ugly right now).
5873
5878
5874 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5879 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5875 all of the math profile (quicker loading, no conflict between
5880 all of the math profile (quicker loading, no conflict between
5876 g-9.8 and g-gnuplot).
5881 g-9.8 and g-gnuplot).
5877
5882
5878 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5883 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5879 name of post-mortem files to IPython_crash_report.txt.
5884 name of post-mortem files to IPython_crash_report.txt.
5880
5885
5881 * Cleanup/update of the docs. Added all the new readline info and
5886 * Cleanup/update of the docs. Added all the new readline info and
5882 formatted all lists as 'real lists'.
5887 formatted all lists as 'real lists'.
5883
5888
5884 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5889 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5885 tab-completion options, since the full readline parse_and_bind is
5890 tab-completion options, since the full readline parse_and_bind is
5886 now accessible.
5891 now accessible.
5887
5892
5888 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5893 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5889 handling of readline options. Now users can specify any string to
5894 handling of readline options. Now users can specify any string to
5890 be passed to parse_and_bind(), as well as the delimiters to be
5895 be passed to parse_and_bind(), as well as the delimiters to be
5891 removed.
5896 removed.
5892 (InteractiveShell.__init__): Added __name__ to the global
5897 (InteractiveShell.__init__): Added __name__ to the global
5893 namespace so that things like Itpl which rely on its existence
5898 namespace so that things like Itpl which rely on its existence
5894 don't crash.
5899 don't crash.
5895 (InteractiveShell._prefilter): Defined the default with a _ so
5900 (InteractiveShell._prefilter): Defined the default with a _ so
5896 that prefilter() is easier to override, while the default one
5901 that prefilter() is easier to override, while the default one
5897 remains available.
5902 remains available.
5898
5903
5899 2002-04-18 Fernando Perez <fperez@colorado.edu>
5904 2002-04-18 Fernando Perez <fperez@colorado.edu>
5900
5905
5901 * Added information about pdb in the docs.
5906 * Added information about pdb in the docs.
5902
5907
5903 2002-04-17 Fernando Perez <fperez@colorado.edu>
5908 2002-04-17 Fernando Perez <fperez@colorado.edu>
5904
5909
5905 * IPython/ipmaker.py (make_IPython): added rc_override option to
5910 * IPython/ipmaker.py (make_IPython): added rc_override option to
5906 allow passing config options at creation time which may override
5911 allow passing config options at creation time which may override
5907 anything set in the config files or command line. This is
5912 anything set in the config files or command line. This is
5908 particularly useful for configuring embedded instances.
5913 particularly useful for configuring embedded instances.
5909
5914
5910 2002-04-15 Fernando Perez <fperez@colorado.edu>
5915 2002-04-15 Fernando Perez <fperez@colorado.edu>
5911
5916
5912 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5917 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5913 crash embedded instances because of the input cache falling out of
5918 crash embedded instances because of the input cache falling out of
5914 sync with the output counter.
5919 sync with the output counter.
5915
5920
5916 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5921 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5917 mode which calls pdb after an uncaught exception in IPython itself.
5922 mode which calls pdb after an uncaught exception in IPython itself.
5918
5923
5919 2002-04-14 Fernando Perez <fperez@colorado.edu>
5924 2002-04-14 Fernando Perez <fperez@colorado.edu>
5920
5925
5921 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5926 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5922 readline, fix it back after each call.
5927 readline, fix it back after each call.
5923
5928
5924 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5929 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5925 method to force all access via __call__(), which guarantees that
5930 method to force all access via __call__(), which guarantees that
5926 traceback references are properly deleted.
5931 traceback references are properly deleted.
5927
5932
5928 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5933 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5929 improve printing when pprint is in use.
5934 improve printing when pprint is in use.
5930
5935
5931 2002-04-13 Fernando Perez <fperez@colorado.edu>
5936 2002-04-13 Fernando Perez <fperez@colorado.edu>
5932
5937
5933 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5938 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5934 exceptions aren't caught anymore. If the user triggers one, he
5939 exceptions aren't caught anymore. If the user triggers one, he
5935 should know why he's doing it and it should go all the way up,
5940 should know why he's doing it and it should go all the way up,
5936 just like any other exception. So now @abort will fully kill the
5941 just like any other exception. So now @abort will fully kill the
5937 embedded interpreter and the embedding code (unless that happens
5942 embedded interpreter and the embedding code (unless that happens
5938 to catch SystemExit).
5943 to catch SystemExit).
5939
5944
5940 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5945 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5941 and a debugger() method to invoke the interactive pdb debugger
5946 and a debugger() method to invoke the interactive pdb debugger
5942 after printing exception information. Also added the corresponding
5947 after printing exception information. Also added the corresponding
5943 -pdb option and @pdb magic to control this feature, and updated
5948 -pdb option and @pdb magic to control this feature, and updated
5944 the docs. After a suggestion from Christopher Hart
5949 the docs. After a suggestion from Christopher Hart
5945 (hart-AT-caltech.edu).
5950 (hart-AT-caltech.edu).
5946
5951
5947 2002-04-12 Fernando Perez <fperez@colorado.edu>
5952 2002-04-12 Fernando Perez <fperez@colorado.edu>
5948
5953
5949 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5954 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5950 the exception handlers defined by the user (not the CrashHandler)
5955 the exception handlers defined by the user (not the CrashHandler)
5951 so that user exceptions don't trigger an ipython bug report.
5956 so that user exceptions don't trigger an ipython bug report.
5952
5957
5953 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5958 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5954 configurable (it should have always been so).
5959 configurable (it should have always been so).
5955
5960
5956 2002-03-26 Fernando Perez <fperez@colorado.edu>
5961 2002-03-26 Fernando Perez <fperez@colorado.edu>
5957
5962
5958 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5963 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5959 and there to fix embedding namespace issues. This should all be
5964 and there to fix embedding namespace issues. This should all be
5960 done in a more elegant way.
5965 done in a more elegant way.
5961
5966
5962 2002-03-25 Fernando Perez <fperez@colorado.edu>
5967 2002-03-25 Fernando Perez <fperez@colorado.edu>
5963
5968
5964 * IPython/genutils.py (get_home_dir): Try to make it work under
5969 * IPython/genutils.py (get_home_dir): Try to make it work under
5965 win9x also.
5970 win9x also.
5966
5971
5967 2002-03-20 Fernando Perez <fperez@colorado.edu>
5972 2002-03-20 Fernando Perez <fperez@colorado.edu>
5968
5973
5969 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5974 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5970 sys.displayhook untouched upon __init__.
5975 sys.displayhook untouched upon __init__.
5971
5976
5972 2002-03-19 Fernando Perez <fperez@colorado.edu>
5977 2002-03-19 Fernando Perez <fperez@colorado.edu>
5973
5978
5974 * Released 0.2.9 (for embedding bug, basically).
5979 * Released 0.2.9 (for embedding bug, basically).
5975
5980
5976 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5981 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5977 exceptions so that enclosing shell's state can be restored.
5982 exceptions so that enclosing shell's state can be restored.
5978
5983
5979 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5984 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5980 naming conventions in the .ipython/ dir.
5985 naming conventions in the .ipython/ dir.
5981
5986
5982 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5987 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5983 from delimiters list so filenames with - in them get expanded.
5988 from delimiters list so filenames with - in them get expanded.
5984
5989
5985 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5990 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5986 sys.displayhook not being properly restored after an embedded call.
5991 sys.displayhook not being properly restored after an embedded call.
5987
5992
5988 2002-03-18 Fernando Perez <fperez@colorado.edu>
5993 2002-03-18 Fernando Perez <fperez@colorado.edu>
5989
5994
5990 * Released 0.2.8
5995 * Released 0.2.8
5991
5996
5992 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5997 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5993 some files weren't being included in a -upgrade.
5998 some files weren't being included in a -upgrade.
5994 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5999 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5995 on' so that the first tab completes.
6000 on' so that the first tab completes.
5996 (InteractiveShell.handle_magic): fixed bug with spaces around
6001 (InteractiveShell.handle_magic): fixed bug with spaces around
5997 quotes breaking many magic commands.
6002 quotes breaking many magic commands.
5998
6003
5999 * setup.py: added note about ignoring the syntax error messages at
6004 * setup.py: added note about ignoring the syntax error messages at
6000 installation.
6005 installation.
6001
6006
6002 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
6007 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
6003 streamlining the gnuplot interface, now there's only one magic @gp.
6008 streamlining the gnuplot interface, now there's only one magic @gp.
6004
6009
6005 2002-03-17 Fernando Perez <fperez@colorado.edu>
6010 2002-03-17 Fernando Perez <fperez@colorado.edu>
6006
6011
6007 * IPython/UserConfig/magic_gnuplot.py: new name for the
6012 * IPython/UserConfig/magic_gnuplot.py: new name for the
6008 example-magic_pm.py file. Much enhanced system, now with a shell
6013 example-magic_pm.py file. Much enhanced system, now with a shell
6009 for communicating directly with gnuplot, one command at a time.
6014 for communicating directly with gnuplot, one command at a time.
6010
6015
6011 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
6016 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
6012 setting __name__=='__main__'.
6017 setting __name__=='__main__'.
6013
6018
6014 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
6019 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
6015 mini-shell for accessing gnuplot from inside ipython. Should
6020 mini-shell for accessing gnuplot from inside ipython. Should
6016 extend it later for grace access too. Inspired by Arnd's
6021 extend it later for grace access too. Inspired by Arnd's
6017 suggestion.
6022 suggestion.
6018
6023
6019 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
6024 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
6020 calling magic functions with () in their arguments. Thanks to Arnd
6025 calling magic functions with () in their arguments. Thanks to Arnd
6021 Baecker for pointing this to me.
6026 Baecker for pointing this to me.
6022
6027
6023 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
6028 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
6024 infinitely for integer or complex arrays (only worked with floats).
6029 infinitely for integer or complex arrays (only worked with floats).
6025
6030
6026 2002-03-16 Fernando Perez <fperez@colorado.edu>
6031 2002-03-16 Fernando Perez <fperez@colorado.edu>
6027
6032
6028 * setup.py: Merged setup and setup_windows into a single script
6033 * setup.py: Merged setup and setup_windows into a single script
6029 which properly handles things for windows users.
6034 which properly handles things for windows users.
6030
6035
6031 2002-03-15 Fernando Perez <fperez@colorado.edu>
6036 2002-03-15 Fernando Perez <fperez@colorado.edu>
6032
6037
6033 * Big change to the manual: now the magics are all automatically
6038 * Big change to the manual: now the magics are all automatically
6034 documented. This information is generated from their docstrings
6039 documented. This information is generated from their docstrings
6035 and put in a latex file included by the manual lyx file. This way
6040 and put in a latex file included by the manual lyx file. This way
6036 we get always up to date information for the magics. The manual
6041 we get always up to date information for the magics. The manual
6037 now also has proper version information, also auto-synced.
6042 now also has proper version information, also auto-synced.
6038
6043
6039 For this to work, an undocumented --magic_docstrings option was added.
6044 For this to work, an undocumented --magic_docstrings option was added.
6040
6045
6041 2002-03-13 Fernando Perez <fperez@colorado.edu>
6046 2002-03-13 Fernando Perez <fperez@colorado.edu>
6042
6047
6043 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
6048 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
6044 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
6049 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
6045
6050
6046 2002-03-12 Fernando Perez <fperez@colorado.edu>
6051 2002-03-12 Fernando Perez <fperez@colorado.edu>
6047
6052
6048 * IPython/ultraTB.py (TermColors): changed color escapes again to
6053 * IPython/ultraTB.py (TermColors): changed color escapes again to
6049 fix the (old, reintroduced) line-wrapping bug. Basically, if
6054 fix the (old, reintroduced) line-wrapping bug. Basically, if
6050 \001..\002 aren't given in the color escapes, lines get wrapped
6055 \001..\002 aren't given in the color escapes, lines get wrapped
6051 weirdly. But giving those screws up old xterms and emacs terms. So
6056 weirdly. But giving those screws up old xterms and emacs terms. So
6052 I added some logic for emacs terms to be ok, but I can't identify old
6057 I added some logic for emacs terms to be ok, but I can't identify old
6053 xterms separately ($TERM=='xterm' for many terminals, like konsole).
6058 xterms separately ($TERM=='xterm' for many terminals, like konsole).
6054
6059
6055 2002-03-10 Fernando Perez <fperez@colorado.edu>
6060 2002-03-10 Fernando Perez <fperez@colorado.edu>
6056
6061
6057 * IPython/usage.py (__doc__): Various documentation cleanups and
6062 * IPython/usage.py (__doc__): Various documentation cleanups and
6058 updates, both in usage docstrings and in the manual.
6063 updates, both in usage docstrings and in the manual.
6059
6064
6060 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
6065 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
6061 handling of caching. Set minimum acceptabe value for having a
6066 handling of caching. Set minimum acceptabe value for having a
6062 cache at 20 values.
6067 cache at 20 values.
6063
6068
6064 * IPython/iplib.py (InteractiveShell.user_setup): moved the
6069 * IPython/iplib.py (InteractiveShell.user_setup): moved the
6065 install_first_time function to a method, renamed it and added an
6070 install_first_time function to a method, renamed it and added an
6066 'upgrade' mode. Now people can update their config directory with
6071 'upgrade' mode. Now people can update their config directory with
6067 a simple command line switch (-upgrade, also new).
6072 a simple command line switch (-upgrade, also new).
6068
6073
6069 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
6074 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
6070 @file (convenient for automagic users under Python >= 2.2).
6075 @file (convenient for automagic users under Python >= 2.2).
6071 Removed @files (it seemed more like a plural than an abbrev. of
6076 Removed @files (it seemed more like a plural than an abbrev. of
6072 'file show').
6077 'file show').
6073
6078
6074 * IPython/iplib.py (install_first_time): Fixed crash if there were
6079 * IPython/iplib.py (install_first_time): Fixed crash if there were
6075 backup files ('~') in .ipython/ install directory.
6080 backup files ('~') in .ipython/ install directory.
6076
6081
6077 * IPython/ipmaker.py (make_IPython): fixes for new prompt
6082 * IPython/ipmaker.py (make_IPython): fixes for new prompt
6078 system. Things look fine, but these changes are fairly
6083 system. Things look fine, but these changes are fairly
6079 intrusive. Test them for a few days.
6084 intrusive. Test them for a few days.
6080
6085
6081 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
6086 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
6082 the prompts system. Now all in/out prompt strings are user
6087 the prompts system. Now all in/out prompt strings are user
6083 controllable. This is particularly useful for embedding, as one
6088 controllable. This is particularly useful for embedding, as one
6084 can tag embedded instances with particular prompts.
6089 can tag embedded instances with particular prompts.
6085
6090
6086 Also removed global use of sys.ps1/2, which now allows nested
6091 Also removed global use of sys.ps1/2, which now allows nested
6087 embeddings without any problems. Added command-line options for
6092 embeddings without any problems. Added command-line options for
6088 the prompt strings.
6093 the prompt strings.
6089
6094
6090 2002-03-08 Fernando Perez <fperez@colorado.edu>
6095 2002-03-08 Fernando Perez <fperez@colorado.edu>
6091
6096
6092 * IPython/UserConfig/example-embed-short.py (ipshell): added
6097 * IPython/UserConfig/example-embed-short.py (ipshell): added
6093 example file with the bare minimum code for embedding.
6098 example file with the bare minimum code for embedding.
6094
6099
6095 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
6100 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
6096 functionality for the embeddable shell to be activated/deactivated
6101 functionality for the embeddable shell to be activated/deactivated
6097 either globally or at each call.
6102 either globally or at each call.
6098
6103
6099 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
6104 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
6100 rewriting the prompt with '--->' for auto-inputs with proper
6105 rewriting the prompt with '--->' for auto-inputs with proper
6101 coloring. Now the previous UGLY hack in handle_auto() is gone, and
6106 coloring. Now the previous UGLY hack in handle_auto() is gone, and
6102 this is handled by the prompts class itself, as it should.
6107 this is handled by the prompts class itself, as it should.
6103
6108
6104 2002-03-05 Fernando Perez <fperez@colorado.edu>
6109 2002-03-05 Fernando Perez <fperez@colorado.edu>
6105
6110
6106 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
6111 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
6107 @logstart to avoid name clashes with the math log function.
6112 @logstart to avoid name clashes with the math log function.
6108
6113
6109 * Big updates to X/Emacs section of the manual.
6114 * Big updates to X/Emacs section of the manual.
6110
6115
6111 * Removed ipython_emacs. Milan explained to me how to pass
6116 * Removed ipython_emacs. Milan explained to me how to pass
6112 arguments to ipython through Emacs. Some day I'm going to end up
6117 arguments to ipython through Emacs. Some day I'm going to end up
6113 learning some lisp...
6118 learning some lisp...
6114
6119
6115 2002-03-04 Fernando Perez <fperez@colorado.edu>
6120 2002-03-04 Fernando Perez <fperez@colorado.edu>
6116
6121
6117 * IPython/ipython_emacs: Created script to be used as the
6122 * IPython/ipython_emacs: Created script to be used as the
6118 py-python-command Emacs variable so we can pass IPython
6123 py-python-command Emacs variable so we can pass IPython
6119 parameters. I can't figure out how to tell Emacs directly to pass
6124 parameters. I can't figure out how to tell Emacs directly to pass
6120 parameters to IPython, so a dummy shell script will do it.
6125 parameters to IPython, so a dummy shell script will do it.
6121
6126
6122 Other enhancements made for things to work better under Emacs'
6127 Other enhancements made for things to work better under Emacs'
6123 various types of terminals. Many thanks to Milan Zamazal
6128 various types of terminals. Many thanks to Milan Zamazal
6124 <pdm-AT-zamazal.org> for all the suggestions and pointers.
6129 <pdm-AT-zamazal.org> for all the suggestions and pointers.
6125
6130
6126 2002-03-01 Fernando Perez <fperez@colorado.edu>
6131 2002-03-01 Fernando Perez <fperez@colorado.edu>
6127
6132
6128 * IPython/ipmaker.py (make_IPython): added a --readline! option so
6133 * IPython/ipmaker.py (make_IPython): added a --readline! option so
6129 that loading of readline is now optional. This gives better
6134 that loading of readline is now optional. This gives better
6130 control to emacs users.
6135 control to emacs users.
6131
6136
6132 * IPython/ultraTB.py (__date__): Modified color escape sequences
6137 * IPython/ultraTB.py (__date__): Modified color escape sequences
6133 and now things work fine under xterm and in Emacs' term buffers
6138 and now things work fine under xterm and in Emacs' term buffers
6134 (though not shell ones). Well, in emacs you get colors, but all
6139 (though not shell ones). Well, in emacs you get colors, but all
6135 seem to be 'light' colors (no difference between dark and light
6140 seem to be 'light' colors (no difference between dark and light
6136 ones). But the garbage chars are gone, and also in xterms. It
6141 ones). But the garbage chars are gone, and also in xterms. It
6137 seems that now I'm using 'cleaner' ansi sequences.
6142 seems that now I'm using 'cleaner' ansi sequences.
6138
6143
6139 2002-02-21 Fernando Perez <fperez@colorado.edu>
6144 2002-02-21 Fernando Perez <fperez@colorado.edu>
6140
6145
6141 * Released 0.2.7 (mainly to publish the scoping fix).
6146 * Released 0.2.7 (mainly to publish the scoping fix).
6142
6147
6143 * IPython/Logger.py (Logger.logstate): added. A corresponding
6148 * IPython/Logger.py (Logger.logstate): added. A corresponding
6144 @logstate magic was created.
6149 @logstate magic was created.
6145
6150
6146 * IPython/Magic.py: fixed nested scoping problem under Python
6151 * IPython/Magic.py: fixed nested scoping problem under Python
6147 2.1.x (automagic wasn't working).
6152 2.1.x (automagic wasn't working).
6148
6153
6149 2002-02-20 Fernando Perez <fperez@colorado.edu>
6154 2002-02-20 Fernando Perez <fperez@colorado.edu>
6150
6155
6151 * Released 0.2.6.
6156 * Released 0.2.6.
6152
6157
6153 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
6158 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
6154 option so that logs can come out without any headers at all.
6159 option so that logs can come out without any headers at all.
6155
6160
6156 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
6161 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
6157 SciPy.
6162 SciPy.
6158
6163
6159 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6164 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6160 that embedded IPython calls don't require vars() to be explicitly
6165 that embedded IPython calls don't require vars() to be explicitly
6161 passed. Now they are extracted from the caller's frame (code
6166 passed. Now they are extracted from the caller's frame (code
6162 snatched from Eric Jones' weave). Added better documentation to
6167 snatched from Eric Jones' weave). Added better documentation to
6163 the section on embedding and the example file.
6168 the section on embedding and the example file.
6164
6169
6165 * IPython/genutils.py (page): Changed so that under emacs, it just
6170 * IPython/genutils.py (page): Changed so that under emacs, it just
6166 prints the string. You can then page up and down in the emacs
6171 prints the string. You can then page up and down in the emacs
6167 buffer itself. This is how the builtin help() works.
6172 buffer itself. This is how the builtin help() works.
6168
6173
6169 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6174 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6170 macro scoping: macros need to be executed in the user's namespace
6175 macro scoping: macros need to be executed in the user's namespace
6171 to work as if they had been typed by the user.
6176 to work as if they had been typed by the user.
6172
6177
6173 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6178 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6174 execute automatically (no need to type 'exec...'). They then
6179 execute automatically (no need to type 'exec...'). They then
6175 behave like 'true macros'. The printing system was also modified
6180 behave like 'true macros'. The printing system was also modified
6176 for this to work.
6181 for this to work.
6177
6182
6178 2002-02-19 Fernando Perez <fperez@colorado.edu>
6183 2002-02-19 Fernando Perez <fperez@colorado.edu>
6179
6184
6180 * IPython/genutils.py (page_file): new function for paging files
6185 * IPython/genutils.py (page_file): new function for paging files
6181 in an OS-independent way. Also necessary for file viewing to work
6186 in an OS-independent way. Also necessary for file viewing to work
6182 well inside Emacs buffers.
6187 well inside Emacs buffers.
6183 (page): Added checks for being in an emacs buffer.
6188 (page): Added checks for being in an emacs buffer.
6184 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6189 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6185 same bug in iplib.
6190 same bug in iplib.
6186
6191
6187 2002-02-18 Fernando Perez <fperez@colorado.edu>
6192 2002-02-18 Fernando Perez <fperez@colorado.edu>
6188
6193
6189 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6194 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6190 of readline so that IPython can work inside an Emacs buffer.
6195 of readline so that IPython can work inside an Emacs buffer.
6191
6196
6192 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6197 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6193 method signatures (they weren't really bugs, but it looks cleaner
6198 method signatures (they weren't really bugs, but it looks cleaner
6194 and keeps PyChecker happy).
6199 and keeps PyChecker happy).
6195
6200
6196 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6201 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6197 for implementing various user-defined hooks. Currently only
6202 for implementing various user-defined hooks. Currently only
6198 display is done.
6203 display is done.
6199
6204
6200 * IPython/Prompts.py (CachedOutput._display): changed display
6205 * IPython/Prompts.py (CachedOutput._display): changed display
6201 functions so that they can be dynamically changed by users easily.
6206 functions so that they can be dynamically changed by users easily.
6202
6207
6203 * IPython/Extensions/numeric_formats.py (num_display): added an
6208 * IPython/Extensions/numeric_formats.py (num_display): added an
6204 extension for printing NumPy arrays in flexible manners. It
6209 extension for printing NumPy arrays in flexible manners. It
6205 doesn't do anything yet, but all the structure is in
6210 doesn't do anything yet, but all the structure is in
6206 place. Ultimately the plan is to implement output format control
6211 place. Ultimately the plan is to implement output format control
6207 like in Octave.
6212 like in Octave.
6208
6213
6209 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6214 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6210 methods are found at run-time by all the automatic machinery.
6215 methods are found at run-time by all the automatic machinery.
6211
6216
6212 2002-02-17 Fernando Perez <fperez@colorado.edu>
6217 2002-02-17 Fernando Perez <fperez@colorado.edu>
6213
6218
6214 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6219 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6215 whole file a little.
6220 whole file a little.
6216
6221
6217 * ToDo: closed this document. Now there's a new_design.lyx
6222 * ToDo: closed this document. Now there's a new_design.lyx
6218 document for all new ideas. Added making a pdf of it for the
6223 document for all new ideas. Added making a pdf of it for the
6219 end-user distro.
6224 end-user distro.
6220
6225
6221 * IPython/Logger.py (Logger.switch_log): Created this to replace
6226 * IPython/Logger.py (Logger.switch_log): Created this to replace
6222 logon() and logoff(). It also fixes a nasty crash reported by
6227 logon() and logoff(). It also fixes a nasty crash reported by
6223 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6228 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6224
6229
6225 * IPython/iplib.py (complete): got auto-completion to work with
6230 * IPython/iplib.py (complete): got auto-completion to work with
6226 automagic (I had wanted this for a long time).
6231 automagic (I had wanted this for a long time).
6227
6232
6228 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6233 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6229 to @file, since file() is now a builtin and clashes with automagic
6234 to @file, since file() is now a builtin and clashes with automagic
6230 for @file.
6235 for @file.
6231
6236
6232 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6237 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6233 of this was previously in iplib, which had grown to more than 2000
6238 of this was previously in iplib, which had grown to more than 2000
6234 lines, way too long. No new functionality, but it makes managing
6239 lines, way too long. No new functionality, but it makes managing
6235 the code a bit easier.
6240 the code a bit easier.
6236
6241
6237 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6242 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6238 information to crash reports.
6243 information to crash reports.
6239
6244
6240 2002-02-12 Fernando Perez <fperez@colorado.edu>
6245 2002-02-12 Fernando Perez <fperez@colorado.edu>
6241
6246
6242 * Released 0.2.5.
6247 * Released 0.2.5.
6243
6248
6244 2002-02-11 Fernando Perez <fperez@colorado.edu>
6249 2002-02-11 Fernando Perez <fperez@colorado.edu>
6245
6250
6246 * Wrote a relatively complete Windows installer. It puts
6251 * Wrote a relatively complete Windows installer. It puts
6247 everything in place, creates Start Menu entries and fixes the
6252 everything in place, creates Start Menu entries and fixes the
6248 color issues. Nothing fancy, but it works.
6253 color issues. Nothing fancy, but it works.
6249
6254
6250 2002-02-10 Fernando Perez <fperez@colorado.edu>
6255 2002-02-10 Fernando Perez <fperez@colorado.edu>
6251
6256
6252 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6257 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6253 os.path.expanduser() call so that we can type @run ~/myfile.py and
6258 os.path.expanduser() call so that we can type @run ~/myfile.py and
6254 have thigs work as expected.
6259 have thigs work as expected.
6255
6260
6256 * IPython/genutils.py (page): fixed exception handling so things
6261 * IPython/genutils.py (page): fixed exception handling so things
6257 work both in Unix and Windows correctly. Quitting a pager triggers
6262 work both in Unix and Windows correctly. Quitting a pager triggers
6258 an IOError/broken pipe in Unix, and in windows not finding a pager
6263 an IOError/broken pipe in Unix, and in windows not finding a pager
6259 is also an IOError, so I had to actually look at the return value
6264 is also an IOError, so I had to actually look at the return value
6260 of the exception, not just the exception itself. Should be ok now.
6265 of the exception, not just the exception itself. Should be ok now.
6261
6266
6262 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6267 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6263 modified to allow case-insensitive color scheme changes.
6268 modified to allow case-insensitive color scheme changes.
6264
6269
6265 2002-02-09 Fernando Perez <fperez@colorado.edu>
6270 2002-02-09 Fernando Perez <fperez@colorado.edu>
6266
6271
6267 * IPython/genutils.py (native_line_ends): new function to leave
6272 * IPython/genutils.py (native_line_ends): new function to leave
6268 user config files with os-native line-endings.
6273 user config files with os-native line-endings.
6269
6274
6270 * README and manual updates.
6275 * README and manual updates.
6271
6276
6272 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6277 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6273 instead of StringType to catch Unicode strings.
6278 instead of StringType to catch Unicode strings.
6274
6279
6275 * IPython/genutils.py (filefind): fixed bug for paths with
6280 * IPython/genutils.py (filefind): fixed bug for paths with
6276 embedded spaces (very common in Windows).
6281 embedded spaces (very common in Windows).
6277
6282
6278 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6283 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6279 files under Windows, so that they get automatically associated
6284 files under Windows, so that they get automatically associated
6280 with a text editor. Windows makes it a pain to handle
6285 with a text editor. Windows makes it a pain to handle
6281 extension-less files.
6286 extension-less files.
6282
6287
6283 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6288 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6284 warning about readline only occur for Posix. In Windows there's no
6289 warning about readline only occur for Posix. In Windows there's no
6285 way to get readline, so why bother with the warning.
6290 way to get readline, so why bother with the warning.
6286
6291
6287 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6292 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6288 for __str__ instead of dir(self), since dir() changed in 2.2.
6293 for __str__ instead of dir(self), since dir() changed in 2.2.
6289
6294
6290 * Ported to Windows! Tested on XP, I suspect it should work fine
6295 * Ported to Windows! Tested on XP, I suspect it should work fine
6291 on NT/2000, but I don't think it will work on 98 et al. That
6296 on NT/2000, but I don't think it will work on 98 et al. That
6292 series of Windows is such a piece of junk anyway that I won't try
6297 series of Windows is such a piece of junk anyway that I won't try
6293 porting it there. The XP port was straightforward, showed a few
6298 porting it there. The XP port was straightforward, showed a few
6294 bugs here and there (fixed all), in particular some string
6299 bugs here and there (fixed all), in particular some string
6295 handling stuff which required considering Unicode strings (which
6300 handling stuff which required considering Unicode strings (which
6296 Windows uses). This is good, but hasn't been too tested :) No
6301 Windows uses). This is good, but hasn't been too tested :) No
6297 fancy installer yet, I'll put a note in the manual so people at
6302 fancy installer yet, I'll put a note in the manual so people at
6298 least make manually a shortcut.
6303 least make manually a shortcut.
6299
6304
6300 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6305 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6301 into a single one, "colors". This now controls both prompt and
6306 into a single one, "colors". This now controls both prompt and
6302 exception color schemes, and can be changed both at startup
6307 exception color schemes, and can be changed both at startup
6303 (either via command-line switches or via ipythonrc files) and at
6308 (either via command-line switches or via ipythonrc files) and at
6304 runtime, with @colors.
6309 runtime, with @colors.
6305 (Magic.magic_run): renamed @prun to @run and removed the old
6310 (Magic.magic_run): renamed @prun to @run and removed the old
6306 @run. The two were too similar to warrant keeping both.
6311 @run. The two were too similar to warrant keeping both.
6307
6312
6308 2002-02-03 Fernando Perez <fperez@colorado.edu>
6313 2002-02-03 Fernando Perez <fperez@colorado.edu>
6309
6314
6310 * IPython/iplib.py (install_first_time): Added comment on how to
6315 * IPython/iplib.py (install_first_time): Added comment on how to
6311 configure the color options for first-time users. Put a <return>
6316 configure the color options for first-time users. Put a <return>
6312 request at the end so that small-terminal users get a chance to
6317 request at the end so that small-terminal users get a chance to
6313 read the startup info.
6318 read the startup info.
6314
6319
6315 2002-01-23 Fernando Perez <fperez@colorado.edu>
6320 2002-01-23 Fernando Perez <fperez@colorado.edu>
6316
6321
6317 * IPython/iplib.py (CachedOutput.update): Changed output memory
6322 * IPython/iplib.py (CachedOutput.update): Changed output memory
6318 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6323 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6319 input history we still use _i. Did this b/c these variable are
6324 input history we still use _i. Did this b/c these variable are
6320 very commonly used in interactive work, so the less we need to
6325 very commonly used in interactive work, so the less we need to
6321 type the better off we are.
6326 type the better off we are.
6322 (Magic.magic_prun): updated @prun to better handle the namespaces
6327 (Magic.magic_prun): updated @prun to better handle the namespaces
6323 the file will run in, including a fix for __name__ not being set
6328 the file will run in, including a fix for __name__ not being set
6324 before.
6329 before.
6325
6330
6326 2002-01-20 Fernando Perez <fperez@colorado.edu>
6331 2002-01-20 Fernando Perez <fperez@colorado.edu>
6327
6332
6328 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6333 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6329 extra garbage for Python 2.2. Need to look more carefully into
6334 extra garbage for Python 2.2. Need to look more carefully into
6330 this later.
6335 this later.
6331
6336
6332 2002-01-19 Fernando Perez <fperez@colorado.edu>
6337 2002-01-19 Fernando Perez <fperez@colorado.edu>
6333
6338
6334 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6339 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6335 display SyntaxError exceptions properly formatted when they occur
6340 display SyntaxError exceptions properly formatted when they occur
6336 (they can be triggered by imported code).
6341 (they can be triggered by imported code).
6337
6342
6338 2002-01-18 Fernando Perez <fperez@colorado.edu>
6343 2002-01-18 Fernando Perez <fperez@colorado.edu>
6339
6344
6340 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6345 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6341 SyntaxError exceptions are reported nicely formatted, instead of
6346 SyntaxError exceptions are reported nicely formatted, instead of
6342 spitting out only offset information as before.
6347 spitting out only offset information as before.
6343 (Magic.magic_prun): Added the @prun function for executing
6348 (Magic.magic_prun): Added the @prun function for executing
6344 programs with command line args inside IPython.
6349 programs with command line args inside IPython.
6345
6350
6346 2002-01-16 Fernando Perez <fperez@colorado.edu>
6351 2002-01-16 Fernando Perez <fperez@colorado.edu>
6347
6352
6348 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6353 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6349 to *not* include the last item given in a range. This brings their
6354 to *not* include the last item given in a range. This brings their
6350 behavior in line with Python's slicing:
6355 behavior in line with Python's slicing:
6351 a[n1:n2] -> a[n1]...a[n2-1]
6356 a[n1:n2] -> a[n1]...a[n2-1]
6352 It may be a bit less convenient, but I prefer to stick to Python's
6357 It may be a bit less convenient, but I prefer to stick to Python's
6353 conventions *everywhere*, so users never have to wonder.
6358 conventions *everywhere*, so users never have to wonder.
6354 (Magic.magic_macro): Added @macro function to ease the creation of
6359 (Magic.magic_macro): Added @macro function to ease the creation of
6355 macros.
6360 macros.
6356
6361
6357 2002-01-05 Fernando Perez <fperez@colorado.edu>
6362 2002-01-05 Fernando Perez <fperez@colorado.edu>
6358
6363
6359 * Released 0.2.4.
6364 * Released 0.2.4.
6360
6365
6361 * IPython/iplib.py (Magic.magic_pdef):
6366 * IPython/iplib.py (Magic.magic_pdef):
6362 (InteractiveShell.safe_execfile): report magic lines and error
6367 (InteractiveShell.safe_execfile): report magic lines and error
6363 lines without line numbers so one can easily copy/paste them for
6368 lines without line numbers so one can easily copy/paste them for
6364 re-execution.
6369 re-execution.
6365
6370
6366 * Updated manual with recent changes.
6371 * Updated manual with recent changes.
6367
6372
6368 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6373 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6369 docstring printing when class? is called. Very handy for knowing
6374 docstring printing when class? is called. Very handy for knowing
6370 how to create class instances (as long as __init__ is well
6375 how to create class instances (as long as __init__ is well
6371 documented, of course :)
6376 documented, of course :)
6372 (Magic.magic_doc): print both class and constructor docstrings.
6377 (Magic.magic_doc): print both class and constructor docstrings.
6373 (Magic.magic_pdef): give constructor info if passed a class and
6378 (Magic.magic_pdef): give constructor info if passed a class and
6374 __call__ info for callable object instances.
6379 __call__ info for callable object instances.
6375
6380
6376 2002-01-04 Fernando Perez <fperez@colorado.edu>
6381 2002-01-04 Fernando Perez <fperez@colorado.edu>
6377
6382
6378 * Made deep_reload() off by default. It doesn't always work
6383 * Made deep_reload() off by default. It doesn't always work
6379 exactly as intended, so it's probably safer to have it off. It's
6384 exactly as intended, so it's probably safer to have it off. It's
6380 still available as dreload() anyway, so nothing is lost.
6385 still available as dreload() anyway, so nothing is lost.
6381
6386
6382 2002-01-02 Fernando Perez <fperez@colorado.edu>
6387 2002-01-02 Fernando Perez <fperez@colorado.edu>
6383
6388
6384 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6389 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6385 so I wanted an updated release).
6390 so I wanted an updated release).
6386
6391
6387 2001-12-27 Fernando Perez <fperez@colorado.edu>
6392 2001-12-27 Fernando Perez <fperez@colorado.edu>
6388
6393
6389 * IPython/iplib.py (InteractiveShell.interact): Added the original
6394 * IPython/iplib.py (InteractiveShell.interact): Added the original
6390 code from 'code.py' for this module in order to change the
6395 code from 'code.py' for this module in order to change the
6391 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6396 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6392 the history cache would break when the user hit Ctrl-C, and
6397 the history cache would break when the user hit Ctrl-C, and
6393 interact() offers no way to add any hooks to it.
6398 interact() offers no way to add any hooks to it.
6394
6399
6395 2001-12-23 Fernando Perez <fperez@colorado.edu>
6400 2001-12-23 Fernando Perez <fperez@colorado.edu>
6396
6401
6397 * setup.py: added check for 'MANIFEST' before trying to remove
6402 * setup.py: added check for 'MANIFEST' before trying to remove
6398 it. Thanks to Sean Reifschneider.
6403 it. Thanks to Sean Reifschneider.
6399
6404
6400 2001-12-22 Fernando Perez <fperez@colorado.edu>
6405 2001-12-22 Fernando Perez <fperez@colorado.edu>
6401
6406
6402 * Released 0.2.2.
6407 * Released 0.2.2.
6403
6408
6404 * Finished (reasonably) writing the manual. Later will add the
6409 * Finished (reasonably) writing the manual. Later will add the
6405 python-standard navigation stylesheets, but for the time being
6410 python-standard navigation stylesheets, but for the time being
6406 it's fairly complete. Distribution will include html and pdf
6411 it's fairly complete. Distribution will include html and pdf
6407 versions.
6412 versions.
6408
6413
6409 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6414 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6410 (MayaVi author).
6415 (MayaVi author).
6411
6416
6412 2001-12-21 Fernando Perez <fperez@colorado.edu>
6417 2001-12-21 Fernando Perez <fperez@colorado.edu>
6413
6418
6414 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6419 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6415 good public release, I think (with the manual and the distutils
6420 good public release, I think (with the manual and the distutils
6416 installer). The manual can use some work, but that can go
6421 installer). The manual can use some work, but that can go
6417 slowly. Otherwise I think it's quite nice for end users. Next
6422 slowly. Otherwise I think it's quite nice for end users. Next
6418 summer, rewrite the guts of it...
6423 summer, rewrite the guts of it...
6419
6424
6420 * Changed format of ipythonrc files to use whitespace as the
6425 * Changed format of ipythonrc files to use whitespace as the
6421 separator instead of an explicit '='. Cleaner.
6426 separator instead of an explicit '='. Cleaner.
6422
6427
6423 2001-12-20 Fernando Perez <fperez@colorado.edu>
6428 2001-12-20 Fernando Perez <fperez@colorado.edu>
6424
6429
6425 * Started a manual in LyX. For now it's just a quick merge of the
6430 * Started a manual in LyX. For now it's just a quick merge of the
6426 various internal docstrings and READMEs. Later it may grow into a
6431 various internal docstrings and READMEs. Later it may grow into a
6427 nice, full-blown manual.
6432 nice, full-blown manual.
6428
6433
6429 * Set up a distutils based installer. Installation should now be
6434 * Set up a distutils based installer. Installation should now be
6430 trivially simple for end-users.
6435 trivially simple for end-users.
6431
6436
6432 2001-12-11 Fernando Perez <fperez@colorado.edu>
6437 2001-12-11 Fernando Perez <fperez@colorado.edu>
6433
6438
6434 * Released 0.2.0. First public release, announced it at
6439 * Released 0.2.0. First public release, announced it at
6435 comp.lang.python. From now on, just bugfixes...
6440 comp.lang.python. From now on, just bugfixes...
6436
6441
6437 * Went through all the files, set copyright/license notices and
6442 * Went through all the files, set copyright/license notices and
6438 cleaned up things. Ready for release.
6443 cleaned up things. Ready for release.
6439
6444
6440 2001-12-10 Fernando Perez <fperez@colorado.edu>
6445 2001-12-10 Fernando Perez <fperez@colorado.edu>
6441
6446
6442 * Changed the first-time installer not to use tarfiles. It's more
6447 * Changed the first-time installer not to use tarfiles. It's more
6443 robust now and less unix-dependent. Also makes it easier for
6448 robust now and less unix-dependent. Also makes it easier for
6444 people to later upgrade versions.
6449 people to later upgrade versions.
6445
6450
6446 * Changed @exit to @abort to reflect the fact that it's pretty
6451 * Changed @exit to @abort to reflect the fact that it's pretty
6447 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6452 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6448 becomes significant only when IPyhton is embedded: in that case,
6453 becomes significant only when IPyhton is embedded: in that case,
6449 C-D closes IPython only, but @abort kills the enclosing program
6454 C-D closes IPython only, but @abort kills the enclosing program
6450 too (unless it had called IPython inside a try catching
6455 too (unless it had called IPython inside a try catching
6451 SystemExit).
6456 SystemExit).
6452
6457
6453 * Created Shell module which exposes the actuall IPython Shell
6458 * Created Shell module which exposes the actuall IPython Shell
6454 classes, currently the normal and the embeddable one. This at
6459 classes, currently the normal and the embeddable one. This at
6455 least offers a stable interface we won't need to change when
6460 least offers a stable interface we won't need to change when
6456 (later) the internals are rewritten. That rewrite will be confined
6461 (later) the internals are rewritten. That rewrite will be confined
6457 to iplib and ipmaker, but the Shell interface should remain as is.
6462 to iplib and ipmaker, but the Shell interface should remain as is.
6458
6463
6459 * Added embed module which offers an embeddable IPShell object,
6464 * Added embed module which offers an embeddable IPShell object,
6460 useful to fire up IPython *inside* a running program. Great for
6465 useful to fire up IPython *inside* a running program. Great for
6461 debugging or dynamical data analysis.
6466 debugging or dynamical data analysis.
6462
6467
6463 2001-12-08 Fernando Perez <fperez@colorado.edu>
6468 2001-12-08 Fernando Perez <fperez@colorado.edu>
6464
6469
6465 * Fixed small bug preventing seeing info from methods of defined
6470 * Fixed small bug preventing seeing info from methods of defined
6466 objects (incorrect namespace in _ofind()).
6471 objects (incorrect namespace in _ofind()).
6467
6472
6468 * Documentation cleanup. Moved the main usage docstrings to a
6473 * Documentation cleanup. Moved the main usage docstrings to a
6469 separate file, usage.py (cleaner to maintain, and hopefully in the
6474 separate file, usage.py (cleaner to maintain, and hopefully in the
6470 future some perlpod-like way of producing interactive, man and
6475 future some perlpod-like way of producing interactive, man and
6471 html docs out of it will be found).
6476 html docs out of it will be found).
6472
6477
6473 * Added @profile to see your profile at any time.
6478 * Added @profile to see your profile at any time.
6474
6479
6475 * Added @p as an alias for 'print'. It's especially convenient if
6480 * Added @p as an alias for 'print'. It's especially convenient if
6476 using automagic ('p x' prints x).
6481 using automagic ('p x' prints x).
6477
6482
6478 * Small cleanups and fixes after a pychecker run.
6483 * Small cleanups and fixes after a pychecker run.
6479
6484
6480 * Changed the @cd command to handle @cd - and @cd -<n> for
6485 * Changed the @cd command to handle @cd - and @cd -<n> for
6481 visiting any directory in _dh.
6486 visiting any directory in _dh.
6482
6487
6483 * Introduced _dh, a history of visited directories. @dhist prints
6488 * Introduced _dh, a history of visited directories. @dhist prints
6484 it out with numbers.
6489 it out with numbers.
6485
6490
6486 2001-12-07 Fernando Perez <fperez@colorado.edu>
6491 2001-12-07 Fernando Perez <fperez@colorado.edu>
6487
6492
6488 * Released 0.1.22
6493 * Released 0.1.22
6489
6494
6490 * Made initialization a bit more robust against invalid color
6495 * Made initialization a bit more robust against invalid color
6491 options in user input (exit, not traceback-crash).
6496 options in user input (exit, not traceback-crash).
6492
6497
6493 * Changed the bug crash reporter to write the report only in the
6498 * Changed the bug crash reporter to write the report only in the
6494 user's .ipython directory. That way IPython won't litter people's
6499 user's .ipython directory. That way IPython won't litter people's
6495 hard disks with crash files all over the place. Also print on
6500 hard disks with crash files all over the place. Also print on
6496 screen the necessary mail command.
6501 screen the necessary mail command.
6497
6502
6498 * With the new ultraTB, implemented LightBG color scheme for light
6503 * With the new ultraTB, implemented LightBG color scheme for light
6499 background terminals. A lot of people like white backgrounds, so I
6504 background terminals. A lot of people like white backgrounds, so I
6500 guess we should at least give them something readable.
6505 guess we should at least give them something readable.
6501
6506
6502 2001-12-06 Fernando Perez <fperez@colorado.edu>
6507 2001-12-06 Fernando Perez <fperez@colorado.edu>
6503
6508
6504 * Modified the structure of ultraTB. Now there's a proper class
6509 * Modified the structure of ultraTB. Now there's a proper class
6505 for tables of color schemes which allow adding schemes easily and
6510 for tables of color schemes which allow adding schemes easily and
6506 switching the active scheme without creating a new instance every
6511 switching the active scheme without creating a new instance every
6507 time (which was ridiculous). The syntax for creating new schemes
6512 time (which was ridiculous). The syntax for creating new schemes
6508 is also cleaner. I think ultraTB is finally done, with a clean
6513 is also cleaner. I think ultraTB is finally done, with a clean
6509 class structure. Names are also much cleaner (now there's proper
6514 class structure. Names are also much cleaner (now there's proper
6510 color tables, no need for every variable to also have 'color' in
6515 color tables, no need for every variable to also have 'color' in
6511 its name).
6516 its name).
6512
6517
6513 * Broke down genutils into separate files. Now genutils only
6518 * Broke down genutils into separate files. Now genutils only
6514 contains utility functions, and classes have been moved to their
6519 contains utility functions, and classes have been moved to their
6515 own files (they had enough independent functionality to warrant
6520 own files (they had enough independent functionality to warrant
6516 it): ConfigLoader, OutputTrap, Struct.
6521 it): ConfigLoader, OutputTrap, Struct.
6517
6522
6518 2001-12-05 Fernando Perez <fperez@colorado.edu>
6523 2001-12-05 Fernando Perez <fperez@colorado.edu>
6519
6524
6520 * IPython turns 21! Released version 0.1.21, as a candidate for
6525 * IPython turns 21! Released version 0.1.21, as a candidate for
6521 public consumption. If all goes well, release in a few days.
6526 public consumption. If all goes well, release in a few days.
6522
6527
6523 * Fixed path bug (files in Extensions/ directory wouldn't be found
6528 * Fixed path bug (files in Extensions/ directory wouldn't be found
6524 unless IPython/ was explicitly in sys.path).
6529 unless IPython/ was explicitly in sys.path).
6525
6530
6526 * Extended the FlexCompleter class as MagicCompleter to allow
6531 * Extended the FlexCompleter class as MagicCompleter to allow
6527 completion of @-starting lines.
6532 completion of @-starting lines.
6528
6533
6529 * Created __release__.py file as a central repository for release
6534 * Created __release__.py file as a central repository for release
6530 info that other files can read from.
6535 info that other files can read from.
6531
6536
6532 * Fixed small bug in logging: when logging was turned on in
6537 * Fixed small bug in logging: when logging was turned on in
6533 mid-session, old lines with special meanings (!@?) were being
6538 mid-session, old lines with special meanings (!@?) were being
6534 logged without the prepended comment, which is necessary since
6539 logged without the prepended comment, which is necessary since
6535 they are not truly valid python syntax. This should make session
6540 they are not truly valid python syntax. This should make session
6536 restores produce less errors.
6541 restores produce less errors.
6537
6542
6538 * The namespace cleanup forced me to make a FlexCompleter class
6543 * The namespace cleanup forced me to make a FlexCompleter class
6539 which is nothing but a ripoff of rlcompleter, but with selectable
6544 which is nothing but a ripoff of rlcompleter, but with selectable
6540 namespace (rlcompleter only works in __main__.__dict__). I'll try
6545 namespace (rlcompleter only works in __main__.__dict__). I'll try
6541 to submit a note to the authors to see if this change can be
6546 to submit a note to the authors to see if this change can be
6542 incorporated in future rlcompleter releases (Dec.6: done)
6547 incorporated in future rlcompleter releases (Dec.6: done)
6543
6548
6544 * More fixes to namespace handling. It was a mess! Now all
6549 * More fixes to namespace handling. It was a mess! Now all
6545 explicit references to __main__.__dict__ are gone (except when
6550 explicit references to __main__.__dict__ are gone (except when
6546 really needed) and everything is handled through the namespace
6551 really needed) and everything is handled through the namespace
6547 dicts in the IPython instance. We seem to be getting somewhere
6552 dicts in the IPython instance. We seem to be getting somewhere
6548 with this, finally...
6553 with this, finally...
6549
6554
6550 * Small documentation updates.
6555 * Small documentation updates.
6551
6556
6552 * Created the Extensions directory under IPython (with an
6557 * Created the Extensions directory under IPython (with an
6553 __init__.py). Put the PhysicalQ stuff there. This directory should
6558 __init__.py). Put the PhysicalQ stuff there. This directory should
6554 be used for all special-purpose extensions.
6559 be used for all special-purpose extensions.
6555
6560
6556 * File renaming:
6561 * File renaming:
6557 ipythonlib --> ipmaker
6562 ipythonlib --> ipmaker
6558 ipplib --> iplib
6563 ipplib --> iplib
6559 This makes a bit more sense in terms of what these files actually do.
6564 This makes a bit more sense in terms of what these files actually do.
6560
6565
6561 * Moved all the classes and functions in ipythonlib to ipplib, so
6566 * Moved all the classes and functions in ipythonlib to ipplib, so
6562 now ipythonlib only has make_IPython(). This will ease up its
6567 now ipythonlib only has make_IPython(). This will ease up its
6563 splitting in smaller functional chunks later.
6568 splitting in smaller functional chunks later.
6564
6569
6565 * Cleaned up (done, I think) output of @whos. Better column
6570 * Cleaned up (done, I think) output of @whos. Better column
6566 formatting, and now shows str(var) for as much as it can, which is
6571 formatting, and now shows str(var) for as much as it can, which is
6567 typically what one gets with a 'print var'.
6572 typically what one gets with a 'print var'.
6568
6573
6569 2001-12-04 Fernando Perez <fperez@colorado.edu>
6574 2001-12-04 Fernando Perez <fperez@colorado.edu>
6570
6575
6571 * Fixed namespace problems. Now builtin/IPyhton/user names get
6576 * Fixed namespace problems. Now builtin/IPyhton/user names get
6572 properly reported in their namespace. Internal namespace handling
6577 properly reported in their namespace. Internal namespace handling
6573 is finally getting decent (not perfect yet, but much better than
6578 is finally getting decent (not perfect yet, but much better than
6574 the ad-hoc mess we had).
6579 the ad-hoc mess we had).
6575
6580
6576 * Removed -exit option. If people just want to run a python
6581 * Removed -exit option. If people just want to run a python
6577 script, that's what the normal interpreter is for. Less
6582 script, that's what the normal interpreter is for. Less
6578 unnecessary options, less chances for bugs.
6583 unnecessary options, less chances for bugs.
6579
6584
6580 * Added a crash handler which generates a complete post-mortem if
6585 * Added a crash handler which generates a complete post-mortem if
6581 IPython crashes. This will help a lot in tracking bugs down the
6586 IPython crashes. This will help a lot in tracking bugs down the
6582 road.
6587 road.
6583
6588
6584 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6589 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6585 which were boud to functions being reassigned would bypass the
6590 which were boud to functions being reassigned would bypass the
6586 logger, breaking the sync of _il with the prompt counter. This
6591 logger, breaking the sync of _il with the prompt counter. This
6587 would then crash IPython later when a new line was logged.
6592 would then crash IPython later when a new line was logged.
6588
6593
6589 2001-12-02 Fernando Perez <fperez@colorado.edu>
6594 2001-12-02 Fernando Perez <fperez@colorado.edu>
6590
6595
6591 * Made IPython a package. This means people don't have to clutter
6596 * Made IPython a package. This means people don't have to clutter
6592 their sys.path with yet another directory. Changed the INSTALL
6597 their sys.path with yet another directory. Changed the INSTALL
6593 file accordingly.
6598 file accordingly.
6594
6599
6595 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6600 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6596 sorts its output (so @who shows it sorted) and @whos formats the
6601 sorts its output (so @who shows it sorted) and @whos formats the
6597 table according to the width of the first column. Nicer, easier to
6602 table according to the width of the first column. Nicer, easier to
6598 read. Todo: write a generic table_format() which takes a list of
6603 read. Todo: write a generic table_format() which takes a list of
6599 lists and prints it nicely formatted, with optional row/column
6604 lists and prints it nicely formatted, with optional row/column
6600 separators and proper padding and justification.
6605 separators and proper padding and justification.
6601
6606
6602 * Released 0.1.20
6607 * Released 0.1.20
6603
6608
6604 * Fixed bug in @log which would reverse the inputcache list (a
6609 * Fixed bug in @log which would reverse the inputcache list (a
6605 copy operation was missing).
6610 copy operation was missing).
6606
6611
6607 * Code cleanup. @config was changed to use page(). Better, since
6612 * Code cleanup. @config was changed to use page(). Better, since
6608 its output is always quite long.
6613 its output is always quite long.
6609
6614
6610 * Itpl is back as a dependency. I was having too many problems
6615 * Itpl is back as a dependency. I was having too many problems
6611 getting the parametric aliases to work reliably, and it's just
6616 getting the parametric aliases to work reliably, and it's just
6612 easier to code weird string operations with it than playing %()s
6617 easier to code weird string operations with it than playing %()s
6613 games. It's only ~6k, so I don't think it's too big a deal.
6618 games. It's only ~6k, so I don't think it's too big a deal.
6614
6619
6615 * Found (and fixed) a very nasty bug with history. !lines weren't
6620 * Found (and fixed) a very nasty bug with history. !lines weren't
6616 getting cached, and the out of sync caches would crash
6621 getting cached, and the out of sync caches would crash
6617 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6622 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6618 division of labor a bit better. Bug fixed, cleaner structure.
6623 division of labor a bit better. Bug fixed, cleaner structure.
6619
6624
6620 2001-12-01 Fernando Perez <fperez@colorado.edu>
6625 2001-12-01 Fernando Perez <fperez@colorado.edu>
6621
6626
6622 * Released 0.1.19
6627 * Released 0.1.19
6623
6628
6624 * Added option -n to @hist to prevent line number printing. Much
6629 * Added option -n to @hist to prevent line number printing. Much
6625 easier to copy/paste code this way.
6630 easier to copy/paste code this way.
6626
6631
6627 * Created global _il to hold the input list. Allows easy
6632 * Created global _il to hold the input list. Allows easy
6628 re-execution of blocks of code by slicing it (inspired by Janko's
6633 re-execution of blocks of code by slicing it (inspired by Janko's
6629 comment on 'macros').
6634 comment on 'macros').
6630
6635
6631 * Small fixes and doc updates.
6636 * Small fixes and doc updates.
6632
6637
6633 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6638 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6634 much too fragile with automagic. Handles properly multi-line
6639 much too fragile with automagic. Handles properly multi-line
6635 statements and takes parameters.
6640 statements and takes parameters.
6636
6641
6637 2001-11-30 Fernando Perez <fperez@colorado.edu>
6642 2001-11-30 Fernando Perez <fperez@colorado.edu>
6638
6643
6639 * Version 0.1.18 released.
6644 * Version 0.1.18 released.
6640
6645
6641 * Fixed nasty namespace bug in initial module imports.
6646 * Fixed nasty namespace bug in initial module imports.
6642
6647
6643 * Added copyright/license notes to all code files (except
6648 * Added copyright/license notes to all code files (except
6644 DPyGetOpt). For the time being, LGPL. That could change.
6649 DPyGetOpt). For the time being, LGPL. That could change.
6645
6650
6646 * Rewrote a much nicer README, updated INSTALL, cleaned up
6651 * Rewrote a much nicer README, updated INSTALL, cleaned up
6647 ipythonrc-* samples.
6652 ipythonrc-* samples.
6648
6653
6649 * Overall code/documentation cleanup. Basically ready for
6654 * Overall code/documentation cleanup. Basically ready for
6650 release. Only remaining thing: licence decision (LGPL?).
6655 release. Only remaining thing: licence decision (LGPL?).
6651
6656
6652 * Converted load_config to a class, ConfigLoader. Now recursion
6657 * Converted load_config to a class, ConfigLoader. Now recursion
6653 control is better organized. Doesn't include the same file twice.
6658 control is better organized. Doesn't include the same file twice.
6654
6659
6655 2001-11-29 Fernando Perez <fperez@colorado.edu>
6660 2001-11-29 Fernando Perez <fperez@colorado.edu>
6656
6661
6657 * Got input history working. Changed output history variables from
6662 * Got input history working. Changed output history variables from
6658 _p to _o so that _i is for input and _o for output. Just cleaner
6663 _p to _o so that _i is for input and _o for output. Just cleaner
6659 convention.
6664 convention.
6660
6665
6661 * Implemented parametric aliases. This pretty much allows the
6666 * Implemented parametric aliases. This pretty much allows the
6662 alias system to offer full-blown shell convenience, I think.
6667 alias system to offer full-blown shell convenience, I think.
6663
6668
6664 * Version 0.1.17 released, 0.1.18 opened.
6669 * Version 0.1.17 released, 0.1.18 opened.
6665
6670
6666 * dot_ipython/ipythonrc (alias): added documentation.
6671 * dot_ipython/ipythonrc (alias): added documentation.
6667 (xcolor): Fixed small bug (xcolors -> xcolor)
6672 (xcolor): Fixed small bug (xcolors -> xcolor)
6668
6673
6669 * Changed the alias system. Now alias is a magic command to define
6674 * Changed the alias system. Now alias is a magic command to define
6670 aliases just like the shell. Rationale: the builtin magics should
6675 aliases just like the shell. Rationale: the builtin magics should
6671 be there for things deeply connected to IPython's
6676 be there for things deeply connected to IPython's
6672 architecture. And this is a much lighter system for what I think
6677 architecture. And this is a much lighter system for what I think
6673 is the really important feature: allowing users to define quickly
6678 is the really important feature: allowing users to define quickly
6674 magics that will do shell things for them, so they can customize
6679 magics that will do shell things for them, so they can customize
6675 IPython easily to match their work habits. If someone is really
6680 IPython easily to match their work habits. If someone is really
6676 desperate to have another name for a builtin alias, they can
6681 desperate to have another name for a builtin alias, they can
6677 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6682 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6678 works.
6683 works.
6679
6684
6680 2001-11-28 Fernando Perez <fperez@colorado.edu>
6685 2001-11-28 Fernando Perez <fperez@colorado.edu>
6681
6686
6682 * Changed @file so that it opens the source file at the proper
6687 * Changed @file so that it opens the source file at the proper
6683 line. Since it uses less, if your EDITOR environment is
6688 line. Since it uses less, if your EDITOR environment is
6684 configured, typing v will immediately open your editor of choice
6689 configured, typing v will immediately open your editor of choice
6685 right at the line where the object is defined. Not as quick as
6690 right at the line where the object is defined. Not as quick as
6686 having a direct @edit command, but for all intents and purposes it
6691 having a direct @edit command, but for all intents and purposes it
6687 works. And I don't have to worry about writing @edit to deal with
6692 works. And I don't have to worry about writing @edit to deal with
6688 all the editors, less does that.
6693 all the editors, less does that.
6689
6694
6690 * Version 0.1.16 released, 0.1.17 opened.
6695 * Version 0.1.16 released, 0.1.17 opened.
6691
6696
6692 * Fixed some nasty bugs in the page/page_dumb combo that could
6697 * Fixed some nasty bugs in the page/page_dumb combo that could
6693 crash IPython.
6698 crash IPython.
6694
6699
6695 2001-11-27 Fernando Perez <fperez@colorado.edu>
6700 2001-11-27 Fernando Perez <fperez@colorado.edu>
6696
6701
6697 * Version 0.1.15 released, 0.1.16 opened.
6702 * Version 0.1.15 released, 0.1.16 opened.
6698
6703
6699 * Finally got ? and ?? to work for undefined things: now it's
6704 * Finally got ? and ?? to work for undefined things: now it's
6700 possible to type {}.get? and get information about the get method
6705 possible to type {}.get? and get information about the get method
6701 of dicts, or os.path? even if only os is defined (so technically
6706 of dicts, or os.path? even if only os is defined (so technically
6702 os.path isn't). Works at any level. For example, after import os,
6707 os.path isn't). Works at any level. For example, after import os,
6703 os?, os.path?, os.path.abspath? all work. This is great, took some
6708 os?, os.path?, os.path.abspath? all work. This is great, took some
6704 work in _ofind.
6709 work in _ofind.
6705
6710
6706 * Fixed more bugs with logging. The sanest way to do it was to add
6711 * Fixed more bugs with logging. The sanest way to do it was to add
6707 to @log a 'mode' parameter. Killed two in one shot (this mode
6712 to @log a 'mode' parameter. Killed two in one shot (this mode
6708 option was a request of Janko's). I think it's finally clean
6713 option was a request of Janko's). I think it's finally clean
6709 (famous last words).
6714 (famous last words).
6710
6715
6711 * Added a page_dumb() pager which does a decent job of paging on
6716 * Added a page_dumb() pager which does a decent job of paging on
6712 screen, if better things (like less) aren't available. One less
6717 screen, if better things (like less) aren't available. One less
6713 unix dependency (someday maybe somebody will port this to
6718 unix dependency (someday maybe somebody will port this to
6714 windows).
6719 windows).
6715
6720
6716 * Fixed problem in magic_log: would lock of logging out if log
6721 * Fixed problem in magic_log: would lock of logging out if log
6717 creation failed (because it would still think it had succeeded).
6722 creation failed (because it would still think it had succeeded).
6718
6723
6719 * Improved the page() function using curses to auto-detect screen
6724 * Improved the page() function using curses to auto-detect screen
6720 size. Now it can make a much better decision on whether to print
6725 size. Now it can make a much better decision on whether to print
6721 or page a string. Option screen_length was modified: a value 0
6726 or page a string. Option screen_length was modified: a value 0
6722 means auto-detect, and that's the default now.
6727 means auto-detect, and that's the default now.
6723
6728
6724 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6729 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6725 go out. I'll test it for a few days, then talk to Janko about
6730 go out. I'll test it for a few days, then talk to Janko about
6726 licences and announce it.
6731 licences and announce it.
6727
6732
6728 * Fixed the length of the auto-generated ---> prompt which appears
6733 * Fixed the length of the auto-generated ---> prompt which appears
6729 for auto-parens and auto-quotes. Getting this right isn't trivial,
6734 for auto-parens and auto-quotes. Getting this right isn't trivial,
6730 with all the color escapes, different prompt types and optional
6735 with all the color escapes, different prompt types and optional
6731 separators. But it seems to be working in all the combinations.
6736 separators. But it seems to be working in all the combinations.
6732
6737
6733 2001-11-26 Fernando Perez <fperez@colorado.edu>
6738 2001-11-26 Fernando Perez <fperez@colorado.edu>
6734
6739
6735 * Wrote a regexp filter to get option types from the option names
6740 * Wrote a regexp filter to get option types from the option names
6736 string. This eliminates the need to manually keep two duplicate
6741 string. This eliminates the need to manually keep two duplicate
6737 lists.
6742 lists.
6738
6743
6739 * Removed the unneeded check_option_names. Now options are handled
6744 * Removed the unneeded check_option_names. Now options are handled
6740 in a much saner manner and it's easy to visually check that things
6745 in a much saner manner and it's easy to visually check that things
6741 are ok.
6746 are ok.
6742
6747
6743 * Updated version numbers on all files I modified to carry a
6748 * Updated version numbers on all files I modified to carry a
6744 notice so Janko and Nathan have clear version markers.
6749 notice so Janko and Nathan have clear version markers.
6745
6750
6746 * Updated docstring for ultraTB with my changes. I should send
6751 * Updated docstring for ultraTB with my changes. I should send
6747 this to Nathan.
6752 this to Nathan.
6748
6753
6749 * Lots of small fixes. Ran everything through pychecker again.
6754 * Lots of small fixes. Ran everything through pychecker again.
6750
6755
6751 * Made loading of deep_reload an cmd line option. If it's not too
6756 * Made loading of deep_reload an cmd line option. If it's not too
6752 kosher, now people can just disable it. With -nodeep_reload it's
6757 kosher, now people can just disable it. With -nodeep_reload it's
6753 still available as dreload(), it just won't overwrite reload().
6758 still available as dreload(), it just won't overwrite reload().
6754
6759
6755 * Moved many options to the no| form (-opt and -noopt
6760 * Moved many options to the no| form (-opt and -noopt
6756 accepted). Cleaner.
6761 accepted). Cleaner.
6757
6762
6758 * Changed magic_log so that if called with no parameters, it uses
6763 * Changed magic_log so that if called with no parameters, it uses
6759 'rotate' mode. That way auto-generated logs aren't automatically
6764 'rotate' mode. That way auto-generated logs aren't automatically
6760 over-written. For normal logs, now a backup is made if it exists
6765 over-written. For normal logs, now a backup is made if it exists
6761 (only 1 level of backups). A new 'backup' mode was added to the
6766 (only 1 level of backups). A new 'backup' mode was added to the
6762 Logger class to support this. This was a request by Janko.
6767 Logger class to support this. This was a request by Janko.
6763
6768
6764 * Added @logoff/@logon to stop/restart an active log.
6769 * Added @logoff/@logon to stop/restart an active log.
6765
6770
6766 * Fixed a lot of bugs in log saving/replay. It was pretty
6771 * Fixed a lot of bugs in log saving/replay. It was pretty
6767 broken. Now special lines (!@,/) appear properly in the command
6772 broken. Now special lines (!@,/) appear properly in the command
6768 history after a log replay.
6773 history after a log replay.
6769
6774
6770 * Tried and failed to implement full session saving via pickle. My
6775 * Tried and failed to implement full session saving via pickle. My
6771 idea was to pickle __main__.__dict__, but modules can't be
6776 idea was to pickle __main__.__dict__, but modules can't be
6772 pickled. This would be a better alternative to replaying logs, but
6777 pickled. This would be a better alternative to replaying logs, but
6773 seems quite tricky to get to work. Changed -session to be called
6778 seems quite tricky to get to work. Changed -session to be called
6774 -logplay, which more accurately reflects what it does. And if we
6779 -logplay, which more accurately reflects what it does. And if we
6775 ever get real session saving working, -session is now available.
6780 ever get real session saving working, -session is now available.
6776
6781
6777 * Implemented color schemes for prompts also. As for tracebacks,
6782 * Implemented color schemes for prompts also. As for tracebacks,
6778 currently only NoColor and Linux are supported. But now the
6783 currently only NoColor and Linux are supported. But now the
6779 infrastructure is in place, based on a generic ColorScheme
6784 infrastructure is in place, based on a generic ColorScheme
6780 class. So writing and activating new schemes both for the prompts
6785 class. So writing and activating new schemes both for the prompts
6781 and the tracebacks should be straightforward.
6786 and the tracebacks should be straightforward.
6782
6787
6783 * Version 0.1.13 released, 0.1.14 opened.
6788 * Version 0.1.13 released, 0.1.14 opened.
6784
6789
6785 * Changed handling of options for output cache. Now counter is
6790 * Changed handling of options for output cache. Now counter is
6786 hardwired starting at 1 and one specifies the maximum number of
6791 hardwired starting at 1 and one specifies the maximum number of
6787 entries *in the outcache* (not the max prompt counter). This is
6792 entries *in the outcache* (not the max prompt counter). This is
6788 much better, since many statements won't increase the cache
6793 much better, since many statements won't increase the cache
6789 count. It also eliminated some confusing options, now there's only
6794 count. It also eliminated some confusing options, now there's only
6790 one: cache_size.
6795 one: cache_size.
6791
6796
6792 * Added 'alias' magic function and magic_alias option in the
6797 * Added 'alias' magic function and magic_alias option in the
6793 ipythonrc file. Now the user can easily define whatever names he
6798 ipythonrc file. Now the user can easily define whatever names he
6794 wants for the magic functions without having to play weird
6799 wants for the magic functions without having to play weird
6795 namespace games. This gives IPython a real shell-like feel.
6800 namespace games. This gives IPython a real shell-like feel.
6796
6801
6797 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6802 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6798 @ or not).
6803 @ or not).
6799
6804
6800 This was one of the last remaining 'visible' bugs (that I know
6805 This was one of the last remaining 'visible' bugs (that I know
6801 of). I think if I can clean up the session loading so it works
6806 of). I think if I can clean up the session loading so it works
6802 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6807 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6803 about licensing).
6808 about licensing).
6804
6809
6805 2001-11-25 Fernando Perez <fperez@colorado.edu>
6810 2001-11-25 Fernando Perez <fperez@colorado.edu>
6806
6811
6807 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6812 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6808 there's a cleaner distinction between what ? and ?? show.
6813 there's a cleaner distinction between what ? and ?? show.
6809
6814
6810 * Added screen_length option. Now the user can define his own
6815 * Added screen_length option. Now the user can define his own
6811 screen size for page() operations.
6816 screen size for page() operations.
6812
6817
6813 * Implemented magic shell-like functions with automatic code
6818 * Implemented magic shell-like functions with automatic code
6814 generation. Now adding another function is just a matter of adding
6819 generation. Now adding another function is just a matter of adding
6815 an entry to a dict, and the function is dynamically generated at
6820 an entry to a dict, and the function is dynamically generated at
6816 run-time. Python has some really cool features!
6821 run-time. Python has some really cool features!
6817
6822
6818 * Renamed many options to cleanup conventions a little. Now all
6823 * Renamed many options to cleanup conventions a little. Now all
6819 are lowercase, and only underscores where needed. Also in the code
6824 are lowercase, and only underscores where needed. Also in the code
6820 option name tables are clearer.
6825 option name tables are clearer.
6821
6826
6822 * Changed prompts a little. Now input is 'In [n]:' instead of
6827 * Changed prompts a little. Now input is 'In [n]:' instead of
6823 'In[n]:='. This allows it the numbers to be aligned with the
6828 'In[n]:='. This allows it the numbers to be aligned with the
6824 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6829 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6825 Python (it was a Mathematica thing). The '...' continuation prompt
6830 Python (it was a Mathematica thing). The '...' continuation prompt
6826 was also changed a little to align better.
6831 was also changed a little to align better.
6827
6832
6828 * Fixed bug when flushing output cache. Not all _p<n> variables
6833 * Fixed bug when flushing output cache. Not all _p<n> variables
6829 exist, so their deletion needs to be wrapped in a try:
6834 exist, so their deletion needs to be wrapped in a try:
6830
6835
6831 * Figured out how to properly use inspect.formatargspec() (it
6836 * Figured out how to properly use inspect.formatargspec() (it
6832 requires the args preceded by *). So I removed all the code from
6837 requires the args preceded by *). So I removed all the code from
6833 _get_pdef in Magic, which was just replicating that.
6838 _get_pdef in Magic, which was just replicating that.
6834
6839
6835 * Added test to prefilter to allow redefining magic function names
6840 * Added test to prefilter to allow redefining magic function names
6836 as variables. This is ok, since the @ form is always available,
6841 as variables. This is ok, since the @ form is always available,
6837 but whe should allow the user to define a variable called 'ls' if
6842 but whe should allow the user to define a variable called 'ls' if
6838 he needs it.
6843 he needs it.
6839
6844
6840 * Moved the ToDo information from README into a separate ToDo.
6845 * Moved the ToDo information from README into a separate ToDo.
6841
6846
6842 * General code cleanup and small bugfixes. I think it's close to a
6847 * General code cleanup and small bugfixes. I think it's close to a
6843 state where it can be released, obviously with a big 'beta'
6848 state where it can be released, obviously with a big 'beta'
6844 warning on it.
6849 warning on it.
6845
6850
6846 * Got the magic function split to work. Now all magics are defined
6851 * Got the magic function split to work. Now all magics are defined
6847 in a separate class. It just organizes things a bit, and now
6852 in a separate class. It just organizes things a bit, and now
6848 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6853 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6849 was too long).
6854 was too long).
6850
6855
6851 * Changed @clear to @reset to avoid potential confusions with
6856 * Changed @clear to @reset to avoid potential confusions with
6852 the shell command clear. Also renamed @cl to @clear, which does
6857 the shell command clear. Also renamed @cl to @clear, which does
6853 exactly what people expect it to from their shell experience.
6858 exactly what people expect it to from their shell experience.
6854
6859
6855 Added a check to the @reset command (since it's so
6860 Added a check to the @reset command (since it's so
6856 destructive, it's probably a good idea to ask for confirmation).
6861 destructive, it's probably a good idea to ask for confirmation).
6857 But now reset only works for full namespace resetting. Since the
6862 But now reset only works for full namespace resetting. Since the
6858 del keyword is already there for deleting a few specific
6863 del keyword is already there for deleting a few specific
6859 variables, I don't see the point of having a redundant magic
6864 variables, I don't see the point of having a redundant magic
6860 function for the same task.
6865 function for the same task.
6861
6866
6862 2001-11-24 Fernando Perez <fperez@colorado.edu>
6867 2001-11-24 Fernando Perez <fperez@colorado.edu>
6863
6868
6864 * Updated the builtin docs (esp. the ? ones).
6869 * Updated the builtin docs (esp. the ? ones).
6865
6870
6866 * Ran all the code through pychecker. Not terribly impressed with
6871 * Ran all the code through pychecker. Not terribly impressed with
6867 it: lots of spurious warnings and didn't really find anything of
6872 it: lots of spurious warnings and didn't really find anything of
6868 substance (just a few modules being imported and not used).
6873 substance (just a few modules being imported and not used).
6869
6874
6870 * Implemented the new ultraTB functionality into IPython. New
6875 * Implemented the new ultraTB functionality into IPython. New
6871 option: xcolors. This chooses color scheme. xmode now only selects
6876 option: xcolors. This chooses color scheme. xmode now only selects
6872 between Plain and Verbose. Better orthogonality.
6877 between Plain and Verbose. Better orthogonality.
6873
6878
6874 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6879 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6875 mode and color scheme for the exception handlers. Now it's
6880 mode and color scheme for the exception handlers. Now it's
6876 possible to have the verbose traceback with no coloring.
6881 possible to have the verbose traceback with no coloring.
6877
6882
6878 2001-11-23 Fernando Perez <fperez@colorado.edu>
6883 2001-11-23 Fernando Perez <fperez@colorado.edu>
6879
6884
6880 * Version 0.1.12 released, 0.1.13 opened.
6885 * Version 0.1.12 released, 0.1.13 opened.
6881
6886
6882 * Removed option to set auto-quote and auto-paren escapes by
6887 * Removed option to set auto-quote and auto-paren escapes by
6883 user. The chances of breaking valid syntax are just too high. If
6888 user. The chances of breaking valid syntax are just too high. If
6884 someone *really* wants, they can always dig into the code.
6889 someone *really* wants, they can always dig into the code.
6885
6890
6886 * Made prompt separators configurable.
6891 * Made prompt separators configurable.
6887
6892
6888 2001-11-22 Fernando Perez <fperez@colorado.edu>
6893 2001-11-22 Fernando Perez <fperez@colorado.edu>
6889
6894
6890 * Small bugfixes in many places.
6895 * Small bugfixes in many places.
6891
6896
6892 * Removed the MyCompleter class from ipplib. It seemed redundant
6897 * Removed the MyCompleter class from ipplib. It seemed redundant
6893 with the C-p,C-n history search functionality. Less code to
6898 with the C-p,C-n history search functionality. Less code to
6894 maintain.
6899 maintain.
6895
6900
6896 * Moved all the original ipython.py code into ipythonlib.py. Right
6901 * Moved all the original ipython.py code into ipythonlib.py. Right
6897 now it's just one big dump into a function called make_IPython, so
6902 now it's just one big dump into a function called make_IPython, so
6898 no real modularity has been gained. But at least it makes the
6903 no real modularity has been gained. But at least it makes the
6899 wrapper script tiny, and since ipythonlib is a module, it gets
6904 wrapper script tiny, and since ipythonlib is a module, it gets
6900 compiled and startup is much faster.
6905 compiled and startup is much faster.
6901
6906
6902 This is a reasobably 'deep' change, so we should test it for a
6907 This is a reasobably 'deep' change, so we should test it for a
6903 while without messing too much more with the code.
6908 while without messing too much more with the code.
6904
6909
6905 2001-11-21 Fernando Perez <fperez@colorado.edu>
6910 2001-11-21 Fernando Perez <fperez@colorado.edu>
6906
6911
6907 * Version 0.1.11 released, 0.1.12 opened for further work.
6912 * Version 0.1.11 released, 0.1.12 opened for further work.
6908
6913
6909 * Removed dependency on Itpl. It was only needed in one place. It
6914 * Removed dependency on Itpl. It was only needed in one place. It
6910 would be nice if this became part of python, though. It makes life
6915 would be nice if this became part of python, though. It makes life
6911 *a lot* easier in some cases.
6916 *a lot* easier in some cases.
6912
6917
6913 * Simplified the prefilter code a bit. Now all handlers are
6918 * Simplified the prefilter code a bit. Now all handlers are
6914 expected to explicitly return a value (at least a blank string).
6919 expected to explicitly return a value (at least a blank string).
6915
6920
6916 * Heavy edits in ipplib. Removed the help system altogether. Now
6921 * Heavy edits in ipplib. Removed the help system altogether. Now
6917 obj?/?? is used for inspecting objects, a magic @doc prints
6922 obj?/?? is used for inspecting objects, a magic @doc prints
6918 docstrings, and full-blown Python help is accessed via the 'help'
6923 docstrings, and full-blown Python help is accessed via the 'help'
6919 keyword. This cleans up a lot of code (less to maintain) and does
6924 keyword. This cleans up a lot of code (less to maintain) and does
6920 the job. Since 'help' is now a standard Python component, might as
6925 the job. Since 'help' is now a standard Python component, might as
6921 well use it and remove duplicate functionality.
6926 well use it and remove duplicate functionality.
6922
6927
6923 Also removed the option to use ipplib as a standalone program. By
6928 Also removed the option to use ipplib as a standalone program. By
6924 now it's too dependent on other parts of IPython to function alone.
6929 now it's too dependent on other parts of IPython to function alone.
6925
6930
6926 * Fixed bug in genutils.pager. It would crash if the pager was
6931 * Fixed bug in genutils.pager. It would crash if the pager was
6927 exited immediately after opening (broken pipe).
6932 exited immediately after opening (broken pipe).
6928
6933
6929 * Trimmed down the VerboseTB reporting a little. The header is
6934 * Trimmed down the VerboseTB reporting a little. The header is
6930 much shorter now and the repeated exception arguments at the end
6935 much shorter now and the repeated exception arguments at the end
6931 have been removed. For interactive use the old header seemed a bit
6936 have been removed. For interactive use the old header seemed a bit
6932 excessive.
6937 excessive.
6933
6938
6934 * Fixed small bug in output of @whos for variables with multi-word
6939 * Fixed small bug in output of @whos for variables with multi-word
6935 types (only first word was displayed).
6940 types (only first word was displayed).
6936
6941
6937 2001-11-17 Fernando Perez <fperez@colorado.edu>
6942 2001-11-17 Fernando Perez <fperez@colorado.edu>
6938
6943
6939 * Version 0.1.10 released, 0.1.11 opened for further work.
6944 * Version 0.1.10 released, 0.1.11 opened for further work.
6940
6945
6941 * Modified dirs and friends. dirs now *returns* the stack (not
6946 * Modified dirs and friends. dirs now *returns* the stack (not
6942 prints), so one can manipulate it as a variable. Convenient to
6947 prints), so one can manipulate it as a variable. Convenient to
6943 travel along many directories.
6948 travel along many directories.
6944
6949
6945 * Fixed bug in magic_pdef: would only work with functions with
6950 * Fixed bug in magic_pdef: would only work with functions with
6946 arguments with default values.
6951 arguments with default values.
6947
6952
6948 2001-11-14 Fernando Perez <fperez@colorado.edu>
6953 2001-11-14 Fernando Perez <fperez@colorado.edu>
6949
6954
6950 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6955 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6951 example with IPython. Various other minor fixes and cleanups.
6956 example with IPython. Various other minor fixes and cleanups.
6952
6957
6953 * Version 0.1.9 released, 0.1.10 opened for further work.
6958 * Version 0.1.9 released, 0.1.10 opened for further work.
6954
6959
6955 * Added sys.path to the list of directories searched in the
6960 * Added sys.path to the list of directories searched in the
6956 execfile= option. It used to be the current directory and the
6961 execfile= option. It used to be the current directory and the
6957 user's IPYTHONDIR only.
6962 user's IPYTHONDIR only.
6958
6963
6959 2001-11-13 Fernando Perez <fperez@colorado.edu>
6964 2001-11-13 Fernando Perez <fperez@colorado.edu>
6960
6965
6961 * Reinstated the raw_input/prefilter separation that Janko had
6966 * Reinstated the raw_input/prefilter separation that Janko had
6962 initially. This gives a more convenient setup for extending the
6967 initially. This gives a more convenient setup for extending the
6963 pre-processor from the outside: raw_input always gets a string,
6968 pre-processor from the outside: raw_input always gets a string,
6964 and prefilter has to process it. We can then redefine prefilter
6969 and prefilter has to process it. We can then redefine prefilter
6965 from the outside and implement extensions for special
6970 from the outside and implement extensions for special
6966 purposes.
6971 purposes.
6967
6972
6968 Today I got one for inputting PhysicalQuantity objects
6973 Today I got one for inputting PhysicalQuantity objects
6969 (from Scientific) without needing any function calls at
6974 (from Scientific) without needing any function calls at
6970 all. Extremely convenient, and it's all done as a user-level
6975 all. Extremely convenient, and it's all done as a user-level
6971 extension (no IPython code was touched). Now instead of:
6976 extension (no IPython code was touched). Now instead of:
6972 a = PhysicalQuantity(4.2,'m/s**2')
6977 a = PhysicalQuantity(4.2,'m/s**2')
6973 one can simply say
6978 one can simply say
6974 a = 4.2 m/s**2
6979 a = 4.2 m/s**2
6975 or even
6980 or even
6976 a = 4.2 m/s^2
6981 a = 4.2 m/s^2
6977
6982
6978 I use this, but it's also a proof of concept: IPython really is
6983 I use this, but it's also a proof of concept: IPython really is
6979 fully user-extensible, even at the level of the parsing of the
6984 fully user-extensible, even at the level of the parsing of the
6980 command line. It's not trivial, but it's perfectly doable.
6985 command line. It's not trivial, but it's perfectly doable.
6981
6986
6982 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6987 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6983 the problem of modules being loaded in the inverse order in which
6988 the problem of modules being loaded in the inverse order in which
6984 they were defined in
6989 they were defined in
6985
6990
6986 * Version 0.1.8 released, 0.1.9 opened for further work.
6991 * Version 0.1.8 released, 0.1.9 opened for further work.
6987
6992
6988 * Added magics pdef, source and file. They respectively show the
6993 * Added magics pdef, source and file. They respectively show the
6989 definition line ('prototype' in C), source code and full python
6994 definition line ('prototype' in C), source code and full python
6990 file for any callable object. The object inspector oinfo uses
6995 file for any callable object. The object inspector oinfo uses
6991 these to show the same information.
6996 these to show the same information.
6992
6997
6993 * Version 0.1.7 released, 0.1.8 opened for further work.
6998 * Version 0.1.7 released, 0.1.8 opened for further work.
6994
6999
6995 * Separated all the magic functions into a class called Magic. The
7000 * Separated all the magic functions into a class called Magic. The
6996 InteractiveShell class was becoming too big for Xemacs to handle
7001 InteractiveShell class was becoming too big for Xemacs to handle
6997 (de-indenting a line would lock it up for 10 seconds while it
7002 (de-indenting a line would lock it up for 10 seconds while it
6998 backtracked on the whole class!)
7003 backtracked on the whole class!)
6999
7004
7000 FIXME: didn't work. It can be done, but right now namespaces are
7005 FIXME: didn't work. It can be done, but right now namespaces are
7001 all messed up. Do it later (reverted it for now, so at least
7006 all messed up. Do it later (reverted it for now, so at least
7002 everything works as before).
7007 everything works as before).
7003
7008
7004 * Got the object introspection system (magic_oinfo) working! I
7009 * Got the object introspection system (magic_oinfo) working! I
7005 think this is pretty much ready for release to Janko, so he can
7010 think this is pretty much ready for release to Janko, so he can
7006 test it for a while and then announce it. Pretty much 100% of what
7011 test it for a while and then announce it. Pretty much 100% of what
7007 I wanted for the 'phase 1' release is ready. Happy, tired.
7012 I wanted for the 'phase 1' release is ready. Happy, tired.
7008
7013
7009 2001-11-12 Fernando Perez <fperez@colorado.edu>
7014 2001-11-12 Fernando Perez <fperez@colorado.edu>
7010
7015
7011 * Version 0.1.6 released, 0.1.7 opened for further work.
7016 * Version 0.1.6 released, 0.1.7 opened for further work.
7012
7017
7013 * Fixed bug in printing: it used to test for truth before
7018 * Fixed bug in printing: it used to test for truth before
7014 printing, so 0 wouldn't print. Now checks for None.
7019 printing, so 0 wouldn't print. Now checks for None.
7015
7020
7016 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
7021 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
7017 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
7022 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
7018 reaches by hand into the outputcache. Think of a better way to do
7023 reaches by hand into the outputcache. Think of a better way to do
7019 this later.
7024 this later.
7020
7025
7021 * Various small fixes thanks to Nathan's comments.
7026 * Various small fixes thanks to Nathan's comments.
7022
7027
7023 * Changed magic_pprint to magic_Pprint. This way it doesn't
7028 * Changed magic_pprint to magic_Pprint. This way it doesn't
7024 collide with pprint() and the name is consistent with the command
7029 collide with pprint() and the name is consistent with the command
7025 line option.
7030 line option.
7026
7031
7027 * Changed prompt counter behavior to be fully like
7032 * Changed prompt counter behavior to be fully like
7028 Mathematica's. That is, even input that doesn't return a result
7033 Mathematica's. That is, even input that doesn't return a result
7029 raises the prompt counter. The old behavior was kind of confusing
7034 raises the prompt counter. The old behavior was kind of confusing
7030 (getting the same prompt number several times if the operation
7035 (getting the same prompt number several times if the operation
7031 didn't return a result).
7036 didn't return a result).
7032
7037
7033 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
7038 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
7034
7039
7035 * Fixed -Classic mode (wasn't working anymore).
7040 * Fixed -Classic mode (wasn't working anymore).
7036
7041
7037 * Added colored prompts using Nathan's new code. Colors are
7042 * Added colored prompts using Nathan's new code. Colors are
7038 currently hardwired, they can be user-configurable. For
7043 currently hardwired, they can be user-configurable. For
7039 developers, they can be chosen in file ipythonlib.py, at the
7044 developers, they can be chosen in file ipythonlib.py, at the
7040 beginning of the CachedOutput class def.
7045 beginning of the CachedOutput class def.
7041
7046
7042 2001-11-11 Fernando Perez <fperez@colorado.edu>
7047 2001-11-11 Fernando Perez <fperez@colorado.edu>
7043
7048
7044 * Version 0.1.5 released, 0.1.6 opened for further work.
7049 * Version 0.1.5 released, 0.1.6 opened for further work.
7045
7050
7046 * Changed magic_env to *return* the environment as a dict (not to
7051 * Changed magic_env to *return* the environment as a dict (not to
7047 print it). This way it prints, but it can also be processed.
7052 print it). This way it prints, but it can also be processed.
7048
7053
7049 * Added Verbose exception reporting to interactive
7054 * Added Verbose exception reporting to interactive
7050 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
7055 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
7051 traceback. Had to make some changes to the ultraTB file. This is
7056 traceback. Had to make some changes to the ultraTB file. This is
7052 probably the last 'big' thing in my mental todo list. This ties
7057 probably the last 'big' thing in my mental todo list. This ties
7053 in with the next entry:
7058 in with the next entry:
7054
7059
7055 * Changed -Xi and -Xf to a single -xmode option. Now all the user
7060 * Changed -Xi and -Xf to a single -xmode option. Now all the user
7056 has to specify is Plain, Color or Verbose for all exception
7061 has to specify is Plain, Color or Verbose for all exception
7057 handling.
7062 handling.
7058
7063
7059 * Removed ShellServices option. All this can really be done via
7064 * Removed ShellServices option. All this can really be done via
7060 the magic system. It's easier to extend, cleaner and has automatic
7065 the magic system. It's easier to extend, cleaner and has automatic
7061 namespace protection and documentation.
7066 namespace protection and documentation.
7062
7067
7063 2001-11-09 Fernando Perez <fperez@colorado.edu>
7068 2001-11-09 Fernando Perez <fperez@colorado.edu>
7064
7069
7065 * Fixed bug in output cache flushing (missing parameter to
7070 * Fixed bug in output cache flushing (missing parameter to
7066 __init__). Other small bugs fixed (found using pychecker).
7071 __init__). Other small bugs fixed (found using pychecker).
7067
7072
7068 * Version 0.1.4 opened for bugfixing.
7073 * Version 0.1.4 opened for bugfixing.
7069
7074
7070 2001-11-07 Fernando Perez <fperez@colorado.edu>
7075 2001-11-07 Fernando Perez <fperez@colorado.edu>
7071
7076
7072 * Version 0.1.3 released, mainly because of the raw_input bug.
7077 * Version 0.1.3 released, mainly because of the raw_input bug.
7073
7078
7074 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
7079 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
7075 and when testing for whether things were callable, a call could
7080 and when testing for whether things were callable, a call could
7076 actually be made to certain functions. They would get called again
7081 actually be made to certain functions. They would get called again
7077 once 'really' executed, with a resulting double call. A disaster
7082 once 'really' executed, with a resulting double call. A disaster
7078 in many cases (list.reverse() would never work!).
7083 in many cases (list.reverse() would never work!).
7079
7084
7080 * Removed prefilter() function, moved its code to raw_input (which
7085 * Removed prefilter() function, moved its code to raw_input (which
7081 after all was just a near-empty caller for prefilter). This saves
7086 after all was just a near-empty caller for prefilter). This saves
7082 a function call on every prompt, and simplifies the class a tiny bit.
7087 a function call on every prompt, and simplifies the class a tiny bit.
7083
7088
7084 * Fix _ip to __ip name in magic example file.
7089 * Fix _ip to __ip name in magic example file.
7085
7090
7086 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
7091 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
7087 work with non-gnu versions of tar.
7092 work with non-gnu versions of tar.
7088
7093
7089 2001-11-06 Fernando Perez <fperez@colorado.edu>
7094 2001-11-06 Fernando Perez <fperez@colorado.edu>
7090
7095
7091 * Version 0.1.2. Just to keep track of the recent changes.
7096 * Version 0.1.2. Just to keep track of the recent changes.
7092
7097
7093 * Fixed nasty bug in output prompt routine. It used to check 'if
7098 * Fixed nasty bug in output prompt routine. It used to check 'if
7094 arg != None...'. Problem is, this fails if arg implements a
7099 arg != None...'. Problem is, this fails if arg implements a
7095 special comparison (__cmp__) which disallows comparing to
7100 special comparison (__cmp__) which disallows comparing to
7096 None. Found it when trying to use the PhysicalQuantity module from
7101 None. Found it when trying to use the PhysicalQuantity module from
7097 ScientificPython.
7102 ScientificPython.
7098
7103
7099 2001-11-05 Fernando Perez <fperez@colorado.edu>
7104 2001-11-05 Fernando Perez <fperez@colorado.edu>
7100
7105
7101 * Also added dirs. Now the pushd/popd/dirs family functions
7106 * Also added dirs. Now the pushd/popd/dirs family functions
7102 basically like the shell, with the added convenience of going home
7107 basically like the shell, with the added convenience of going home
7103 when called with no args.
7108 when called with no args.
7104
7109
7105 * pushd/popd slightly modified to mimic shell behavior more
7110 * pushd/popd slightly modified to mimic shell behavior more
7106 closely.
7111 closely.
7107
7112
7108 * Added env,pushd,popd from ShellServices as magic functions. I
7113 * Added env,pushd,popd from ShellServices as magic functions. I
7109 think the cleanest will be to port all desired functions from
7114 think the cleanest will be to port all desired functions from
7110 ShellServices as magics and remove ShellServices altogether. This
7115 ShellServices as magics and remove ShellServices altogether. This
7111 will provide a single, clean way of adding functionality
7116 will provide a single, clean way of adding functionality
7112 (shell-type or otherwise) to IP.
7117 (shell-type or otherwise) to IP.
7113
7118
7114 2001-11-04 Fernando Perez <fperez@colorado.edu>
7119 2001-11-04 Fernando Perez <fperez@colorado.edu>
7115
7120
7116 * Added .ipython/ directory to sys.path. This way users can keep
7121 * Added .ipython/ directory to sys.path. This way users can keep
7117 customizations there and access them via import.
7122 customizations there and access them via import.
7118
7123
7119 2001-11-03 Fernando Perez <fperez@colorado.edu>
7124 2001-11-03 Fernando Perez <fperez@colorado.edu>
7120
7125
7121 * Opened version 0.1.1 for new changes.
7126 * Opened version 0.1.1 for new changes.
7122
7127
7123 * Changed version number to 0.1.0: first 'public' release, sent to
7128 * Changed version number to 0.1.0: first 'public' release, sent to
7124 Nathan and Janko.
7129 Nathan and Janko.
7125
7130
7126 * Lots of small fixes and tweaks.
7131 * Lots of small fixes and tweaks.
7127
7132
7128 * Minor changes to whos format. Now strings are shown, snipped if
7133 * Minor changes to whos format. Now strings are shown, snipped if
7129 too long.
7134 too long.
7130
7135
7131 * Changed ShellServices to work on __main__ so they show up in @who
7136 * Changed ShellServices to work on __main__ so they show up in @who
7132
7137
7133 * Help also works with ? at the end of a line:
7138 * Help also works with ? at the end of a line:
7134 ?sin and sin?
7139 ?sin and sin?
7135 both produce the same effect. This is nice, as often I use the
7140 both produce the same effect. This is nice, as often I use the
7136 tab-complete to find the name of a method, but I used to then have
7141 tab-complete to find the name of a method, but I used to then have
7137 to go to the beginning of the line to put a ? if I wanted more
7142 to go to the beginning of the line to put a ? if I wanted more
7138 info. Now I can just add the ? and hit return. Convenient.
7143 info. Now I can just add the ? and hit return. Convenient.
7139
7144
7140 2001-11-02 Fernando Perez <fperez@colorado.edu>
7145 2001-11-02 Fernando Perez <fperez@colorado.edu>
7141
7146
7142 * Python version check (>=2.1) added.
7147 * Python version check (>=2.1) added.
7143
7148
7144 * Added LazyPython documentation. At this point the docs are quite
7149 * Added LazyPython documentation. At this point the docs are quite
7145 a mess. A cleanup is in order.
7150 a mess. A cleanup is in order.
7146
7151
7147 * Auto-installer created. For some bizarre reason, the zipfiles
7152 * Auto-installer created. For some bizarre reason, the zipfiles
7148 module isn't working on my system. So I made a tar version
7153 module isn't working on my system. So I made a tar version
7149 (hopefully the command line options in various systems won't kill
7154 (hopefully the command line options in various systems won't kill
7150 me).
7155 me).
7151
7156
7152 * Fixes to Struct in genutils. Now all dictionary-like methods are
7157 * Fixes to Struct in genutils. Now all dictionary-like methods are
7153 protected (reasonably).
7158 protected (reasonably).
7154
7159
7155 * Added pager function to genutils and changed ? to print usage
7160 * Added pager function to genutils and changed ? to print usage
7156 note through it (it was too long).
7161 note through it (it was too long).
7157
7162
7158 * Added the LazyPython functionality. Works great! I changed the
7163 * Added the LazyPython functionality. Works great! I changed the
7159 auto-quote escape to ';', it's on home row and next to '. But
7164 auto-quote escape to ';', it's on home row and next to '. But
7160 both auto-quote and auto-paren (still /) escapes are command-line
7165 both auto-quote and auto-paren (still /) escapes are command-line
7161 parameters.
7166 parameters.
7162
7167
7163
7168
7164 2001-11-01 Fernando Perez <fperez@colorado.edu>
7169 2001-11-01 Fernando Perez <fperez@colorado.edu>
7165
7170
7166 * Version changed to 0.0.7. Fairly large change: configuration now
7171 * Version changed to 0.0.7. Fairly large change: configuration now
7167 is all stored in a directory, by default .ipython. There, all
7172 is all stored in a directory, by default .ipython. There, all
7168 config files have normal looking names (not .names)
7173 config files have normal looking names (not .names)
7169
7174
7170 * Version 0.0.6 Released first to Lucas and Archie as a test
7175 * Version 0.0.6 Released first to Lucas and Archie as a test
7171 run. Since it's the first 'semi-public' release, change version to
7176 run. Since it's the first 'semi-public' release, change version to
7172 > 0.0.6 for any changes now.
7177 > 0.0.6 for any changes now.
7173
7178
7174 * Stuff I had put in the ipplib.py changelog:
7179 * Stuff I had put in the ipplib.py changelog:
7175
7180
7176 Changes to InteractiveShell:
7181 Changes to InteractiveShell:
7177
7182
7178 - Made the usage message a parameter.
7183 - Made the usage message a parameter.
7179
7184
7180 - Require the name of the shell variable to be given. It's a bit
7185 - Require the name of the shell variable to be given. It's a bit
7181 of a hack, but allows the name 'shell' not to be hardwired in the
7186 of a hack, but allows the name 'shell' not to be hardwired in the
7182 magic (@) handler, which is problematic b/c it requires
7187 magic (@) handler, which is problematic b/c it requires
7183 polluting the global namespace with 'shell'. This in turn is
7188 polluting the global namespace with 'shell'. This in turn is
7184 fragile: if a user redefines a variable called shell, things
7189 fragile: if a user redefines a variable called shell, things
7185 break.
7190 break.
7186
7191
7187 - magic @: all functions available through @ need to be defined
7192 - magic @: all functions available through @ need to be defined
7188 as magic_<name>, even though they can be called simply as
7193 as magic_<name>, even though they can be called simply as
7189 @<name>. This allows the special command @magic to gather
7194 @<name>. This allows the special command @magic to gather
7190 information automatically about all existing magic functions,
7195 information automatically about all existing magic functions,
7191 even if they are run-time user extensions, by parsing the shell
7196 even if they are run-time user extensions, by parsing the shell
7192 instance __dict__ looking for special magic_ names.
7197 instance __dict__ looking for special magic_ names.
7193
7198
7194 - mainloop: added *two* local namespace parameters. This allows
7199 - mainloop: added *two* local namespace parameters. This allows
7195 the class to differentiate between parameters which were there
7200 the class to differentiate between parameters which were there
7196 before and after command line initialization was processed. This
7201 before and after command line initialization was processed. This
7197 way, later @who can show things loaded at startup by the
7202 way, later @who can show things loaded at startup by the
7198 user. This trick was necessary to make session saving/reloading
7203 user. This trick was necessary to make session saving/reloading
7199 really work: ideally after saving/exiting/reloading a session,
7204 really work: ideally after saving/exiting/reloading a session,
7200 *everything* should look the same, including the output of @who. I
7205 *everything* should look the same, including the output of @who. I
7201 was only able to make this work with this double namespace
7206 was only able to make this work with this double namespace
7202 trick.
7207 trick.
7203
7208
7204 - added a header to the logfile which allows (almost) full
7209 - added a header to the logfile which allows (almost) full
7205 session restoring.
7210 session restoring.
7206
7211
7207 - prepend lines beginning with @ or !, with a and log
7212 - prepend lines beginning with @ or !, with a and log
7208 them. Why? !lines: may be useful to know what you did @lines:
7213 them. Why? !lines: may be useful to know what you did @lines:
7209 they may affect session state. So when restoring a session, at
7214 they may affect session state. So when restoring a session, at
7210 least inform the user of their presence. I couldn't quite get
7215 least inform the user of their presence. I couldn't quite get
7211 them to properly re-execute, but at least the user is warned.
7216 them to properly re-execute, but at least the user is warned.
7212
7217
7213 * Started ChangeLog.
7218 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now