##// END OF EJS Templates
%clear magic added. fix CachedOutput.flush to flush data properly
vivainio -
Show More
@@ -0,0 +1,38 b''
1 # -*- coding: utf-8 -*-
2 """ IPython extension: add %clear magic """
3
4 import IPython.ipapi
5 ip = IPython.ipapi.get()
6
7 def clear_list(l):
8 while l:
9 l.pop()
10
11 def clear_f(self,arg):
12 """ Clear various data (e.g. stored history data)
13
14 %clear out - clear output history
15 %clear in - clear input history
16 """
17
18 api = self.getapi()
19 for target in arg.split():
20 if target == 'out':
21 print "Flushing output cache (%d entries)" % len(api.user_ns()['_oh'])
22 self.outputcache.flush()
23 elif target == 'in':
24 print "Flushing input history"
25 from IPython import iplib
26 clear_list(self.input_hist)
27 clear_list(self.input_hist_raw)
28 for n in range(1,self.outputcache.prompt_count + 1):
29 key = '_i'+`n`
30 try:
31 del self.user_ns[key]
32 except: pass
33
34 ip.expose_magic("clear",clear_f)
35
36
37
38
@@ -1,24 +1,24 b''
1 """ System wide configuration file for IPython.
1 """ System wide configuration file for IPython.
2
2
3 This will be imported by ipython for all users.
3 This will be imported by ipython for all users.
4
4
5 After this ipy_user_conf.py is imported, user specific configuration
5 After this ipy_user_conf.py is imported, user specific configuration
6 should reside there.
6 should reside there.
7
7
8 """
8 """
9
9
10 import IPython.ipapi
10 import IPython.ipapi
11 ip = IPython.ipapi.get()
11 ip = IPython.ipapi.get()
12
12
13 # add system wide configuration information, import extensions etc. here.
13 # add system wide configuration information, import extensions etc. here.
14 # nothing here is essential
14 # nothing here is essential
15
15
16 import sys
16 import sys
17
17
18 import ext_rehashdir # %rehashdir magic
18 import ext_rehashdir # %rehashdir magic
19 import ext_rescapture # var = !ls and var = %magic
19 import ext_rescapture # var = !ls and var = %magic
20 import pspersistence # %store magic
20 import pspersistence # %store magic
21
21 import clearcmd # %clear
22 # Basic readline config
22 # Basic readline config
23
23
24 o = ip.options() No newline at end of file
24 o = ip.options()
@@ -1,584 +1,588 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 1076 2006-01-24 17:27:05Z vivainio $"""
5 $Id: Prompts.py 1261 2006-04-11 14:37:02Z vivainio $"""
6
6
7 #*****************************************************************************
7 #*****************************************************************************
8 # Copyright (C) 2001-2006 Fernando Perez <fperez@colorado.edu>
8 # Copyright (C) 2001-2006 Fernando Perez <fperez@colorado.edu>
9 #
9 #
10 # Distributed under the terms of the BSD License. The full license is in
10 # Distributed under the terms of the BSD License. The full license is in
11 # the file COPYING, distributed as part of this software.
11 # the file COPYING, distributed as part of this software.
12 #*****************************************************************************
12 #*****************************************************************************
13
13
14 from IPython import Release
14 from IPython import Release
15 __author__ = '%s <%s>' % Release.authors['Fernando']
15 __author__ = '%s <%s>' % Release.authors['Fernando']
16 __license__ = Release.license
16 __license__ = Release.license
17 __version__ = Release.version
17 __version__ = Release.version
18
18
19 #****************************************************************************
19 #****************************************************************************
20 # Required modules
20 # Required modules
21 import __builtin__
21 import __builtin__
22 import os
22 import os
23 import socket
23 import socket
24 import sys
24 import sys
25 import time
25 import time
26 from pprint import pprint,pformat
26 from pprint import pprint,pformat
27
27
28 # IPython's own
28 # IPython's own
29 from IPython import ColorANSI
29 from IPython import ColorANSI
30 from IPython.Itpl import ItplNS
30 from IPython.Itpl import ItplNS
31 from IPython.ipstruct import Struct
31 from IPython.ipstruct import Struct
32 from IPython.macro import Macro
32 from IPython.macro import Macro
33 from IPython.genutils import *
33 from IPython.genutils import *
34
34
35 #****************************************************************************
35 #****************************************************************************
36 #Color schemes for Prompts.
36 #Color schemes for Prompts.
37
37
38 PromptColors = ColorANSI.ColorSchemeTable()
38 PromptColors = ColorANSI.ColorSchemeTable()
39 InputColors = ColorANSI.InputTermColors # just a shorthand
39 InputColors = ColorANSI.InputTermColors # just a shorthand
40 Colors = ColorANSI.TermColors # just a shorthand
40 Colors = ColorANSI.TermColors # just a shorthand
41
41
42 PromptColors.add_scheme(ColorANSI.ColorScheme(
42 PromptColors.add_scheme(ColorANSI.ColorScheme(
43 'NoColor',
43 'NoColor',
44 in_prompt = InputColors.NoColor, # Input prompt
44 in_prompt = InputColors.NoColor, # Input prompt
45 in_number = InputColors.NoColor, # Input prompt number
45 in_number = InputColors.NoColor, # Input prompt number
46 in_prompt2 = InputColors.NoColor, # Continuation prompt
46 in_prompt2 = InputColors.NoColor, # Continuation prompt
47 in_normal = InputColors.NoColor, # color off (usu. Colors.Normal)
47 in_normal = InputColors.NoColor, # color off (usu. Colors.Normal)
48
48
49 out_prompt = Colors.NoColor, # Output prompt
49 out_prompt = Colors.NoColor, # Output prompt
50 out_number = Colors.NoColor, # Output prompt number
50 out_number = Colors.NoColor, # Output prompt number
51
51
52 normal = Colors.NoColor # color off (usu. Colors.Normal)
52 normal = Colors.NoColor # color off (usu. Colors.Normal)
53 ))
53 ))
54
54
55 # make some schemes as instances so we can copy them for modification easily:
55 # make some schemes as instances so we can copy them for modification easily:
56 __PColLinux = ColorANSI.ColorScheme(
56 __PColLinux = ColorANSI.ColorScheme(
57 'Linux',
57 'Linux',
58 in_prompt = InputColors.Green,
58 in_prompt = InputColors.Green,
59 in_number = InputColors.LightGreen,
59 in_number = InputColors.LightGreen,
60 in_prompt2 = InputColors.Green,
60 in_prompt2 = InputColors.Green,
61 in_normal = InputColors.Normal, # color off (usu. Colors.Normal)
61 in_normal = InputColors.Normal, # color off (usu. Colors.Normal)
62
62
63 out_prompt = Colors.Red,
63 out_prompt = Colors.Red,
64 out_number = Colors.LightRed,
64 out_number = Colors.LightRed,
65
65
66 normal = Colors.Normal
66 normal = Colors.Normal
67 )
67 )
68 # Don't forget to enter it into the table!
68 # Don't forget to enter it into the table!
69 PromptColors.add_scheme(__PColLinux)
69 PromptColors.add_scheme(__PColLinux)
70
70
71 # Slightly modified Linux for light backgrounds
71 # Slightly modified Linux for light backgrounds
72 __PColLightBG = __PColLinux.copy('LightBG')
72 __PColLightBG = __PColLinux.copy('LightBG')
73
73
74 __PColLightBG.colors.update(
74 __PColLightBG.colors.update(
75 in_prompt = InputColors.Blue,
75 in_prompt = InputColors.Blue,
76 in_number = InputColors.LightBlue,
76 in_number = InputColors.LightBlue,
77 in_prompt2 = InputColors.Blue
77 in_prompt2 = InputColors.Blue
78 )
78 )
79 PromptColors.add_scheme(__PColLightBG)
79 PromptColors.add_scheme(__PColLightBG)
80
80
81 del Colors,InputColors
81 del Colors,InputColors
82
82
83 #-----------------------------------------------------------------------------
83 #-----------------------------------------------------------------------------
84 def multiple_replace(dict, text):
84 def multiple_replace(dict, text):
85 """ Replace in 'text' all occurences of any key in the given
85 """ Replace in 'text' all occurences of any key in the given
86 dictionary by its corresponding value. Returns the new string."""
86 dictionary by its corresponding value. Returns the new string."""
87
87
88 # Function by Xavier Defrang, originally found at:
88 # Function by Xavier Defrang, originally found at:
89 # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/81330
89 # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/81330
90
90
91 # Create a regular expression from the dictionary keys
91 # Create a regular expression from the dictionary keys
92 regex = re.compile("(%s)" % "|".join(map(re.escape, dict.keys())))
92 regex = re.compile("(%s)" % "|".join(map(re.escape, dict.keys())))
93 # For each match, look-up corresponding value in dictionary
93 # For each match, look-up corresponding value in dictionary
94 return regex.sub(lambda mo: dict[mo.string[mo.start():mo.end()]], text)
94 return regex.sub(lambda mo: dict[mo.string[mo.start():mo.end()]], text)
95
95
96 #-----------------------------------------------------------------------------
96 #-----------------------------------------------------------------------------
97 # Special characters that can be used in prompt templates, mainly bash-like
97 # Special characters that can be used in prompt templates, mainly bash-like
98
98
99 # If $HOME isn't defined (Windows), make it an absurd string so that it can
99 # If $HOME isn't defined (Windows), make it an absurd string so that it can
100 # never be expanded out into '~'. Basically anything which can never be a
100 # never be expanded out into '~'. Basically anything which can never be a
101 # reasonable directory name will do, we just want the $HOME -> '~' operation
101 # reasonable directory name will do, we just want the $HOME -> '~' operation
102 # to become a no-op. We pre-compute $HOME here so it's not done on every
102 # to become a no-op. We pre-compute $HOME here so it's not done on every
103 # prompt call.
103 # prompt call.
104
104
105 # FIXME:
105 # FIXME:
106
106
107 # - This should be turned into a class which does proper namespace management,
107 # - This should be turned into a class which does proper namespace management,
108 # since the prompt specials need to be evaluated in a certain namespace.
108 # since the prompt specials need to be evaluated in a certain namespace.
109 # Currently it's just globals, which need to be managed manually by code
109 # Currently it's just globals, which need to be managed manually by code
110 # below.
110 # below.
111
111
112 # - I also need to split up the color schemes from the prompt specials
112 # - I also need to split up the color schemes from the prompt specials
113 # somehow. I don't have a clean design for that quite yet.
113 # somehow. I don't have a clean design for that quite yet.
114
114
115 HOME = os.environ.get("HOME","//////:::::ZZZZZ,,,~~~")
115 HOME = os.environ.get("HOME","//////:::::ZZZZZ,,,~~~")
116
116
117 # We precompute a few more strings here for the prompt_specials, which are
117 # We precompute a few more strings here for the prompt_specials, which are
118 # fixed once ipython starts. This reduces the runtime overhead of computing
118 # fixed once ipython starts. This reduces the runtime overhead of computing
119 # prompt strings.
119 # prompt strings.
120 USER = os.environ.get("USER")
120 USER = os.environ.get("USER")
121 HOSTNAME = socket.gethostname()
121 HOSTNAME = socket.gethostname()
122 HOSTNAME_SHORT = HOSTNAME.split(".")[0]
122 HOSTNAME_SHORT = HOSTNAME.split(".")[0]
123 ROOT_SYMBOL = "$#"[os.name=='nt' or os.getuid()==0]
123 ROOT_SYMBOL = "$#"[os.name=='nt' or os.getuid()==0]
124
124
125 prompt_specials_color = {
125 prompt_specials_color = {
126 # Prompt/history count
126 # Prompt/history count
127 '%n' : '${self.col_num}' '${self.cache.prompt_count}' '${self.col_p}',
127 '%n' : '${self.col_num}' '${self.cache.prompt_count}' '${self.col_p}',
128 '\\#': '${self.col_num}' '${self.cache.prompt_count}' '${self.col_p}',
128 '\\#': '${self.col_num}' '${self.cache.prompt_count}' '${self.col_p}',
129 # Prompt/history count, with the actual digits replaced by dots. Used
129 # Prompt/history count, with the actual digits replaced by dots. Used
130 # mainly in continuation prompts (prompt_in2)
130 # mainly in continuation prompts (prompt_in2)
131 '\\D': '${"."*len(str(self.cache.prompt_count))}',
131 '\\D': '${"."*len(str(self.cache.prompt_count))}',
132 # Current working directory
132 # Current working directory
133 '\\w': '${os.getcwd()}',
133 '\\w': '${os.getcwd()}',
134 # Current time
134 # Current time
135 '\\t' : '${time.strftime("%H:%M:%S")}',
135 '\\t' : '${time.strftime("%H:%M:%S")}',
136 # Basename of current working directory.
136 # Basename of current working directory.
137 # (use os.sep to make this portable across OSes)
137 # (use os.sep to make this portable across OSes)
138 '\\W' : '${os.getcwd().split("%s")[-1]}' % os.sep,
138 '\\W' : '${os.getcwd().split("%s")[-1]}' % os.sep,
139 # These X<N> are an extension to the normal bash prompts. They return
139 # These X<N> are an extension to the normal bash prompts. They return
140 # N terms of the path, after replacing $HOME with '~'
140 # N terms of the path, after replacing $HOME with '~'
141 '\\X0': '${os.getcwd().replace("%s","~")}' % HOME,
141 '\\X0': '${os.getcwd().replace("%s","~")}' % HOME,
142 '\\X1': '${self.cwd_filt(1)}',
142 '\\X1': '${self.cwd_filt(1)}',
143 '\\X2': '${self.cwd_filt(2)}',
143 '\\X2': '${self.cwd_filt(2)}',
144 '\\X3': '${self.cwd_filt(3)}',
144 '\\X3': '${self.cwd_filt(3)}',
145 '\\X4': '${self.cwd_filt(4)}',
145 '\\X4': '${self.cwd_filt(4)}',
146 '\\X5': '${self.cwd_filt(5)}',
146 '\\X5': '${self.cwd_filt(5)}',
147 # Y<N> are similar to X<N>, but they show '~' if it's the directory
147 # Y<N> are similar to X<N>, but they show '~' if it's the directory
148 # N+1 in the list. Somewhat like %cN in tcsh.
148 # N+1 in the list. Somewhat like %cN in tcsh.
149 '\\Y0': '${self.cwd_filt2(0)}',
149 '\\Y0': '${self.cwd_filt2(0)}',
150 '\\Y1': '${self.cwd_filt2(1)}',
150 '\\Y1': '${self.cwd_filt2(1)}',
151 '\\Y2': '${self.cwd_filt2(2)}',
151 '\\Y2': '${self.cwd_filt2(2)}',
152 '\\Y3': '${self.cwd_filt2(3)}',
152 '\\Y3': '${self.cwd_filt2(3)}',
153 '\\Y4': '${self.cwd_filt2(4)}',
153 '\\Y4': '${self.cwd_filt2(4)}',
154 '\\Y5': '${self.cwd_filt2(5)}',
154 '\\Y5': '${self.cwd_filt2(5)}',
155 # Hostname up to first .
155 # Hostname up to first .
156 '\\h': HOSTNAME_SHORT,
156 '\\h': HOSTNAME_SHORT,
157 # Full hostname
157 # Full hostname
158 '\\H': HOSTNAME,
158 '\\H': HOSTNAME,
159 # Username of current user
159 # Username of current user
160 '\\u': USER,
160 '\\u': USER,
161 # Escaped '\'
161 # Escaped '\'
162 '\\\\': '\\',
162 '\\\\': '\\',
163 # Newline
163 # Newline
164 '\\n': '\n',
164 '\\n': '\n',
165 # Carriage return
165 # Carriage return
166 '\\r': '\r',
166 '\\r': '\r',
167 # Release version
167 # Release version
168 '\\v': __version__,
168 '\\v': __version__,
169 # Root symbol ($ or #)
169 # Root symbol ($ or #)
170 '\\$': ROOT_SYMBOL,
170 '\\$': ROOT_SYMBOL,
171 }
171 }
172
172
173 # A copy of the prompt_specials dictionary but with all color escapes removed,
173 # A copy of the prompt_specials dictionary but with all color escapes removed,
174 # so we can correctly compute the prompt length for the auto_rewrite method.
174 # so we can correctly compute the prompt length for the auto_rewrite method.
175 prompt_specials_nocolor = prompt_specials_color.copy()
175 prompt_specials_nocolor = prompt_specials_color.copy()
176 prompt_specials_nocolor['%n'] = '${self.cache.prompt_count}'
176 prompt_specials_nocolor['%n'] = '${self.cache.prompt_count}'
177 prompt_specials_nocolor['\\#'] = '${self.cache.prompt_count}'
177 prompt_specials_nocolor['\\#'] = '${self.cache.prompt_count}'
178
178
179 # Add in all the InputTermColors color escapes as valid prompt characters.
179 # Add in all the InputTermColors color escapes as valid prompt characters.
180 # They all get added as \\C_COLORNAME, so that we don't have any conflicts
180 # They all get added as \\C_COLORNAME, so that we don't have any conflicts
181 # with a color name which may begin with a letter used by any other of the
181 # with a color name which may begin with a letter used by any other of the
182 # allowed specials. This of course means that \\C will never be allowed for
182 # allowed specials. This of course means that \\C will never be allowed for
183 # anything else.
183 # anything else.
184 input_colors = ColorANSI.InputTermColors
184 input_colors = ColorANSI.InputTermColors
185 for _color in dir(input_colors):
185 for _color in dir(input_colors):
186 if _color[0] != '_':
186 if _color[0] != '_':
187 c_name = '\\C_'+_color
187 c_name = '\\C_'+_color
188 prompt_specials_color[c_name] = getattr(input_colors,_color)
188 prompt_specials_color[c_name] = getattr(input_colors,_color)
189 prompt_specials_nocolor[c_name] = ''
189 prompt_specials_nocolor[c_name] = ''
190
190
191 # we default to no color for safety. Note that prompt_specials is a global
191 # we default to no color for safety. Note that prompt_specials is a global
192 # variable used by all prompt objects.
192 # variable used by all prompt objects.
193 prompt_specials = prompt_specials_nocolor
193 prompt_specials = prompt_specials_nocolor
194
194
195 #-----------------------------------------------------------------------------
195 #-----------------------------------------------------------------------------
196 def str_safe(arg):
196 def str_safe(arg):
197 """Convert to a string, without ever raising an exception.
197 """Convert to a string, without ever raising an exception.
198
198
199 If str(arg) fails, <ERROR: ... > is returned, where ... is the exception
199 If str(arg) fails, <ERROR: ... > is returned, where ... is the exception
200 error message."""
200 error message."""
201
201
202 try:
202 try:
203 out = str(arg)
203 out = str(arg)
204 except UnicodeError:
204 except UnicodeError:
205 try:
205 try:
206 out = arg.encode('utf_8','replace')
206 out = arg.encode('utf_8','replace')
207 except Exception,msg:
207 except Exception,msg:
208 # let's keep this little duplication here, so that the most common
208 # let's keep this little duplication here, so that the most common
209 # case doesn't suffer from a double try wrapping.
209 # case doesn't suffer from a double try wrapping.
210 out = '<ERROR: %s>' % msg
210 out = '<ERROR: %s>' % msg
211 except Exception,msg:
211 except Exception,msg:
212 out = '<ERROR: %s>' % msg
212 out = '<ERROR: %s>' % msg
213 return out
213 return out
214
214
215 class BasePrompt:
215 class BasePrompt:
216 """Interactive prompt similar to Mathematica's."""
216 """Interactive prompt similar to Mathematica's."""
217 def __init__(self,cache,sep,prompt,pad_left=False):
217 def __init__(self,cache,sep,prompt,pad_left=False):
218
218
219 # Hack: we access information about the primary prompt through the
219 # Hack: we access information about the primary prompt through the
220 # cache argument. We need this, because we want the secondary prompt
220 # cache argument. We need this, because we want the secondary prompt
221 # to be aligned with the primary one. Color table info is also shared
221 # to be aligned with the primary one. Color table info is also shared
222 # by all prompt classes through the cache. Nice OO spaghetti code!
222 # by all prompt classes through the cache. Nice OO spaghetti code!
223 self.cache = cache
223 self.cache = cache
224 self.sep = sep
224 self.sep = sep
225
225
226 # regexp to count the number of spaces at the end of a prompt
226 # regexp to count the number of spaces at the end of a prompt
227 # expression, useful for prompt auto-rewriting
227 # expression, useful for prompt auto-rewriting
228 self.rspace = re.compile(r'(\s*)$')
228 self.rspace = re.compile(r'(\s*)$')
229 # Flag to left-pad prompt strings to match the length of the primary
229 # Flag to left-pad prompt strings to match the length of the primary
230 # prompt
230 # prompt
231 self.pad_left = pad_left
231 self.pad_left = pad_left
232 # Set template to create each actual prompt (where numbers change)
232 # Set template to create each actual prompt (where numbers change)
233 self.p_template = prompt
233 self.p_template = prompt
234 self.set_p_str()
234 self.set_p_str()
235
235
236 def set_p_str(self):
236 def set_p_str(self):
237 """ Set the interpolating prompt strings.
237 """ Set the interpolating prompt strings.
238
238
239 This must be called every time the color settings change, because the
239 This must be called every time the color settings change, because the
240 prompt_specials global may have changed."""
240 prompt_specials global may have changed."""
241
241
242 import os,time # needed in locals for prompt string handling
242 import os,time # needed in locals for prompt string handling
243 loc = locals()
243 loc = locals()
244 self.p_str = ItplNS('%s%s%s' %
244 self.p_str = ItplNS('%s%s%s' %
245 ('${self.sep}${self.col_p}',
245 ('${self.sep}${self.col_p}',
246 multiple_replace(prompt_specials, self.p_template),
246 multiple_replace(prompt_specials, self.p_template),
247 '${self.col_norm}'),self.cache.user_ns,loc)
247 '${self.col_norm}'),self.cache.user_ns,loc)
248
248
249 self.p_str_nocolor = ItplNS(multiple_replace(prompt_specials_nocolor,
249 self.p_str_nocolor = ItplNS(multiple_replace(prompt_specials_nocolor,
250 self.p_template),
250 self.p_template),
251 self.cache.user_ns,loc)
251 self.cache.user_ns,loc)
252
252
253 def write(self,msg): # dbg
253 def write(self,msg): # dbg
254 sys.stdout.write(msg)
254 sys.stdout.write(msg)
255 return ''
255 return ''
256
256
257 def __str__(self):
257 def __str__(self):
258 """Return a string form of the prompt.
258 """Return a string form of the prompt.
259
259
260 This for is useful for continuation and output prompts, since it is
260 This for is useful for continuation and output prompts, since it is
261 left-padded to match lengths with the primary one (if the
261 left-padded to match lengths with the primary one (if the
262 self.pad_left attribute is set)."""
262 self.pad_left attribute is set)."""
263
263
264 out_str = str_safe(self.p_str)
264 out_str = str_safe(self.p_str)
265 if self.pad_left:
265 if self.pad_left:
266 # We must find the amount of padding required to match lengths,
266 # We must find the amount of padding required to match lengths,
267 # taking the color escapes (which are invisible on-screen) into
267 # taking the color escapes (which are invisible on-screen) into
268 # account.
268 # account.
269 esc_pad = len(out_str) - len(str_safe(self.p_str_nocolor))
269 esc_pad = len(out_str) - len(str_safe(self.p_str_nocolor))
270 format = '%%%ss' % (len(str(self.cache.last_prompt))+esc_pad)
270 format = '%%%ss' % (len(str(self.cache.last_prompt))+esc_pad)
271 return format % out_str
271 return format % out_str
272 else:
272 else:
273 return out_str
273 return out_str
274
274
275 # these path filters are put in as methods so that we can control the
275 # these path filters are put in as methods so that we can control the
276 # namespace where the prompt strings get evaluated
276 # namespace where the prompt strings get evaluated
277 def cwd_filt(self,depth):
277 def cwd_filt(self,depth):
278 """Return the last depth elements of the current working directory.
278 """Return the last depth elements of the current working directory.
279
279
280 $HOME is always replaced with '~'.
280 $HOME is always replaced with '~'.
281 If depth==0, the full path is returned."""
281 If depth==0, the full path is returned."""
282
282
283 cwd = os.getcwd().replace(HOME,"~")
283 cwd = os.getcwd().replace(HOME,"~")
284 out = os.sep.join(cwd.split(os.sep)[-depth:])
284 out = os.sep.join(cwd.split(os.sep)[-depth:])
285 if out:
285 if out:
286 return out
286 return out
287 else:
287 else:
288 return os.sep
288 return os.sep
289
289
290 def cwd_filt2(self,depth):
290 def cwd_filt2(self,depth):
291 """Return the last depth elements of the current working directory.
291 """Return the last depth elements of the current working directory.
292
292
293 $HOME is always replaced with '~'.
293 $HOME is always replaced with '~'.
294 If depth==0, the full path is returned."""
294 If depth==0, the full path is returned."""
295
295
296 cwd = os.getcwd().replace(HOME,"~").split(os.sep)
296 cwd = os.getcwd().replace(HOME,"~").split(os.sep)
297 if '~' in cwd and len(cwd) == depth+1:
297 if '~' in cwd and len(cwd) == depth+1:
298 depth += 1
298 depth += 1
299 out = os.sep.join(cwd[-depth:])
299 out = os.sep.join(cwd[-depth:])
300 if out:
300 if out:
301 return out
301 return out
302 else:
302 else:
303 return os.sep
303 return os.sep
304
304
305 class Prompt1(BasePrompt):
305 class Prompt1(BasePrompt):
306 """Input interactive prompt similar to Mathematica's."""
306 """Input interactive prompt similar to Mathematica's."""
307
307
308 def __init__(self,cache,sep='\n',prompt='In [\\#]: ',pad_left=True):
308 def __init__(self,cache,sep='\n',prompt='In [\\#]: ',pad_left=True):
309 BasePrompt.__init__(self,cache,sep,prompt,pad_left)
309 BasePrompt.__init__(self,cache,sep,prompt,pad_left)
310
310
311 def set_colors(self):
311 def set_colors(self):
312 self.set_p_str()
312 self.set_p_str()
313 Colors = self.cache.color_table.active_colors # shorthand
313 Colors = self.cache.color_table.active_colors # shorthand
314 self.col_p = Colors.in_prompt
314 self.col_p = Colors.in_prompt
315 self.col_num = Colors.in_number
315 self.col_num = Colors.in_number
316 self.col_norm = Colors.in_normal
316 self.col_norm = Colors.in_normal
317 # We need a non-input version of these escapes for the '--->'
317 # We need a non-input version of these escapes for the '--->'
318 # auto-call prompts used in the auto_rewrite() method.
318 # auto-call prompts used in the auto_rewrite() method.
319 self.col_p_ni = self.col_p.replace('\001','').replace('\002','')
319 self.col_p_ni = self.col_p.replace('\001','').replace('\002','')
320 self.col_norm_ni = Colors.normal
320 self.col_norm_ni = Colors.normal
321
321
322 def __str__(self):
322 def __str__(self):
323 self.cache.prompt_count += 1
323 self.cache.prompt_count += 1
324 self.cache.last_prompt = str_safe(self.p_str_nocolor).split('\n')[-1]
324 self.cache.last_prompt = str_safe(self.p_str_nocolor).split('\n')[-1]
325 return str_safe(self.p_str)
325 return str_safe(self.p_str)
326
326
327 def auto_rewrite(self):
327 def auto_rewrite(self):
328 """Print a string of the form '--->' which lines up with the previous
328 """Print a string of the form '--->' which lines up with the previous
329 input string. Useful for systems which re-write the user input when
329 input string. Useful for systems which re-write the user input when
330 handling automatically special syntaxes."""
330 handling automatically special syntaxes."""
331
331
332 curr = str(self.cache.last_prompt)
332 curr = str(self.cache.last_prompt)
333 nrspaces = len(self.rspace.search(curr).group())
333 nrspaces = len(self.rspace.search(curr).group())
334 return '%s%s>%s%s' % (self.col_p_ni,'-'*(len(curr)-nrspaces-1),
334 return '%s%s>%s%s' % (self.col_p_ni,'-'*(len(curr)-nrspaces-1),
335 ' '*nrspaces,self.col_norm_ni)
335 ' '*nrspaces,self.col_norm_ni)
336
336
337 class PromptOut(BasePrompt):
337 class PromptOut(BasePrompt):
338 """Output interactive prompt similar to Mathematica's."""
338 """Output interactive prompt similar to Mathematica's."""
339
339
340 def __init__(self,cache,sep='',prompt='Out[\\#]: ',pad_left=True):
340 def __init__(self,cache,sep='',prompt='Out[\\#]: ',pad_left=True):
341 BasePrompt.__init__(self,cache,sep,prompt,pad_left)
341 BasePrompt.__init__(self,cache,sep,prompt,pad_left)
342 if not self.p_template:
342 if not self.p_template:
343 self.__str__ = lambda: ''
343 self.__str__ = lambda: ''
344
344
345 def set_colors(self):
345 def set_colors(self):
346 self.set_p_str()
346 self.set_p_str()
347 Colors = self.cache.color_table.active_colors # shorthand
347 Colors = self.cache.color_table.active_colors # shorthand
348 self.col_p = Colors.out_prompt
348 self.col_p = Colors.out_prompt
349 self.col_num = Colors.out_number
349 self.col_num = Colors.out_number
350 self.col_norm = Colors.normal
350 self.col_norm = Colors.normal
351
351
352 class Prompt2(BasePrompt):
352 class Prompt2(BasePrompt):
353 """Interactive continuation prompt."""
353 """Interactive continuation prompt."""
354
354
355 def __init__(self,cache,prompt=' .\\D.: ',pad_left=True):
355 def __init__(self,cache,prompt=' .\\D.: ',pad_left=True):
356 self.cache = cache
356 self.cache = cache
357 self.p_template = prompt
357 self.p_template = prompt
358 self.pad_left = pad_left
358 self.pad_left = pad_left
359 self.set_p_str()
359 self.set_p_str()
360
360
361 def set_p_str(self):
361 def set_p_str(self):
362 import os,time # needed in locals for prompt string handling
362 import os,time # needed in locals for prompt string handling
363 loc = locals()
363 loc = locals()
364 self.p_str = ItplNS('%s%s%s' %
364 self.p_str = ItplNS('%s%s%s' %
365 ('${self.col_p2}',
365 ('${self.col_p2}',
366 multiple_replace(prompt_specials, self.p_template),
366 multiple_replace(prompt_specials, self.p_template),
367 '$self.col_norm'),
367 '$self.col_norm'),
368 self.cache.user_ns,loc)
368 self.cache.user_ns,loc)
369 self.p_str_nocolor = ItplNS(multiple_replace(prompt_specials_nocolor,
369 self.p_str_nocolor = ItplNS(multiple_replace(prompt_specials_nocolor,
370 self.p_template),
370 self.p_template),
371 self.cache.user_ns,loc)
371 self.cache.user_ns,loc)
372
372
373 def set_colors(self):
373 def set_colors(self):
374 self.set_p_str()
374 self.set_p_str()
375 Colors = self.cache.color_table.active_colors
375 Colors = self.cache.color_table.active_colors
376 self.col_p2 = Colors.in_prompt2
376 self.col_p2 = Colors.in_prompt2
377 self.col_norm = Colors.in_normal
377 self.col_norm = Colors.in_normal
378 # FIXME (2004-06-16) HACK: prevent crashes for users who haven't
378 # FIXME (2004-06-16) HACK: prevent crashes for users who haven't
379 # updated their prompt_in2 definitions. Remove eventually.
379 # updated their prompt_in2 definitions. Remove eventually.
380 self.col_p = Colors.out_prompt
380 self.col_p = Colors.out_prompt
381 self.col_num = Colors.out_number
381 self.col_num = Colors.out_number
382
382
383 #-----------------------------------------------------------------------------
383 #-----------------------------------------------------------------------------
384 class CachedOutput:
384 class CachedOutput:
385 """Class for printing output from calculations while keeping a cache of
385 """Class for printing output from calculations while keeping a cache of
386 reults. It dynamically creates global variables prefixed with _ which
386 reults. It dynamically creates global variables prefixed with _ which
387 contain these results.
387 contain these results.
388
388
389 Meant to be used as a sys.displayhook replacement, providing numbered
389 Meant to be used as a sys.displayhook replacement, providing numbered
390 prompts and cache services.
390 prompts and cache services.
391
391
392 Initialize with initial and final values for cache counter (this defines
392 Initialize with initial and final values for cache counter (this defines
393 the maximum size of the cache."""
393 the maximum size of the cache."""
394
394
395 def __init__(self,shell,cache_size,Pprint,
395 def __init__(self,shell,cache_size,Pprint,
396 colors='NoColor',input_sep='\n',
396 colors='NoColor',input_sep='\n',
397 output_sep='\n',output_sep2='',
397 output_sep='\n',output_sep2='',
398 ps1 = None, ps2 = None,ps_out = None,pad_left=True):
398 ps1 = None, ps2 = None,ps_out = None,pad_left=True):
399
399
400 cache_size_min = 20
400 cache_size_min = 20
401 if cache_size <= 0:
401 if cache_size <= 0:
402 self.do_full_cache = 0
402 self.do_full_cache = 0
403 cache_size = 0
403 cache_size = 0
404 elif cache_size < cache_size_min:
404 elif cache_size < cache_size_min:
405 self.do_full_cache = 0
405 self.do_full_cache = 0
406 cache_size = 0
406 cache_size = 0
407 warn('caching was disabled (min value for cache size is %s).' %
407 warn('caching was disabled (min value for cache size is %s).' %
408 cache_size_min,level=3)
408 cache_size_min,level=3)
409 else:
409 else:
410 self.do_full_cache = 1
410 self.do_full_cache = 1
411
411
412 self.cache_size = cache_size
412 self.cache_size = cache_size
413 self.input_sep = input_sep
413 self.input_sep = input_sep
414
414
415 # we need a reference to the user-level namespace
415 # we need a reference to the user-level namespace
416 self.shell = shell
416 self.shell = shell
417 self.user_ns = shell.user_ns
417 self.user_ns = shell.user_ns
418 # and to the user's input
418 # and to the user's input
419 self.input_hist = shell.input_hist
419 self.input_hist = shell.input_hist
420 # and to the user's logger, for logging output
420 # and to the user's logger, for logging output
421 self.logger = shell.logger
421 self.logger = shell.logger
422
422
423 # Set input prompt strings and colors
423 # Set input prompt strings and colors
424 if cache_size == 0:
424 if cache_size == 0:
425 if ps1.find('%n') > -1 or ps1.find('\\#') > -1: ps1 = '>>> '
425 if ps1.find('%n') > -1 or ps1.find('\\#') > -1: ps1 = '>>> '
426 if ps2.find('%n') > -1 or ps2.find('\\#') > -1: ps2 = '... '
426 if ps2.find('%n') > -1 or ps2.find('\\#') > -1: ps2 = '... '
427 self.ps1_str = self._set_prompt_str(ps1,'In [\\#]: ','>>> ')
427 self.ps1_str = self._set_prompt_str(ps1,'In [\\#]: ','>>> ')
428 self.ps2_str = self._set_prompt_str(ps2,' .\\D.: ','... ')
428 self.ps2_str = self._set_prompt_str(ps2,' .\\D.: ','... ')
429 self.ps_out_str = self._set_prompt_str(ps_out,'Out[\\#]: ','')
429 self.ps_out_str = self._set_prompt_str(ps_out,'Out[\\#]: ','')
430
430
431 self.color_table = PromptColors
431 self.color_table = PromptColors
432 self.prompt1 = Prompt1(self,sep=input_sep,prompt=self.ps1_str,
432 self.prompt1 = Prompt1(self,sep=input_sep,prompt=self.ps1_str,
433 pad_left=pad_left)
433 pad_left=pad_left)
434 self.prompt2 = Prompt2(self,prompt=self.ps2_str,pad_left=pad_left)
434 self.prompt2 = Prompt2(self,prompt=self.ps2_str,pad_left=pad_left)
435 self.prompt_out = PromptOut(self,sep='',prompt=self.ps_out_str,
435 self.prompt_out = PromptOut(self,sep='',prompt=self.ps_out_str,
436 pad_left=pad_left)
436 pad_left=pad_left)
437 self.set_colors(colors)
437 self.set_colors(colors)
438
438
439 # other more normal stuff
439 # other more normal stuff
440 # b/c each call to the In[] prompt raises it by 1, even the first.
440 # b/c each call to the In[] prompt raises it by 1, even the first.
441 self.prompt_count = 0
441 self.prompt_count = 0
442 self.cache_count = 1
443 # Store the last prompt string each time, we need it for aligning
442 # Store the last prompt string each time, we need it for aligning
444 # continuation and auto-rewrite prompts
443 # continuation and auto-rewrite prompts
445 self.last_prompt = ''
444 self.last_prompt = ''
446 self.entries = [None] # output counter starts at 1 for the user
445 self.entries = [None] # output counter starts at 1 for the user
447 self.Pprint = Pprint
446 self.Pprint = Pprint
448 self.output_sep = output_sep
447 self.output_sep = output_sep
449 self.output_sep2 = output_sep2
448 self.output_sep2 = output_sep2
450 self._,self.__,self.___ = '','',''
449 self._,self.__,self.___ = '','',''
451 self.pprint_types = map(type,[(),[],{}])
450 self.pprint_types = map(type,[(),[],{}])
452
451
453 # these are deliberately global:
452 # these are deliberately global:
454 to_user_ns = {'_':self._,'__':self.__,'___':self.___}
453 to_user_ns = {'_':self._,'__':self.__,'___':self.___}
455 self.user_ns.update(to_user_ns)
454 self.user_ns.update(to_user_ns)
456
455
457 def _set_prompt_str(self,p_str,cache_def,no_cache_def):
456 def _set_prompt_str(self,p_str,cache_def,no_cache_def):
458 if p_str is None:
457 if p_str is None:
459 if self.do_full_cache:
458 if self.do_full_cache:
460 return cache_def
459 return cache_def
461 else:
460 else:
462 return no_cache_def
461 return no_cache_def
463 else:
462 else:
464 return p_str
463 return p_str
465
464
466 def set_colors(self,colors):
465 def set_colors(self,colors):
467 """Set the active color scheme and configure colors for the three
466 """Set the active color scheme and configure colors for the three
468 prompt subsystems."""
467 prompt subsystems."""
469
468
470 # FIXME: the prompt_specials global should be gobbled inside this
469 # FIXME: the prompt_specials global should be gobbled inside this
471 # class instead. Do it when cleaning up the whole 3-prompt system.
470 # class instead. Do it when cleaning up the whole 3-prompt system.
472 global prompt_specials
471 global prompt_specials
473 if colors.lower()=='nocolor':
472 if colors.lower()=='nocolor':
474 prompt_specials = prompt_specials_nocolor
473 prompt_specials = prompt_specials_nocolor
475 else:
474 else:
476 prompt_specials = prompt_specials_color
475 prompt_specials = prompt_specials_color
477
476
478 self.color_table.set_active_scheme(colors)
477 self.color_table.set_active_scheme(colors)
479 self.prompt1.set_colors()
478 self.prompt1.set_colors()
480 self.prompt2.set_colors()
479 self.prompt2.set_colors()
481 self.prompt_out.set_colors()
480 self.prompt_out.set_colors()
482
481
483 def __call__(self,arg=None):
482 def __call__(self,arg=None):
484 """Printing with history cache management.
483 """Printing with history cache management.
485
484
486 This is invoked everytime the interpreter needs to print, and is
485 This is invoked everytime the interpreter needs to print, and is
487 activated by setting the variable sys.displayhook to it."""
486 activated by setting the variable sys.displayhook to it."""
488
487
489 # If something injected a '_' variable in __builtin__, delete
488 # If something injected a '_' variable in __builtin__, delete
490 # ipython's automatic one so we don't clobber that. gettext() in
489 # ipython's automatic one so we don't clobber that. gettext() in
491 # particular uses _, so we need to stay away from it.
490 # particular uses _, so we need to stay away from it.
492 if '_' in __builtin__.__dict__:
491 if '_' in __builtin__.__dict__:
493 try:
492 try:
494 del self.user_ns['_']
493 del self.user_ns['_']
495 except KeyError:
494 except KeyError:
496 pass
495 pass
497 if arg is not None:
496 if arg is not None:
498 cout_write = Term.cout.write # fast lookup
497 cout_write = Term.cout.write # fast lookup
499 # first handle the cache and counters
498 # first handle the cache and counters
500
499
501 # do not print output if input ends in ';'
500 # do not print output if input ends in ';'
502 if self.input_hist[self.prompt_count].endswith(';\n'):
501 if self.input_hist[self.prompt_count].endswith(';\n'):
503 return
502 return
504 # don't use print, puts an extra space
503 # don't use print, puts an extra space
505 cout_write(self.output_sep)
504 cout_write(self.output_sep)
506 if self.do_full_cache:
505 if self.do_full_cache:
507 cout_write(str(self.prompt_out))
506 cout_write(str(self.prompt_out))
508
507
509 if isinstance(arg,Macro):
508 if isinstance(arg,Macro):
510 print 'Executing Macro...'
509 print 'Executing Macro...'
511 # in case the macro takes a long time to execute
510 # in case the macro takes a long time to execute
512 Term.cout.flush()
511 Term.cout.flush()
513 self.shell.runlines(arg.value)
512 self.shell.runlines(arg.value)
514 return None
513 return None
515
514
516 # and now call a possibly user-defined print mechanism
515 # and now call a possibly user-defined print mechanism
517 manipulated_val = self.display(arg)
516 manipulated_val = self.display(arg)
518
517
519 # user display hooks can change the variable to be stored in
518 # user display hooks can change the variable to be stored in
520 # output history
519 # output history
521
520
522 if manipulated_val is not None:
521 if manipulated_val is not None:
523 arg = manipulated_val
522 arg = manipulated_val
524
523
525 # avoid recursive reference when displaying _oh/Out
524 # avoid recursive reference when displaying _oh/Out
526 if arg is not self.user_ns['_oh']:
525 if arg is not self.user_ns['_oh']:
527 self.update(arg)
526 self.update(arg)
528
527
529 if self.logger.log_output:
528 if self.logger.log_output:
530 self.logger.log_write(repr(arg),'output')
529 self.logger.log_write(repr(arg),'output')
531 cout_write(self.output_sep2)
530 cout_write(self.output_sep2)
532 Term.cout.flush()
531 Term.cout.flush()
533
532
534 def _display(self,arg):
533 def _display(self,arg):
535 """Default printer method, uses pprint.
534 """Default printer method, uses pprint.
536
535
537 Do ip.set_hook("result_display", my_displayhook) for custom result
536 Do ip.set_hook("result_display", my_displayhook) for custom result
538 display, e.g. when your own objects need special formatting.
537 display, e.g. when your own objects need special formatting.
539 """
538 """
540
539
541 return self.shell.hooks.result_display(arg)
540 return self.shell.hooks.result_display(arg)
542
541
543 # Assign the default display method:
542 # Assign the default display method:
544 display = _display
543 display = _display
545
544
546 def update(self,arg):
545 def update(self,arg):
547 #print '***cache_count', self.cache_count # dbg
546 #print '***cache_count', self.cache_count # dbg
548 if self.cache_count >= self.cache_size and self.do_full_cache:
547 if len(self.user_ns['_oh']) >= self.cache_size and self.do_full_cache:
548 warn('Output cache limit (currently '+\
549 `self.cache_count`+' entries) hit.\n'
550 'Flushing cache and resetting history counter...\n'
551 'The only history variables available will be _,__,___ and _1\n'
552 'with the current result.')
553
549 self.flush()
554 self.flush()
550 # Don't overwrite '_' and friends if '_' is in __builtin__ (otherwise
555 # Don't overwrite '_' and friends if '_' is in __builtin__ (otherwise
551 # we cause buggy behavior for things like gettext).
556 # we cause buggy behavior for things like gettext).
552 if '_' not in __builtin__.__dict__:
557 if '_' not in __builtin__.__dict__:
553 self.___ = self.__
558 self.___ = self.__
554 self.__ = self._
559 self.__ = self._
555 self._ = arg
560 self._ = arg
556 self.user_ns.update({'_':self._,'__':self.__,'___':self.___})
561 self.user_ns.update({'_':self._,'__':self.__,'___':self.___})
557
562
558 # hackish access to top-level namespace to create _1,_2... dynamically
563 # hackish access to top-level namespace to create _1,_2... dynamically
559 to_main = {}
564 to_main = {}
560 if self.do_full_cache:
565 if self.do_full_cache:
561 self.cache_count += 1
562 self.entries.append(arg)
566 self.entries.append(arg)
563 new_result = '_'+`self.prompt_count`
567 new_result = '_'+`self.prompt_count`
564 to_main[new_result] = self.entries[-1]
568 to_main[new_result] = self.entries[-1]
565 self.user_ns.update(to_main)
569 self.user_ns.update(to_main)
566 self.user_ns['_oh'][self.prompt_count] = arg
570 self.user_ns['_oh'][self.prompt_count] = arg
567
571
568 def flush(self):
572 def flush(self):
569 if not self.do_full_cache:
573 if not self.do_full_cache:
570 raise ValueError,"You shouldn't have reached the cache flush "\
574 raise ValueError,"You shouldn't have reached the cache flush "\
571 "if full caching is not enabled!"
575 "if full caching is not enabled!"
572 warn('Output cache limit (currently '+\
573 `self.cache_count`+' entries) hit.\n'
574 'Flushing cache and resetting history counter...\n'
575 'The only history variables available will be _,__,___ and _1\n'
576 'with the current result.')
577 # delete auto-generated vars from global namespace
576 # delete auto-generated vars from global namespace
577
578 for n in range(1,self.prompt_count + 1):
578 for n in range(1,self.prompt_count + 1):
579 key = '_'+`n`
579 key = '_'+`n`
580 try:
580 try:
581 del self.user_ns[key]
581 del self.user_ns[key]
582 except: pass
582 except: pass
583 self.prompt_count = 1
583 self.user_ns['_oh'].clear()
584 self.cache_count = 1
584
585 if '_' not in __builtin__.__dict__:
586 self.user_ns.update({'_':None,'__':None, '___':None})
587 import gc
588 gc.collect() # xxx needed?
@@ -1,5305 +1,5310 b''
1 2006-04-11 Ville Vainio <vivainio@gmail.com>
1 2006-04-11 Ville Vainio <vivainio@gmail.com>
2
2
3 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
3 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
4 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
4 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
5 prefilters, allowing stuff like magics and aliases in the file.
5 prefilters, allowing stuff like magics and aliases in the file.
6
7 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
8 added. Supported now are "%clear in" and "%clear out" (clear input and
9 output history, respectively). Also fixed CachedOutput.flush to
10 properly flush the output cache.
6
11
7 2006-03-28 Ville Vainio <vivainio@gmail.com>
12 2006-03-28 Ville Vainio <vivainio@gmail.com>
8
13
9 * iplib.py: Fix quoting of aliases so that only argless ones
14 * iplib.py: Fix quoting of aliases so that only argless ones
10 are quoted
15 are quoted
11
16
12 2006-03-28 Ville Vainio <vivainio@gmail.com>
17 2006-03-28 Ville Vainio <vivainio@gmail.com>
13
18
14 * iplib.py: Quote aliases with spaces in the name.
19 * iplib.py: Quote aliases with spaces in the name.
15 "c:\program files\blah\bin" is now legal alias target.
20 "c:\program files\blah\bin" is now legal alias target.
16
21
17 * ext_rehashdir.py: Space no longer allowed as arg
22 * ext_rehashdir.py: Space no longer allowed as arg
18 separator, since space is legal in path names.
23 separator, since space is legal in path names.
19
24
20 2006-03-16 Ville Vainio <vivainio@gmail.com>
25 2006-03-16 Ville Vainio <vivainio@gmail.com>
21
26
22 * upgrade_dir.py: Take path.py from Extensions, correcting
27 * upgrade_dir.py: Take path.py from Extensions, correcting
23 %upgrade magic
28 %upgrade magic
24
29
25 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
30 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
26
31
27 * hooks.py: Only enclose editor binary in quotes if legal and
32 * hooks.py: Only enclose editor binary in quotes if legal and
28 necessary (space in the name, and is an existing file). Fixes a bug
33 necessary (space in the name, and is an existing file). Fixes a bug
29 reported by Zachary Pincus.
34 reported by Zachary Pincus.
30
35
31 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
36 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
32
37
33 * Manual: thanks to a tip on proper color handling for Emacs, by
38 * Manual: thanks to a tip on proper color handling for Emacs, by
34 Eric J Haywiser <ejh1-AT-MIT.EDU>.
39 Eric J Haywiser <ejh1-AT-MIT.EDU>.
35
40
36 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
41 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
37 by applying the provided patch. Thanks to Liu Jin
42 by applying the provided patch. Thanks to Liu Jin
38 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
43 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
39 XEmacs/Linux, I'm trusting the submitter that it actually helps
44 XEmacs/Linux, I'm trusting the submitter that it actually helps
40 under win32/GNU Emacs. Will revisit if any problems are reported.
45 under win32/GNU Emacs. Will revisit if any problems are reported.
41
46
42 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
47 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
43
48
44 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
49 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
45 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
50 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
46
51
47 2006-03-12 Ville Vainio <vivainio@gmail.com>
52 2006-03-12 Ville Vainio <vivainio@gmail.com>
48
53
49 * Magic.py (magic_timeit): Added %timeit magic, contributed by
54 * Magic.py (magic_timeit): Added %timeit magic, contributed by
50 Torsten Marek.
55 Torsten Marek.
51
56
52 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
57 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
53
58
54 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
59 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
55 line ranges works again.
60 line ranges works again.
56
61
57 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
62 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
58
63
59 * IPython/iplib.py (showtraceback): add back sys.last_traceback
64 * IPython/iplib.py (showtraceback): add back sys.last_traceback
60 and friends, after a discussion with Zach Pincus on ipython-user.
65 and friends, after a discussion with Zach Pincus on ipython-user.
61 I'm not 100% sure, but after thinking aobut it quite a bit, it may
66 I'm not 100% sure, but after thinking aobut it quite a bit, it may
62 be OK. Testing with the multithreaded shells didn't reveal any
67 be OK. Testing with the multithreaded shells didn't reveal any
63 problems, but let's keep an eye out.
68 problems, but let's keep an eye out.
64
69
65 In the process, I fixed a few things which were calling
70 In the process, I fixed a few things which were calling
66 self.InteractiveTB() directly (like safe_execfile), which is a
71 self.InteractiveTB() directly (like safe_execfile), which is a
67 mistake: ALL exception reporting should be done by calling
72 mistake: ALL exception reporting should be done by calling
68 self.showtraceback(), which handles state and tab-completion and
73 self.showtraceback(), which handles state and tab-completion and
69 more.
74 more.
70
75
71 2006-03-01 Ville Vainio <vivainio@gmail.com>
76 2006-03-01 Ville Vainio <vivainio@gmail.com>
72
77
73 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
78 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
74 To use, do "from ipipe import *".
79 To use, do "from ipipe import *".
75
80
76 2006-02-24 Ville Vainio <vivainio@gmail.com>
81 2006-02-24 Ville Vainio <vivainio@gmail.com>
77
82
78 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
83 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
79 "cleanly" and safely than the older upgrade mechanism.
84 "cleanly" and safely than the older upgrade mechanism.
80
85
81 2006-02-21 Ville Vainio <vivainio@gmail.com>
86 2006-02-21 Ville Vainio <vivainio@gmail.com>
82
87
83 * Magic.py: %save works again.
88 * Magic.py: %save works again.
84
89
85 2006-02-15 Ville Vainio <vivainio@gmail.com>
90 2006-02-15 Ville Vainio <vivainio@gmail.com>
86
91
87 * Magic.py: %Pprint works again
92 * Magic.py: %Pprint works again
88
93
89 * Extensions/ipy_sane_defaults.py: Provide everything provided
94 * Extensions/ipy_sane_defaults.py: Provide everything provided
90 in default ipythonrc, to make it possible to have a completely empty
95 in default ipythonrc, to make it possible to have a completely empty
91 ipythonrc (and thus completely rc-file free configuration)
96 ipythonrc (and thus completely rc-file free configuration)
92
97
93
98
94 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
99 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
95
100
96 * IPython/hooks.py (editor): quote the call to the editor command,
101 * IPython/hooks.py (editor): quote the call to the editor command,
97 to allow commands with spaces in them. Problem noted by watching
102 to allow commands with spaces in them. Problem noted by watching
98 Ian Oswald's video about textpad under win32 at
103 Ian Oswald's video about textpad under win32 at
99 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
104 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
100
105
101 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
106 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
102 describing magics (we haven't used @ for a loong time).
107 describing magics (we haven't used @ for a loong time).
103
108
104 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
109 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
105 contributed by marienz to close
110 contributed by marienz to close
106 http://www.scipy.net/roundup/ipython/issue53.
111 http://www.scipy.net/roundup/ipython/issue53.
107
112
108 2006-02-10 Ville Vainio <vivainio@gmail.com>
113 2006-02-10 Ville Vainio <vivainio@gmail.com>
109
114
110 * genutils.py: getoutput now works in win32 too
115 * genutils.py: getoutput now works in win32 too
111
116
112 * completer.py: alias and magic completion only invoked
117 * completer.py: alias and magic completion only invoked
113 at the first "item" in the line, to avoid "cd %store"
118 at the first "item" in the line, to avoid "cd %store"
114 nonsense.
119 nonsense.
115
120
116 2006-02-09 Ville Vainio <vivainio@gmail.com>
121 2006-02-09 Ville Vainio <vivainio@gmail.com>
117
122
118 * test/*: Added a unit testing framework (finally).
123 * test/*: Added a unit testing framework (finally).
119 '%run runtests.py' to run test_*.
124 '%run runtests.py' to run test_*.
120
125
121 * ipapi.py: Exposed runlines and set_custom_exc
126 * ipapi.py: Exposed runlines and set_custom_exc
122
127
123 2006-02-07 Ville Vainio <vivainio@gmail.com>
128 2006-02-07 Ville Vainio <vivainio@gmail.com>
124
129
125 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
130 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
126 instead use "f(1 2)" as before.
131 instead use "f(1 2)" as before.
127
132
128 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
133 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
129
134
130 * IPython/demo.py (IPythonDemo): Add new classes to the demo
135 * IPython/demo.py (IPythonDemo): Add new classes to the demo
131 facilities, for demos processed by the IPython input filter
136 facilities, for demos processed by the IPython input filter
132 (IPythonDemo), and for running a script one-line-at-a-time as a
137 (IPythonDemo), and for running a script one-line-at-a-time as a
133 demo, both for pure Python (LineDemo) and for IPython-processed
138 demo, both for pure Python (LineDemo) and for IPython-processed
134 input (IPythonLineDemo). After a request by Dave Kohel, from the
139 input (IPythonLineDemo). After a request by Dave Kohel, from the
135 SAGE team.
140 SAGE team.
136 (Demo.edit): added and edit() method to the demo objects, to edit
141 (Demo.edit): added and edit() method to the demo objects, to edit
137 the in-memory copy of the last executed block.
142 the in-memory copy of the last executed block.
138
143
139 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
144 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
140 processing to %edit, %macro and %save. These commands can now be
145 processing to %edit, %macro and %save. These commands can now be
141 invoked on the unprocessed input as it was typed by the user
146 invoked on the unprocessed input as it was typed by the user
142 (without any prefilters applied). After requests by the SAGE team
147 (without any prefilters applied). After requests by the SAGE team
143 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
148 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
144
149
145 2006-02-01 Ville Vainio <vivainio@gmail.com>
150 2006-02-01 Ville Vainio <vivainio@gmail.com>
146
151
147 * setup.py, eggsetup.py: easy_install ipython==dev works
152 * setup.py, eggsetup.py: easy_install ipython==dev works
148 correctly now (on Linux)
153 correctly now (on Linux)
149
154
150 * ipy_user_conf,ipmaker: user config changes, removed spurious
155 * ipy_user_conf,ipmaker: user config changes, removed spurious
151 warnings
156 warnings
152
157
153 * iplib: if rc.banner is string, use it as is.
158 * iplib: if rc.banner is string, use it as is.
154
159
155 * Magic: %pycat accepts a string argument and pages it's contents.
160 * Magic: %pycat accepts a string argument and pages it's contents.
156
161
157
162
158 2006-01-30 Ville Vainio <vivainio@gmail.com>
163 2006-01-30 Ville Vainio <vivainio@gmail.com>
159
164
160 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
165 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
161 Now %store and bookmarks work through PickleShare, meaning that
166 Now %store and bookmarks work through PickleShare, meaning that
162 concurrent access is possible and all ipython sessions see the
167 concurrent access is possible and all ipython sessions see the
163 same database situation all the time, instead of snapshot of
168 same database situation all the time, instead of snapshot of
164 the situation when the session was started. Hence, %bookmark
169 the situation when the session was started. Hence, %bookmark
165 results are immediately accessible from othes sessions. The database
170 results are immediately accessible from othes sessions. The database
166 is also available for use by user extensions. See:
171 is also available for use by user extensions. See:
167 http://www.python.org/pypi/pickleshare
172 http://www.python.org/pypi/pickleshare
168
173
169 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
174 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
170
175
171 * aliases can now be %store'd
176 * aliases can now be %store'd
172
177
173 * path.py move to Extensions so that pickleshare does not need
178 * path.py move to Extensions so that pickleshare does not need
174 IPython-specific import. Extensions added to pythonpath right
179 IPython-specific import. Extensions added to pythonpath right
175 at __init__.
180 at __init__.
176
181
177 * iplib.py: ipalias deprecated/redundant; aliases are converted and
182 * iplib.py: ipalias deprecated/redundant; aliases are converted and
178 called with _ip.system and the pre-transformed command string.
183 called with _ip.system and the pre-transformed command string.
179
184
180 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
185 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
181
186
182 * IPython/iplib.py (interact): Fix that we were not catching
187 * IPython/iplib.py (interact): Fix that we were not catching
183 KeyboardInterrupt exceptions properly. I'm not quite sure why the
188 KeyboardInterrupt exceptions properly. I'm not quite sure why the
184 logic here had to change, but it's fixed now.
189 logic here had to change, but it's fixed now.
185
190
186 2006-01-29 Ville Vainio <vivainio@gmail.com>
191 2006-01-29 Ville Vainio <vivainio@gmail.com>
187
192
188 * iplib.py: Try to import pyreadline on Windows.
193 * iplib.py: Try to import pyreadline on Windows.
189
194
190 2006-01-27 Ville Vainio <vivainio@gmail.com>
195 2006-01-27 Ville Vainio <vivainio@gmail.com>
191
196
192 * iplib.py: Expose ipapi as _ip in builtin namespace.
197 * iplib.py: Expose ipapi as _ip in builtin namespace.
193 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
198 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
194 and ip_set_hook (-> _ip.set_hook) redundant. % and !
199 and ip_set_hook (-> _ip.set_hook) redundant. % and !
195 syntax now produce _ip.* variant of the commands.
200 syntax now produce _ip.* variant of the commands.
196
201
197 * "_ip.options().autoedit_syntax = 2" automatically throws
202 * "_ip.options().autoedit_syntax = 2" automatically throws
198 user to editor for syntax error correction without prompting.
203 user to editor for syntax error correction without prompting.
199
204
200 2006-01-27 Ville Vainio <vivainio@gmail.com>
205 2006-01-27 Ville Vainio <vivainio@gmail.com>
201
206
202 * ipmaker.py: Give "realistic" sys.argv for scripts (without
207 * ipmaker.py: Give "realistic" sys.argv for scripts (without
203 'ipython' at argv[0]) executed through command line.
208 'ipython' at argv[0]) executed through command line.
204 NOTE: this DEPRECATES calling ipython with multiple scripts
209 NOTE: this DEPRECATES calling ipython with multiple scripts
205 ("ipython a.py b.py c.py")
210 ("ipython a.py b.py c.py")
206
211
207 * iplib.py, hooks.py: Added configurable input prefilter,
212 * iplib.py, hooks.py: Added configurable input prefilter,
208 named 'input_prefilter'. See ext_rescapture.py for example
213 named 'input_prefilter'. See ext_rescapture.py for example
209 usage.
214 usage.
210
215
211 * ext_rescapture.py, Magic.py: Better system command output capture
216 * ext_rescapture.py, Magic.py: Better system command output capture
212 through 'var = !ls' (deprecates user-visible %sc). Same notation
217 through 'var = !ls' (deprecates user-visible %sc). Same notation
213 applies for magics, 'var = %alias' assigns alias list to var.
218 applies for magics, 'var = %alias' assigns alias list to var.
214
219
215 * ipapi.py: added meta() for accessing extension-usable data store.
220 * ipapi.py: added meta() for accessing extension-usable data store.
216
221
217 * iplib.py: added InteractiveShell.getapi(). New magics should be
222 * iplib.py: added InteractiveShell.getapi(). New magics should be
218 written doing self.getapi() instead of using the shell directly.
223 written doing self.getapi() instead of using the shell directly.
219
224
220 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
225 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
221 %store foo >> ~/myfoo.txt to store variables to files (in clean
226 %store foo >> ~/myfoo.txt to store variables to files (in clean
222 textual form, not a restorable pickle).
227 textual form, not a restorable pickle).
223
228
224 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
229 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
225
230
226 * usage.py, Magic.py: added %quickref
231 * usage.py, Magic.py: added %quickref
227
232
228 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
233 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
229
234
230 * GetoptErrors when invoking magics etc. with wrong args
235 * GetoptErrors when invoking magics etc. with wrong args
231 are now more helpful:
236 are now more helpful:
232 GetoptError: option -l not recognized (allowed: "qb" )
237 GetoptError: option -l not recognized (allowed: "qb" )
233
238
234 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
239 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
235
240
236 * IPython/demo.py (Demo.show): Flush stdout after each block, so
241 * IPython/demo.py (Demo.show): Flush stdout after each block, so
237 computationally intensive blocks don't appear to stall the demo.
242 computationally intensive blocks don't appear to stall the demo.
238
243
239 2006-01-24 Ville Vainio <vivainio@gmail.com>
244 2006-01-24 Ville Vainio <vivainio@gmail.com>
240
245
241 * iplib.py, hooks.py: 'result_display' hook can return a non-None
246 * iplib.py, hooks.py: 'result_display' hook can return a non-None
242 value to manipulate resulting history entry.
247 value to manipulate resulting history entry.
243
248
244 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
249 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
245 to instance methods of IPApi class, to make extending an embedded
250 to instance methods of IPApi class, to make extending an embedded
246 IPython feasible. See ext_rehashdir.py for example usage.
251 IPython feasible. See ext_rehashdir.py for example usage.
247
252
248 * Merged 1071-1076 from banches/0.7.1
253 * Merged 1071-1076 from banches/0.7.1
249
254
250
255
251 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
256 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
252
257
253 * tools/release (daystamp): Fix build tools to use the new
258 * tools/release (daystamp): Fix build tools to use the new
254 eggsetup.py script to build lightweight eggs.
259 eggsetup.py script to build lightweight eggs.
255
260
256 * Applied changesets 1062 and 1064 before 0.7.1 release.
261 * Applied changesets 1062 and 1064 before 0.7.1 release.
257
262
258 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
263 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
259 see the raw input history (without conversions like %ls ->
264 see the raw input history (without conversions like %ls ->
260 ipmagic("ls")). After a request from W. Stein, SAGE
265 ipmagic("ls")). After a request from W. Stein, SAGE
261 (http://modular.ucsd.edu/sage) developer. This information is
266 (http://modular.ucsd.edu/sage) developer. This information is
262 stored in the input_hist_raw attribute of the IPython instance, so
267 stored in the input_hist_raw attribute of the IPython instance, so
263 developers can access it if needed (it's an InputList instance).
268 developers can access it if needed (it's an InputList instance).
264
269
265 * Versionstring = 0.7.2.svn
270 * Versionstring = 0.7.2.svn
266
271
267 * eggsetup.py: A separate script for constructing eggs, creates
272 * eggsetup.py: A separate script for constructing eggs, creates
268 proper launch scripts even on Windows (an .exe file in
273 proper launch scripts even on Windows (an .exe file in
269 \python24\scripts).
274 \python24\scripts).
270
275
271 * ipapi.py: launch_new_instance, launch entry point needed for the
276 * ipapi.py: launch_new_instance, launch entry point needed for the
272 egg.
277 egg.
273
278
274 2006-01-23 Ville Vainio <vivainio@gmail.com>
279 2006-01-23 Ville Vainio <vivainio@gmail.com>
275
280
276 * Added %cpaste magic for pasting python code
281 * Added %cpaste magic for pasting python code
277
282
278 2006-01-22 Ville Vainio <vivainio@gmail.com>
283 2006-01-22 Ville Vainio <vivainio@gmail.com>
279
284
280 * Merge from branches/0.7.1 into trunk, revs 1052-1057
285 * Merge from branches/0.7.1 into trunk, revs 1052-1057
281
286
282 * Versionstring = 0.7.2.svn
287 * Versionstring = 0.7.2.svn
283
288
284 * eggsetup.py: A separate script for constructing eggs, creates
289 * eggsetup.py: A separate script for constructing eggs, creates
285 proper launch scripts even on Windows (an .exe file in
290 proper launch scripts even on Windows (an .exe file in
286 \python24\scripts).
291 \python24\scripts).
287
292
288 * ipapi.py: launch_new_instance, launch entry point needed for the
293 * ipapi.py: launch_new_instance, launch entry point needed for the
289 egg.
294 egg.
290
295
291 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
296 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
292
297
293 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
298 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
294 %pfile foo would print the file for foo even if it was a binary.
299 %pfile foo would print the file for foo even if it was a binary.
295 Now, extensions '.so' and '.dll' are skipped.
300 Now, extensions '.so' and '.dll' are skipped.
296
301
297 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
302 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
298 bug, where macros would fail in all threaded modes. I'm not 100%
303 bug, where macros would fail in all threaded modes. I'm not 100%
299 sure, so I'm going to put out an rc instead of making a release
304 sure, so I'm going to put out an rc instead of making a release
300 today, and wait for feedback for at least a few days.
305 today, and wait for feedback for at least a few days.
301
306
302 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
307 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
303 it...) the handling of pasting external code with autoindent on.
308 it...) the handling of pasting external code with autoindent on.
304 To get out of a multiline input, the rule will appear for most
309 To get out of a multiline input, the rule will appear for most
305 users unchanged: two blank lines or change the indent level
310 users unchanged: two blank lines or change the indent level
306 proposed by IPython. But there is a twist now: you can
311 proposed by IPython. But there is a twist now: you can
307 add/subtract only *one or two spaces*. If you add/subtract three
312 add/subtract only *one or two spaces*. If you add/subtract three
308 or more (unless you completely delete the line), IPython will
313 or more (unless you completely delete the line), IPython will
309 accept that line, and you'll need to enter a second one of pure
314 accept that line, and you'll need to enter a second one of pure
310 whitespace. I know it sounds complicated, but I can't find a
315 whitespace. I know it sounds complicated, but I can't find a
311 different solution that covers all the cases, with the right
316 different solution that covers all the cases, with the right
312 heuristics. Hopefully in actual use, nobody will really notice
317 heuristics. Hopefully in actual use, nobody will really notice
313 all these strange rules and things will 'just work'.
318 all these strange rules and things will 'just work'.
314
319
315 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
320 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
316
321
317 * IPython/iplib.py (interact): catch exceptions which can be
322 * IPython/iplib.py (interact): catch exceptions which can be
318 triggered asynchronously by signal handlers. Thanks to an
323 triggered asynchronously by signal handlers. Thanks to an
319 automatic crash report, submitted by Colin Kingsley
324 automatic crash report, submitted by Colin Kingsley
320 <tercel-AT-gentoo.org>.
325 <tercel-AT-gentoo.org>.
321
326
322 2006-01-20 Ville Vainio <vivainio@gmail.com>
327 2006-01-20 Ville Vainio <vivainio@gmail.com>
323
328
324 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
329 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
325 (%rehashdir, very useful, try it out) of how to extend ipython
330 (%rehashdir, very useful, try it out) of how to extend ipython
326 with new magics. Also added Extensions dir to pythonpath to make
331 with new magics. Also added Extensions dir to pythonpath to make
327 importing extensions easy.
332 importing extensions easy.
328
333
329 * %store now complains when trying to store interactively declared
334 * %store now complains when trying to store interactively declared
330 classes / instances of those classes.
335 classes / instances of those classes.
331
336
332 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
337 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
333 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
338 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
334 if they exist, and ipy_user_conf.py with some defaults is created for
339 if they exist, and ipy_user_conf.py with some defaults is created for
335 the user.
340 the user.
336
341
337 * Startup rehashing done by the config file, not InterpreterExec.
342 * Startup rehashing done by the config file, not InterpreterExec.
338 This means system commands are available even without selecting the
343 This means system commands are available even without selecting the
339 pysh profile. It's the sensible default after all.
344 pysh profile. It's the sensible default after all.
340
345
341 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
346 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
342
347
343 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
348 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
344 multiline code with autoindent on working. But I am really not
349 multiline code with autoindent on working. But I am really not
345 sure, so this needs more testing. Will commit a debug-enabled
350 sure, so this needs more testing. Will commit a debug-enabled
346 version for now, while I test it some more, so that Ville and
351 version for now, while I test it some more, so that Ville and
347 others may also catch any problems. Also made
352 others may also catch any problems. Also made
348 self.indent_current_str() a method, to ensure that there's no
353 self.indent_current_str() a method, to ensure that there's no
349 chance of the indent space count and the corresponding string
354 chance of the indent space count and the corresponding string
350 falling out of sync. All code needing the string should just call
355 falling out of sync. All code needing the string should just call
351 the method.
356 the method.
352
357
353 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
358 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
354
359
355 * IPython/Magic.py (magic_edit): fix check for when users don't
360 * IPython/Magic.py (magic_edit): fix check for when users don't
356 save their output files, the try/except was in the wrong section.
361 save their output files, the try/except was in the wrong section.
357
362
358 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
363 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
359
364
360 * IPython/Magic.py (magic_run): fix __file__ global missing from
365 * IPython/Magic.py (magic_run): fix __file__ global missing from
361 script's namespace when executed via %run. After a report by
366 script's namespace when executed via %run. After a report by
362 Vivian.
367 Vivian.
363
368
364 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
369 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
365 when using python 2.4. The parent constructor changed in 2.4, and
370 when using python 2.4. The parent constructor changed in 2.4, and
366 we need to track it directly (we can't call it, as it messes up
371 we need to track it directly (we can't call it, as it messes up
367 readline and tab-completion inside our pdb would stop working).
372 readline and tab-completion inside our pdb would stop working).
368 After a bug report by R. Bernstein <rocky-AT-panix.com>.
373 After a bug report by R. Bernstein <rocky-AT-panix.com>.
369
374
370 2006-01-16 Ville Vainio <vivainio@gmail.com>
375 2006-01-16 Ville Vainio <vivainio@gmail.com>
371
376
372 * Ipython/magic.py:Reverted back to old %edit functionality
377 * Ipython/magic.py:Reverted back to old %edit functionality
373 that returns file contents on exit.
378 that returns file contents on exit.
374
379
375 * IPython/path.py: Added Jason Orendorff's "path" module to
380 * IPython/path.py: Added Jason Orendorff's "path" module to
376 IPython tree, http://www.jorendorff.com/articles/python/path/.
381 IPython tree, http://www.jorendorff.com/articles/python/path/.
377 You can get path objects conveniently through %sc, and !!, e.g.:
382 You can get path objects conveniently through %sc, and !!, e.g.:
378 sc files=ls
383 sc files=ls
379 for p in files.paths: # or files.p
384 for p in files.paths: # or files.p
380 print p,p.mtime
385 print p,p.mtime
381
386
382 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
387 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
383 now work again without considering the exclusion regexp -
388 now work again without considering the exclusion regexp -
384 hence, things like ',foo my/path' turn to 'foo("my/path")'
389 hence, things like ',foo my/path' turn to 'foo("my/path")'
385 instead of syntax error.
390 instead of syntax error.
386
391
387
392
388 2006-01-14 Ville Vainio <vivainio@gmail.com>
393 2006-01-14 Ville Vainio <vivainio@gmail.com>
389
394
390 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
395 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
391 ipapi decorators for python 2.4 users, options() provides access to rc
396 ipapi decorators for python 2.4 users, options() provides access to rc
392 data.
397 data.
393
398
394 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
399 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
395 as path separators (even on Linux ;-). Space character after
400 as path separators (even on Linux ;-). Space character after
396 backslash (as yielded by tab completer) is still space;
401 backslash (as yielded by tab completer) is still space;
397 "%cd long\ name" works as expected.
402 "%cd long\ name" works as expected.
398
403
399 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
404 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
400 as "chain of command", with priority. API stays the same,
405 as "chain of command", with priority. API stays the same,
401 TryNext exception raised by a hook function signals that
406 TryNext exception raised by a hook function signals that
402 current hook failed and next hook should try handling it, as
407 current hook failed and next hook should try handling it, as
403 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
408 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
404 requested configurable display hook, which is now implemented.
409 requested configurable display hook, which is now implemented.
405
410
406 2006-01-13 Ville Vainio <vivainio@gmail.com>
411 2006-01-13 Ville Vainio <vivainio@gmail.com>
407
412
408 * IPython/platutils*.py: platform specific utility functions,
413 * IPython/platutils*.py: platform specific utility functions,
409 so far only set_term_title is implemented (change terminal
414 so far only set_term_title is implemented (change terminal
410 label in windowing systems). %cd now changes the title to
415 label in windowing systems). %cd now changes the title to
411 current dir.
416 current dir.
412
417
413 * IPython/Release.py: Added myself to "authors" list,
418 * IPython/Release.py: Added myself to "authors" list,
414 had to create new files.
419 had to create new files.
415
420
416 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
421 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
417 shell escape; not a known bug but had potential to be one in the
422 shell escape; not a known bug but had potential to be one in the
418 future.
423 future.
419
424
420 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
425 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
421 extension API for IPython! See the module for usage example. Fix
426 extension API for IPython! See the module for usage example. Fix
422 OInspect for docstring-less magic functions.
427 OInspect for docstring-less magic functions.
423
428
424
429
425 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
430 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
426
431
427 * IPython/iplib.py (raw_input): temporarily deactivate all
432 * IPython/iplib.py (raw_input): temporarily deactivate all
428 attempts at allowing pasting of code with autoindent on. It
433 attempts at allowing pasting of code with autoindent on. It
429 introduced bugs (reported by Prabhu) and I can't seem to find a
434 introduced bugs (reported by Prabhu) and I can't seem to find a
430 robust combination which works in all cases. Will have to revisit
435 robust combination which works in all cases. Will have to revisit
431 later.
436 later.
432
437
433 * IPython/genutils.py: remove isspace() function. We've dropped
438 * IPython/genutils.py: remove isspace() function. We've dropped
434 2.2 compatibility, so it's OK to use the string method.
439 2.2 compatibility, so it's OK to use the string method.
435
440
436 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
441 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
437
442
438 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
443 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
439 matching what NOT to autocall on, to include all python binary
444 matching what NOT to autocall on, to include all python binary
440 operators (including things like 'and', 'or', 'is' and 'in').
445 operators (including things like 'and', 'or', 'is' and 'in').
441 Prompted by a bug report on 'foo & bar', but I realized we had
446 Prompted by a bug report on 'foo & bar', but I realized we had
442 many more potential bug cases with other operators. The regexp is
447 many more potential bug cases with other operators. The regexp is
443 self.re_exclude_auto, it's fairly commented.
448 self.re_exclude_auto, it's fairly commented.
444
449
445 2006-01-12 Ville Vainio <vivainio@gmail.com>
450 2006-01-12 Ville Vainio <vivainio@gmail.com>
446
451
447 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
452 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
448 Prettified and hardened string/backslash quoting with ipsystem(),
453 Prettified and hardened string/backslash quoting with ipsystem(),
449 ipalias() and ipmagic(). Now even \ characters are passed to
454 ipalias() and ipmagic(). Now even \ characters are passed to
450 %magics, !shell escapes and aliases exactly as they are in the
455 %magics, !shell escapes and aliases exactly as they are in the
451 ipython command line. Should improve backslash experience,
456 ipython command line. Should improve backslash experience,
452 particularly in Windows (path delimiter for some commands that
457 particularly in Windows (path delimiter for some commands that
453 won't understand '/'), but Unix benefits as well (regexps). %cd
458 won't understand '/'), but Unix benefits as well (regexps). %cd
454 magic still doesn't support backslash path delimiters, though. Also
459 magic still doesn't support backslash path delimiters, though. Also
455 deleted all pretense of supporting multiline command strings in
460 deleted all pretense of supporting multiline command strings in
456 !system or %magic commands. Thanks to Jerry McRae for suggestions.
461 !system or %magic commands. Thanks to Jerry McRae for suggestions.
457
462
458 * doc/build_doc_instructions.txt added. Documentation on how to
463 * doc/build_doc_instructions.txt added. Documentation on how to
459 use doc/update_manual.py, added yesterday. Both files contributed
464 use doc/update_manual.py, added yesterday. Both files contributed
460 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
465 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
461 doc/*.sh for deprecation at a later date.
466 doc/*.sh for deprecation at a later date.
462
467
463 * /ipython.py Added ipython.py to root directory for
468 * /ipython.py Added ipython.py to root directory for
464 zero-installation (tar xzvf ipython.tgz; cd ipython; python
469 zero-installation (tar xzvf ipython.tgz; cd ipython; python
465 ipython.py) and development convenience (no need to kee doing
470 ipython.py) and development convenience (no need to kee doing
466 "setup.py install" between changes).
471 "setup.py install" between changes).
467
472
468 * Made ! and !! shell escapes work (again) in multiline expressions:
473 * Made ! and !! shell escapes work (again) in multiline expressions:
469 if 1:
474 if 1:
470 !ls
475 !ls
471 !!ls
476 !!ls
472
477
473 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
478 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
474
479
475 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
480 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
476 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
481 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
477 module in case-insensitive installation. Was causing crashes
482 module in case-insensitive installation. Was causing crashes
478 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
483 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
479
484
480 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
485 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
481 <marienz-AT-gentoo.org>, closes
486 <marienz-AT-gentoo.org>, closes
482 http://www.scipy.net/roundup/ipython/issue51.
487 http://www.scipy.net/roundup/ipython/issue51.
483
488
484 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
489 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
485
490
486 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
491 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
487 problem of excessive CPU usage under *nix and keyboard lag under
492 problem of excessive CPU usage under *nix and keyboard lag under
488 win32.
493 win32.
489
494
490 2006-01-10 *** Released version 0.7.0
495 2006-01-10 *** Released version 0.7.0
491
496
492 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
497 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
493
498
494 * IPython/Release.py (revision): tag version number to 0.7.0,
499 * IPython/Release.py (revision): tag version number to 0.7.0,
495 ready for release.
500 ready for release.
496
501
497 * IPython/Magic.py (magic_edit): Add print statement to %edit so
502 * IPython/Magic.py (magic_edit): Add print statement to %edit so
498 it informs the user of the name of the temp. file used. This can
503 it informs the user of the name of the temp. file used. This can
499 help if you decide later to reuse that same file, so you know
504 help if you decide later to reuse that same file, so you know
500 where to copy the info from.
505 where to copy the info from.
501
506
502 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
507 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
503
508
504 * setup_bdist_egg.py: little script to build an egg. Added
509 * setup_bdist_egg.py: little script to build an egg. Added
505 support in the release tools as well.
510 support in the release tools as well.
506
511
507 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
512 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
508
513
509 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
514 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
510 version selection (new -wxversion command line and ipythonrc
515 version selection (new -wxversion command line and ipythonrc
511 parameter). Patch contributed by Arnd Baecker
516 parameter). Patch contributed by Arnd Baecker
512 <arnd.baecker-AT-web.de>.
517 <arnd.baecker-AT-web.de>.
513
518
514 * IPython/iplib.py (embed_mainloop): fix tab-completion in
519 * IPython/iplib.py (embed_mainloop): fix tab-completion in
515 embedded instances, for variables defined at the interactive
520 embedded instances, for variables defined at the interactive
516 prompt of the embedded ipython. Reported by Arnd.
521 prompt of the embedded ipython. Reported by Arnd.
517
522
518 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
523 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
519 it can be used as a (stateful) toggle, or with a direct parameter.
524 it can be used as a (stateful) toggle, or with a direct parameter.
520
525
521 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
526 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
522 could be triggered in certain cases and cause the traceback
527 could be triggered in certain cases and cause the traceback
523 printer not to work.
528 printer not to work.
524
529
525 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
530 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
526
531
527 * IPython/iplib.py (_should_recompile): Small fix, closes
532 * IPython/iplib.py (_should_recompile): Small fix, closes
528 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
533 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
529
534
530 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
535 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
531
536
532 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
537 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
533 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
538 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
534 Moad for help with tracking it down.
539 Moad for help with tracking it down.
535
540
536 * IPython/iplib.py (handle_auto): fix autocall handling for
541 * IPython/iplib.py (handle_auto): fix autocall handling for
537 objects which support BOTH __getitem__ and __call__ (so that f [x]
542 objects which support BOTH __getitem__ and __call__ (so that f [x]
538 is left alone, instead of becoming f([x]) automatically).
543 is left alone, instead of becoming f([x]) automatically).
539
544
540 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
545 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
541 Ville's patch.
546 Ville's patch.
542
547
543 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
548 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
544
549
545 * IPython/iplib.py (handle_auto): changed autocall semantics to
550 * IPython/iplib.py (handle_auto): changed autocall semantics to
546 include 'smart' mode, where the autocall transformation is NOT
551 include 'smart' mode, where the autocall transformation is NOT
547 applied if there are no arguments on the line. This allows you to
552 applied if there are no arguments on the line. This allows you to
548 just type 'foo' if foo is a callable to see its internal form,
553 just type 'foo' if foo is a callable to see its internal form,
549 instead of having it called with no arguments (typically a
554 instead of having it called with no arguments (typically a
550 mistake). The old 'full' autocall still exists: for that, you
555 mistake). The old 'full' autocall still exists: for that, you
551 need to set the 'autocall' parameter to 2 in your ipythonrc file.
556 need to set the 'autocall' parameter to 2 in your ipythonrc file.
552
557
553 * IPython/completer.py (Completer.attr_matches): add
558 * IPython/completer.py (Completer.attr_matches): add
554 tab-completion support for Enthoughts' traits. After a report by
559 tab-completion support for Enthoughts' traits. After a report by
555 Arnd and a patch by Prabhu.
560 Arnd and a patch by Prabhu.
556
561
557 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
562 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
558
563
559 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
564 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
560 Schmolck's patch to fix inspect.getinnerframes().
565 Schmolck's patch to fix inspect.getinnerframes().
561
566
562 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
567 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
563 for embedded instances, regarding handling of namespaces and items
568 for embedded instances, regarding handling of namespaces and items
564 added to the __builtin__ one. Multiple embedded instances and
569 added to the __builtin__ one. Multiple embedded instances and
565 recursive embeddings should work better now (though I'm not sure
570 recursive embeddings should work better now (though I'm not sure
566 I've got all the corner cases fixed, that code is a bit of a brain
571 I've got all the corner cases fixed, that code is a bit of a brain
567 twister).
572 twister).
568
573
569 * IPython/Magic.py (magic_edit): added support to edit in-memory
574 * IPython/Magic.py (magic_edit): added support to edit in-memory
570 macros (automatically creates the necessary temp files). %edit
575 macros (automatically creates the necessary temp files). %edit
571 also doesn't return the file contents anymore, it's just noise.
576 also doesn't return the file contents anymore, it's just noise.
572
577
573 * IPython/completer.py (Completer.attr_matches): revert change to
578 * IPython/completer.py (Completer.attr_matches): revert change to
574 complete only on attributes listed in __all__. I realized it
579 complete only on attributes listed in __all__. I realized it
575 cripples the tab-completion system as a tool for exploring the
580 cripples the tab-completion system as a tool for exploring the
576 internals of unknown libraries (it renders any non-__all__
581 internals of unknown libraries (it renders any non-__all__
577 attribute off-limits). I got bit by this when trying to see
582 attribute off-limits). I got bit by this when trying to see
578 something inside the dis module.
583 something inside the dis module.
579
584
580 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
585 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
581
586
582 * IPython/iplib.py (InteractiveShell.__init__): add .meta
587 * IPython/iplib.py (InteractiveShell.__init__): add .meta
583 namespace for users and extension writers to hold data in. This
588 namespace for users and extension writers to hold data in. This
584 follows the discussion in
589 follows the discussion in
585 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
590 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
586
591
587 * IPython/completer.py (IPCompleter.complete): small patch to help
592 * IPython/completer.py (IPCompleter.complete): small patch to help
588 tab-completion under Emacs, after a suggestion by John Barnard
593 tab-completion under Emacs, after a suggestion by John Barnard
589 <barnarj-AT-ccf.org>.
594 <barnarj-AT-ccf.org>.
590
595
591 * IPython/Magic.py (Magic.extract_input_slices): added support for
596 * IPython/Magic.py (Magic.extract_input_slices): added support for
592 the slice notation in magics to use N-M to represent numbers N...M
597 the slice notation in magics to use N-M to represent numbers N...M
593 (closed endpoints). This is used by %macro and %save.
598 (closed endpoints). This is used by %macro and %save.
594
599
595 * IPython/completer.py (Completer.attr_matches): for modules which
600 * IPython/completer.py (Completer.attr_matches): for modules which
596 define __all__, complete only on those. After a patch by Jeffrey
601 define __all__, complete only on those. After a patch by Jeffrey
597 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
602 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
598 speed up this routine.
603 speed up this routine.
599
604
600 * IPython/Logger.py (Logger.log): fix a history handling bug. I
605 * IPython/Logger.py (Logger.log): fix a history handling bug. I
601 don't know if this is the end of it, but the behavior now is
606 don't know if this is the end of it, but the behavior now is
602 certainly much more correct. Note that coupled with macros,
607 certainly much more correct. Note that coupled with macros,
603 slightly surprising (at first) behavior may occur: a macro will in
608 slightly surprising (at first) behavior may occur: a macro will in
604 general expand to multiple lines of input, so upon exiting, the
609 general expand to multiple lines of input, so upon exiting, the
605 in/out counters will both be bumped by the corresponding amount
610 in/out counters will both be bumped by the corresponding amount
606 (as if the macro's contents had been typed interactively). Typing
611 (as if the macro's contents had been typed interactively). Typing
607 %hist will reveal the intermediate (silently processed) lines.
612 %hist will reveal the intermediate (silently processed) lines.
608
613
609 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
614 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
610 pickle to fail (%run was overwriting __main__ and not restoring
615 pickle to fail (%run was overwriting __main__ and not restoring
611 it, but pickle relies on __main__ to operate).
616 it, but pickle relies on __main__ to operate).
612
617
613 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
618 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
614 using properties, but forgot to make the main InteractiveShell
619 using properties, but forgot to make the main InteractiveShell
615 class a new-style class. Properties fail silently, and
620 class a new-style class. Properties fail silently, and
616 misteriously, with old-style class (getters work, but
621 misteriously, with old-style class (getters work, but
617 setters don't do anything).
622 setters don't do anything).
618
623
619 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
624 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
620
625
621 * IPython/Magic.py (magic_history): fix history reporting bug (I
626 * IPython/Magic.py (magic_history): fix history reporting bug (I
622 know some nasties are still there, I just can't seem to find a
627 know some nasties are still there, I just can't seem to find a
623 reproducible test case to track them down; the input history is
628 reproducible test case to track them down; the input history is
624 falling out of sync...)
629 falling out of sync...)
625
630
626 * IPython/iplib.py (handle_shell_escape): fix bug where both
631 * IPython/iplib.py (handle_shell_escape): fix bug where both
627 aliases and system accesses where broken for indented code (such
632 aliases and system accesses where broken for indented code (such
628 as loops).
633 as loops).
629
634
630 * IPython/genutils.py (shell): fix small but critical bug for
635 * IPython/genutils.py (shell): fix small but critical bug for
631 win32 system access.
636 win32 system access.
632
637
633 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
638 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
634
639
635 * IPython/iplib.py (showtraceback): remove use of the
640 * IPython/iplib.py (showtraceback): remove use of the
636 sys.last_{type/value/traceback} structures, which are non
641 sys.last_{type/value/traceback} structures, which are non
637 thread-safe.
642 thread-safe.
638 (_prefilter): change control flow to ensure that we NEVER
643 (_prefilter): change control flow to ensure that we NEVER
639 introspect objects when autocall is off. This will guarantee that
644 introspect objects when autocall is off. This will guarantee that
640 having an input line of the form 'x.y', where access to attribute
645 having an input line of the form 'x.y', where access to attribute
641 'y' has side effects, doesn't trigger the side effect TWICE. It
646 'y' has side effects, doesn't trigger the side effect TWICE. It
642 is important to note that, with autocall on, these side effects
647 is important to note that, with autocall on, these side effects
643 can still happen.
648 can still happen.
644 (ipsystem): new builtin, to complete the ip{magic/alias/system}
649 (ipsystem): new builtin, to complete the ip{magic/alias/system}
645 trio. IPython offers these three kinds of special calls which are
650 trio. IPython offers these three kinds of special calls which are
646 not python code, and it's a good thing to have their call method
651 not python code, and it's a good thing to have their call method
647 be accessible as pure python functions (not just special syntax at
652 be accessible as pure python functions (not just special syntax at
648 the command line). It gives us a better internal implementation
653 the command line). It gives us a better internal implementation
649 structure, as well as exposing these for user scripting more
654 structure, as well as exposing these for user scripting more
650 cleanly.
655 cleanly.
651
656
652 * IPython/macro.py (Macro.__init__): moved macros to a standalone
657 * IPython/macro.py (Macro.__init__): moved macros to a standalone
653 file. Now that they'll be more likely to be used with the
658 file. Now that they'll be more likely to be used with the
654 persistance system (%store), I want to make sure their module path
659 persistance system (%store), I want to make sure their module path
655 doesn't change in the future, so that we don't break things for
660 doesn't change in the future, so that we don't break things for
656 users' persisted data.
661 users' persisted data.
657
662
658 * IPython/iplib.py (autoindent_update): move indentation
663 * IPython/iplib.py (autoindent_update): move indentation
659 management into the _text_ processing loop, not the keyboard
664 management into the _text_ processing loop, not the keyboard
660 interactive one. This is necessary to correctly process non-typed
665 interactive one. This is necessary to correctly process non-typed
661 multiline input (such as macros).
666 multiline input (such as macros).
662
667
663 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
668 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
664 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
669 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
665 which was producing problems in the resulting manual.
670 which was producing problems in the resulting manual.
666 (magic_whos): improve reporting of instances (show their class,
671 (magic_whos): improve reporting of instances (show their class,
667 instead of simply printing 'instance' which isn't terribly
672 instead of simply printing 'instance' which isn't terribly
668 informative).
673 informative).
669
674
670 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
675 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
671 (minor mods) to support network shares under win32.
676 (minor mods) to support network shares under win32.
672
677
673 * IPython/winconsole.py (get_console_size): add new winconsole
678 * IPython/winconsole.py (get_console_size): add new winconsole
674 module and fixes to page_dumb() to improve its behavior under
679 module and fixes to page_dumb() to improve its behavior under
675 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
680 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
676
681
677 * IPython/Magic.py (Macro): simplified Macro class to just
682 * IPython/Magic.py (Macro): simplified Macro class to just
678 subclass list. We've had only 2.2 compatibility for a very long
683 subclass list. We've had only 2.2 compatibility for a very long
679 time, yet I was still avoiding subclassing the builtin types. No
684 time, yet I was still avoiding subclassing the builtin types. No
680 more (I'm also starting to use properties, though I won't shift to
685 more (I'm also starting to use properties, though I won't shift to
681 2.3-specific features quite yet).
686 2.3-specific features quite yet).
682 (magic_store): added Ville's patch for lightweight variable
687 (magic_store): added Ville's patch for lightweight variable
683 persistence, after a request on the user list by Matt Wilkie
688 persistence, after a request on the user list by Matt Wilkie
684 <maphew-AT-gmail.com>. The new %store magic's docstring has full
689 <maphew-AT-gmail.com>. The new %store magic's docstring has full
685 details.
690 details.
686
691
687 * IPython/iplib.py (InteractiveShell.post_config_initialization):
692 * IPython/iplib.py (InteractiveShell.post_config_initialization):
688 changed the default logfile name from 'ipython.log' to
693 changed the default logfile name from 'ipython.log' to
689 'ipython_log.py'. These logs are real python files, and now that
694 'ipython_log.py'. These logs are real python files, and now that
690 we have much better multiline support, people are more likely to
695 we have much better multiline support, people are more likely to
691 want to use them as such. Might as well name them correctly.
696 want to use them as such. Might as well name them correctly.
692
697
693 * IPython/Magic.py: substantial cleanup. While we can't stop
698 * IPython/Magic.py: substantial cleanup. While we can't stop
694 using magics as mixins, due to the existing customizations 'out
699 using magics as mixins, due to the existing customizations 'out
695 there' which rely on the mixin naming conventions, at least I
700 there' which rely on the mixin naming conventions, at least I
696 cleaned out all cross-class name usage. So once we are OK with
701 cleaned out all cross-class name usage. So once we are OK with
697 breaking compatibility, the two systems can be separated.
702 breaking compatibility, the two systems can be separated.
698
703
699 * IPython/Logger.py: major cleanup. This one is NOT a mixin
704 * IPython/Logger.py: major cleanup. This one is NOT a mixin
700 anymore, and the class is a fair bit less hideous as well. New
705 anymore, and the class is a fair bit less hideous as well. New
701 features were also introduced: timestamping of input, and logging
706 features were also introduced: timestamping of input, and logging
702 of output results. These are user-visible with the -t and -o
707 of output results. These are user-visible with the -t and -o
703 options to %logstart. Closes
708 options to %logstart. Closes
704 http://www.scipy.net/roundup/ipython/issue11 and a request by
709 http://www.scipy.net/roundup/ipython/issue11 and a request by
705 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
710 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
706
711
707 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
712 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
708
713
709 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
714 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
710 better hadnle backslashes in paths. See the thread 'More Windows
715 better hadnle backslashes in paths. See the thread 'More Windows
711 questions part 2 - \/ characters revisited' on the iypthon user
716 questions part 2 - \/ characters revisited' on the iypthon user
712 list:
717 list:
713 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
718 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
714
719
715 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
720 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
716
721
717 (InteractiveShell.__init__): change threaded shells to not use the
722 (InteractiveShell.__init__): change threaded shells to not use the
718 ipython crash handler. This was causing more problems than not,
723 ipython crash handler. This was causing more problems than not,
719 as exceptions in the main thread (GUI code, typically) would
724 as exceptions in the main thread (GUI code, typically) would
720 always show up as a 'crash', when they really weren't.
725 always show up as a 'crash', when they really weren't.
721
726
722 The colors and exception mode commands (%colors/%xmode) have been
727 The colors and exception mode commands (%colors/%xmode) have been
723 synchronized to also take this into account, so users can get
728 synchronized to also take this into account, so users can get
724 verbose exceptions for their threaded code as well. I also added
729 verbose exceptions for their threaded code as well. I also added
725 support for activating pdb inside this exception handler as well,
730 support for activating pdb inside this exception handler as well,
726 so now GUI authors can use IPython's enhanced pdb at runtime.
731 so now GUI authors can use IPython's enhanced pdb at runtime.
727
732
728 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
733 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
729 true by default, and add it to the shipped ipythonrc file. Since
734 true by default, and add it to the shipped ipythonrc file. Since
730 this asks the user before proceeding, I think it's OK to make it
735 this asks the user before proceeding, I think it's OK to make it
731 true by default.
736 true by default.
732
737
733 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
738 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
734 of the previous special-casing of input in the eval loop. I think
739 of the previous special-casing of input in the eval loop. I think
735 this is cleaner, as they really are commands and shouldn't have
740 this is cleaner, as they really are commands and shouldn't have
736 a special role in the middle of the core code.
741 a special role in the middle of the core code.
737
742
738 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
743 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
739
744
740 * IPython/iplib.py (edit_syntax_error): added support for
745 * IPython/iplib.py (edit_syntax_error): added support for
741 automatically reopening the editor if the file had a syntax error
746 automatically reopening the editor if the file had a syntax error
742 in it. Thanks to scottt who provided the patch at:
747 in it. Thanks to scottt who provided the patch at:
743 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
748 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
744 version committed).
749 version committed).
745
750
746 * IPython/iplib.py (handle_normal): add suport for multi-line
751 * IPython/iplib.py (handle_normal): add suport for multi-line
747 input with emtpy lines. This fixes
752 input with emtpy lines. This fixes
748 http://www.scipy.net/roundup/ipython/issue43 and a similar
753 http://www.scipy.net/roundup/ipython/issue43 and a similar
749 discussion on the user list.
754 discussion on the user list.
750
755
751 WARNING: a behavior change is necessarily introduced to support
756 WARNING: a behavior change is necessarily introduced to support
752 blank lines: now a single blank line with whitespace does NOT
757 blank lines: now a single blank line with whitespace does NOT
753 break the input loop, which means that when autoindent is on, by
758 break the input loop, which means that when autoindent is on, by
754 default hitting return on the next (indented) line does NOT exit.
759 default hitting return on the next (indented) line does NOT exit.
755
760
756 Instead, to exit a multiline input you can either have:
761 Instead, to exit a multiline input you can either have:
757
762
758 - TWO whitespace lines (just hit return again), or
763 - TWO whitespace lines (just hit return again), or
759 - a single whitespace line of a different length than provided
764 - a single whitespace line of a different length than provided
760 by the autoindent (add or remove a space).
765 by the autoindent (add or remove a space).
761
766
762 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
767 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
763 module to better organize all readline-related functionality.
768 module to better organize all readline-related functionality.
764 I've deleted FlexCompleter and put all completion clases here.
769 I've deleted FlexCompleter and put all completion clases here.
765
770
766 * IPython/iplib.py (raw_input): improve indentation management.
771 * IPython/iplib.py (raw_input): improve indentation management.
767 It is now possible to paste indented code with autoindent on, and
772 It is now possible to paste indented code with autoindent on, and
768 the code is interpreted correctly (though it still looks bad on
773 the code is interpreted correctly (though it still looks bad on
769 screen, due to the line-oriented nature of ipython).
774 screen, due to the line-oriented nature of ipython).
770 (MagicCompleter.complete): change behavior so that a TAB key on an
775 (MagicCompleter.complete): change behavior so that a TAB key on an
771 otherwise empty line actually inserts a tab, instead of completing
776 otherwise empty line actually inserts a tab, instead of completing
772 on the entire global namespace. This makes it easier to use the
777 on the entire global namespace. This makes it easier to use the
773 TAB key for indentation. After a request by Hans Meine
778 TAB key for indentation. After a request by Hans Meine
774 <hans_meine-AT-gmx.net>
779 <hans_meine-AT-gmx.net>
775 (_prefilter): add support so that typing plain 'exit' or 'quit'
780 (_prefilter): add support so that typing plain 'exit' or 'quit'
776 does a sensible thing. Originally I tried to deviate as little as
781 does a sensible thing. Originally I tried to deviate as little as
777 possible from the default python behavior, but even that one may
782 possible from the default python behavior, but even that one may
778 change in this direction (thread on python-dev to that effect).
783 change in this direction (thread on python-dev to that effect).
779 Regardless, ipython should do the right thing even if CPython's
784 Regardless, ipython should do the right thing even if CPython's
780 '>>>' prompt doesn't.
785 '>>>' prompt doesn't.
781 (InteractiveShell): removed subclassing code.InteractiveConsole
786 (InteractiveShell): removed subclassing code.InteractiveConsole
782 class. By now we'd overridden just about all of its methods: I've
787 class. By now we'd overridden just about all of its methods: I've
783 copied the remaining two over, and now ipython is a standalone
788 copied the remaining two over, and now ipython is a standalone
784 class. This will provide a clearer picture for the chainsaw
789 class. This will provide a clearer picture for the chainsaw
785 branch refactoring.
790 branch refactoring.
786
791
787 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
792 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
788
793
789 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
794 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
790 failures for objects which break when dir() is called on them.
795 failures for objects which break when dir() is called on them.
791
796
792 * IPython/FlexCompleter.py (Completer.__init__): Added support for
797 * IPython/FlexCompleter.py (Completer.__init__): Added support for
793 distinct local and global namespaces in the completer API. This
798 distinct local and global namespaces in the completer API. This
794 change allows us top properly handle completion with distinct
799 change allows us top properly handle completion with distinct
795 scopes, including in embedded instances (this had never really
800 scopes, including in embedded instances (this had never really
796 worked correctly).
801 worked correctly).
797
802
798 Note: this introduces a change in the constructor for
803 Note: this introduces a change in the constructor for
799 MagicCompleter, as a new global_namespace parameter is now the
804 MagicCompleter, as a new global_namespace parameter is now the
800 second argument (the others were bumped one position).
805 second argument (the others were bumped one position).
801
806
802 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
807 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
803
808
804 * IPython/iplib.py (embed_mainloop): fix tab-completion in
809 * IPython/iplib.py (embed_mainloop): fix tab-completion in
805 embedded instances (which can be done now thanks to Vivian's
810 embedded instances (which can be done now thanks to Vivian's
806 frame-handling fixes for pdb).
811 frame-handling fixes for pdb).
807 (InteractiveShell.__init__): Fix namespace handling problem in
812 (InteractiveShell.__init__): Fix namespace handling problem in
808 embedded instances. We were overwriting __main__ unconditionally,
813 embedded instances. We were overwriting __main__ unconditionally,
809 and this should only be done for 'full' (non-embedded) IPython;
814 and this should only be done for 'full' (non-embedded) IPython;
810 embedded instances must respect the caller's __main__. Thanks to
815 embedded instances must respect the caller's __main__. Thanks to
811 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
816 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
812
817
813 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
818 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
814
819
815 * setup.py: added download_url to setup(). This registers the
820 * setup.py: added download_url to setup(). This registers the
816 download address at PyPI, which is not only useful to humans
821 download address at PyPI, which is not only useful to humans
817 browsing the site, but is also picked up by setuptools (the Eggs
822 browsing the site, but is also picked up by setuptools (the Eggs
818 machinery). Thanks to Ville and R. Kern for the info/discussion
823 machinery). Thanks to Ville and R. Kern for the info/discussion
819 on this.
824 on this.
820
825
821 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
826 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
822
827
823 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
828 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
824 This brings a lot of nice functionality to the pdb mode, which now
829 This brings a lot of nice functionality to the pdb mode, which now
825 has tab-completion, syntax highlighting, and better stack handling
830 has tab-completion, syntax highlighting, and better stack handling
826 than before. Many thanks to Vivian De Smedt
831 than before. Many thanks to Vivian De Smedt
827 <vivian-AT-vdesmedt.com> for the original patches.
832 <vivian-AT-vdesmedt.com> for the original patches.
828
833
829 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
834 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
830
835
831 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
836 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
832 sequence to consistently accept the banner argument. The
837 sequence to consistently accept the banner argument. The
833 inconsistency was tripping SAGE, thanks to Gary Zablackis
838 inconsistency was tripping SAGE, thanks to Gary Zablackis
834 <gzabl-AT-yahoo.com> for the report.
839 <gzabl-AT-yahoo.com> for the report.
835
840
836 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
841 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
837
842
838 * IPython/iplib.py (InteractiveShell.post_config_initialization):
843 * IPython/iplib.py (InteractiveShell.post_config_initialization):
839 Fix bug where a naked 'alias' call in the ipythonrc file would
844 Fix bug where a naked 'alias' call in the ipythonrc file would
840 cause a crash. Bug reported by Jorgen Stenarson.
845 cause a crash. Bug reported by Jorgen Stenarson.
841
846
842 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
847 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
843
848
844 * IPython/ipmaker.py (make_IPython): cleanups which should improve
849 * IPython/ipmaker.py (make_IPython): cleanups which should improve
845 startup time.
850 startup time.
846
851
847 * IPython/iplib.py (runcode): my globals 'fix' for embedded
852 * IPython/iplib.py (runcode): my globals 'fix' for embedded
848 instances had introduced a bug with globals in normal code. Now
853 instances had introduced a bug with globals in normal code. Now
849 it's working in all cases.
854 it's working in all cases.
850
855
851 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
856 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
852 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
857 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
853 has been introduced to set the default case sensitivity of the
858 has been introduced to set the default case sensitivity of the
854 searches. Users can still select either mode at runtime on a
859 searches. Users can still select either mode at runtime on a
855 per-search basis.
860 per-search basis.
856
861
857 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
862 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
858
863
859 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
864 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
860 attributes in wildcard searches for subclasses. Modified version
865 attributes in wildcard searches for subclasses. Modified version
861 of a patch by Jorgen.
866 of a patch by Jorgen.
862
867
863 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
868 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
864
869
865 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
870 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
866 embedded instances. I added a user_global_ns attribute to the
871 embedded instances. I added a user_global_ns attribute to the
867 InteractiveShell class to handle this.
872 InteractiveShell class to handle this.
868
873
869 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
874 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
870
875
871 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
876 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
872 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
877 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
873 (reported under win32, but may happen also in other platforms).
878 (reported under win32, but may happen also in other platforms).
874 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
879 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
875
880
876 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
881 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
877
882
878 * IPython/Magic.py (magic_psearch): new support for wildcard
883 * IPython/Magic.py (magic_psearch): new support for wildcard
879 patterns. Now, typing ?a*b will list all names which begin with a
884 patterns. Now, typing ?a*b will list all names which begin with a
880 and end in b, for example. The %psearch magic has full
885 and end in b, for example. The %psearch magic has full
881 docstrings. Many thanks to JΓΆrgen Stenarson
886 docstrings. Many thanks to JΓΆrgen Stenarson
882 <jorgen.stenarson-AT-bostream.nu>, author of the patches
887 <jorgen.stenarson-AT-bostream.nu>, author of the patches
883 implementing this functionality.
888 implementing this functionality.
884
889
885 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
890 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
886
891
887 * Manual: fixed long-standing annoyance of double-dashes (as in
892 * Manual: fixed long-standing annoyance of double-dashes (as in
888 --prefix=~, for example) being stripped in the HTML version. This
893 --prefix=~, for example) being stripped in the HTML version. This
889 is a latex2html bug, but a workaround was provided. Many thanks
894 is a latex2html bug, but a workaround was provided. Many thanks
890 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
895 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
891 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
896 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
892 rolling. This seemingly small issue had tripped a number of users
897 rolling. This seemingly small issue had tripped a number of users
893 when first installing, so I'm glad to see it gone.
898 when first installing, so I'm glad to see it gone.
894
899
895 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
900 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
896
901
897 * IPython/Extensions/numeric_formats.py: fix missing import,
902 * IPython/Extensions/numeric_formats.py: fix missing import,
898 reported by Stephen Walton.
903 reported by Stephen Walton.
899
904
900 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
905 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
901
906
902 * IPython/demo.py: finish demo module, fully documented now.
907 * IPython/demo.py: finish demo module, fully documented now.
903
908
904 * IPython/genutils.py (file_read): simple little utility to read a
909 * IPython/genutils.py (file_read): simple little utility to read a
905 file and ensure it's closed afterwards.
910 file and ensure it's closed afterwards.
906
911
907 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
912 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
908
913
909 * IPython/demo.py (Demo.__init__): added support for individually
914 * IPython/demo.py (Demo.__init__): added support for individually
910 tagging blocks for automatic execution.
915 tagging blocks for automatic execution.
911
916
912 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
917 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
913 syntax-highlighted python sources, requested by John.
918 syntax-highlighted python sources, requested by John.
914
919
915 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
920 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
916
921
917 * IPython/demo.py (Demo.again): fix bug where again() blocks after
922 * IPython/demo.py (Demo.again): fix bug where again() blocks after
918 finishing.
923 finishing.
919
924
920 * IPython/genutils.py (shlex_split): moved from Magic to here,
925 * IPython/genutils.py (shlex_split): moved from Magic to here,
921 where all 2.2 compatibility stuff lives. I needed it for demo.py.
926 where all 2.2 compatibility stuff lives. I needed it for demo.py.
922
927
923 * IPython/demo.py (Demo.__init__): added support for silent
928 * IPython/demo.py (Demo.__init__): added support for silent
924 blocks, improved marks as regexps, docstrings written.
929 blocks, improved marks as regexps, docstrings written.
925 (Demo.__init__): better docstring, added support for sys.argv.
930 (Demo.__init__): better docstring, added support for sys.argv.
926
931
927 * IPython/genutils.py (marquee): little utility used by the demo
932 * IPython/genutils.py (marquee): little utility used by the demo
928 code, handy in general.
933 code, handy in general.
929
934
930 * IPython/demo.py (Demo.__init__): new class for interactive
935 * IPython/demo.py (Demo.__init__): new class for interactive
931 demos. Not documented yet, I just wrote it in a hurry for
936 demos. Not documented yet, I just wrote it in a hurry for
932 scipy'05. Will docstring later.
937 scipy'05. Will docstring later.
933
938
934 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
939 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
935
940
936 * IPython/Shell.py (sigint_handler): Drastic simplification which
941 * IPython/Shell.py (sigint_handler): Drastic simplification which
937 also seems to make Ctrl-C work correctly across threads! This is
942 also seems to make Ctrl-C work correctly across threads! This is
938 so simple, that I can't beleive I'd missed it before. Needs more
943 so simple, that I can't beleive I'd missed it before. Needs more
939 testing, though.
944 testing, though.
940 (KBINT): Never mind, revert changes. I'm sure I'd tried something
945 (KBINT): Never mind, revert changes. I'm sure I'd tried something
941 like this before...
946 like this before...
942
947
943 * IPython/genutils.py (get_home_dir): add protection against
948 * IPython/genutils.py (get_home_dir): add protection against
944 non-dirs in win32 registry.
949 non-dirs in win32 registry.
945
950
946 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
951 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
947 bug where dict was mutated while iterating (pysh crash).
952 bug where dict was mutated while iterating (pysh crash).
948
953
949 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
954 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
950
955
951 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
956 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
952 spurious newlines added by this routine. After a report by
957 spurious newlines added by this routine. After a report by
953 F. Mantegazza.
958 F. Mantegazza.
954
959
955 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
960 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
956
961
957 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
962 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
958 calls. These were a leftover from the GTK 1.x days, and can cause
963 calls. These were a leftover from the GTK 1.x days, and can cause
959 problems in certain cases (after a report by John Hunter).
964 problems in certain cases (after a report by John Hunter).
960
965
961 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
966 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
962 os.getcwd() fails at init time. Thanks to patch from David Remahl
967 os.getcwd() fails at init time. Thanks to patch from David Remahl
963 <chmod007-AT-mac.com>.
968 <chmod007-AT-mac.com>.
964 (InteractiveShell.__init__): prevent certain special magics from
969 (InteractiveShell.__init__): prevent certain special magics from
965 being shadowed by aliases. Closes
970 being shadowed by aliases. Closes
966 http://www.scipy.net/roundup/ipython/issue41.
971 http://www.scipy.net/roundup/ipython/issue41.
967
972
968 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
973 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
969
974
970 * IPython/iplib.py (InteractiveShell.complete): Added new
975 * IPython/iplib.py (InteractiveShell.complete): Added new
971 top-level completion method to expose the completion mechanism
976 top-level completion method to expose the completion mechanism
972 beyond readline-based environments.
977 beyond readline-based environments.
973
978
974 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
979 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
975
980
976 * tools/ipsvnc (svnversion): fix svnversion capture.
981 * tools/ipsvnc (svnversion): fix svnversion capture.
977
982
978 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
983 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
979 attribute to self, which was missing. Before, it was set by a
984 attribute to self, which was missing. Before, it was set by a
980 routine which in certain cases wasn't being called, so the
985 routine which in certain cases wasn't being called, so the
981 instance could end up missing the attribute. This caused a crash.
986 instance could end up missing the attribute. This caused a crash.
982 Closes http://www.scipy.net/roundup/ipython/issue40.
987 Closes http://www.scipy.net/roundup/ipython/issue40.
983
988
984 2005-08-16 Fernando Perez <fperez@colorado.edu>
989 2005-08-16 Fernando Perez <fperez@colorado.edu>
985
990
986 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
991 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
987 contains non-string attribute. Closes
992 contains non-string attribute. Closes
988 http://www.scipy.net/roundup/ipython/issue38.
993 http://www.scipy.net/roundup/ipython/issue38.
989
994
990 2005-08-14 Fernando Perez <fperez@colorado.edu>
995 2005-08-14 Fernando Perez <fperez@colorado.edu>
991
996
992 * tools/ipsvnc: Minor improvements, to add changeset info.
997 * tools/ipsvnc: Minor improvements, to add changeset info.
993
998
994 2005-08-12 Fernando Perez <fperez@colorado.edu>
999 2005-08-12 Fernando Perez <fperez@colorado.edu>
995
1000
996 * IPython/iplib.py (runsource): remove self.code_to_run_src
1001 * IPython/iplib.py (runsource): remove self.code_to_run_src
997 attribute. I realized this is nothing more than
1002 attribute. I realized this is nothing more than
998 '\n'.join(self.buffer), and having the same data in two different
1003 '\n'.join(self.buffer), and having the same data in two different
999 places is just asking for synchronization bugs. This may impact
1004 places is just asking for synchronization bugs. This may impact
1000 people who have custom exception handlers, so I need to warn
1005 people who have custom exception handlers, so I need to warn
1001 ipython-dev about it (F. Mantegazza may use them).
1006 ipython-dev about it (F. Mantegazza may use them).
1002
1007
1003 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1008 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1004
1009
1005 * IPython/genutils.py: fix 2.2 compatibility (generators)
1010 * IPython/genutils.py: fix 2.2 compatibility (generators)
1006
1011
1007 2005-07-18 Fernando Perez <fperez@colorado.edu>
1012 2005-07-18 Fernando Perez <fperez@colorado.edu>
1008
1013
1009 * IPython/genutils.py (get_home_dir): fix to help users with
1014 * IPython/genutils.py (get_home_dir): fix to help users with
1010 invalid $HOME under win32.
1015 invalid $HOME under win32.
1011
1016
1012 2005-07-17 Fernando Perez <fperez@colorado.edu>
1017 2005-07-17 Fernando Perez <fperez@colorado.edu>
1013
1018
1014 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1019 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1015 some old hacks and clean up a bit other routines; code should be
1020 some old hacks and clean up a bit other routines; code should be
1016 simpler and a bit faster.
1021 simpler and a bit faster.
1017
1022
1018 * IPython/iplib.py (interact): removed some last-resort attempts
1023 * IPython/iplib.py (interact): removed some last-resort attempts
1019 to survive broken stdout/stderr. That code was only making it
1024 to survive broken stdout/stderr. That code was only making it
1020 harder to abstract out the i/o (necessary for gui integration),
1025 harder to abstract out the i/o (necessary for gui integration),
1021 and the crashes it could prevent were extremely rare in practice
1026 and the crashes it could prevent were extremely rare in practice
1022 (besides being fully user-induced in a pretty violent manner).
1027 (besides being fully user-induced in a pretty violent manner).
1023
1028
1024 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1029 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1025 Nothing major yet, but the code is simpler to read; this should
1030 Nothing major yet, but the code is simpler to read; this should
1026 make it easier to do more serious modifications in the future.
1031 make it easier to do more serious modifications in the future.
1027
1032
1028 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1033 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1029 which broke in .15 (thanks to a report by Ville).
1034 which broke in .15 (thanks to a report by Ville).
1030
1035
1031 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1036 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1032 be quite correct, I know next to nothing about unicode). This
1037 be quite correct, I know next to nothing about unicode). This
1033 will allow unicode strings to be used in prompts, amongst other
1038 will allow unicode strings to be used in prompts, amongst other
1034 cases. It also will prevent ipython from crashing when unicode
1039 cases. It also will prevent ipython from crashing when unicode
1035 shows up unexpectedly in many places. If ascii encoding fails, we
1040 shows up unexpectedly in many places. If ascii encoding fails, we
1036 assume utf_8. Currently the encoding is not a user-visible
1041 assume utf_8. Currently the encoding is not a user-visible
1037 setting, though it could be made so if there is demand for it.
1042 setting, though it could be made so if there is demand for it.
1038
1043
1039 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1044 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1040
1045
1041 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1046 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1042
1047
1043 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1048 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1044
1049
1045 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1050 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1046 code can work transparently for 2.2/2.3.
1051 code can work transparently for 2.2/2.3.
1047
1052
1048 2005-07-16 Fernando Perez <fperez@colorado.edu>
1053 2005-07-16 Fernando Perez <fperez@colorado.edu>
1049
1054
1050 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1055 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1051 out of the color scheme table used for coloring exception
1056 out of the color scheme table used for coloring exception
1052 tracebacks. This allows user code to add new schemes at runtime.
1057 tracebacks. This allows user code to add new schemes at runtime.
1053 This is a minimally modified version of the patch at
1058 This is a minimally modified version of the patch at
1054 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1059 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1055 for the contribution.
1060 for the contribution.
1056
1061
1057 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1062 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1058 slightly modified version of the patch in
1063 slightly modified version of the patch in
1059 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1064 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1060 to remove the previous try/except solution (which was costlier).
1065 to remove the previous try/except solution (which was costlier).
1061 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1066 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1062
1067
1063 2005-06-08 Fernando Perez <fperez@colorado.edu>
1068 2005-06-08 Fernando Perez <fperez@colorado.edu>
1064
1069
1065 * IPython/iplib.py (write/write_err): Add methods to abstract all
1070 * IPython/iplib.py (write/write_err): Add methods to abstract all
1066 I/O a bit more.
1071 I/O a bit more.
1067
1072
1068 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1073 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1069 warning, reported by Aric Hagberg, fix by JD Hunter.
1074 warning, reported by Aric Hagberg, fix by JD Hunter.
1070
1075
1071 2005-06-02 *** Released version 0.6.15
1076 2005-06-02 *** Released version 0.6.15
1072
1077
1073 2005-06-01 Fernando Perez <fperez@colorado.edu>
1078 2005-06-01 Fernando Perez <fperez@colorado.edu>
1074
1079
1075 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1080 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1076 tab-completion of filenames within open-quoted strings. Note that
1081 tab-completion of filenames within open-quoted strings. Note that
1077 this requires that in ~/.ipython/ipythonrc, users change the
1082 this requires that in ~/.ipython/ipythonrc, users change the
1078 readline delimiters configuration to read:
1083 readline delimiters configuration to read:
1079
1084
1080 readline_remove_delims -/~
1085 readline_remove_delims -/~
1081
1086
1082
1087
1083 2005-05-31 *** Released version 0.6.14
1088 2005-05-31 *** Released version 0.6.14
1084
1089
1085 2005-05-29 Fernando Perez <fperez@colorado.edu>
1090 2005-05-29 Fernando Perez <fperez@colorado.edu>
1086
1091
1087 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1092 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1088 with files not on the filesystem. Reported by Eliyahu Sandler
1093 with files not on the filesystem. Reported by Eliyahu Sandler
1089 <eli@gondolin.net>
1094 <eli@gondolin.net>
1090
1095
1091 2005-05-22 Fernando Perez <fperez@colorado.edu>
1096 2005-05-22 Fernando Perez <fperez@colorado.edu>
1092
1097
1093 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1098 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1094 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1099 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1095
1100
1096 2005-05-19 Fernando Perez <fperez@colorado.edu>
1101 2005-05-19 Fernando Perez <fperez@colorado.edu>
1097
1102
1098 * IPython/iplib.py (safe_execfile): close a file which could be
1103 * IPython/iplib.py (safe_execfile): close a file which could be
1099 left open (causing problems in win32, which locks open files).
1104 left open (causing problems in win32, which locks open files).
1100 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1105 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1101
1106
1102 2005-05-18 Fernando Perez <fperez@colorado.edu>
1107 2005-05-18 Fernando Perez <fperez@colorado.edu>
1103
1108
1104 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1109 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1105 keyword arguments correctly to safe_execfile().
1110 keyword arguments correctly to safe_execfile().
1106
1111
1107 2005-05-13 Fernando Perez <fperez@colorado.edu>
1112 2005-05-13 Fernando Perez <fperez@colorado.edu>
1108
1113
1109 * ipython.1: Added info about Qt to manpage, and threads warning
1114 * ipython.1: Added info about Qt to manpage, and threads warning
1110 to usage page (invoked with --help).
1115 to usage page (invoked with --help).
1111
1116
1112 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1117 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1113 new matcher (it goes at the end of the priority list) to do
1118 new matcher (it goes at the end of the priority list) to do
1114 tab-completion on named function arguments. Submitted by George
1119 tab-completion on named function arguments. Submitted by George
1115 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1120 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1116 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1121 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1117 for more details.
1122 for more details.
1118
1123
1119 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1124 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1120 SystemExit exceptions in the script being run. Thanks to a report
1125 SystemExit exceptions in the script being run. Thanks to a report
1121 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1126 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1122 producing very annoying behavior when running unit tests.
1127 producing very annoying behavior when running unit tests.
1123
1128
1124 2005-05-12 Fernando Perez <fperez@colorado.edu>
1129 2005-05-12 Fernando Perez <fperez@colorado.edu>
1125
1130
1126 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1131 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1127 which I'd broken (again) due to a changed regexp. In the process,
1132 which I'd broken (again) due to a changed regexp. In the process,
1128 added ';' as an escape to auto-quote the whole line without
1133 added ';' as an escape to auto-quote the whole line without
1129 splitting its arguments. Thanks to a report by Jerry McRae
1134 splitting its arguments. Thanks to a report by Jerry McRae
1130 <qrs0xyc02-AT-sneakemail.com>.
1135 <qrs0xyc02-AT-sneakemail.com>.
1131
1136
1132 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1137 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1133 possible crashes caused by a TokenError. Reported by Ed Schofield
1138 possible crashes caused by a TokenError. Reported by Ed Schofield
1134 <schofield-AT-ftw.at>.
1139 <schofield-AT-ftw.at>.
1135
1140
1136 2005-05-06 Fernando Perez <fperez@colorado.edu>
1141 2005-05-06 Fernando Perez <fperez@colorado.edu>
1137
1142
1138 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1143 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1139
1144
1140 2005-04-29 Fernando Perez <fperez@colorado.edu>
1145 2005-04-29 Fernando Perez <fperez@colorado.edu>
1141
1146
1142 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1147 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1143 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1148 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1144 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1149 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1145 which provides support for Qt interactive usage (similar to the
1150 which provides support for Qt interactive usage (similar to the
1146 existing one for WX and GTK). This had been often requested.
1151 existing one for WX and GTK). This had been often requested.
1147
1152
1148 2005-04-14 *** Released version 0.6.13
1153 2005-04-14 *** Released version 0.6.13
1149
1154
1150 2005-04-08 Fernando Perez <fperez@colorado.edu>
1155 2005-04-08 Fernando Perez <fperez@colorado.edu>
1151
1156
1152 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1157 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1153 from _ofind, which gets called on almost every input line. Now,
1158 from _ofind, which gets called on almost every input line. Now,
1154 we only try to get docstrings if they are actually going to be
1159 we only try to get docstrings if they are actually going to be
1155 used (the overhead of fetching unnecessary docstrings can be
1160 used (the overhead of fetching unnecessary docstrings can be
1156 noticeable for certain objects, such as Pyro proxies).
1161 noticeable for certain objects, such as Pyro proxies).
1157
1162
1158 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1163 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1159 for completers. For some reason I had been passing them the state
1164 for completers. For some reason I had been passing them the state
1160 variable, which completers never actually need, and was in
1165 variable, which completers never actually need, and was in
1161 conflict with the rlcompleter API. Custom completers ONLY need to
1166 conflict with the rlcompleter API. Custom completers ONLY need to
1162 take the text parameter.
1167 take the text parameter.
1163
1168
1164 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1169 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1165 work correctly in pysh. I've also moved all the logic which used
1170 work correctly in pysh. I've also moved all the logic which used
1166 to be in pysh.py here, which will prevent problems with future
1171 to be in pysh.py here, which will prevent problems with future
1167 upgrades. However, this time I must warn users to update their
1172 upgrades. However, this time I must warn users to update their
1168 pysh profile to include the line
1173 pysh profile to include the line
1169
1174
1170 import_all IPython.Extensions.InterpreterExec
1175 import_all IPython.Extensions.InterpreterExec
1171
1176
1172 because otherwise things won't work for them. They MUST also
1177 because otherwise things won't work for them. They MUST also
1173 delete pysh.py and the line
1178 delete pysh.py and the line
1174
1179
1175 execfile pysh.py
1180 execfile pysh.py
1176
1181
1177 from their ipythonrc-pysh.
1182 from their ipythonrc-pysh.
1178
1183
1179 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1184 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1180 robust in the face of objects whose dir() returns non-strings
1185 robust in the face of objects whose dir() returns non-strings
1181 (which it shouldn't, but some broken libs like ITK do). Thanks to
1186 (which it shouldn't, but some broken libs like ITK do). Thanks to
1182 a patch by John Hunter (implemented differently, though). Also
1187 a patch by John Hunter (implemented differently, though). Also
1183 minor improvements by using .extend instead of + on lists.
1188 minor improvements by using .extend instead of + on lists.
1184
1189
1185 * pysh.py:
1190 * pysh.py:
1186
1191
1187 2005-04-06 Fernando Perez <fperez@colorado.edu>
1192 2005-04-06 Fernando Perez <fperez@colorado.edu>
1188
1193
1189 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1194 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1190 by default, so that all users benefit from it. Those who don't
1195 by default, so that all users benefit from it. Those who don't
1191 want it can still turn it off.
1196 want it can still turn it off.
1192
1197
1193 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1198 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1194 config file, I'd forgotten about this, so users were getting it
1199 config file, I'd forgotten about this, so users were getting it
1195 off by default.
1200 off by default.
1196
1201
1197 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1202 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1198 consistency. Now magics can be called in multiline statements,
1203 consistency. Now magics can be called in multiline statements,
1199 and python variables can be expanded in magic calls via $var.
1204 and python variables can be expanded in magic calls via $var.
1200 This makes the magic system behave just like aliases or !system
1205 This makes the magic system behave just like aliases or !system
1201 calls.
1206 calls.
1202
1207
1203 2005-03-28 Fernando Perez <fperez@colorado.edu>
1208 2005-03-28 Fernando Perez <fperez@colorado.edu>
1204
1209
1205 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1210 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1206 expensive string additions for building command. Add support for
1211 expensive string additions for building command. Add support for
1207 trailing ';' when autocall is used.
1212 trailing ';' when autocall is used.
1208
1213
1209 2005-03-26 Fernando Perez <fperez@colorado.edu>
1214 2005-03-26 Fernando Perez <fperez@colorado.edu>
1210
1215
1211 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1216 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1212 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1217 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1213 ipython.el robust against prompts with any number of spaces
1218 ipython.el robust against prompts with any number of spaces
1214 (including 0) after the ':' character.
1219 (including 0) after the ':' character.
1215
1220
1216 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1221 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1217 continuation prompt, which misled users to think the line was
1222 continuation prompt, which misled users to think the line was
1218 already indented. Closes debian Bug#300847, reported to me by
1223 already indented. Closes debian Bug#300847, reported to me by
1219 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1224 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1220
1225
1221 2005-03-23 Fernando Perez <fperez@colorado.edu>
1226 2005-03-23 Fernando Perez <fperez@colorado.edu>
1222
1227
1223 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1228 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1224 properly aligned if they have embedded newlines.
1229 properly aligned if they have embedded newlines.
1225
1230
1226 * IPython/iplib.py (runlines): Add a public method to expose
1231 * IPython/iplib.py (runlines): Add a public method to expose
1227 IPython's code execution machinery, so that users can run strings
1232 IPython's code execution machinery, so that users can run strings
1228 as if they had been typed at the prompt interactively.
1233 as if they had been typed at the prompt interactively.
1229 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1234 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1230 methods which can call the system shell, but with python variable
1235 methods which can call the system shell, but with python variable
1231 expansion. The three such methods are: __IPYTHON__.system,
1236 expansion. The three such methods are: __IPYTHON__.system,
1232 .getoutput and .getoutputerror. These need to be documented in a
1237 .getoutput and .getoutputerror. These need to be documented in a
1233 'public API' section (to be written) of the manual.
1238 'public API' section (to be written) of the manual.
1234
1239
1235 2005-03-20 Fernando Perez <fperez@colorado.edu>
1240 2005-03-20 Fernando Perez <fperez@colorado.edu>
1236
1241
1237 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1242 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1238 for custom exception handling. This is quite powerful, and it
1243 for custom exception handling. This is quite powerful, and it
1239 allows for user-installable exception handlers which can trap
1244 allows for user-installable exception handlers which can trap
1240 custom exceptions at runtime and treat them separately from
1245 custom exceptions at runtime and treat them separately from
1241 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1246 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1242 Mantegazza <mantegazza-AT-ill.fr>.
1247 Mantegazza <mantegazza-AT-ill.fr>.
1243 (InteractiveShell.set_custom_completer): public API function to
1248 (InteractiveShell.set_custom_completer): public API function to
1244 add new completers at runtime.
1249 add new completers at runtime.
1245
1250
1246 2005-03-19 Fernando Perez <fperez@colorado.edu>
1251 2005-03-19 Fernando Perez <fperez@colorado.edu>
1247
1252
1248 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1253 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1249 allow objects which provide their docstrings via non-standard
1254 allow objects which provide their docstrings via non-standard
1250 mechanisms (like Pyro proxies) to still be inspected by ipython's
1255 mechanisms (like Pyro proxies) to still be inspected by ipython's
1251 ? system.
1256 ? system.
1252
1257
1253 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1258 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1254 automatic capture system. I tried quite hard to make it work
1259 automatic capture system. I tried quite hard to make it work
1255 reliably, and simply failed. I tried many combinations with the
1260 reliably, and simply failed. I tried many combinations with the
1256 subprocess module, but eventually nothing worked in all needed
1261 subprocess module, but eventually nothing worked in all needed
1257 cases (not blocking stdin for the child, duplicating stdout
1262 cases (not blocking stdin for the child, duplicating stdout
1258 without blocking, etc). The new %sc/%sx still do capture to these
1263 without blocking, etc). The new %sc/%sx still do capture to these
1259 magical list/string objects which make shell use much more
1264 magical list/string objects which make shell use much more
1260 conveninent, so not all is lost.
1265 conveninent, so not all is lost.
1261
1266
1262 XXX - FIX MANUAL for the change above!
1267 XXX - FIX MANUAL for the change above!
1263
1268
1264 (runsource): I copied code.py's runsource() into ipython to modify
1269 (runsource): I copied code.py's runsource() into ipython to modify
1265 it a bit. Now the code object and source to be executed are
1270 it a bit. Now the code object and source to be executed are
1266 stored in ipython. This makes this info accessible to third-party
1271 stored in ipython. This makes this info accessible to third-party
1267 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1272 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1268 Mantegazza <mantegazza-AT-ill.fr>.
1273 Mantegazza <mantegazza-AT-ill.fr>.
1269
1274
1270 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1275 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1271 history-search via readline (like C-p/C-n). I'd wanted this for a
1276 history-search via readline (like C-p/C-n). I'd wanted this for a
1272 long time, but only recently found out how to do it. For users
1277 long time, but only recently found out how to do it. For users
1273 who already have their ipythonrc files made and want this, just
1278 who already have their ipythonrc files made and want this, just
1274 add:
1279 add:
1275
1280
1276 readline_parse_and_bind "\e[A": history-search-backward
1281 readline_parse_and_bind "\e[A": history-search-backward
1277 readline_parse_and_bind "\e[B": history-search-forward
1282 readline_parse_and_bind "\e[B": history-search-forward
1278
1283
1279 2005-03-18 Fernando Perez <fperez@colorado.edu>
1284 2005-03-18 Fernando Perez <fperez@colorado.edu>
1280
1285
1281 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1286 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1282 LSString and SList classes which allow transparent conversions
1287 LSString and SList classes which allow transparent conversions
1283 between list mode and whitespace-separated string.
1288 between list mode and whitespace-separated string.
1284 (magic_r): Fix recursion problem in %r.
1289 (magic_r): Fix recursion problem in %r.
1285
1290
1286 * IPython/genutils.py (LSString): New class to be used for
1291 * IPython/genutils.py (LSString): New class to be used for
1287 automatic storage of the results of all alias/system calls in _o
1292 automatic storage of the results of all alias/system calls in _o
1288 and _e (stdout/err). These provide a .l/.list attribute which
1293 and _e (stdout/err). These provide a .l/.list attribute which
1289 does automatic splitting on newlines. This means that for most
1294 does automatic splitting on newlines. This means that for most
1290 uses, you'll never need to do capturing of output with %sc/%sx
1295 uses, you'll never need to do capturing of output with %sc/%sx
1291 anymore, since ipython keeps this always done for you. Note that
1296 anymore, since ipython keeps this always done for you. Note that
1292 only the LAST results are stored, the _o/e variables are
1297 only the LAST results are stored, the _o/e variables are
1293 overwritten on each call. If you need to save their contents
1298 overwritten on each call. If you need to save their contents
1294 further, simply bind them to any other name.
1299 further, simply bind them to any other name.
1295
1300
1296 2005-03-17 Fernando Perez <fperez@colorado.edu>
1301 2005-03-17 Fernando Perez <fperez@colorado.edu>
1297
1302
1298 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1303 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1299 prompt namespace handling.
1304 prompt namespace handling.
1300
1305
1301 2005-03-16 Fernando Perez <fperez@colorado.edu>
1306 2005-03-16 Fernando Perez <fperez@colorado.edu>
1302
1307
1303 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1308 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1304 classic prompts to be '>>> ' (final space was missing, and it
1309 classic prompts to be '>>> ' (final space was missing, and it
1305 trips the emacs python mode).
1310 trips the emacs python mode).
1306 (BasePrompt.__str__): Added safe support for dynamic prompt
1311 (BasePrompt.__str__): Added safe support for dynamic prompt
1307 strings. Now you can set your prompt string to be '$x', and the
1312 strings. Now you can set your prompt string to be '$x', and the
1308 value of x will be printed from your interactive namespace. The
1313 value of x will be printed from your interactive namespace. The
1309 interpolation syntax includes the full Itpl support, so
1314 interpolation syntax includes the full Itpl support, so
1310 ${foo()+x+bar()} is a valid prompt string now, and the function
1315 ${foo()+x+bar()} is a valid prompt string now, and the function
1311 calls will be made at runtime.
1316 calls will be made at runtime.
1312
1317
1313 2005-03-15 Fernando Perez <fperez@colorado.edu>
1318 2005-03-15 Fernando Perez <fperez@colorado.edu>
1314
1319
1315 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1320 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1316 avoid name clashes in pylab. %hist still works, it just forwards
1321 avoid name clashes in pylab. %hist still works, it just forwards
1317 the call to %history.
1322 the call to %history.
1318
1323
1319 2005-03-02 *** Released version 0.6.12
1324 2005-03-02 *** Released version 0.6.12
1320
1325
1321 2005-03-02 Fernando Perez <fperez@colorado.edu>
1326 2005-03-02 Fernando Perez <fperez@colorado.edu>
1322
1327
1323 * IPython/iplib.py (handle_magic): log magic calls properly as
1328 * IPython/iplib.py (handle_magic): log magic calls properly as
1324 ipmagic() function calls.
1329 ipmagic() function calls.
1325
1330
1326 * IPython/Magic.py (magic_time): Improved %time to support
1331 * IPython/Magic.py (magic_time): Improved %time to support
1327 statements and provide wall-clock as well as CPU time.
1332 statements and provide wall-clock as well as CPU time.
1328
1333
1329 2005-02-27 Fernando Perez <fperez@colorado.edu>
1334 2005-02-27 Fernando Perez <fperez@colorado.edu>
1330
1335
1331 * IPython/hooks.py: New hooks module, to expose user-modifiable
1336 * IPython/hooks.py: New hooks module, to expose user-modifiable
1332 IPython functionality in a clean manner. For now only the editor
1337 IPython functionality in a clean manner. For now only the editor
1333 hook is actually written, and other thigns which I intend to turn
1338 hook is actually written, and other thigns which I intend to turn
1334 into proper hooks aren't yet there. The display and prefilter
1339 into proper hooks aren't yet there. The display and prefilter
1335 stuff, for example, should be hooks. But at least now the
1340 stuff, for example, should be hooks. But at least now the
1336 framework is in place, and the rest can be moved here with more
1341 framework is in place, and the rest can be moved here with more
1337 time later. IPython had had a .hooks variable for a long time for
1342 time later. IPython had had a .hooks variable for a long time for
1338 this purpose, but I'd never actually used it for anything.
1343 this purpose, but I'd never actually used it for anything.
1339
1344
1340 2005-02-26 Fernando Perez <fperez@colorado.edu>
1345 2005-02-26 Fernando Perez <fperez@colorado.edu>
1341
1346
1342 * IPython/ipmaker.py (make_IPython): make the default ipython
1347 * IPython/ipmaker.py (make_IPython): make the default ipython
1343 directory be called _ipython under win32, to follow more the
1348 directory be called _ipython under win32, to follow more the
1344 naming peculiarities of that platform (where buggy software like
1349 naming peculiarities of that platform (where buggy software like
1345 Visual Sourcesafe breaks with .named directories). Reported by
1350 Visual Sourcesafe breaks with .named directories). Reported by
1346 Ville Vainio.
1351 Ville Vainio.
1347
1352
1348 2005-02-23 Fernando Perez <fperez@colorado.edu>
1353 2005-02-23 Fernando Perez <fperez@colorado.edu>
1349
1354
1350 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1355 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1351 auto_aliases for win32 which were causing problems. Users can
1356 auto_aliases for win32 which were causing problems. Users can
1352 define the ones they personally like.
1357 define the ones they personally like.
1353
1358
1354 2005-02-21 Fernando Perez <fperez@colorado.edu>
1359 2005-02-21 Fernando Perez <fperez@colorado.edu>
1355
1360
1356 * IPython/Magic.py (magic_time): new magic to time execution of
1361 * IPython/Magic.py (magic_time): new magic to time execution of
1357 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1362 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1358
1363
1359 2005-02-19 Fernando Perez <fperez@colorado.edu>
1364 2005-02-19 Fernando Perez <fperez@colorado.edu>
1360
1365
1361 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1366 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1362 into keys (for prompts, for example).
1367 into keys (for prompts, for example).
1363
1368
1364 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1369 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1365 prompts in case users want them. This introduces a small behavior
1370 prompts in case users want them. This introduces a small behavior
1366 change: ipython does not automatically add a space to all prompts
1371 change: ipython does not automatically add a space to all prompts
1367 anymore. To get the old prompts with a space, users should add it
1372 anymore. To get the old prompts with a space, users should add it
1368 manually to their ipythonrc file, so for example prompt_in1 should
1373 manually to their ipythonrc file, so for example prompt_in1 should
1369 now read 'In [\#]: ' instead of 'In [\#]:'.
1374 now read 'In [\#]: ' instead of 'In [\#]:'.
1370 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1375 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1371 file) to control left-padding of secondary prompts.
1376 file) to control left-padding of secondary prompts.
1372
1377
1373 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1378 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1374 the profiler can't be imported. Fix for Debian, which removed
1379 the profiler can't be imported. Fix for Debian, which removed
1375 profile.py because of License issues. I applied a slightly
1380 profile.py because of License issues. I applied a slightly
1376 modified version of the original Debian patch at
1381 modified version of the original Debian patch at
1377 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1382 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1378
1383
1379 2005-02-17 Fernando Perez <fperez@colorado.edu>
1384 2005-02-17 Fernando Perez <fperez@colorado.edu>
1380
1385
1381 * IPython/genutils.py (native_line_ends): Fix bug which would
1386 * IPython/genutils.py (native_line_ends): Fix bug which would
1382 cause improper line-ends under win32 b/c I was not opening files
1387 cause improper line-ends under win32 b/c I was not opening files
1383 in binary mode. Bug report and fix thanks to Ville.
1388 in binary mode. Bug report and fix thanks to Ville.
1384
1389
1385 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1390 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1386 trying to catch spurious foo[1] autocalls. My fix actually broke
1391 trying to catch spurious foo[1] autocalls. My fix actually broke
1387 ',/' autoquote/call with explicit escape (bad regexp).
1392 ',/' autoquote/call with explicit escape (bad regexp).
1388
1393
1389 2005-02-15 *** Released version 0.6.11
1394 2005-02-15 *** Released version 0.6.11
1390
1395
1391 2005-02-14 Fernando Perez <fperez@colorado.edu>
1396 2005-02-14 Fernando Perez <fperez@colorado.edu>
1392
1397
1393 * IPython/background_jobs.py: New background job management
1398 * IPython/background_jobs.py: New background job management
1394 subsystem. This is implemented via a new set of classes, and
1399 subsystem. This is implemented via a new set of classes, and
1395 IPython now provides a builtin 'jobs' object for background job
1400 IPython now provides a builtin 'jobs' object for background job
1396 execution. A convenience %bg magic serves as a lightweight
1401 execution. A convenience %bg magic serves as a lightweight
1397 frontend for starting the more common type of calls. This was
1402 frontend for starting the more common type of calls. This was
1398 inspired by discussions with B. Granger and the BackgroundCommand
1403 inspired by discussions with B. Granger and the BackgroundCommand
1399 class described in the book Python Scripting for Computational
1404 class described in the book Python Scripting for Computational
1400 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1405 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1401 (although ultimately no code from this text was used, as IPython's
1406 (although ultimately no code from this text was used, as IPython's
1402 system is a separate implementation).
1407 system is a separate implementation).
1403
1408
1404 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1409 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1405 to control the completion of single/double underscore names
1410 to control the completion of single/double underscore names
1406 separately. As documented in the example ipytonrc file, the
1411 separately. As documented in the example ipytonrc file, the
1407 readline_omit__names variable can now be set to 2, to omit even
1412 readline_omit__names variable can now be set to 2, to omit even
1408 single underscore names. Thanks to a patch by Brian Wong
1413 single underscore names. Thanks to a patch by Brian Wong
1409 <BrianWong-AT-AirgoNetworks.Com>.
1414 <BrianWong-AT-AirgoNetworks.Com>.
1410 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1415 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1411 be autocalled as foo([1]) if foo were callable. A problem for
1416 be autocalled as foo([1]) if foo were callable. A problem for
1412 things which are both callable and implement __getitem__.
1417 things which are both callable and implement __getitem__.
1413 (init_readline): Fix autoindentation for win32. Thanks to a patch
1418 (init_readline): Fix autoindentation for win32. Thanks to a patch
1414 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1419 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1415
1420
1416 2005-02-12 Fernando Perez <fperez@colorado.edu>
1421 2005-02-12 Fernando Perez <fperez@colorado.edu>
1417
1422
1418 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1423 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1419 which I had written long ago to sort out user error messages which
1424 which I had written long ago to sort out user error messages which
1420 may occur during startup. This seemed like a good idea initially,
1425 may occur during startup. This seemed like a good idea initially,
1421 but it has proven a disaster in retrospect. I don't want to
1426 but it has proven a disaster in retrospect. I don't want to
1422 change much code for now, so my fix is to set the internal 'debug'
1427 change much code for now, so my fix is to set the internal 'debug'
1423 flag to true everywhere, whose only job was precisely to control
1428 flag to true everywhere, whose only job was precisely to control
1424 this subsystem. This closes issue 28 (as well as avoiding all
1429 this subsystem. This closes issue 28 (as well as avoiding all
1425 sorts of strange hangups which occur from time to time).
1430 sorts of strange hangups which occur from time to time).
1426
1431
1427 2005-02-07 Fernando Perez <fperez@colorado.edu>
1432 2005-02-07 Fernando Perez <fperez@colorado.edu>
1428
1433
1429 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1434 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1430 previous call produced a syntax error.
1435 previous call produced a syntax error.
1431
1436
1432 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1437 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1433 classes without constructor.
1438 classes without constructor.
1434
1439
1435 2005-02-06 Fernando Perez <fperez@colorado.edu>
1440 2005-02-06 Fernando Perez <fperez@colorado.edu>
1436
1441
1437 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1442 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1438 completions with the results of each matcher, so we return results
1443 completions with the results of each matcher, so we return results
1439 to the user from all namespaces. This breaks with ipython
1444 to the user from all namespaces. This breaks with ipython
1440 tradition, but I think it's a nicer behavior. Now you get all
1445 tradition, but I think it's a nicer behavior. Now you get all
1441 possible completions listed, from all possible namespaces (python,
1446 possible completions listed, from all possible namespaces (python,
1442 filesystem, magics...) After a request by John Hunter
1447 filesystem, magics...) After a request by John Hunter
1443 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1448 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1444
1449
1445 2005-02-05 Fernando Perez <fperez@colorado.edu>
1450 2005-02-05 Fernando Perez <fperez@colorado.edu>
1446
1451
1447 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1452 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1448 the call had quote characters in it (the quotes were stripped).
1453 the call had quote characters in it (the quotes were stripped).
1449
1454
1450 2005-01-31 Fernando Perez <fperez@colorado.edu>
1455 2005-01-31 Fernando Perez <fperez@colorado.edu>
1451
1456
1452 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1457 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1453 Itpl.itpl() to make the code more robust against psyco
1458 Itpl.itpl() to make the code more robust against psyco
1454 optimizations.
1459 optimizations.
1455
1460
1456 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1461 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1457 of causing an exception. Quicker, cleaner.
1462 of causing an exception. Quicker, cleaner.
1458
1463
1459 2005-01-28 Fernando Perez <fperez@colorado.edu>
1464 2005-01-28 Fernando Perez <fperez@colorado.edu>
1460
1465
1461 * scripts/ipython_win_post_install.py (install): hardcode
1466 * scripts/ipython_win_post_install.py (install): hardcode
1462 sys.prefix+'python.exe' as the executable path. It turns out that
1467 sys.prefix+'python.exe' as the executable path. It turns out that
1463 during the post-installation run, sys.executable resolves to the
1468 during the post-installation run, sys.executable resolves to the
1464 name of the binary installer! I should report this as a distutils
1469 name of the binary installer! I should report this as a distutils
1465 bug, I think. I updated the .10 release with this tiny fix, to
1470 bug, I think. I updated the .10 release with this tiny fix, to
1466 avoid annoying the lists further.
1471 avoid annoying the lists further.
1467
1472
1468 2005-01-27 *** Released version 0.6.10
1473 2005-01-27 *** Released version 0.6.10
1469
1474
1470 2005-01-27 Fernando Perez <fperez@colorado.edu>
1475 2005-01-27 Fernando Perez <fperez@colorado.edu>
1471
1476
1472 * IPython/numutils.py (norm): Added 'inf' as optional name for
1477 * IPython/numutils.py (norm): Added 'inf' as optional name for
1473 L-infinity norm, included references to mathworld.com for vector
1478 L-infinity norm, included references to mathworld.com for vector
1474 norm definitions.
1479 norm definitions.
1475 (amin/amax): added amin/amax for array min/max. Similar to what
1480 (amin/amax): added amin/amax for array min/max. Similar to what
1476 pylab ships with after the recent reorganization of names.
1481 pylab ships with after the recent reorganization of names.
1477 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1482 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1478
1483
1479 * ipython.el: committed Alex's recent fixes and improvements.
1484 * ipython.el: committed Alex's recent fixes and improvements.
1480 Tested with python-mode from CVS, and it looks excellent. Since
1485 Tested with python-mode from CVS, and it looks excellent. Since
1481 python-mode hasn't released anything in a while, I'm temporarily
1486 python-mode hasn't released anything in a while, I'm temporarily
1482 putting a copy of today's CVS (v 4.70) of python-mode in:
1487 putting a copy of today's CVS (v 4.70) of python-mode in:
1483 http://ipython.scipy.org/tmp/python-mode.el
1488 http://ipython.scipy.org/tmp/python-mode.el
1484
1489
1485 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1490 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1486 sys.executable for the executable name, instead of assuming it's
1491 sys.executable for the executable name, instead of assuming it's
1487 called 'python.exe' (the post-installer would have produced broken
1492 called 'python.exe' (the post-installer would have produced broken
1488 setups on systems with a differently named python binary).
1493 setups on systems with a differently named python binary).
1489
1494
1490 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1495 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1491 references to os.linesep, to make the code more
1496 references to os.linesep, to make the code more
1492 platform-independent. This is also part of the win32 coloring
1497 platform-independent. This is also part of the win32 coloring
1493 fixes.
1498 fixes.
1494
1499
1495 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1500 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1496 lines, which actually cause coloring bugs because the length of
1501 lines, which actually cause coloring bugs because the length of
1497 the line is very difficult to correctly compute with embedded
1502 the line is very difficult to correctly compute with embedded
1498 escapes. This was the source of all the coloring problems under
1503 escapes. This was the source of all the coloring problems under
1499 Win32. I think that _finally_, Win32 users have a properly
1504 Win32. I think that _finally_, Win32 users have a properly
1500 working ipython in all respects. This would never have happened
1505 working ipython in all respects. This would never have happened
1501 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1506 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1502
1507
1503 2005-01-26 *** Released version 0.6.9
1508 2005-01-26 *** Released version 0.6.9
1504
1509
1505 2005-01-25 Fernando Perez <fperez@colorado.edu>
1510 2005-01-25 Fernando Perez <fperez@colorado.edu>
1506
1511
1507 * setup.py: finally, we have a true Windows installer, thanks to
1512 * setup.py: finally, we have a true Windows installer, thanks to
1508 the excellent work of Viktor Ransmayr
1513 the excellent work of Viktor Ransmayr
1509 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1514 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1510 Windows users. The setup routine is quite a bit cleaner thanks to
1515 Windows users. The setup routine is quite a bit cleaner thanks to
1511 this, and the post-install script uses the proper functions to
1516 this, and the post-install script uses the proper functions to
1512 allow a clean de-installation using the standard Windows Control
1517 allow a clean de-installation using the standard Windows Control
1513 Panel.
1518 Panel.
1514
1519
1515 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1520 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1516 environment variable under all OSes (including win32) if
1521 environment variable under all OSes (including win32) if
1517 available. This will give consistency to win32 users who have set
1522 available. This will give consistency to win32 users who have set
1518 this variable for any reason. If os.environ['HOME'] fails, the
1523 this variable for any reason. If os.environ['HOME'] fails, the
1519 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1524 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1520
1525
1521 2005-01-24 Fernando Perez <fperez@colorado.edu>
1526 2005-01-24 Fernando Perez <fperez@colorado.edu>
1522
1527
1523 * IPython/numutils.py (empty_like): add empty_like(), similar to
1528 * IPython/numutils.py (empty_like): add empty_like(), similar to
1524 zeros_like() but taking advantage of the new empty() Numeric routine.
1529 zeros_like() but taking advantage of the new empty() Numeric routine.
1525
1530
1526 2005-01-23 *** Released version 0.6.8
1531 2005-01-23 *** Released version 0.6.8
1527
1532
1528 2005-01-22 Fernando Perez <fperez@colorado.edu>
1533 2005-01-22 Fernando Perez <fperez@colorado.edu>
1529
1534
1530 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1535 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1531 automatic show() calls. After discussing things with JDH, it
1536 automatic show() calls. After discussing things with JDH, it
1532 turns out there are too many corner cases where this can go wrong.
1537 turns out there are too many corner cases where this can go wrong.
1533 It's best not to try to be 'too smart', and simply have ipython
1538 It's best not to try to be 'too smart', and simply have ipython
1534 reproduce as much as possible the default behavior of a normal
1539 reproduce as much as possible the default behavior of a normal
1535 python shell.
1540 python shell.
1536
1541
1537 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1542 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1538 line-splitting regexp and _prefilter() to avoid calling getattr()
1543 line-splitting regexp and _prefilter() to avoid calling getattr()
1539 on assignments. This closes
1544 on assignments. This closes
1540 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1545 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1541 readline uses getattr(), so a simple <TAB> keypress is still
1546 readline uses getattr(), so a simple <TAB> keypress is still
1542 enough to trigger getattr() calls on an object.
1547 enough to trigger getattr() calls on an object.
1543
1548
1544 2005-01-21 Fernando Perez <fperez@colorado.edu>
1549 2005-01-21 Fernando Perez <fperez@colorado.edu>
1545
1550
1546 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1551 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1547 docstring under pylab so it doesn't mask the original.
1552 docstring under pylab so it doesn't mask the original.
1548
1553
1549 2005-01-21 *** Released version 0.6.7
1554 2005-01-21 *** Released version 0.6.7
1550
1555
1551 2005-01-21 Fernando Perez <fperez@colorado.edu>
1556 2005-01-21 Fernando Perez <fperez@colorado.edu>
1552
1557
1553 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1558 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1554 signal handling for win32 users in multithreaded mode.
1559 signal handling for win32 users in multithreaded mode.
1555
1560
1556 2005-01-17 Fernando Perez <fperez@colorado.edu>
1561 2005-01-17 Fernando Perez <fperez@colorado.edu>
1557
1562
1558 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1563 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1559 instances with no __init__. After a crash report by Norbert Nemec
1564 instances with no __init__. After a crash report by Norbert Nemec
1560 <Norbert-AT-nemec-online.de>.
1565 <Norbert-AT-nemec-online.de>.
1561
1566
1562 2005-01-14 Fernando Perez <fperez@colorado.edu>
1567 2005-01-14 Fernando Perez <fperez@colorado.edu>
1563
1568
1564 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1569 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1565 names for verbose exceptions, when multiple dotted names and the
1570 names for verbose exceptions, when multiple dotted names and the
1566 'parent' object were present on the same line.
1571 'parent' object were present on the same line.
1567
1572
1568 2005-01-11 Fernando Perez <fperez@colorado.edu>
1573 2005-01-11 Fernando Perez <fperez@colorado.edu>
1569
1574
1570 * IPython/genutils.py (flag_calls): new utility to trap and flag
1575 * IPython/genutils.py (flag_calls): new utility to trap and flag
1571 calls in functions. I need it to clean up matplotlib support.
1576 calls in functions. I need it to clean up matplotlib support.
1572 Also removed some deprecated code in genutils.
1577 Also removed some deprecated code in genutils.
1573
1578
1574 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1579 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1575 that matplotlib scripts called with %run, which don't call show()
1580 that matplotlib scripts called with %run, which don't call show()
1576 themselves, still have their plotting windows open.
1581 themselves, still have their plotting windows open.
1577
1582
1578 2005-01-05 Fernando Perez <fperez@colorado.edu>
1583 2005-01-05 Fernando Perez <fperez@colorado.edu>
1579
1584
1580 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1585 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1581 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1586 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1582
1587
1583 2004-12-19 Fernando Perez <fperez@colorado.edu>
1588 2004-12-19 Fernando Perez <fperez@colorado.edu>
1584
1589
1585 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1590 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1586 parent_runcode, which was an eyesore. The same result can be
1591 parent_runcode, which was an eyesore. The same result can be
1587 obtained with Python's regular superclass mechanisms.
1592 obtained with Python's regular superclass mechanisms.
1588
1593
1589 2004-12-17 Fernando Perez <fperez@colorado.edu>
1594 2004-12-17 Fernando Perez <fperez@colorado.edu>
1590
1595
1591 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1596 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1592 reported by Prabhu.
1597 reported by Prabhu.
1593 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1598 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1594 sys.stderr) instead of explicitly calling sys.stderr. This helps
1599 sys.stderr) instead of explicitly calling sys.stderr. This helps
1595 maintain our I/O abstractions clean, for future GUI embeddings.
1600 maintain our I/O abstractions clean, for future GUI embeddings.
1596
1601
1597 * IPython/genutils.py (info): added new utility for sys.stderr
1602 * IPython/genutils.py (info): added new utility for sys.stderr
1598 unified info message handling (thin wrapper around warn()).
1603 unified info message handling (thin wrapper around warn()).
1599
1604
1600 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1605 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1601 composite (dotted) names on verbose exceptions.
1606 composite (dotted) names on verbose exceptions.
1602 (VerboseTB.nullrepr): harden against another kind of errors which
1607 (VerboseTB.nullrepr): harden against another kind of errors which
1603 Python's inspect module can trigger, and which were crashing
1608 Python's inspect module can trigger, and which were crashing
1604 IPython. Thanks to a report by Marco Lombardi
1609 IPython. Thanks to a report by Marco Lombardi
1605 <mlombard-AT-ma010192.hq.eso.org>.
1610 <mlombard-AT-ma010192.hq.eso.org>.
1606
1611
1607 2004-12-13 *** Released version 0.6.6
1612 2004-12-13 *** Released version 0.6.6
1608
1613
1609 2004-12-12 Fernando Perez <fperez@colorado.edu>
1614 2004-12-12 Fernando Perez <fperez@colorado.edu>
1610
1615
1611 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1616 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1612 generated by pygtk upon initialization if it was built without
1617 generated by pygtk upon initialization if it was built without
1613 threads (for matplotlib users). After a crash reported by
1618 threads (for matplotlib users). After a crash reported by
1614 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1619 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1615
1620
1616 * IPython/ipmaker.py (make_IPython): fix small bug in the
1621 * IPython/ipmaker.py (make_IPython): fix small bug in the
1617 import_some parameter for multiple imports.
1622 import_some parameter for multiple imports.
1618
1623
1619 * IPython/iplib.py (ipmagic): simplified the interface of
1624 * IPython/iplib.py (ipmagic): simplified the interface of
1620 ipmagic() to take a single string argument, just as it would be
1625 ipmagic() to take a single string argument, just as it would be
1621 typed at the IPython cmd line.
1626 typed at the IPython cmd line.
1622 (ipalias): Added new ipalias() with an interface identical to
1627 (ipalias): Added new ipalias() with an interface identical to
1623 ipmagic(). This completes exposing a pure python interface to the
1628 ipmagic(). This completes exposing a pure python interface to the
1624 alias and magic system, which can be used in loops or more complex
1629 alias and magic system, which can be used in loops or more complex
1625 code where IPython's automatic line mangling is not active.
1630 code where IPython's automatic line mangling is not active.
1626
1631
1627 * IPython/genutils.py (timing): changed interface of timing to
1632 * IPython/genutils.py (timing): changed interface of timing to
1628 simply run code once, which is the most common case. timings()
1633 simply run code once, which is the most common case. timings()
1629 remains unchanged, for the cases where you want multiple runs.
1634 remains unchanged, for the cases where you want multiple runs.
1630
1635
1631 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1636 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1632 bug where Python2.2 crashes with exec'ing code which does not end
1637 bug where Python2.2 crashes with exec'ing code which does not end
1633 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1638 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1634 before.
1639 before.
1635
1640
1636 2004-12-10 Fernando Perez <fperez@colorado.edu>
1641 2004-12-10 Fernando Perez <fperez@colorado.edu>
1637
1642
1638 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1643 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1639 -t to -T, to accomodate the new -t flag in %run (the %run and
1644 -t to -T, to accomodate the new -t flag in %run (the %run and
1640 %prun options are kind of intermixed, and it's not easy to change
1645 %prun options are kind of intermixed, and it's not easy to change
1641 this with the limitations of python's getopt).
1646 this with the limitations of python's getopt).
1642
1647
1643 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1648 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1644 the execution of scripts. It's not as fine-tuned as timeit.py,
1649 the execution of scripts. It's not as fine-tuned as timeit.py,
1645 but it works from inside ipython (and under 2.2, which lacks
1650 but it works from inside ipython (and under 2.2, which lacks
1646 timeit.py). Optionally a number of runs > 1 can be given for
1651 timeit.py). Optionally a number of runs > 1 can be given for
1647 timing very short-running code.
1652 timing very short-running code.
1648
1653
1649 * IPython/genutils.py (uniq_stable): new routine which returns a
1654 * IPython/genutils.py (uniq_stable): new routine which returns a
1650 list of unique elements in any iterable, but in stable order of
1655 list of unique elements in any iterable, but in stable order of
1651 appearance. I needed this for the ultraTB fixes, and it's a handy
1656 appearance. I needed this for the ultraTB fixes, and it's a handy
1652 utility.
1657 utility.
1653
1658
1654 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1659 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1655 dotted names in Verbose exceptions. This had been broken since
1660 dotted names in Verbose exceptions. This had been broken since
1656 the very start, now x.y will properly be printed in a Verbose
1661 the very start, now x.y will properly be printed in a Verbose
1657 traceback, instead of x being shown and y appearing always as an
1662 traceback, instead of x being shown and y appearing always as an
1658 'undefined global'. Getting this to work was a bit tricky,
1663 'undefined global'. Getting this to work was a bit tricky,
1659 because by default python tokenizers are stateless. Saved by
1664 because by default python tokenizers are stateless. Saved by
1660 python's ability to easily add a bit of state to an arbitrary
1665 python's ability to easily add a bit of state to an arbitrary
1661 function (without needing to build a full-blown callable object).
1666 function (without needing to build a full-blown callable object).
1662
1667
1663 Also big cleanup of this code, which had horrendous runtime
1668 Also big cleanup of this code, which had horrendous runtime
1664 lookups of zillions of attributes for colorization. Moved all
1669 lookups of zillions of attributes for colorization. Moved all
1665 this code into a few templates, which make it cleaner and quicker.
1670 this code into a few templates, which make it cleaner and quicker.
1666
1671
1667 Printout quality was also improved for Verbose exceptions: one
1672 Printout quality was also improved for Verbose exceptions: one
1668 variable per line, and memory addresses are printed (this can be
1673 variable per line, and memory addresses are printed (this can be
1669 quite handy in nasty debugging situations, which is what Verbose
1674 quite handy in nasty debugging situations, which is what Verbose
1670 is for).
1675 is for).
1671
1676
1672 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1677 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1673 the command line as scripts to be loaded by embedded instances.
1678 the command line as scripts to be loaded by embedded instances.
1674 Doing so has the potential for an infinite recursion if there are
1679 Doing so has the potential for an infinite recursion if there are
1675 exceptions thrown in the process. This fixes a strange crash
1680 exceptions thrown in the process. This fixes a strange crash
1676 reported by Philippe MULLER <muller-AT-irit.fr>.
1681 reported by Philippe MULLER <muller-AT-irit.fr>.
1677
1682
1678 2004-12-09 Fernando Perez <fperez@colorado.edu>
1683 2004-12-09 Fernando Perez <fperez@colorado.edu>
1679
1684
1680 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1685 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1681 to reflect new names in matplotlib, which now expose the
1686 to reflect new names in matplotlib, which now expose the
1682 matlab-compatible interface via a pylab module instead of the
1687 matlab-compatible interface via a pylab module instead of the
1683 'matlab' name. The new code is backwards compatible, so users of
1688 'matlab' name. The new code is backwards compatible, so users of
1684 all matplotlib versions are OK. Patch by J. Hunter.
1689 all matplotlib versions are OK. Patch by J. Hunter.
1685
1690
1686 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1691 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1687 of __init__ docstrings for instances (class docstrings are already
1692 of __init__ docstrings for instances (class docstrings are already
1688 automatically printed). Instances with customized docstrings
1693 automatically printed). Instances with customized docstrings
1689 (indep. of the class) are also recognized and all 3 separate
1694 (indep. of the class) are also recognized and all 3 separate
1690 docstrings are printed (instance, class, constructor). After some
1695 docstrings are printed (instance, class, constructor). After some
1691 comments/suggestions by J. Hunter.
1696 comments/suggestions by J. Hunter.
1692
1697
1693 2004-12-05 Fernando Perez <fperez@colorado.edu>
1698 2004-12-05 Fernando Perez <fperez@colorado.edu>
1694
1699
1695 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1700 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1696 warnings when tab-completion fails and triggers an exception.
1701 warnings when tab-completion fails and triggers an exception.
1697
1702
1698 2004-12-03 Fernando Perez <fperez@colorado.edu>
1703 2004-12-03 Fernando Perez <fperez@colorado.edu>
1699
1704
1700 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1705 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1701 be triggered when using 'run -p'. An incorrect option flag was
1706 be triggered when using 'run -p'. An incorrect option flag was
1702 being set ('d' instead of 'D').
1707 being set ('d' instead of 'D').
1703 (manpage): fix missing escaped \- sign.
1708 (manpage): fix missing escaped \- sign.
1704
1709
1705 2004-11-30 *** Released version 0.6.5
1710 2004-11-30 *** Released version 0.6.5
1706
1711
1707 2004-11-30 Fernando Perez <fperez@colorado.edu>
1712 2004-11-30 Fernando Perez <fperez@colorado.edu>
1708
1713
1709 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1714 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1710 setting with -d option.
1715 setting with -d option.
1711
1716
1712 * setup.py (docfiles): Fix problem where the doc glob I was using
1717 * setup.py (docfiles): Fix problem where the doc glob I was using
1713 was COMPLETELY BROKEN. It was giving the right files by pure
1718 was COMPLETELY BROKEN. It was giving the right files by pure
1714 accident, but failed once I tried to include ipython.el. Note:
1719 accident, but failed once I tried to include ipython.el. Note:
1715 glob() does NOT allow you to do exclusion on multiple endings!
1720 glob() does NOT allow you to do exclusion on multiple endings!
1716
1721
1717 2004-11-29 Fernando Perez <fperez@colorado.edu>
1722 2004-11-29 Fernando Perez <fperez@colorado.edu>
1718
1723
1719 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1724 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1720 the manpage as the source. Better formatting & consistency.
1725 the manpage as the source. Better formatting & consistency.
1721
1726
1722 * IPython/Magic.py (magic_run): Added new -d option, to run
1727 * IPython/Magic.py (magic_run): Added new -d option, to run
1723 scripts under the control of the python pdb debugger. Note that
1728 scripts under the control of the python pdb debugger. Note that
1724 this required changing the %prun option -d to -D, to avoid a clash
1729 this required changing the %prun option -d to -D, to avoid a clash
1725 (since %run must pass options to %prun, and getopt is too dumb to
1730 (since %run must pass options to %prun, and getopt is too dumb to
1726 handle options with string values with embedded spaces). Thanks
1731 handle options with string values with embedded spaces). Thanks
1727 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1732 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1728 (magic_who_ls): added type matching to %who and %whos, so that one
1733 (magic_who_ls): added type matching to %who and %whos, so that one
1729 can filter their output to only include variables of certain
1734 can filter their output to only include variables of certain
1730 types. Another suggestion by Matthew.
1735 types. Another suggestion by Matthew.
1731 (magic_whos): Added memory summaries in kb and Mb for arrays.
1736 (magic_whos): Added memory summaries in kb and Mb for arrays.
1732 (magic_who): Improve formatting (break lines every 9 vars).
1737 (magic_who): Improve formatting (break lines every 9 vars).
1733
1738
1734 2004-11-28 Fernando Perez <fperez@colorado.edu>
1739 2004-11-28 Fernando Perez <fperez@colorado.edu>
1735
1740
1736 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1741 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1737 cache when empty lines were present.
1742 cache when empty lines were present.
1738
1743
1739 2004-11-24 Fernando Perez <fperez@colorado.edu>
1744 2004-11-24 Fernando Perez <fperez@colorado.edu>
1740
1745
1741 * IPython/usage.py (__doc__): document the re-activated threading
1746 * IPython/usage.py (__doc__): document the re-activated threading
1742 options for WX and GTK.
1747 options for WX and GTK.
1743
1748
1744 2004-11-23 Fernando Perez <fperez@colorado.edu>
1749 2004-11-23 Fernando Perez <fperez@colorado.edu>
1745
1750
1746 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1751 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1747 the -wthread and -gthread options, along with a new -tk one to try
1752 the -wthread and -gthread options, along with a new -tk one to try
1748 and coordinate Tk threading with wx/gtk. The tk support is very
1753 and coordinate Tk threading with wx/gtk. The tk support is very
1749 platform dependent, since it seems to require Tcl and Tk to be
1754 platform dependent, since it seems to require Tcl and Tk to be
1750 built with threads (Fedora1/2 appears NOT to have it, but in
1755 built with threads (Fedora1/2 appears NOT to have it, but in
1751 Prabhu's Debian boxes it works OK). But even with some Tk
1756 Prabhu's Debian boxes it works OK). But even with some Tk
1752 limitations, this is a great improvement.
1757 limitations, this is a great improvement.
1753
1758
1754 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1759 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1755 info in user prompts. Patch by Prabhu.
1760 info in user prompts. Patch by Prabhu.
1756
1761
1757 2004-11-18 Fernando Perez <fperez@colorado.edu>
1762 2004-11-18 Fernando Perez <fperez@colorado.edu>
1758
1763
1759 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1764 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1760 EOFErrors and bail, to avoid infinite loops if a non-terminating
1765 EOFErrors and bail, to avoid infinite loops if a non-terminating
1761 file is fed into ipython. Patch submitted in issue 19 by user,
1766 file is fed into ipython. Patch submitted in issue 19 by user,
1762 many thanks.
1767 many thanks.
1763
1768
1764 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1769 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1765 autoquote/parens in continuation prompts, which can cause lots of
1770 autoquote/parens in continuation prompts, which can cause lots of
1766 problems. Closes roundup issue 20.
1771 problems. Closes roundup issue 20.
1767
1772
1768 2004-11-17 Fernando Perez <fperez@colorado.edu>
1773 2004-11-17 Fernando Perez <fperez@colorado.edu>
1769
1774
1770 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1775 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1771 reported as debian bug #280505. I'm not sure my local changelog
1776 reported as debian bug #280505. I'm not sure my local changelog
1772 entry has the proper debian format (Jack?).
1777 entry has the proper debian format (Jack?).
1773
1778
1774 2004-11-08 *** Released version 0.6.4
1779 2004-11-08 *** Released version 0.6.4
1775
1780
1776 2004-11-08 Fernando Perez <fperez@colorado.edu>
1781 2004-11-08 Fernando Perez <fperez@colorado.edu>
1777
1782
1778 * IPython/iplib.py (init_readline): Fix exit message for Windows
1783 * IPython/iplib.py (init_readline): Fix exit message for Windows
1779 when readline is active. Thanks to a report by Eric Jones
1784 when readline is active. Thanks to a report by Eric Jones
1780 <eric-AT-enthought.com>.
1785 <eric-AT-enthought.com>.
1781
1786
1782 2004-11-07 Fernando Perez <fperez@colorado.edu>
1787 2004-11-07 Fernando Perez <fperez@colorado.edu>
1783
1788
1784 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1789 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1785 sometimes seen by win2k/cygwin users.
1790 sometimes seen by win2k/cygwin users.
1786
1791
1787 2004-11-06 Fernando Perez <fperez@colorado.edu>
1792 2004-11-06 Fernando Perez <fperez@colorado.edu>
1788
1793
1789 * IPython/iplib.py (interact): Change the handling of %Exit from
1794 * IPython/iplib.py (interact): Change the handling of %Exit from
1790 trying to propagate a SystemExit to an internal ipython flag.
1795 trying to propagate a SystemExit to an internal ipython flag.
1791 This is less elegant than using Python's exception mechanism, but
1796 This is less elegant than using Python's exception mechanism, but
1792 I can't get that to work reliably with threads, so under -pylab
1797 I can't get that to work reliably with threads, so under -pylab
1793 %Exit was hanging IPython. Cross-thread exception handling is
1798 %Exit was hanging IPython. Cross-thread exception handling is
1794 really a bitch. Thaks to a bug report by Stephen Walton
1799 really a bitch. Thaks to a bug report by Stephen Walton
1795 <stephen.walton-AT-csun.edu>.
1800 <stephen.walton-AT-csun.edu>.
1796
1801
1797 2004-11-04 Fernando Perez <fperez@colorado.edu>
1802 2004-11-04 Fernando Perez <fperez@colorado.edu>
1798
1803
1799 * IPython/iplib.py (raw_input_original): store a pointer to the
1804 * IPython/iplib.py (raw_input_original): store a pointer to the
1800 true raw_input to harden against code which can modify it
1805 true raw_input to harden against code which can modify it
1801 (wx.py.PyShell does this and would otherwise crash ipython).
1806 (wx.py.PyShell does this and would otherwise crash ipython).
1802 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1807 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1803
1808
1804 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1809 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1805 Ctrl-C problem, which does not mess up the input line.
1810 Ctrl-C problem, which does not mess up the input line.
1806
1811
1807 2004-11-03 Fernando Perez <fperez@colorado.edu>
1812 2004-11-03 Fernando Perez <fperez@colorado.edu>
1808
1813
1809 * IPython/Release.py: Changed licensing to BSD, in all files.
1814 * IPython/Release.py: Changed licensing to BSD, in all files.
1810 (name): lowercase name for tarball/RPM release.
1815 (name): lowercase name for tarball/RPM release.
1811
1816
1812 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1817 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1813 use throughout ipython.
1818 use throughout ipython.
1814
1819
1815 * IPython/Magic.py (Magic._ofind): Switch to using the new
1820 * IPython/Magic.py (Magic._ofind): Switch to using the new
1816 OInspect.getdoc() function.
1821 OInspect.getdoc() function.
1817
1822
1818 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1823 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1819 of the line currently being canceled via Ctrl-C. It's extremely
1824 of the line currently being canceled via Ctrl-C. It's extremely
1820 ugly, but I don't know how to do it better (the problem is one of
1825 ugly, but I don't know how to do it better (the problem is one of
1821 handling cross-thread exceptions).
1826 handling cross-thread exceptions).
1822
1827
1823 2004-10-28 Fernando Perez <fperez@colorado.edu>
1828 2004-10-28 Fernando Perez <fperez@colorado.edu>
1824
1829
1825 * IPython/Shell.py (signal_handler): add signal handlers to trap
1830 * IPython/Shell.py (signal_handler): add signal handlers to trap
1826 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1831 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1827 report by Francesc Alted.
1832 report by Francesc Alted.
1828
1833
1829 2004-10-21 Fernando Perez <fperez@colorado.edu>
1834 2004-10-21 Fernando Perez <fperez@colorado.edu>
1830
1835
1831 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1836 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1832 to % for pysh syntax extensions.
1837 to % for pysh syntax extensions.
1833
1838
1834 2004-10-09 Fernando Perez <fperez@colorado.edu>
1839 2004-10-09 Fernando Perez <fperez@colorado.edu>
1835
1840
1836 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
1841 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
1837 arrays to print a more useful summary, without calling str(arr).
1842 arrays to print a more useful summary, without calling str(arr).
1838 This avoids the problem of extremely lengthy computations which
1843 This avoids the problem of extremely lengthy computations which
1839 occur if arr is large, and appear to the user as a system lockup
1844 occur if arr is large, and appear to the user as a system lockup
1840 with 100% cpu activity. After a suggestion by Kristian Sandberg
1845 with 100% cpu activity. After a suggestion by Kristian Sandberg
1841 <Kristian.Sandberg@colorado.edu>.
1846 <Kristian.Sandberg@colorado.edu>.
1842 (Magic.__init__): fix bug in global magic escapes not being
1847 (Magic.__init__): fix bug in global magic escapes not being
1843 correctly set.
1848 correctly set.
1844
1849
1845 2004-10-08 Fernando Perez <fperez@colorado.edu>
1850 2004-10-08 Fernando Perez <fperez@colorado.edu>
1846
1851
1847 * IPython/Magic.py (__license__): change to absolute imports of
1852 * IPython/Magic.py (__license__): change to absolute imports of
1848 ipython's own internal packages, to start adapting to the absolute
1853 ipython's own internal packages, to start adapting to the absolute
1849 import requirement of PEP-328.
1854 import requirement of PEP-328.
1850
1855
1851 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
1856 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
1852 files, and standardize author/license marks through the Release
1857 files, and standardize author/license marks through the Release
1853 module instead of having per/file stuff (except for files with
1858 module instead of having per/file stuff (except for files with
1854 particular licenses, like the MIT/PSF-licensed codes).
1859 particular licenses, like the MIT/PSF-licensed codes).
1855
1860
1856 * IPython/Debugger.py: remove dead code for python 2.1
1861 * IPython/Debugger.py: remove dead code for python 2.1
1857
1862
1858 2004-10-04 Fernando Perez <fperez@colorado.edu>
1863 2004-10-04 Fernando Perez <fperez@colorado.edu>
1859
1864
1860 * IPython/iplib.py (ipmagic): New function for accessing magics
1865 * IPython/iplib.py (ipmagic): New function for accessing magics
1861 via a normal python function call.
1866 via a normal python function call.
1862
1867
1863 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
1868 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
1864 from '@' to '%', to accomodate the new @decorator syntax of python
1869 from '@' to '%', to accomodate the new @decorator syntax of python
1865 2.4.
1870 2.4.
1866
1871
1867 2004-09-29 Fernando Perez <fperez@colorado.edu>
1872 2004-09-29 Fernando Perez <fperez@colorado.edu>
1868
1873
1869 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
1874 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
1870 matplotlib.use to prevent running scripts which try to switch
1875 matplotlib.use to prevent running scripts which try to switch
1871 interactive backends from within ipython. This will just crash
1876 interactive backends from within ipython. This will just crash
1872 the python interpreter, so we can't allow it (but a detailed error
1877 the python interpreter, so we can't allow it (but a detailed error
1873 is given to the user).
1878 is given to the user).
1874
1879
1875 2004-09-28 Fernando Perez <fperez@colorado.edu>
1880 2004-09-28 Fernando Perez <fperez@colorado.edu>
1876
1881
1877 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
1882 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
1878 matplotlib-related fixes so that using @run with non-matplotlib
1883 matplotlib-related fixes so that using @run with non-matplotlib
1879 scripts doesn't pop up spurious plot windows. This requires
1884 scripts doesn't pop up spurious plot windows. This requires
1880 matplotlib >= 0.63, where I had to make some changes as well.
1885 matplotlib >= 0.63, where I had to make some changes as well.
1881
1886
1882 * IPython/ipmaker.py (make_IPython): update version requirement to
1887 * IPython/ipmaker.py (make_IPython): update version requirement to
1883 python 2.2.
1888 python 2.2.
1884
1889
1885 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
1890 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
1886 banner arg for embedded customization.
1891 banner arg for embedded customization.
1887
1892
1888 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
1893 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
1889 explicit uses of __IP as the IPython's instance name. Now things
1894 explicit uses of __IP as the IPython's instance name. Now things
1890 are properly handled via the shell.name value. The actual code
1895 are properly handled via the shell.name value. The actual code
1891 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
1896 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
1892 is much better than before. I'll clean things completely when the
1897 is much better than before. I'll clean things completely when the
1893 magic stuff gets a real overhaul.
1898 magic stuff gets a real overhaul.
1894
1899
1895 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
1900 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
1896 minor changes to debian dir.
1901 minor changes to debian dir.
1897
1902
1898 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
1903 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
1899 pointer to the shell itself in the interactive namespace even when
1904 pointer to the shell itself in the interactive namespace even when
1900 a user-supplied dict is provided. This is needed for embedding
1905 a user-supplied dict is provided. This is needed for embedding
1901 purposes (found by tests with Michel Sanner).
1906 purposes (found by tests with Michel Sanner).
1902
1907
1903 2004-09-27 Fernando Perez <fperez@colorado.edu>
1908 2004-09-27 Fernando Perez <fperez@colorado.edu>
1904
1909
1905 * IPython/UserConfig/ipythonrc: remove []{} from
1910 * IPython/UserConfig/ipythonrc: remove []{} from
1906 readline_remove_delims, so that things like [modname.<TAB> do
1911 readline_remove_delims, so that things like [modname.<TAB> do
1907 proper completion. This disables [].TAB, but that's a less common
1912 proper completion. This disables [].TAB, but that's a less common
1908 case than module names in list comprehensions, for example.
1913 case than module names in list comprehensions, for example.
1909 Thanks to a report by Andrea Riciputi.
1914 Thanks to a report by Andrea Riciputi.
1910
1915
1911 2004-09-09 Fernando Perez <fperez@colorado.edu>
1916 2004-09-09 Fernando Perez <fperez@colorado.edu>
1912
1917
1913 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
1918 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
1914 blocking problems in win32 and osx. Fix by John.
1919 blocking problems in win32 and osx. Fix by John.
1915
1920
1916 2004-09-08 Fernando Perez <fperez@colorado.edu>
1921 2004-09-08 Fernando Perez <fperez@colorado.edu>
1917
1922
1918 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
1923 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
1919 for Win32 and OSX. Fix by John Hunter.
1924 for Win32 and OSX. Fix by John Hunter.
1920
1925
1921 2004-08-30 *** Released version 0.6.3
1926 2004-08-30 *** Released version 0.6.3
1922
1927
1923 2004-08-30 Fernando Perez <fperez@colorado.edu>
1928 2004-08-30 Fernando Perez <fperez@colorado.edu>
1924
1929
1925 * setup.py (isfile): Add manpages to list of dependent files to be
1930 * setup.py (isfile): Add manpages to list of dependent files to be
1926 updated.
1931 updated.
1927
1932
1928 2004-08-27 Fernando Perez <fperez@colorado.edu>
1933 2004-08-27 Fernando Perez <fperez@colorado.edu>
1929
1934
1930 * IPython/Shell.py (start): I've disabled -wthread and -gthread
1935 * IPython/Shell.py (start): I've disabled -wthread and -gthread
1931 for now. They don't really work with standalone WX/GTK code
1936 for now. They don't really work with standalone WX/GTK code
1932 (though matplotlib IS working fine with both of those backends).
1937 (though matplotlib IS working fine with both of those backends).
1933 This will neeed much more testing. I disabled most things with
1938 This will neeed much more testing. I disabled most things with
1934 comments, so turning it back on later should be pretty easy.
1939 comments, so turning it back on later should be pretty easy.
1935
1940
1936 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
1941 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
1937 autocalling of expressions like r'foo', by modifying the line
1942 autocalling of expressions like r'foo', by modifying the line
1938 split regexp. Closes
1943 split regexp. Closes
1939 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
1944 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
1940 Riley <ipythonbugs-AT-sabi.net>.
1945 Riley <ipythonbugs-AT-sabi.net>.
1941 (InteractiveShell.mainloop): honor --nobanner with banner
1946 (InteractiveShell.mainloop): honor --nobanner with banner
1942 extensions.
1947 extensions.
1943
1948
1944 * IPython/Shell.py: Significant refactoring of all classes, so
1949 * IPython/Shell.py: Significant refactoring of all classes, so
1945 that we can really support ALL matplotlib backends and threading
1950 that we can really support ALL matplotlib backends and threading
1946 models (John spotted a bug with Tk which required this). Now we
1951 models (John spotted a bug with Tk which required this). Now we
1947 should support single-threaded, WX-threads and GTK-threads, both
1952 should support single-threaded, WX-threads and GTK-threads, both
1948 for generic code and for matplotlib.
1953 for generic code and for matplotlib.
1949
1954
1950 * IPython/ipmaker.py (__call__): Changed -mpthread option to
1955 * IPython/ipmaker.py (__call__): Changed -mpthread option to
1951 -pylab, to simplify things for users. Will also remove the pylab
1956 -pylab, to simplify things for users. Will also remove the pylab
1952 profile, since now all of matplotlib configuration is directly
1957 profile, since now all of matplotlib configuration is directly
1953 handled here. This also reduces startup time.
1958 handled here. This also reduces startup time.
1954
1959
1955 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
1960 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
1956 shell wasn't being correctly called. Also in IPShellWX.
1961 shell wasn't being correctly called. Also in IPShellWX.
1957
1962
1958 * IPython/iplib.py (InteractiveShell.__init__): Added option to
1963 * IPython/iplib.py (InteractiveShell.__init__): Added option to
1959 fine-tune banner.
1964 fine-tune banner.
1960
1965
1961 * IPython/numutils.py (spike): Deprecate these spike functions,
1966 * IPython/numutils.py (spike): Deprecate these spike functions,
1962 delete (long deprecated) gnuplot_exec handler.
1967 delete (long deprecated) gnuplot_exec handler.
1963
1968
1964 2004-08-26 Fernando Perez <fperez@colorado.edu>
1969 2004-08-26 Fernando Perez <fperez@colorado.edu>
1965
1970
1966 * ipython.1: Update for threading options, plus some others which
1971 * ipython.1: Update for threading options, plus some others which
1967 were missing.
1972 were missing.
1968
1973
1969 * IPython/ipmaker.py (__call__): Added -wthread option for
1974 * IPython/ipmaker.py (__call__): Added -wthread option for
1970 wxpython thread handling. Make sure threading options are only
1975 wxpython thread handling. Make sure threading options are only
1971 valid at the command line.
1976 valid at the command line.
1972
1977
1973 * scripts/ipython: moved shell selection into a factory function
1978 * scripts/ipython: moved shell selection into a factory function
1974 in Shell.py, to keep the starter script to a minimum.
1979 in Shell.py, to keep the starter script to a minimum.
1975
1980
1976 2004-08-25 Fernando Perez <fperez@colorado.edu>
1981 2004-08-25 Fernando Perez <fperez@colorado.edu>
1977
1982
1978 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
1983 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
1979 John. Along with some recent changes he made to matplotlib, the
1984 John. Along with some recent changes he made to matplotlib, the
1980 next versions of both systems should work very well together.
1985 next versions of both systems should work very well together.
1981
1986
1982 2004-08-24 Fernando Perez <fperez@colorado.edu>
1987 2004-08-24 Fernando Perez <fperez@colorado.edu>
1983
1988
1984 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
1989 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
1985 tried to switch the profiling to using hotshot, but I'm getting
1990 tried to switch the profiling to using hotshot, but I'm getting
1986 strange errors from prof.runctx() there. I may be misreading the
1991 strange errors from prof.runctx() there. I may be misreading the
1987 docs, but it looks weird. For now the profiling code will
1992 docs, but it looks weird. For now the profiling code will
1988 continue to use the standard profiler.
1993 continue to use the standard profiler.
1989
1994
1990 2004-08-23 Fernando Perez <fperez@colorado.edu>
1995 2004-08-23 Fernando Perez <fperez@colorado.edu>
1991
1996
1992 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
1997 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
1993 threaded shell, by John Hunter. It's not quite ready yet, but
1998 threaded shell, by John Hunter. It's not quite ready yet, but
1994 close.
1999 close.
1995
2000
1996 2004-08-22 Fernando Perez <fperez@colorado.edu>
2001 2004-08-22 Fernando Perez <fperez@colorado.edu>
1997
2002
1998 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2003 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
1999 in Magic and ultraTB.
2004 in Magic and ultraTB.
2000
2005
2001 * ipython.1: document threading options in manpage.
2006 * ipython.1: document threading options in manpage.
2002
2007
2003 * scripts/ipython: Changed name of -thread option to -gthread,
2008 * scripts/ipython: Changed name of -thread option to -gthread,
2004 since this is GTK specific. I want to leave the door open for a
2009 since this is GTK specific. I want to leave the door open for a
2005 -wthread option for WX, which will most likely be necessary. This
2010 -wthread option for WX, which will most likely be necessary. This
2006 change affects usage and ipmaker as well.
2011 change affects usage and ipmaker as well.
2007
2012
2008 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2013 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2009 handle the matplotlib shell issues. Code by John Hunter
2014 handle the matplotlib shell issues. Code by John Hunter
2010 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2015 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2011 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2016 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2012 broken (and disabled for end users) for now, but it puts the
2017 broken (and disabled for end users) for now, but it puts the
2013 infrastructure in place.
2018 infrastructure in place.
2014
2019
2015 2004-08-21 Fernando Perez <fperez@colorado.edu>
2020 2004-08-21 Fernando Perez <fperez@colorado.edu>
2016
2021
2017 * ipythonrc-pylab: Add matplotlib support.
2022 * ipythonrc-pylab: Add matplotlib support.
2018
2023
2019 * matplotlib_config.py: new files for matplotlib support, part of
2024 * matplotlib_config.py: new files for matplotlib support, part of
2020 the pylab profile.
2025 the pylab profile.
2021
2026
2022 * IPython/usage.py (__doc__): documented the threading options.
2027 * IPython/usage.py (__doc__): documented the threading options.
2023
2028
2024 2004-08-20 Fernando Perez <fperez@colorado.edu>
2029 2004-08-20 Fernando Perez <fperez@colorado.edu>
2025
2030
2026 * ipython: Modified the main calling routine to handle the -thread
2031 * ipython: Modified the main calling routine to handle the -thread
2027 and -mpthread options. This needs to be done as a top-level hack,
2032 and -mpthread options. This needs to be done as a top-level hack,
2028 because it determines which class to instantiate for IPython
2033 because it determines which class to instantiate for IPython
2029 itself.
2034 itself.
2030
2035
2031 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2036 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2032 classes to support multithreaded GTK operation without blocking,
2037 classes to support multithreaded GTK operation without blocking,
2033 and matplotlib with all backends. This is a lot of still very
2038 and matplotlib with all backends. This is a lot of still very
2034 experimental code, and threads are tricky. So it may still have a
2039 experimental code, and threads are tricky. So it may still have a
2035 few rough edges... This code owes a lot to
2040 few rough edges... This code owes a lot to
2036 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2041 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2037 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2042 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2038 to John Hunter for all the matplotlib work.
2043 to John Hunter for all the matplotlib work.
2039
2044
2040 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2045 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2041 options for gtk thread and matplotlib support.
2046 options for gtk thread and matplotlib support.
2042
2047
2043 2004-08-16 Fernando Perez <fperez@colorado.edu>
2048 2004-08-16 Fernando Perez <fperez@colorado.edu>
2044
2049
2045 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2050 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2046 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2051 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2047 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2052 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2048
2053
2049 2004-08-11 Fernando Perez <fperez@colorado.edu>
2054 2004-08-11 Fernando Perez <fperez@colorado.edu>
2050
2055
2051 * setup.py (isfile): Fix build so documentation gets updated for
2056 * setup.py (isfile): Fix build so documentation gets updated for
2052 rpms (it was only done for .tgz builds).
2057 rpms (it was only done for .tgz builds).
2053
2058
2054 2004-08-10 Fernando Perez <fperez@colorado.edu>
2059 2004-08-10 Fernando Perez <fperez@colorado.edu>
2055
2060
2056 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2061 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2057
2062
2058 * iplib.py : Silence syntax error exceptions in tab-completion.
2063 * iplib.py : Silence syntax error exceptions in tab-completion.
2059
2064
2060 2004-08-05 Fernando Perez <fperez@colorado.edu>
2065 2004-08-05 Fernando Perez <fperez@colorado.edu>
2061
2066
2062 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2067 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2063 'color off' mark for continuation prompts. This was causing long
2068 'color off' mark for continuation prompts. This was causing long
2064 continuation lines to mis-wrap.
2069 continuation lines to mis-wrap.
2065
2070
2066 2004-08-01 Fernando Perez <fperez@colorado.edu>
2071 2004-08-01 Fernando Perez <fperez@colorado.edu>
2067
2072
2068 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2073 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2069 for building ipython to be a parameter. All this is necessary
2074 for building ipython to be a parameter. All this is necessary
2070 right now to have a multithreaded version, but this insane
2075 right now to have a multithreaded version, but this insane
2071 non-design will be cleaned up soon. For now, it's a hack that
2076 non-design will be cleaned up soon. For now, it's a hack that
2072 works.
2077 works.
2073
2078
2074 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2079 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2075 args in various places. No bugs so far, but it's a dangerous
2080 args in various places. No bugs so far, but it's a dangerous
2076 practice.
2081 practice.
2077
2082
2078 2004-07-31 Fernando Perez <fperez@colorado.edu>
2083 2004-07-31 Fernando Perez <fperez@colorado.edu>
2079
2084
2080 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2085 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2081 fix completion of files with dots in their names under most
2086 fix completion of files with dots in their names under most
2082 profiles (pysh was OK because the completion order is different).
2087 profiles (pysh was OK because the completion order is different).
2083
2088
2084 2004-07-27 Fernando Perez <fperez@colorado.edu>
2089 2004-07-27 Fernando Perez <fperez@colorado.edu>
2085
2090
2086 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2091 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2087 keywords manually, b/c the one in keyword.py was removed in python
2092 keywords manually, b/c the one in keyword.py was removed in python
2088 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2093 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2089 This is NOT a bug under python 2.3 and earlier.
2094 This is NOT a bug under python 2.3 and earlier.
2090
2095
2091 2004-07-26 Fernando Perez <fperez@colorado.edu>
2096 2004-07-26 Fernando Perez <fperez@colorado.edu>
2092
2097
2093 * IPython/ultraTB.py (VerboseTB.text): Add another
2098 * IPython/ultraTB.py (VerboseTB.text): Add another
2094 linecache.checkcache() call to try to prevent inspect.py from
2099 linecache.checkcache() call to try to prevent inspect.py from
2095 crashing under python 2.3. I think this fixes
2100 crashing under python 2.3. I think this fixes
2096 http://www.scipy.net/roundup/ipython/issue17.
2101 http://www.scipy.net/roundup/ipython/issue17.
2097
2102
2098 2004-07-26 *** Released version 0.6.2
2103 2004-07-26 *** Released version 0.6.2
2099
2104
2100 2004-07-26 Fernando Perez <fperez@colorado.edu>
2105 2004-07-26 Fernando Perez <fperez@colorado.edu>
2101
2106
2102 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2107 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2103 fail for any number.
2108 fail for any number.
2104 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2109 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2105 empty bookmarks.
2110 empty bookmarks.
2106
2111
2107 2004-07-26 *** Released version 0.6.1
2112 2004-07-26 *** Released version 0.6.1
2108
2113
2109 2004-07-26 Fernando Perez <fperez@colorado.edu>
2114 2004-07-26 Fernando Perez <fperez@colorado.edu>
2110
2115
2111 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2116 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2112
2117
2113 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2118 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2114 escaping '()[]{}' in filenames.
2119 escaping '()[]{}' in filenames.
2115
2120
2116 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2121 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2117 Python 2.2 users who lack a proper shlex.split.
2122 Python 2.2 users who lack a proper shlex.split.
2118
2123
2119 2004-07-19 Fernando Perez <fperez@colorado.edu>
2124 2004-07-19 Fernando Perez <fperez@colorado.edu>
2120
2125
2121 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2126 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2122 for reading readline's init file. I follow the normal chain:
2127 for reading readline's init file. I follow the normal chain:
2123 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2128 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2124 report by Mike Heeter. This closes
2129 report by Mike Heeter. This closes
2125 http://www.scipy.net/roundup/ipython/issue16.
2130 http://www.scipy.net/roundup/ipython/issue16.
2126
2131
2127 2004-07-18 Fernando Perez <fperez@colorado.edu>
2132 2004-07-18 Fernando Perez <fperez@colorado.edu>
2128
2133
2129 * IPython/iplib.py (__init__): Add better handling of '\' under
2134 * IPython/iplib.py (__init__): Add better handling of '\' under
2130 Win32 for filenames. After a patch by Ville.
2135 Win32 for filenames. After a patch by Ville.
2131
2136
2132 2004-07-17 Fernando Perez <fperez@colorado.edu>
2137 2004-07-17 Fernando Perez <fperez@colorado.edu>
2133
2138
2134 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2139 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2135 autocalling would be triggered for 'foo is bar' if foo is
2140 autocalling would be triggered for 'foo is bar' if foo is
2136 callable. I also cleaned up the autocall detection code to use a
2141 callable. I also cleaned up the autocall detection code to use a
2137 regexp, which is faster. Bug reported by Alexander Schmolck.
2142 regexp, which is faster. Bug reported by Alexander Schmolck.
2138
2143
2139 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2144 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2140 '?' in them would confuse the help system. Reported by Alex
2145 '?' in them would confuse the help system. Reported by Alex
2141 Schmolck.
2146 Schmolck.
2142
2147
2143 2004-07-16 Fernando Perez <fperez@colorado.edu>
2148 2004-07-16 Fernando Perez <fperez@colorado.edu>
2144
2149
2145 * IPython/GnuplotInteractive.py (__all__): added plot2.
2150 * IPython/GnuplotInteractive.py (__all__): added plot2.
2146
2151
2147 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2152 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2148 plotting dictionaries, lists or tuples of 1d arrays.
2153 plotting dictionaries, lists or tuples of 1d arrays.
2149
2154
2150 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2155 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2151 optimizations.
2156 optimizations.
2152
2157
2153 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2158 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2154 the information which was there from Janko's original IPP code:
2159 the information which was there from Janko's original IPP code:
2155
2160
2156 03.05.99 20:53 porto.ifm.uni-kiel.de
2161 03.05.99 20:53 porto.ifm.uni-kiel.de
2157 --Started changelog.
2162 --Started changelog.
2158 --make clear do what it say it does
2163 --make clear do what it say it does
2159 --added pretty output of lines from inputcache
2164 --added pretty output of lines from inputcache
2160 --Made Logger a mixin class, simplifies handling of switches
2165 --Made Logger a mixin class, simplifies handling of switches
2161 --Added own completer class. .string<TAB> expands to last history
2166 --Added own completer class. .string<TAB> expands to last history
2162 line which starts with string. The new expansion is also present
2167 line which starts with string. The new expansion is also present
2163 with Ctrl-r from the readline library. But this shows, who this
2168 with Ctrl-r from the readline library. But this shows, who this
2164 can be done for other cases.
2169 can be done for other cases.
2165 --Added convention that all shell functions should accept a
2170 --Added convention that all shell functions should accept a
2166 parameter_string This opens the door for different behaviour for
2171 parameter_string This opens the door for different behaviour for
2167 each function. @cd is a good example of this.
2172 each function. @cd is a good example of this.
2168
2173
2169 04.05.99 12:12 porto.ifm.uni-kiel.de
2174 04.05.99 12:12 porto.ifm.uni-kiel.de
2170 --added logfile rotation
2175 --added logfile rotation
2171 --added new mainloop method which freezes first the namespace
2176 --added new mainloop method which freezes first the namespace
2172
2177
2173 07.05.99 21:24 porto.ifm.uni-kiel.de
2178 07.05.99 21:24 porto.ifm.uni-kiel.de
2174 --added the docreader classes. Now there is a help system.
2179 --added the docreader classes. Now there is a help system.
2175 -This is only a first try. Currently it's not easy to put new
2180 -This is only a first try. Currently it's not easy to put new
2176 stuff in the indices. But this is the way to go. Info would be
2181 stuff in the indices. But this is the way to go. Info would be
2177 better, but HTML is every where and not everybody has an info
2182 better, but HTML is every where and not everybody has an info
2178 system installed and it's not so easy to change html-docs to info.
2183 system installed and it's not so easy to change html-docs to info.
2179 --added global logfile option
2184 --added global logfile option
2180 --there is now a hook for object inspection method pinfo needs to
2185 --there is now a hook for object inspection method pinfo needs to
2181 be provided for this. Can be reached by two '??'.
2186 be provided for this. Can be reached by two '??'.
2182
2187
2183 08.05.99 20:51 porto.ifm.uni-kiel.de
2188 08.05.99 20:51 porto.ifm.uni-kiel.de
2184 --added a README
2189 --added a README
2185 --bug in rc file. Something has changed so functions in the rc
2190 --bug in rc file. Something has changed so functions in the rc
2186 file need to reference the shell and not self. Not clear if it's a
2191 file need to reference the shell and not self. Not clear if it's a
2187 bug or feature.
2192 bug or feature.
2188 --changed rc file for new behavior
2193 --changed rc file for new behavior
2189
2194
2190 2004-07-15 Fernando Perez <fperez@colorado.edu>
2195 2004-07-15 Fernando Perez <fperez@colorado.edu>
2191
2196
2192 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2197 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2193 cache was falling out of sync in bizarre manners when multi-line
2198 cache was falling out of sync in bizarre manners when multi-line
2194 input was present. Minor optimizations and cleanup.
2199 input was present. Minor optimizations and cleanup.
2195
2200
2196 (Logger): Remove old Changelog info for cleanup. This is the
2201 (Logger): Remove old Changelog info for cleanup. This is the
2197 information which was there from Janko's original code:
2202 information which was there from Janko's original code:
2198
2203
2199 Changes to Logger: - made the default log filename a parameter
2204 Changes to Logger: - made the default log filename a parameter
2200
2205
2201 - put a check for lines beginning with !@? in log(). Needed
2206 - put a check for lines beginning with !@? in log(). Needed
2202 (even if the handlers properly log their lines) for mid-session
2207 (even if the handlers properly log their lines) for mid-session
2203 logging activation to work properly. Without this, lines logged
2208 logging activation to work properly. Without this, lines logged
2204 in mid session, which get read from the cache, would end up
2209 in mid session, which get read from the cache, would end up
2205 'bare' (with !@? in the open) in the log. Now they are caught
2210 'bare' (with !@? in the open) in the log. Now they are caught
2206 and prepended with a #.
2211 and prepended with a #.
2207
2212
2208 * IPython/iplib.py (InteractiveShell.init_readline): added check
2213 * IPython/iplib.py (InteractiveShell.init_readline): added check
2209 in case MagicCompleter fails to be defined, so we don't crash.
2214 in case MagicCompleter fails to be defined, so we don't crash.
2210
2215
2211 2004-07-13 Fernando Perez <fperez@colorado.edu>
2216 2004-07-13 Fernando Perez <fperez@colorado.edu>
2212
2217
2213 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2218 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2214 of EPS if the requested filename ends in '.eps'.
2219 of EPS if the requested filename ends in '.eps'.
2215
2220
2216 2004-07-04 Fernando Perez <fperez@colorado.edu>
2221 2004-07-04 Fernando Perez <fperez@colorado.edu>
2217
2222
2218 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2223 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2219 escaping of quotes when calling the shell.
2224 escaping of quotes when calling the shell.
2220
2225
2221 2004-07-02 Fernando Perez <fperez@colorado.edu>
2226 2004-07-02 Fernando Perez <fperez@colorado.edu>
2222
2227
2223 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2228 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2224 gettext not working because we were clobbering '_'. Fixes
2229 gettext not working because we were clobbering '_'. Fixes
2225 http://www.scipy.net/roundup/ipython/issue6.
2230 http://www.scipy.net/roundup/ipython/issue6.
2226
2231
2227 2004-07-01 Fernando Perez <fperez@colorado.edu>
2232 2004-07-01 Fernando Perez <fperez@colorado.edu>
2228
2233
2229 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2234 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2230 into @cd. Patch by Ville.
2235 into @cd. Patch by Ville.
2231
2236
2232 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2237 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2233 new function to store things after ipmaker runs. Patch by Ville.
2238 new function to store things after ipmaker runs. Patch by Ville.
2234 Eventually this will go away once ipmaker is removed and the class
2239 Eventually this will go away once ipmaker is removed and the class
2235 gets cleaned up, but for now it's ok. Key functionality here is
2240 gets cleaned up, but for now it's ok. Key functionality here is
2236 the addition of the persistent storage mechanism, a dict for
2241 the addition of the persistent storage mechanism, a dict for
2237 keeping data across sessions (for now just bookmarks, but more can
2242 keeping data across sessions (for now just bookmarks, but more can
2238 be implemented later).
2243 be implemented later).
2239
2244
2240 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2245 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2241 persistent across sections. Patch by Ville, I modified it
2246 persistent across sections. Patch by Ville, I modified it
2242 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2247 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2243 added a '-l' option to list all bookmarks.
2248 added a '-l' option to list all bookmarks.
2244
2249
2245 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2250 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2246 center for cleanup. Registered with atexit.register(). I moved
2251 center for cleanup. Registered with atexit.register(). I moved
2247 here the old exit_cleanup(). After a patch by Ville.
2252 here the old exit_cleanup(). After a patch by Ville.
2248
2253
2249 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2254 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2250 characters in the hacked shlex_split for python 2.2.
2255 characters in the hacked shlex_split for python 2.2.
2251
2256
2252 * IPython/iplib.py (file_matches): more fixes to filenames with
2257 * IPython/iplib.py (file_matches): more fixes to filenames with
2253 whitespace in them. It's not perfect, but limitations in python's
2258 whitespace in them. It's not perfect, but limitations in python's
2254 readline make it impossible to go further.
2259 readline make it impossible to go further.
2255
2260
2256 2004-06-29 Fernando Perez <fperez@colorado.edu>
2261 2004-06-29 Fernando Perez <fperez@colorado.edu>
2257
2262
2258 * IPython/iplib.py (file_matches): escape whitespace correctly in
2263 * IPython/iplib.py (file_matches): escape whitespace correctly in
2259 filename completions. Bug reported by Ville.
2264 filename completions. Bug reported by Ville.
2260
2265
2261 2004-06-28 Fernando Perez <fperez@colorado.edu>
2266 2004-06-28 Fernando Perez <fperez@colorado.edu>
2262
2267
2263 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2268 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2264 the history file will be called 'history-PROFNAME' (or just
2269 the history file will be called 'history-PROFNAME' (or just
2265 'history' if no profile is loaded). I was getting annoyed at
2270 'history' if no profile is loaded). I was getting annoyed at
2266 getting my Numerical work history clobbered by pysh sessions.
2271 getting my Numerical work history clobbered by pysh sessions.
2267
2272
2268 * IPython/iplib.py (InteractiveShell.__init__): Internal
2273 * IPython/iplib.py (InteractiveShell.__init__): Internal
2269 getoutputerror() function so that we can honor the system_verbose
2274 getoutputerror() function so that we can honor the system_verbose
2270 flag for _all_ system calls. I also added escaping of #
2275 flag for _all_ system calls. I also added escaping of #
2271 characters here to avoid confusing Itpl.
2276 characters here to avoid confusing Itpl.
2272
2277
2273 * IPython/Magic.py (shlex_split): removed call to shell in
2278 * IPython/Magic.py (shlex_split): removed call to shell in
2274 parse_options and replaced it with shlex.split(). The annoying
2279 parse_options and replaced it with shlex.split(). The annoying
2275 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2280 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2276 to backport it from 2.3, with several frail hacks (the shlex
2281 to backport it from 2.3, with several frail hacks (the shlex
2277 module is rather limited in 2.2). Thanks to a suggestion by Ville
2282 module is rather limited in 2.2). Thanks to a suggestion by Ville
2278 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2283 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2279 problem.
2284 problem.
2280
2285
2281 (Magic.magic_system_verbose): new toggle to print the actual
2286 (Magic.magic_system_verbose): new toggle to print the actual
2282 system calls made by ipython. Mainly for debugging purposes.
2287 system calls made by ipython. Mainly for debugging purposes.
2283
2288
2284 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2289 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2285 doesn't support persistence. Reported (and fix suggested) by
2290 doesn't support persistence. Reported (and fix suggested) by
2286 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2291 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2287
2292
2288 2004-06-26 Fernando Perez <fperez@colorado.edu>
2293 2004-06-26 Fernando Perez <fperez@colorado.edu>
2289
2294
2290 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2295 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2291 continue prompts.
2296 continue prompts.
2292
2297
2293 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2298 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2294 function (basically a big docstring) and a few more things here to
2299 function (basically a big docstring) and a few more things here to
2295 speedup startup. pysh.py is now very lightweight. We want because
2300 speedup startup. pysh.py is now very lightweight. We want because
2296 it gets execfile'd, while InterpreterExec gets imported, so
2301 it gets execfile'd, while InterpreterExec gets imported, so
2297 byte-compilation saves time.
2302 byte-compilation saves time.
2298
2303
2299 2004-06-25 Fernando Perez <fperez@colorado.edu>
2304 2004-06-25 Fernando Perez <fperez@colorado.edu>
2300
2305
2301 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2306 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2302 -NUM', which was recently broken.
2307 -NUM', which was recently broken.
2303
2308
2304 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2309 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2305 in multi-line input (but not !!, which doesn't make sense there).
2310 in multi-line input (but not !!, which doesn't make sense there).
2306
2311
2307 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2312 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2308 It's just too useful, and people can turn it off in the less
2313 It's just too useful, and people can turn it off in the less
2309 common cases where it's a problem.
2314 common cases where it's a problem.
2310
2315
2311 2004-06-24 Fernando Perez <fperez@colorado.edu>
2316 2004-06-24 Fernando Perez <fperez@colorado.edu>
2312
2317
2313 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2318 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2314 special syntaxes (like alias calling) is now allied in multi-line
2319 special syntaxes (like alias calling) is now allied in multi-line
2315 input. This is still _very_ experimental, but it's necessary for
2320 input. This is still _very_ experimental, but it's necessary for
2316 efficient shell usage combining python looping syntax with system
2321 efficient shell usage combining python looping syntax with system
2317 calls. For now it's restricted to aliases, I don't think it
2322 calls. For now it's restricted to aliases, I don't think it
2318 really even makes sense to have this for magics.
2323 really even makes sense to have this for magics.
2319
2324
2320 2004-06-23 Fernando Perez <fperez@colorado.edu>
2325 2004-06-23 Fernando Perez <fperez@colorado.edu>
2321
2326
2322 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2327 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2323 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2328 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2324
2329
2325 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2330 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2326 extensions under Windows (after code sent by Gary Bishop). The
2331 extensions under Windows (after code sent by Gary Bishop). The
2327 extensions considered 'executable' are stored in IPython's rc
2332 extensions considered 'executable' are stored in IPython's rc
2328 structure as win_exec_ext.
2333 structure as win_exec_ext.
2329
2334
2330 * IPython/genutils.py (shell): new function, like system() but
2335 * IPython/genutils.py (shell): new function, like system() but
2331 without return value. Very useful for interactive shell work.
2336 without return value. Very useful for interactive shell work.
2332
2337
2333 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2338 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2334 delete aliases.
2339 delete aliases.
2335
2340
2336 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2341 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2337 sure that the alias table doesn't contain python keywords.
2342 sure that the alias table doesn't contain python keywords.
2338
2343
2339 2004-06-21 Fernando Perez <fperez@colorado.edu>
2344 2004-06-21 Fernando Perez <fperez@colorado.edu>
2340
2345
2341 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2346 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2342 non-existent items are found in $PATH. Reported by Thorsten.
2347 non-existent items are found in $PATH. Reported by Thorsten.
2343
2348
2344 2004-06-20 Fernando Perez <fperez@colorado.edu>
2349 2004-06-20 Fernando Perez <fperez@colorado.edu>
2345
2350
2346 * IPython/iplib.py (complete): modified the completer so that the
2351 * IPython/iplib.py (complete): modified the completer so that the
2347 order of priorities can be easily changed at runtime.
2352 order of priorities can be easily changed at runtime.
2348
2353
2349 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2354 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2350 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2355 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2351
2356
2352 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2357 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2353 expand Python variables prepended with $ in all system calls. The
2358 expand Python variables prepended with $ in all system calls. The
2354 same was done to InteractiveShell.handle_shell_escape. Now all
2359 same was done to InteractiveShell.handle_shell_escape. Now all
2355 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2360 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2356 expansion of python variables and expressions according to the
2361 expansion of python variables and expressions according to the
2357 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2362 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2358
2363
2359 Though PEP-215 has been rejected, a similar (but simpler) one
2364 Though PEP-215 has been rejected, a similar (but simpler) one
2360 seems like it will go into Python 2.4, PEP-292 -
2365 seems like it will go into Python 2.4, PEP-292 -
2361 http://www.python.org/peps/pep-0292.html.
2366 http://www.python.org/peps/pep-0292.html.
2362
2367
2363 I'll keep the full syntax of PEP-215, since IPython has since the
2368 I'll keep the full syntax of PEP-215, since IPython has since the
2364 start used Ka-Ping Yee's reference implementation discussed there
2369 start used Ka-Ping Yee's reference implementation discussed there
2365 (Itpl), and I actually like the powerful semantics it offers.
2370 (Itpl), and I actually like the powerful semantics it offers.
2366
2371
2367 In order to access normal shell variables, the $ has to be escaped
2372 In order to access normal shell variables, the $ has to be escaped
2368 via an extra $. For example:
2373 via an extra $. For example:
2369
2374
2370 In [7]: PATH='a python variable'
2375 In [7]: PATH='a python variable'
2371
2376
2372 In [8]: !echo $PATH
2377 In [8]: !echo $PATH
2373 a python variable
2378 a python variable
2374
2379
2375 In [9]: !echo $$PATH
2380 In [9]: !echo $$PATH
2376 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2381 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2377
2382
2378 (Magic.parse_options): escape $ so the shell doesn't evaluate
2383 (Magic.parse_options): escape $ so the shell doesn't evaluate
2379 things prematurely.
2384 things prematurely.
2380
2385
2381 * IPython/iplib.py (InteractiveShell.call_alias): added the
2386 * IPython/iplib.py (InteractiveShell.call_alias): added the
2382 ability for aliases to expand python variables via $.
2387 ability for aliases to expand python variables via $.
2383
2388
2384 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2389 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2385 system, now there's a @rehash/@rehashx pair of magics. These work
2390 system, now there's a @rehash/@rehashx pair of magics. These work
2386 like the csh rehash command, and can be invoked at any time. They
2391 like the csh rehash command, and can be invoked at any time. They
2387 build a table of aliases to everything in the user's $PATH
2392 build a table of aliases to everything in the user's $PATH
2388 (@rehash uses everything, @rehashx is slower but only adds
2393 (@rehash uses everything, @rehashx is slower but only adds
2389 executable files). With this, the pysh.py-based shell profile can
2394 executable files). With this, the pysh.py-based shell profile can
2390 now simply call rehash upon startup, and full access to all
2395 now simply call rehash upon startup, and full access to all
2391 programs in the user's path is obtained.
2396 programs in the user's path is obtained.
2392
2397
2393 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2398 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2394 functionality is now fully in place. I removed the old dynamic
2399 functionality is now fully in place. I removed the old dynamic
2395 code generation based approach, in favor of a much lighter one
2400 code generation based approach, in favor of a much lighter one
2396 based on a simple dict. The advantage is that this allows me to
2401 based on a simple dict. The advantage is that this allows me to
2397 now have thousands of aliases with negligible cost (unthinkable
2402 now have thousands of aliases with negligible cost (unthinkable
2398 with the old system).
2403 with the old system).
2399
2404
2400 2004-06-19 Fernando Perez <fperez@colorado.edu>
2405 2004-06-19 Fernando Perez <fperez@colorado.edu>
2401
2406
2402 * IPython/iplib.py (__init__): extended MagicCompleter class to
2407 * IPython/iplib.py (__init__): extended MagicCompleter class to
2403 also complete (last in priority) on user aliases.
2408 also complete (last in priority) on user aliases.
2404
2409
2405 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2410 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2406 call to eval.
2411 call to eval.
2407 (ItplNS.__init__): Added a new class which functions like Itpl,
2412 (ItplNS.__init__): Added a new class which functions like Itpl,
2408 but allows configuring the namespace for the evaluation to occur
2413 but allows configuring the namespace for the evaluation to occur
2409 in.
2414 in.
2410
2415
2411 2004-06-18 Fernando Perez <fperez@colorado.edu>
2416 2004-06-18 Fernando Perez <fperez@colorado.edu>
2412
2417
2413 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2418 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2414 better message when 'exit' or 'quit' are typed (a common newbie
2419 better message when 'exit' or 'quit' are typed (a common newbie
2415 confusion).
2420 confusion).
2416
2421
2417 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2422 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2418 check for Windows users.
2423 check for Windows users.
2419
2424
2420 * IPython/iplib.py (InteractiveShell.user_setup): removed
2425 * IPython/iplib.py (InteractiveShell.user_setup): removed
2421 disabling of colors for Windows. I'll test at runtime and issue a
2426 disabling of colors for Windows. I'll test at runtime and issue a
2422 warning if Gary's readline isn't found, as to nudge users to
2427 warning if Gary's readline isn't found, as to nudge users to
2423 download it.
2428 download it.
2424
2429
2425 2004-06-16 Fernando Perez <fperez@colorado.edu>
2430 2004-06-16 Fernando Perez <fperez@colorado.edu>
2426
2431
2427 * IPython/genutils.py (Stream.__init__): changed to print errors
2432 * IPython/genutils.py (Stream.__init__): changed to print errors
2428 to sys.stderr. I had a circular dependency here. Now it's
2433 to sys.stderr. I had a circular dependency here. Now it's
2429 possible to run ipython as IDLE's shell (consider this pre-alpha,
2434 possible to run ipython as IDLE's shell (consider this pre-alpha,
2430 since true stdout things end up in the starting terminal instead
2435 since true stdout things end up in the starting terminal instead
2431 of IDLE's out).
2436 of IDLE's out).
2432
2437
2433 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2438 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2434 users who haven't # updated their prompt_in2 definitions. Remove
2439 users who haven't # updated their prompt_in2 definitions. Remove
2435 eventually.
2440 eventually.
2436 (multiple_replace): added credit to original ASPN recipe.
2441 (multiple_replace): added credit to original ASPN recipe.
2437
2442
2438 2004-06-15 Fernando Perez <fperez@colorado.edu>
2443 2004-06-15 Fernando Perez <fperez@colorado.edu>
2439
2444
2440 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2445 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2441 list of auto-defined aliases.
2446 list of auto-defined aliases.
2442
2447
2443 2004-06-13 Fernando Perez <fperez@colorado.edu>
2448 2004-06-13 Fernando Perez <fperez@colorado.edu>
2444
2449
2445 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2450 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2446 install was really requested (so setup.py can be used for other
2451 install was really requested (so setup.py can be used for other
2447 things under Windows).
2452 things under Windows).
2448
2453
2449 2004-06-10 Fernando Perez <fperez@colorado.edu>
2454 2004-06-10 Fernando Perez <fperez@colorado.edu>
2450
2455
2451 * IPython/Logger.py (Logger.create_log): Manually remove any old
2456 * IPython/Logger.py (Logger.create_log): Manually remove any old
2452 backup, since os.remove may fail under Windows. Fixes bug
2457 backup, since os.remove may fail under Windows. Fixes bug
2453 reported by Thorsten.
2458 reported by Thorsten.
2454
2459
2455 2004-06-09 Fernando Perez <fperez@colorado.edu>
2460 2004-06-09 Fernando Perez <fperez@colorado.edu>
2456
2461
2457 * examples/example-embed.py: fixed all references to %n (replaced
2462 * examples/example-embed.py: fixed all references to %n (replaced
2458 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2463 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2459 for all examples and the manual as well.
2464 for all examples and the manual as well.
2460
2465
2461 2004-06-08 Fernando Perez <fperez@colorado.edu>
2466 2004-06-08 Fernando Perez <fperez@colorado.edu>
2462
2467
2463 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2468 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2464 alignment and color management. All 3 prompt subsystems now
2469 alignment and color management. All 3 prompt subsystems now
2465 inherit from BasePrompt.
2470 inherit from BasePrompt.
2466
2471
2467 * tools/release: updates for windows installer build and tag rpms
2472 * tools/release: updates for windows installer build and tag rpms
2468 with python version (since paths are fixed).
2473 with python version (since paths are fixed).
2469
2474
2470 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2475 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2471 which will become eventually obsolete. Also fixed the default
2476 which will become eventually obsolete. Also fixed the default
2472 prompt_in2 to use \D, so at least new users start with the correct
2477 prompt_in2 to use \D, so at least new users start with the correct
2473 defaults.
2478 defaults.
2474 WARNING: Users with existing ipythonrc files will need to apply
2479 WARNING: Users with existing ipythonrc files will need to apply
2475 this fix manually!
2480 this fix manually!
2476
2481
2477 * setup.py: make windows installer (.exe). This is finally the
2482 * setup.py: make windows installer (.exe). This is finally the
2478 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2483 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2479 which I hadn't included because it required Python 2.3 (or recent
2484 which I hadn't included because it required Python 2.3 (or recent
2480 distutils).
2485 distutils).
2481
2486
2482 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2487 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2483 usage of new '\D' escape.
2488 usage of new '\D' escape.
2484
2489
2485 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2490 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2486 lacks os.getuid())
2491 lacks os.getuid())
2487 (CachedOutput.set_colors): Added the ability to turn coloring
2492 (CachedOutput.set_colors): Added the ability to turn coloring
2488 on/off with @colors even for manually defined prompt colors. It
2493 on/off with @colors even for manually defined prompt colors. It
2489 uses a nasty global, but it works safely and via the generic color
2494 uses a nasty global, but it works safely and via the generic color
2490 handling mechanism.
2495 handling mechanism.
2491 (Prompt2.__init__): Introduced new escape '\D' for continuation
2496 (Prompt2.__init__): Introduced new escape '\D' for continuation
2492 prompts. It represents the counter ('\#') as dots.
2497 prompts. It represents the counter ('\#') as dots.
2493 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2498 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2494 need to update their ipythonrc files and replace '%n' with '\D' in
2499 need to update their ipythonrc files and replace '%n' with '\D' in
2495 their prompt_in2 settings everywhere. Sorry, but there's
2500 their prompt_in2 settings everywhere. Sorry, but there's
2496 otherwise no clean way to get all prompts to properly align. The
2501 otherwise no clean way to get all prompts to properly align. The
2497 ipythonrc shipped with IPython has been updated.
2502 ipythonrc shipped with IPython has been updated.
2498
2503
2499 2004-06-07 Fernando Perez <fperez@colorado.edu>
2504 2004-06-07 Fernando Perez <fperez@colorado.edu>
2500
2505
2501 * setup.py (isfile): Pass local_icons option to latex2html, so the
2506 * setup.py (isfile): Pass local_icons option to latex2html, so the
2502 resulting HTML file is self-contained. Thanks to
2507 resulting HTML file is self-contained. Thanks to
2503 dryice-AT-liu.com.cn for the tip.
2508 dryice-AT-liu.com.cn for the tip.
2504
2509
2505 * pysh.py: I created a new profile 'shell', which implements a
2510 * pysh.py: I created a new profile 'shell', which implements a
2506 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2511 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2507 system shell, nor will it become one anytime soon. It's mainly
2512 system shell, nor will it become one anytime soon. It's mainly
2508 meant to illustrate the use of the new flexible bash-like prompts.
2513 meant to illustrate the use of the new flexible bash-like prompts.
2509 I guess it could be used by hardy souls for true shell management,
2514 I guess it could be used by hardy souls for true shell management,
2510 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2515 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2511 profile. This uses the InterpreterExec extension provided by
2516 profile. This uses the InterpreterExec extension provided by
2512 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2517 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2513
2518
2514 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2519 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2515 auto-align itself with the length of the previous input prompt
2520 auto-align itself with the length of the previous input prompt
2516 (taking into account the invisible color escapes).
2521 (taking into account the invisible color escapes).
2517 (CachedOutput.__init__): Large restructuring of this class. Now
2522 (CachedOutput.__init__): Large restructuring of this class. Now
2518 all three prompts (primary1, primary2, output) are proper objects,
2523 all three prompts (primary1, primary2, output) are proper objects,
2519 managed by the 'parent' CachedOutput class. The code is still a
2524 managed by the 'parent' CachedOutput class. The code is still a
2520 bit hackish (all prompts share state via a pointer to the cache),
2525 bit hackish (all prompts share state via a pointer to the cache),
2521 but it's overall far cleaner than before.
2526 but it's overall far cleaner than before.
2522
2527
2523 * IPython/genutils.py (getoutputerror): modified to add verbose,
2528 * IPython/genutils.py (getoutputerror): modified to add verbose,
2524 debug and header options. This makes the interface of all getout*
2529 debug and header options. This makes the interface of all getout*
2525 functions uniform.
2530 functions uniform.
2526 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2531 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2527
2532
2528 * IPython/Magic.py (Magic.default_option): added a function to
2533 * IPython/Magic.py (Magic.default_option): added a function to
2529 allow registering default options for any magic command. This
2534 allow registering default options for any magic command. This
2530 makes it easy to have profiles which customize the magics globally
2535 makes it easy to have profiles which customize the magics globally
2531 for a certain use. The values set through this function are
2536 for a certain use. The values set through this function are
2532 picked up by the parse_options() method, which all magics should
2537 picked up by the parse_options() method, which all magics should
2533 use to parse their options.
2538 use to parse their options.
2534
2539
2535 * IPython/genutils.py (warn): modified the warnings framework to
2540 * IPython/genutils.py (warn): modified the warnings framework to
2536 use the Term I/O class. I'm trying to slowly unify all of
2541 use the Term I/O class. I'm trying to slowly unify all of
2537 IPython's I/O operations to pass through Term.
2542 IPython's I/O operations to pass through Term.
2538
2543
2539 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2544 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2540 the secondary prompt to correctly match the length of the primary
2545 the secondary prompt to correctly match the length of the primary
2541 one for any prompt. Now multi-line code will properly line up
2546 one for any prompt. Now multi-line code will properly line up
2542 even for path dependent prompts, such as the new ones available
2547 even for path dependent prompts, such as the new ones available
2543 via the prompt_specials.
2548 via the prompt_specials.
2544
2549
2545 2004-06-06 Fernando Perez <fperez@colorado.edu>
2550 2004-06-06 Fernando Perez <fperez@colorado.edu>
2546
2551
2547 * IPython/Prompts.py (prompt_specials): Added the ability to have
2552 * IPython/Prompts.py (prompt_specials): Added the ability to have
2548 bash-like special sequences in the prompts, which get
2553 bash-like special sequences in the prompts, which get
2549 automatically expanded. Things like hostname, current working
2554 automatically expanded. Things like hostname, current working
2550 directory and username are implemented already, but it's easy to
2555 directory and username are implemented already, but it's easy to
2551 add more in the future. Thanks to a patch by W.J. van der Laan
2556 add more in the future. Thanks to a patch by W.J. van der Laan
2552 <gnufnork-AT-hetdigitalegat.nl>
2557 <gnufnork-AT-hetdigitalegat.nl>
2553 (prompt_specials): Added color support for prompt strings, so
2558 (prompt_specials): Added color support for prompt strings, so
2554 users can define arbitrary color setups for their prompts.
2559 users can define arbitrary color setups for their prompts.
2555
2560
2556 2004-06-05 Fernando Perez <fperez@colorado.edu>
2561 2004-06-05 Fernando Perez <fperez@colorado.edu>
2557
2562
2558 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2563 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2559 code to load Gary Bishop's readline and configure it
2564 code to load Gary Bishop's readline and configure it
2560 automatically. Thanks to Gary for help on this.
2565 automatically. Thanks to Gary for help on this.
2561
2566
2562 2004-06-01 Fernando Perez <fperez@colorado.edu>
2567 2004-06-01 Fernando Perez <fperez@colorado.edu>
2563
2568
2564 * IPython/Logger.py (Logger.create_log): fix bug for logging
2569 * IPython/Logger.py (Logger.create_log): fix bug for logging
2565 with no filename (previous fix was incomplete).
2570 with no filename (previous fix was incomplete).
2566
2571
2567 2004-05-25 Fernando Perez <fperez@colorado.edu>
2572 2004-05-25 Fernando Perez <fperez@colorado.edu>
2568
2573
2569 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2574 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2570 parens would get passed to the shell.
2575 parens would get passed to the shell.
2571
2576
2572 2004-05-20 Fernando Perez <fperez@colorado.edu>
2577 2004-05-20 Fernando Perez <fperez@colorado.edu>
2573
2578
2574 * IPython/Magic.py (Magic.magic_prun): changed default profile
2579 * IPython/Magic.py (Magic.magic_prun): changed default profile
2575 sort order to 'time' (the more common profiling need).
2580 sort order to 'time' (the more common profiling need).
2576
2581
2577 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2582 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2578 so that source code shown is guaranteed in sync with the file on
2583 so that source code shown is guaranteed in sync with the file on
2579 disk (also changed in psource). Similar fix to the one for
2584 disk (also changed in psource). Similar fix to the one for
2580 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2585 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2581 <yann.ledu-AT-noos.fr>.
2586 <yann.ledu-AT-noos.fr>.
2582
2587
2583 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2588 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2584 with a single option would not be correctly parsed. Closes
2589 with a single option would not be correctly parsed. Closes
2585 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2590 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2586 introduced in 0.6.0 (on 2004-05-06).
2591 introduced in 0.6.0 (on 2004-05-06).
2587
2592
2588 2004-05-13 *** Released version 0.6.0
2593 2004-05-13 *** Released version 0.6.0
2589
2594
2590 2004-05-13 Fernando Perez <fperez@colorado.edu>
2595 2004-05-13 Fernando Perez <fperez@colorado.edu>
2591
2596
2592 * debian/: Added debian/ directory to CVS, so that debian support
2597 * debian/: Added debian/ directory to CVS, so that debian support
2593 is publicly accessible. The debian package is maintained by Jack
2598 is publicly accessible. The debian package is maintained by Jack
2594 Moffit <jack-AT-xiph.org>.
2599 Moffit <jack-AT-xiph.org>.
2595
2600
2596 * Documentation: included the notes about an ipython-based system
2601 * Documentation: included the notes about an ipython-based system
2597 shell (the hypothetical 'pysh') into the new_design.pdf document,
2602 shell (the hypothetical 'pysh') into the new_design.pdf document,
2598 so that these ideas get distributed to users along with the
2603 so that these ideas get distributed to users along with the
2599 official documentation.
2604 official documentation.
2600
2605
2601 2004-05-10 Fernando Perez <fperez@colorado.edu>
2606 2004-05-10 Fernando Perez <fperez@colorado.edu>
2602
2607
2603 * IPython/Logger.py (Logger.create_log): fix recently introduced
2608 * IPython/Logger.py (Logger.create_log): fix recently introduced
2604 bug (misindented line) where logstart would fail when not given an
2609 bug (misindented line) where logstart would fail when not given an
2605 explicit filename.
2610 explicit filename.
2606
2611
2607 2004-05-09 Fernando Perez <fperez@colorado.edu>
2612 2004-05-09 Fernando Perez <fperez@colorado.edu>
2608
2613
2609 * IPython/Magic.py (Magic.parse_options): skip system call when
2614 * IPython/Magic.py (Magic.parse_options): skip system call when
2610 there are no options to look for. Faster, cleaner for the common
2615 there are no options to look for. Faster, cleaner for the common
2611 case.
2616 case.
2612
2617
2613 * Documentation: many updates to the manual: describing Windows
2618 * Documentation: many updates to the manual: describing Windows
2614 support better, Gnuplot updates, credits, misc small stuff. Also
2619 support better, Gnuplot updates, credits, misc small stuff. Also
2615 updated the new_design doc a bit.
2620 updated the new_design doc a bit.
2616
2621
2617 2004-05-06 *** Released version 0.6.0.rc1
2622 2004-05-06 *** Released version 0.6.0.rc1
2618
2623
2619 2004-05-06 Fernando Perez <fperez@colorado.edu>
2624 2004-05-06 Fernando Perez <fperez@colorado.edu>
2620
2625
2621 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2626 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2622 operations to use the vastly more efficient list/''.join() method.
2627 operations to use the vastly more efficient list/''.join() method.
2623 (FormattedTB.text): Fix
2628 (FormattedTB.text): Fix
2624 http://www.scipy.net/roundup/ipython/issue12 - exception source
2629 http://www.scipy.net/roundup/ipython/issue12 - exception source
2625 extract not updated after reload. Thanks to Mike Salib
2630 extract not updated after reload. Thanks to Mike Salib
2626 <msalib-AT-mit.edu> for pinning the source of the problem.
2631 <msalib-AT-mit.edu> for pinning the source of the problem.
2627 Fortunately, the solution works inside ipython and doesn't require
2632 Fortunately, the solution works inside ipython and doesn't require
2628 any changes to python proper.
2633 any changes to python proper.
2629
2634
2630 * IPython/Magic.py (Magic.parse_options): Improved to process the
2635 * IPython/Magic.py (Magic.parse_options): Improved to process the
2631 argument list as a true shell would (by actually using the
2636 argument list as a true shell would (by actually using the
2632 underlying system shell). This way, all @magics automatically get
2637 underlying system shell). This way, all @magics automatically get
2633 shell expansion for variables. Thanks to a comment by Alex
2638 shell expansion for variables. Thanks to a comment by Alex
2634 Schmolck.
2639 Schmolck.
2635
2640
2636 2004-04-04 Fernando Perez <fperez@colorado.edu>
2641 2004-04-04 Fernando Perez <fperez@colorado.edu>
2637
2642
2638 * IPython/iplib.py (InteractiveShell.interact): Added a special
2643 * IPython/iplib.py (InteractiveShell.interact): Added a special
2639 trap for a debugger quit exception, which is basically impossible
2644 trap for a debugger quit exception, which is basically impossible
2640 to handle by normal mechanisms, given what pdb does to the stack.
2645 to handle by normal mechanisms, given what pdb does to the stack.
2641 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2646 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2642
2647
2643 2004-04-03 Fernando Perez <fperez@colorado.edu>
2648 2004-04-03 Fernando Perez <fperez@colorado.edu>
2644
2649
2645 * IPython/genutils.py (Term): Standardized the names of the Term
2650 * IPython/genutils.py (Term): Standardized the names of the Term
2646 class streams to cin/cout/cerr, following C++ naming conventions
2651 class streams to cin/cout/cerr, following C++ naming conventions
2647 (I can't use in/out/err because 'in' is not a valid attribute
2652 (I can't use in/out/err because 'in' is not a valid attribute
2648 name).
2653 name).
2649
2654
2650 * IPython/iplib.py (InteractiveShell.interact): don't increment
2655 * IPython/iplib.py (InteractiveShell.interact): don't increment
2651 the prompt if there's no user input. By Daniel 'Dang' Griffith
2656 the prompt if there's no user input. By Daniel 'Dang' Griffith
2652 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2657 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2653 Francois Pinard.
2658 Francois Pinard.
2654
2659
2655 2004-04-02 Fernando Perez <fperez@colorado.edu>
2660 2004-04-02 Fernando Perez <fperez@colorado.edu>
2656
2661
2657 * IPython/genutils.py (Stream.__init__): Modified to survive at
2662 * IPython/genutils.py (Stream.__init__): Modified to survive at
2658 least importing in contexts where stdin/out/err aren't true file
2663 least importing in contexts where stdin/out/err aren't true file
2659 objects, such as PyCrust (they lack fileno() and mode). However,
2664 objects, such as PyCrust (they lack fileno() and mode). However,
2660 the recovery facilities which rely on these things existing will
2665 the recovery facilities which rely on these things existing will
2661 not work.
2666 not work.
2662
2667
2663 2004-04-01 Fernando Perez <fperez@colorado.edu>
2668 2004-04-01 Fernando Perez <fperez@colorado.edu>
2664
2669
2665 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2670 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2666 use the new getoutputerror() function, so it properly
2671 use the new getoutputerror() function, so it properly
2667 distinguishes stdout/err.
2672 distinguishes stdout/err.
2668
2673
2669 * IPython/genutils.py (getoutputerror): added a function to
2674 * IPython/genutils.py (getoutputerror): added a function to
2670 capture separately the standard output and error of a command.
2675 capture separately the standard output and error of a command.
2671 After a comment from dang on the mailing lists. This code is
2676 After a comment from dang on the mailing lists. This code is
2672 basically a modified version of commands.getstatusoutput(), from
2677 basically a modified version of commands.getstatusoutput(), from
2673 the standard library.
2678 the standard library.
2674
2679
2675 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2680 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2676 '!!' as a special syntax (shorthand) to access @sx.
2681 '!!' as a special syntax (shorthand) to access @sx.
2677
2682
2678 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2683 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2679 command and return its output as a list split on '\n'.
2684 command and return its output as a list split on '\n'.
2680
2685
2681 2004-03-31 Fernando Perez <fperez@colorado.edu>
2686 2004-03-31 Fernando Perez <fperez@colorado.edu>
2682
2687
2683 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2688 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2684 method to dictionaries used as FakeModule instances if they lack
2689 method to dictionaries used as FakeModule instances if they lack
2685 it. At least pydoc in python2.3 breaks for runtime-defined
2690 it. At least pydoc in python2.3 breaks for runtime-defined
2686 functions without this hack. At some point I need to _really_
2691 functions without this hack. At some point I need to _really_
2687 understand what FakeModule is doing, because it's a gross hack.
2692 understand what FakeModule is doing, because it's a gross hack.
2688 But it solves Arnd's problem for now...
2693 But it solves Arnd's problem for now...
2689
2694
2690 2004-02-27 Fernando Perez <fperez@colorado.edu>
2695 2004-02-27 Fernando Perez <fperez@colorado.edu>
2691
2696
2692 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2697 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2693 mode would behave erratically. Also increased the number of
2698 mode would behave erratically. Also increased the number of
2694 possible logs in rotate mod to 999. Thanks to Rod Holland
2699 possible logs in rotate mod to 999. Thanks to Rod Holland
2695 <rhh@StructureLABS.com> for the report and fixes.
2700 <rhh@StructureLABS.com> for the report and fixes.
2696
2701
2697 2004-02-26 Fernando Perez <fperez@colorado.edu>
2702 2004-02-26 Fernando Perez <fperez@colorado.edu>
2698
2703
2699 * IPython/genutils.py (page): Check that the curses module really
2704 * IPython/genutils.py (page): Check that the curses module really
2700 has the initscr attribute before trying to use it. For some
2705 has the initscr attribute before trying to use it. For some
2701 reason, the Solaris curses module is missing this. I think this
2706 reason, the Solaris curses module is missing this. I think this
2702 should be considered a Solaris python bug, but I'm not sure.
2707 should be considered a Solaris python bug, but I'm not sure.
2703
2708
2704 2004-01-17 Fernando Perez <fperez@colorado.edu>
2709 2004-01-17 Fernando Perez <fperez@colorado.edu>
2705
2710
2706 * IPython/genutils.py (Stream.__init__): Changes to try to make
2711 * IPython/genutils.py (Stream.__init__): Changes to try to make
2707 ipython robust against stdin/out/err being closed by the user.
2712 ipython robust against stdin/out/err being closed by the user.
2708 This is 'user error' (and blocks a normal python session, at least
2713 This is 'user error' (and blocks a normal python session, at least
2709 the stdout case). However, Ipython should be able to survive such
2714 the stdout case). However, Ipython should be able to survive such
2710 instances of abuse as gracefully as possible. To simplify the
2715 instances of abuse as gracefully as possible. To simplify the
2711 coding and maintain compatibility with Gary Bishop's Term
2716 coding and maintain compatibility with Gary Bishop's Term
2712 contributions, I've made use of classmethods for this. I think
2717 contributions, I've made use of classmethods for this. I think
2713 this introduces a dependency on python 2.2.
2718 this introduces a dependency on python 2.2.
2714
2719
2715 2004-01-13 Fernando Perez <fperez@colorado.edu>
2720 2004-01-13 Fernando Perez <fperez@colorado.edu>
2716
2721
2717 * IPython/numutils.py (exp_safe): simplified the code a bit and
2722 * IPython/numutils.py (exp_safe): simplified the code a bit and
2718 removed the need for importing the kinds module altogether.
2723 removed the need for importing the kinds module altogether.
2719
2724
2720 2004-01-06 Fernando Perez <fperez@colorado.edu>
2725 2004-01-06 Fernando Perez <fperez@colorado.edu>
2721
2726
2722 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2727 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2723 a magic function instead, after some community feedback. No
2728 a magic function instead, after some community feedback. No
2724 special syntax will exist for it, but its name is deliberately
2729 special syntax will exist for it, but its name is deliberately
2725 very short.
2730 very short.
2726
2731
2727 2003-12-20 Fernando Perez <fperez@colorado.edu>
2732 2003-12-20 Fernando Perez <fperez@colorado.edu>
2728
2733
2729 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2734 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2730 new functionality, to automagically assign the result of a shell
2735 new functionality, to automagically assign the result of a shell
2731 command to a variable. I'll solicit some community feedback on
2736 command to a variable. I'll solicit some community feedback on
2732 this before making it permanent.
2737 this before making it permanent.
2733
2738
2734 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2739 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2735 requested about callables for which inspect couldn't obtain a
2740 requested about callables for which inspect couldn't obtain a
2736 proper argspec. Thanks to a crash report sent by Etienne
2741 proper argspec. Thanks to a crash report sent by Etienne
2737 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2742 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2738
2743
2739 2003-12-09 Fernando Perez <fperez@colorado.edu>
2744 2003-12-09 Fernando Perez <fperez@colorado.edu>
2740
2745
2741 * IPython/genutils.py (page): patch for the pager to work across
2746 * IPython/genutils.py (page): patch for the pager to work across
2742 various versions of Windows. By Gary Bishop.
2747 various versions of Windows. By Gary Bishop.
2743
2748
2744 2003-12-04 Fernando Perez <fperez@colorado.edu>
2749 2003-12-04 Fernando Perez <fperez@colorado.edu>
2745
2750
2746 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2751 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2747 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2752 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2748 While I tested this and it looks ok, there may still be corner
2753 While I tested this and it looks ok, there may still be corner
2749 cases I've missed.
2754 cases I've missed.
2750
2755
2751 2003-12-01 Fernando Perez <fperez@colorado.edu>
2756 2003-12-01 Fernando Perez <fperez@colorado.edu>
2752
2757
2753 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2758 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2754 where a line like 'p,q=1,2' would fail because the automagic
2759 where a line like 'p,q=1,2' would fail because the automagic
2755 system would be triggered for @p.
2760 system would be triggered for @p.
2756
2761
2757 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2762 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2758 cleanups, code unmodified.
2763 cleanups, code unmodified.
2759
2764
2760 * IPython/genutils.py (Term): added a class for IPython to handle
2765 * IPython/genutils.py (Term): added a class for IPython to handle
2761 output. In most cases it will just be a proxy for stdout/err, but
2766 output. In most cases it will just be a proxy for stdout/err, but
2762 having this allows modifications to be made for some platforms,
2767 having this allows modifications to be made for some platforms,
2763 such as handling color escapes under Windows. All of this code
2768 such as handling color escapes under Windows. All of this code
2764 was contributed by Gary Bishop, with minor modifications by me.
2769 was contributed by Gary Bishop, with minor modifications by me.
2765 The actual changes affect many files.
2770 The actual changes affect many files.
2766
2771
2767 2003-11-30 Fernando Perez <fperez@colorado.edu>
2772 2003-11-30 Fernando Perez <fperez@colorado.edu>
2768
2773
2769 * IPython/iplib.py (file_matches): new completion code, courtesy
2774 * IPython/iplib.py (file_matches): new completion code, courtesy
2770 of Jeff Collins. This enables filename completion again under
2775 of Jeff Collins. This enables filename completion again under
2771 python 2.3, which disabled it at the C level.
2776 python 2.3, which disabled it at the C level.
2772
2777
2773 2003-11-11 Fernando Perez <fperez@colorado.edu>
2778 2003-11-11 Fernando Perez <fperez@colorado.edu>
2774
2779
2775 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2780 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2776 for Numeric.array(map(...)), but often convenient.
2781 for Numeric.array(map(...)), but often convenient.
2777
2782
2778 2003-11-05 Fernando Perez <fperez@colorado.edu>
2783 2003-11-05 Fernando Perez <fperez@colorado.edu>
2779
2784
2780 * IPython/numutils.py (frange): Changed a call from int() to
2785 * IPython/numutils.py (frange): Changed a call from int() to
2781 int(round()) to prevent a problem reported with arange() in the
2786 int(round()) to prevent a problem reported with arange() in the
2782 numpy list.
2787 numpy list.
2783
2788
2784 2003-10-06 Fernando Perez <fperez@colorado.edu>
2789 2003-10-06 Fernando Perez <fperez@colorado.edu>
2785
2790
2786 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2791 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2787 prevent crashes if sys lacks an argv attribute (it happens with
2792 prevent crashes if sys lacks an argv attribute (it happens with
2788 embedded interpreters which build a bare-bones sys module).
2793 embedded interpreters which build a bare-bones sys module).
2789 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2794 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2790
2795
2791 2003-09-24 Fernando Perez <fperez@colorado.edu>
2796 2003-09-24 Fernando Perez <fperez@colorado.edu>
2792
2797
2793 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2798 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2794 to protect against poorly written user objects where __getattr__
2799 to protect against poorly written user objects where __getattr__
2795 raises exceptions other than AttributeError. Thanks to a bug
2800 raises exceptions other than AttributeError. Thanks to a bug
2796 report by Oliver Sander <osander-AT-gmx.de>.
2801 report by Oliver Sander <osander-AT-gmx.de>.
2797
2802
2798 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2803 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2799 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2804 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2800
2805
2801 2003-09-09 Fernando Perez <fperez@colorado.edu>
2806 2003-09-09 Fernando Perez <fperez@colorado.edu>
2802
2807
2803 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2808 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2804 unpacking a list whith a callable as first element would
2809 unpacking a list whith a callable as first element would
2805 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2810 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2806 Collins.
2811 Collins.
2807
2812
2808 2003-08-25 *** Released version 0.5.0
2813 2003-08-25 *** Released version 0.5.0
2809
2814
2810 2003-08-22 Fernando Perez <fperez@colorado.edu>
2815 2003-08-22 Fernando Perez <fperez@colorado.edu>
2811
2816
2812 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2817 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2813 improperly defined user exceptions. Thanks to feedback from Mark
2818 improperly defined user exceptions. Thanks to feedback from Mark
2814 Russell <mrussell-AT-verio.net>.
2819 Russell <mrussell-AT-verio.net>.
2815
2820
2816 2003-08-20 Fernando Perez <fperez@colorado.edu>
2821 2003-08-20 Fernando Perez <fperez@colorado.edu>
2817
2822
2818 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2823 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2819 printing so that it would print multi-line string forms starting
2824 printing so that it would print multi-line string forms starting
2820 with a new line. This way the formatting is better respected for
2825 with a new line. This way the formatting is better respected for
2821 objects which work hard to make nice string forms.
2826 objects which work hard to make nice string forms.
2822
2827
2823 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2828 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2824 autocall would overtake data access for objects with both
2829 autocall would overtake data access for objects with both
2825 __getitem__ and __call__.
2830 __getitem__ and __call__.
2826
2831
2827 2003-08-19 *** Released version 0.5.0-rc1
2832 2003-08-19 *** Released version 0.5.0-rc1
2828
2833
2829 2003-08-19 Fernando Perez <fperez@colorado.edu>
2834 2003-08-19 Fernando Perez <fperez@colorado.edu>
2830
2835
2831 * IPython/deep_reload.py (load_tail): single tiny change here
2836 * IPython/deep_reload.py (load_tail): single tiny change here
2832 seems to fix the long-standing bug of dreload() failing to work
2837 seems to fix the long-standing bug of dreload() failing to work
2833 for dotted names. But this module is pretty tricky, so I may have
2838 for dotted names. But this module is pretty tricky, so I may have
2834 missed some subtlety. Needs more testing!.
2839 missed some subtlety. Needs more testing!.
2835
2840
2836 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
2841 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
2837 exceptions which have badly implemented __str__ methods.
2842 exceptions which have badly implemented __str__ methods.
2838 (VerboseTB.text): harden against inspect.getinnerframes crashing,
2843 (VerboseTB.text): harden against inspect.getinnerframes crashing,
2839 which I've been getting reports about from Python 2.3 users. I
2844 which I've been getting reports about from Python 2.3 users. I
2840 wish I had a simple test case to reproduce the problem, so I could
2845 wish I had a simple test case to reproduce the problem, so I could
2841 either write a cleaner workaround or file a bug report if
2846 either write a cleaner workaround or file a bug report if
2842 necessary.
2847 necessary.
2843
2848
2844 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
2849 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
2845 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
2850 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
2846 a bug report by Tjabo Kloppenburg.
2851 a bug report by Tjabo Kloppenburg.
2847
2852
2848 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
2853 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
2849 crashes. Wrapped the pdb call in a blanket try/except, since pdb
2854 crashes. Wrapped the pdb call in a blanket try/except, since pdb
2850 seems rather unstable. Thanks to a bug report by Tjabo
2855 seems rather unstable. Thanks to a bug report by Tjabo
2851 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
2856 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
2852
2857
2853 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
2858 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
2854 this out soon because of the critical fixes in the inner loop for
2859 this out soon because of the critical fixes in the inner loop for
2855 generators.
2860 generators.
2856
2861
2857 * IPython/Magic.py (Magic.getargspec): removed. This (and
2862 * IPython/Magic.py (Magic.getargspec): removed. This (and
2858 _get_def) have been obsoleted by OInspect for a long time, I
2863 _get_def) have been obsoleted by OInspect for a long time, I
2859 hadn't noticed that they were dead code.
2864 hadn't noticed that they were dead code.
2860 (Magic._ofind): restored _ofind functionality for a few literals
2865 (Magic._ofind): restored _ofind functionality for a few literals
2861 (those in ["''",'""','[]','{}','()']). But it won't work anymore
2866 (those in ["''",'""','[]','{}','()']). But it won't work anymore
2862 for things like "hello".capitalize?, since that would require a
2867 for things like "hello".capitalize?, since that would require a
2863 potentially dangerous eval() again.
2868 potentially dangerous eval() again.
2864
2869
2865 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
2870 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
2866 logic a bit more to clean up the escapes handling and minimize the
2871 logic a bit more to clean up the escapes handling and minimize the
2867 use of _ofind to only necessary cases. The interactive 'feel' of
2872 use of _ofind to only necessary cases. The interactive 'feel' of
2868 IPython should have improved quite a bit with the changes in
2873 IPython should have improved quite a bit with the changes in
2869 _prefilter and _ofind (besides being far safer than before).
2874 _prefilter and _ofind (besides being far safer than before).
2870
2875
2871 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
2876 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
2872 obscure, never reported). Edit would fail to find the object to
2877 obscure, never reported). Edit would fail to find the object to
2873 edit under some circumstances.
2878 edit under some circumstances.
2874 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
2879 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
2875 which were causing double-calling of generators. Those eval calls
2880 which were causing double-calling of generators. Those eval calls
2876 were _very_ dangerous, since code with side effects could be
2881 were _very_ dangerous, since code with side effects could be
2877 triggered. As they say, 'eval is evil'... These were the
2882 triggered. As they say, 'eval is evil'... These were the
2878 nastiest evals in IPython. Besides, _ofind is now far simpler,
2883 nastiest evals in IPython. Besides, _ofind is now far simpler,
2879 and it should also be quite a bit faster. Its use of inspect is
2884 and it should also be quite a bit faster. Its use of inspect is
2880 also safer, so perhaps some of the inspect-related crashes I've
2885 also safer, so perhaps some of the inspect-related crashes I've
2881 seen lately with Python 2.3 might be taken care of. That will
2886 seen lately with Python 2.3 might be taken care of. That will
2882 need more testing.
2887 need more testing.
2883
2888
2884 2003-08-17 Fernando Perez <fperez@colorado.edu>
2889 2003-08-17 Fernando Perez <fperez@colorado.edu>
2885
2890
2886 * IPython/iplib.py (InteractiveShell._prefilter): significant
2891 * IPython/iplib.py (InteractiveShell._prefilter): significant
2887 simplifications to the logic for handling user escapes. Faster
2892 simplifications to the logic for handling user escapes. Faster
2888 and simpler code.
2893 and simpler code.
2889
2894
2890 2003-08-14 Fernando Perez <fperez@colorado.edu>
2895 2003-08-14 Fernando Perez <fperez@colorado.edu>
2891
2896
2892 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
2897 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
2893 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
2898 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
2894 but it should be quite a bit faster. And the recursive version
2899 but it should be quite a bit faster. And the recursive version
2895 generated O(log N) intermediate storage for all rank>1 arrays,
2900 generated O(log N) intermediate storage for all rank>1 arrays,
2896 even if they were contiguous.
2901 even if they were contiguous.
2897 (l1norm): Added this function.
2902 (l1norm): Added this function.
2898 (norm): Added this function for arbitrary norms (including
2903 (norm): Added this function for arbitrary norms (including
2899 l-infinity). l1 and l2 are still special cases for convenience
2904 l-infinity). l1 and l2 are still special cases for convenience
2900 and speed.
2905 and speed.
2901
2906
2902 2003-08-03 Fernando Perez <fperez@colorado.edu>
2907 2003-08-03 Fernando Perez <fperez@colorado.edu>
2903
2908
2904 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
2909 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
2905 exceptions, which now raise PendingDeprecationWarnings in Python
2910 exceptions, which now raise PendingDeprecationWarnings in Python
2906 2.3. There were some in Magic and some in Gnuplot2.
2911 2.3. There were some in Magic and some in Gnuplot2.
2907
2912
2908 2003-06-30 Fernando Perez <fperez@colorado.edu>
2913 2003-06-30 Fernando Perez <fperez@colorado.edu>
2909
2914
2910 * IPython/genutils.py (page): modified to call curses only for
2915 * IPython/genutils.py (page): modified to call curses only for
2911 terminals where TERM=='xterm'. After problems under many other
2916 terminals where TERM=='xterm'. After problems under many other
2912 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
2917 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
2913
2918
2914 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
2919 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
2915 would be triggered when readline was absent. This was just an old
2920 would be triggered when readline was absent. This was just an old
2916 debugging statement I'd forgotten to take out.
2921 debugging statement I'd forgotten to take out.
2917
2922
2918 2003-06-20 Fernando Perez <fperez@colorado.edu>
2923 2003-06-20 Fernando Perez <fperez@colorado.edu>
2919
2924
2920 * IPython/genutils.py (clock): modified to return only user time
2925 * IPython/genutils.py (clock): modified to return only user time
2921 (not counting system time), after a discussion on scipy. While
2926 (not counting system time), after a discussion on scipy. While
2922 system time may be a useful quantity occasionally, it may much
2927 system time may be a useful quantity occasionally, it may much
2923 more easily be skewed by occasional swapping or other similar
2928 more easily be skewed by occasional swapping or other similar
2924 activity.
2929 activity.
2925
2930
2926 2003-06-05 Fernando Perez <fperez@colorado.edu>
2931 2003-06-05 Fernando Perez <fperez@colorado.edu>
2927
2932
2928 * IPython/numutils.py (identity): new function, for building
2933 * IPython/numutils.py (identity): new function, for building
2929 arbitrary rank Kronecker deltas (mostly backwards compatible with
2934 arbitrary rank Kronecker deltas (mostly backwards compatible with
2930 Numeric.identity)
2935 Numeric.identity)
2931
2936
2932 2003-06-03 Fernando Perez <fperez@colorado.edu>
2937 2003-06-03 Fernando Perez <fperez@colorado.edu>
2933
2938
2934 * IPython/iplib.py (InteractiveShell.handle_magic): protect
2939 * IPython/iplib.py (InteractiveShell.handle_magic): protect
2935 arguments passed to magics with spaces, to allow trailing '\' to
2940 arguments passed to magics with spaces, to allow trailing '\' to
2936 work normally (mainly for Windows users).
2941 work normally (mainly for Windows users).
2937
2942
2938 2003-05-29 Fernando Perez <fperez@colorado.edu>
2943 2003-05-29 Fernando Perez <fperez@colorado.edu>
2939
2944
2940 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
2945 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
2941 instead of pydoc.help. This fixes a bizarre behavior where
2946 instead of pydoc.help. This fixes a bizarre behavior where
2942 printing '%s' % locals() would trigger the help system. Now
2947 printing '%s' % locals() would trigger the help system. Now
2943 ipython behaves like normal python does.
2948 ipython behaves like normal python does.
2944
2949
2945 Note that if one does 'from pydoc import help', the bizarre
2950 Note that if one does 'from pydoc import help', the bizarre
2946 behavior returns, but this will also happen in normal python, so
2951 behavior returns, but this will also happen in normal python, so
2947 it's not an ipython bug anymore (it has to do with how pydoc.help
2952 it's not an ipython bug anymore (it has to do with how pydoc.help
2948 is implemented).
2953 is implemented).
2949
2954
2950 2003-05-22 Fernando Perez <fperez@colorado.edu>
2955 2003-05-22 Fernando Perez <fperez@colorado.edu>
2951
2956
2952 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
2957 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
2953 return [] instead of None when nothing matches, also match to end
2958 return [] instead of None when nothing matches, also match to end
2954 of line. Patch by Gary Bishop.
2959 of line. Patch by Gary Bishop.
2955
2960
2956 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
2961 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
2957 protection as before, for files passed on the command line. This
2962 protection as before, for files passed on the command line. This
2958 prevents the CrashHandler from kicking in if user files call into
2963 prevents the CrashHandler from kicking in if user files call into
2959 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
2964 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
2960 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
2965 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
2961
2966
2962 2003-05-20 *** Released version 0.4.0
2967 2003-05-20 *** Released version 0.4.0
2963
2968
2964 2003-05-20 Fernando Perez <fperez@colorado.edu>
2969 2003-05-20 Fernando Perez <fperez@colorado.edu>
2965
2970
2966 * setup.py: added support for manpages. It's a bit hackish b/c of
2971 * setup.py: added support for manpages. It's a bit hackish b/c of
2967 a bug in the way the bdist_rpm distutils target handles gzipped
2972 a bug in the way the bdist_rpm distutils target handles gzipped
2968 manpages, but it works. After a patch by Jack.
2973 manpages, but it works. After a patch by Jack.
2969
2974
2970 2003-05-19 Fernando Perez <fperez@colorado.edu>
2975 2003-05-19 Fernando Perez <fperez@colorado.edu>
2971
2976
2972 * IPython/numutils.py: added a mockup of the kinds module, since
2977 * IPython/numutils.py: added a mockup of the kinds module, since
2973 it was recently removed from Numeric. This way, numutils will
2978 it was recently removed from Numeric. This way, numutils will
2974 work for all users even if they are missing kinds.
2979 work for all users even if they are missing kinds.
2975
2980
2976 * IPython/Magic.py (Magic._ofind): Harden against an inspect
2981 * IPython/Magic.py (Magic._ofind): Harden against an inspect
2977 failure, which can occur with SWIG-wrapped extensions. After a
2982 failure, which can occur with SWIG-wrapped extensions. After a
2978 crash report from Prabhu.
2983 crash report from Prabhu.
2979
2984
2980 2003-05-16 Fernando Perez <fperez@colorado.edu>
2985 2003-05-16 Fernando Perez <fperez@colorado.edu>
2981
2986
2982 * IPython/iplib.py (InteractiveShell.excepthook): New method to
2987 * IPython/iplib.py (InteractiveShell.excepthook): New method to
2983 protect ipython from user code which may call directly
2988 protect ipython from user code which may call directly
2984 sys.excepthook (this looks like an ipython crash to the user, even
2989 sys.excepthook (this looks like an ipython crash to the user, even
2985 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2990 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2986 This is especially important to help users of WxWindows, but may
2991 This is especially important to help users of WxWindows, but may
2987 also be useful in other cases.
2992 also be useful in other cases.
2988
2993
2989 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
2994 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
2990 an optional tb_offset to be specified, and to preserve exception
2995 an optional tb_offset to be specified, and to preserve exception
2991 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2996 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2992
2997
2993 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
2998 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
2994
2999
2995 2003-05-15 Fernando Perez <fperez@colorado.edu>
3000 2003-05-15 Fernando Perez <fperez@colorado.edu>
2996
3001
2997 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3002 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
2998 installing for a new user under Windows.
3003 installing for a new user under Windows.
2999
3004
3000 2003-05-12 Fernando Perez <fperez@colorado.edu>
3005 2003-05-12 Fernando Perez <fperez@colorado.edu>
3001
3006
3002 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3007 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3003 handler for Emacs comint-based lines. Currently it doesn't do
3008 handler for Emacs comint-based lines. Currently it doesn't do
3004 much (but importantly, it doesn't update the history cache). In
3009 much (but importantly, it doesn't update the history cache). In
3005 the future it may be expanded if Alex needs more functionality
3010 the future it may be expanded if Alex needs more functionality
3006 there.
3011 there.
3007
3012
3008 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3013 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3009 info to crash reports.
3014 info to crash reports.
3010
3015
3011 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3016 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3012 just like Python's -c. Also fixed crash with invalid -color
3017 just like Python's -c. Also fixed crash with invalid -color
3013 option value at startup. Thanks to Will French
3018 option value at startup. Thanks to Will French
3014 <wfrench-AT-bestweb.net> for the bug report.
3019 <wfrench-AT-bestweb.net> for the bug report.
3015
3020
3016 2003-05-09 Fernando Perez <fperez@colorado.edu>
3021 2003-05-09 Fernando Perez <fperez@colorado.edu>
3017
3022
3018 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3023 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3019 to EvalDict (it's a mapping, after all) and simplified its code
3024 to EvalDict (it's a mapping, after all) and simplified its code
3020 quite a bit, after a nice discussion on c.l.py where Gustavo
3025 quite a bit, after a nice discussion on c.l.py where Gustavo
3021 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3026 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3022
3027
3023 2003-04-30 Fernando Perez <fperez@colorado.edu>
3028 2003-04-30 Fernando Perez <fperez@colorado.edu>
3024
3029
3025 * IPython/genutils.py (timings_out): modified it to reduce its
3030 * IPython/genutils.py (timings_out): modified it to reduce its
3026 overhead in the common reps==1 case.
3031 overhead in the common reps==1 case.
3027
3032
3028 2003-04-29 Fernando Perez <fperez@colorado.edu>
3033 2003-04-29 Fernando Perez <fperez@colorado.edu>
3029
3034
3030 * IPython/genutils.py (timings_out): Modified to use the resource
3035 * IPython/genutils.py (timings_out): Modified to use the resource
3031 module, which avoids the wraparound problems of time.clock().
3036 module, which avoids the wraparound problems of time.clock().
3032
3037
3033 2003-04-17 *** Released version 0.2.15pre4
3038 2003-04-17 *** Released version 0.2.15pre4
3034
3039
3035 2003-04-17 Fernando Perez <fperez@colorado.edu>
3040 2003-04-17 Fernando Perez <fperez@colorado.edu>
3036
3041
3037 * setup.py (scriptfiles): Split windows-specific stuff over to a
3042 * setup.py (scriptfiles): Split windows-specific stuff over to a
3038 separate file, in an attempt to have a Windows GUI installer.
3043 separate file, in an attempt to have a Windows GUI installer.
3039 That didn't work, but part of the groundwork is done.
3044 That didn't work, but part of the groundwork is done.
3040
3045
3041 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3046 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3042 indent/unindent with 4 spaces. Particularly useful in combination
3047 indent/unindent with 4 spaces. Particularly useful in combination
3043 with the new auto-indent option.
3048 with the new auto-indent option.
3044
3049
3045 2003-04-16 Fernando Perez <fperez@colorado.edu>
3050 2003-04-16 Fernando Perez <fperez@colorado.edu>
3046
3051
3047 * IPython/Magic.py: various replacements of self.rc for
3052 * IPython/Magic.py: various replacements of self.rc for
3048 self.shell.rc. A lot more remains to be done to fully disentangle
3053 self.shell.rc. A lot more remains to be done to fully disentangle
3049 this class from the main Shell class.
3054 this class from the main Shell class.
3050
3055
3051 * IPython/GnuplotRuntime.py: added checks for mouse support so
3056 * IPython/GnuplotRuntime.py: added checks for mouse support so
3052 that we don't try to enable it if the current gnuplot doesn't
3057 that we don't try to enable it if the current gnuplot doesn't
3053 really support it. Also added checks so that we don't try to
3058 really support it. Also added checks so that we don't try to
3054 enable persist under Windows (where Gnuplot doesn't recognize the
3059 enable persist under Windows (where Gnuplot doesn't recognize the
3055 option).
3060 option).
3056
3061
3057 * IPython/iplib.py (InteractiveShell.interact): Added optional
3062 * IPython/iplib.py (InteractiveShell.interact): Added optional
3058 auto-indenting code, after a patch by King C. Shu
3063 auto-indenting code, after a patch by King C. Shu
3059 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3064 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3060 get along well with pasting indented code. If I ever figure out
3065 get along well with pasting indented code. If I ever figure out
3061 how to make that part go well, it will become on by default.
3066 how to make that part go well, it will become on by default.
3062
3067
3063 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3068 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3064 crash ipython if there was an unmatched '%' in the user's prompt
3069 crash ipython if there was an unmatched '%' in the user's prompt
3065 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3070 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3066
3071
3067 * IPython/iplib.py (InteractiveShell.interact): removed the
3072 * IPython/iplib.py (InteractiveShell.interact): removed the
3068 ability to ask the user whether he wants to crash or not at the
3073 ability to ask the user whether he wants to crash or not at the
3069 'last line' exception handler. Calling functions at that point
3074 'last line' exception handler. Calling functions at that point
3070 changes the stack, and the error reports would have incorrect
3075 changes the stack, and the error reports would have incorrect
3071 tracebacks.
3076 tracebacks.
3072
3077
3073 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3078 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3074 pass through a peger a pretty-printed form of any object. After a
3079 pass through a peger a pretty-printed form of any object. After a
3075 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3080 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3076
3081
3077 2003-04-14 Fernando Perez <fperez@colorado.edu>
3082 2003-04-14 Fernando Perez <fperez@colorado.edu>
3078
3083
3079 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3084 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3080 all files in ~ would be modified at first install (instead of
3085 all files in ~ would be modified at first install (instead of
3081 ~/.ipython). This could be potentially disastrous, as the
3086 ~/.ipython). This could be potentially disastrous, as the
3082 modification (make line-endings native) could damage binary files.
3087 modification (make line-endings native) could damage binary files.
3083
3088
3084 2003-04-10 Fernando Perez <fperez@colorado.edu>
3089 2003-04-10 Fernando Perez <fperez@colorado.edu>
3085
3090
3086 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3091 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3087 handle only lines which are invalid python. This now means that
3092 handle only lines which are invalid python. This now means that
3088 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3093 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3089 for the bug report.
3094 for the bug report.
3090
3095
3091 2003-04-01 Fernando Perez <fperez@colorado.edu>
3096 2003-04-01 Fernando Perez <fperez@colorado.edu>
3092
3097
3093 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3098 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3094 where failing to set sys.last_traceback would crash pdb.pm().
3099 where failing to set sys.last_traceback would crash pdb.pm().
3095 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3100 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3096 report.
3101 report.
3097
3102
3098 2003-03-25 Fernando Perez <fperez@colorado.edu>
3103 2003-03-25 Fernando Perez <fperez@colorado.edu>
3099
3104
3100 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3105 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3101 before printing it (it had a lot of spurious blank lines at the
3106 before printing it (it had a lot of spurious blank lines at the
3102 end).
3107 end).
3103
3108
3104 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3109 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3105 output would be sent 21 times! Obviously people don't use this
3110 output would be sent 21 times! Obviously people don't use this
3106 too often, or I would have heard about it.
3111 too often, or I would have heard about it.
3107
3112
3108 2003-03-24 Fernando Perez <fperez@colorado.edu>
3113 2003-03-24 Fernando Perez <fperez@colorado.edu>
3109
3114
3110 * setup.py (scriptfiles): renamed the data_files parameter from
3115 * setup.py (scriptfiles): renamed the data_files parameter from
3111 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3116 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3112 for the patch.
3117 for the patch.
3113
3118
3114 2003-03-20 Fernando Perez <fperez@colorado.edu>
3119 2003-03-20 Fernando Perez <fperez@colorado.edu>
3115
3120
3116 * IPython/genutils.py (error): added error() and fatal()
3121 * IPython/genutils.py (error): added error() and fatal()
3117 functions.
3122 functions.
3118
3123
3119 2003-03-18 *** Released version 0.2.15pre3
3124 2003-03-18 *** Released version 0.2.15pre3
3120
3125
3121 2003-03-18 Fernando Perez <fperez@colorado.edu>
3126 2003-03-18 Fernando Perez <fperez@colorado.edu>
3122
3127
3123 * setupext/install_data_ext.py
3128 * setupext/install_data_ext.py
3124 (install_data_ext.initialize_options): Class contributed by Jack
3129 (install_data_ext.initialize_options): Class contributed by Jack
3125 Moffit for fixing the old distutils hack. He is sending this to
3130 Moffit for fixing the old distutils hack. He is sending this to
3126 the distutils folks so in the future we may not need it as a
3131 the distutils folks so in the future we may not need it as a
3127 private fix.
3132 private fix.
3128
3133
3129 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3134 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3130 changes for Debian packaging. See his patch for full details.
3135 changes for Debian packaging. See his patch for full details.
3131 The old distutils hack of making the ipythonrc* files carry a
3136 The old distutils hack of making the ipythonrc* files carry a
3132 bogus .py extension is gone, at last. Examples were moved to a
3137 bogus .py extension is gone, at last. Examples were moved to a
3133 separate subdir under doc/, and the separate executable scripts
3138 separate subdir under doc/, and the separate executable scripts
3134 now live in their own directory. Overall a great cleanup. The
3139 now live in their own directory. Overall a great cleanup. The
3135 manual was updated to use the new files, and setup.py has been
3140 manual was updated to use the new files, and setup.py has been
3136 fixed for this setup.
3141 fixed for this setup.
3137
3142
3138 * IPython/PyColorize.py (Parser.usage): made non-executable and
3143 * IPython/PyColorize.py (Parser.usage): made non-executable and
3139 created a pycolor wrapper around it to be included as a script.
3144 created a pycolor wrapper around it to be included as a script.
3140
3145
3141 2003-03-12 *** Released version 0.2.15pre2
3146 2003-03-12 *** Released version 0.2.15pre2
3142
3147
3143 2003-03-12 Fernando Perez <fperez@colorado.edu>
3148 2003-03-12 Fernando Perez <fperez@colorado.edu>
3144
3149
3145 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3150 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3146 long-standing problem with garbage characters in some terminals.
3151 long-standing problem with garbage characters in some terminals.
3147 The issue was really that the \001 and \002 escapes must _only_ be
3152 The issue was really that the \001 and \002 escapes must _only_ be
3148 passed to input prompts (which call readline), but _never_ to
3153 passed to input prompts (which call readline), but _never_ to
3149 normal text to be printed on screen. I changed ColorANSI to have
3154 normal text to be printed on screen. I changed ColorANSI to have
3150 two classes: TermColors and InputTermColors, each with the
3155 two classes: TermColors and InputTermColors, each with the
3151 appropriate escapes for input prompts or normal text. The code in
3156 appropriate escapes for input prompts or normal text. The code in
3152 Prompts.py got slightly more complicated, but this very old and
3157 Prompts.py got slightly more complicated, but this very old and
3153 annoying bug is finally fixed.
3158 annoying bug is finally fixed.
3154
3159
3155 All the credit for nailing down the real origin of this problem
3160 All the credit for nailing down the real origin of this problem
3156 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3161 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3157 *Many* thanks to him for spending quite a bit of effort on this.
3162 *Many* thanks to him for spending quite a bit of effort on this.
3158
3163
3159 2003-03-05 *** Released version 0.2.15pre1
3164 2003-03-05 *** Released version 0.2.15pre1
3160
3165
3161 2003-03-03 Fernando Perez <fperez@colorado.edu>
3166 2003-03-03 Fernando Perez <fperez@colorado.edu>
3162
3167
3163 * IPython/FakeModule.py: Moved the former _FakeModule to a
3168 * IPython/FakeModule.py: Moved the former _FakeModule to a
3164 separate file, because it's also needed by Magic (to fix a similar
3169 separate file, because it's also needed by Magic (to fix a similar
3165 pickle-related issue in @run).
3170 pickle-related issue in @run).
3166
3171
3167 2003-03-02 Fernando Perez <fperez@colorado.edu>
3172 2003-03-02 Fernando Perez <fperez@colorado.edu>
3168
3173
3169 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3174 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3170 the autocall option at runtime.
3175 the autocall option at runtime.
3171 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3176 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3172 across Magic.py to start separating Magic from InteractiveShell.
3177 across Magic.py to start separating Magic from InteractiveShell.
3173 (Magic._ofind): Fixed to return proper namespace for dotted
3178 (Magic._ofind): Fixed to return proper namespace for dotted
3174 names. Before, a dotted name would always return 'not currently
3179 names. Before, a dotted name would always return 'not currently
3175 defined', because it would find the 'parent'. s.x would be found,
3180 defined', because it would find the 'parent'. s.x would be found,
3176 but since 'x' isn't defined by itself, it would get confused.
3181 but since 'x' isn't defined by itself, it would get confused.
3177 (Magic.magic_run): Fixed pickling problems reported by Ralf
3182 (Magic.magic_run): Fixed pickling problems reported by Ralf
3178 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3183 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3179 that I'd used when Mike Heeter reported similar issues at the
3184 that I'd used when Mike Heeter reported similar issues at the
3180 top-level, but now for @run. It boils down to injecting the
3185 top-level, but now for @run. It boils down to injecting the
3181 namespace where code is being executed with something that looks
3186 namespace where code is being executed with something that looks
3182 enough like a module to fool pickle.dump(). Since a pickle stores
3187 enough like a module to fool pickle.dump(). Since a pickle stores
3183 a named reference to the importing module, we need this for
3188 a named reference to the importing module, we need this for
3184 pickles to save something sensible.
3189 pickles to save something sensible.
3185
3190
3186 * IPython/ipmaker.py (make_IPython): added an autocall option.
3191 * IPython/ipmaker.py (make_IPython): added an autocall option.
3187
3192
3188 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3193 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3189 the auto-eval code. Now autocalling is an option, and the code is
3194 the auto-eval code. Now autocalling is an option, and the code is
3190 also vastly safer. There is no more eval() involved at all.
3195 also vastly safer. There is no more eval() involved at all.
3191
3196
3192 2003-03-01 Fernando Perez <fperez@colorado.edu>
3197 2003-03-01 Fernando Perez <fperez@colorado.edu>
3193
3198
3194 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3199 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3195 dict with named keys instead of a tuple.
3200 dict with named keys instead of a tuple.
3196
3201
3197 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3202 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3198
3203
3199 * setup.py (make_shortcut): Fixed message about directories
3204 * setup.py (make_shortcut): Fixed message about directories
3200 created during Windows installation (the directories were ok, just
3205 created during Windows installation (the directories were ok, just
3201 the printed message was misleading). Thanks to Chris Liechti
3206 the printed message was misleading). Thanks to Chris Liechti
3202 <cliechti-AT-gmx.net> for the heads up.
3207 <cliechti-AT-gmx.net> for the heads up.
3203
3208
3204 2003-02-21 Fernando Perez <fperez@colorado.edu>
3209 2003-02-21 Fernando Perez <fperez@colorado.edu>
3205
3210
3206 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3211 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3207 of ValueError exception when checking for auto-execution. This
3212 of ValueError exception when checking for auto-execution. This
3208 one is raised by things like Numeric arrays arr.flat when the
3213 one is raised by things like Numeric arrays arr.flat when the
3209 array is non-contiguous.
3214 array is non-contiguous.
3210
3215
3211 2003-01-31 Fernando Perez <fperez@colorado.edu>
3216 2003-01-31 Fernando Perez <fperez@colorado.edu>
3212
3217
3213 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3218 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3214 not return any value at all (even though the command would get
3219 not return any value at all (even though the command would get
3215 executed).
3220 executed).
3216 (xsys): Flush stdout right after printing the command to ensure
3221 (xsys): Flush stdout right after printing the command to ensure
3217 proper ordering of commands and command output in the total
3222 proper ordering of commands and command output in the total
3218 output.
3223 output.
3219 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3224 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3220 system/getoutput as defaults. The old ones are kept for
3225 system/getoutput as defaults. The old ones are kept for
3221 compatibility reasons, so no code which uses this library needs
3226 compatibility reasons, so no code which uses this library needs
3222 changing.
3227 changing.
3223
3228
3224 2003-01-27 *** Released version 0.2.14
3229 2003-01-27 *** Released version 0.2.14
3225
3230
3226 2003-01-25 Fernando Perez <fperez@colorado.edu>
3231 2003-01-25 Fernando Perez <fperez@colorado.edu>
3227
3232
3228 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3233 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3229 functions defined in previous edit sessions could not be re-edited
3234 functions defined in previous edit sessions could not be re-edited
3230 (because the temp files were immediately removed). Now temp files
3235 (because the temp files were immediately removed). Now temp files
3231 are removed only at IPython's exit.
3236 are removed only at IPython's exit.
3232 (Magic.magic_run): Improved @run to perform shell-like expansions
3237 (Magic.magic_run): Improved @run to perform shell-like expansions
3233 on its arguments (~users and $VARS). With this, @run becomes more
3238 on its arguments (~users and $VARS). With this, @run becomes more
3234 like a normal command-line.
3239 like a normal command-line.
3235
3240
3236 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3241 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3237 bugs related to embedding and cleaned up that code. A fairly
3242 bugs related to embedding and cleaned up that code. A fairly
3238 important one was the impossibility to access the global namespace
3243 important one was the impossibility to access the global namespace
3239 through the embedded IPython (only local variables were visible).
3244 through the embedded IPython (only local variables were visible).
3240
3245
3241 2003-01-14 Fernando Perez <fperez@colorado.edu>
3246 2003-01-14 Fernando Perez <fperez@colorado.edu>
3242
3247
3243 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3248 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3244 auto-calling to be a bit more conservative. Now it doesn't get
3249 auto-calling to be a bit more conservative. Now it doesn't get
3245 triggered if any of '!=()<>' are in the rest of the input line, to
3250 triggered if any of '!=()<>' are in the rest of the input line, to
3246 allow comparing callables. Thanks to Alex for the heads up.
3251 allow comparing callables. Thanks to Alex for the heads up.
3247
3252
3248 2003-01-07 Fernando Perez <fperez@colorado.edu>
3253 2003-01-07 Fernando Perez <fperez@colorado.edu>
3249
3254
3250 * IPython/genutils.py (page): fixed estimation of the number of
3255 * IPython/genutils.py (page): fixed estimation of the number of
3251 lines in a string to be paged to simply count newlines. This
3256 lines in a string to be paged to simply count newlines. This
3252 prevents over-guessing due to embedded escape sequences. A better
3257 prevents over-guessing due to embedded escape sequences. A better
3253 long-term solution would involve stripping out the control chars
3258 long-term solution would involve stripping out the control chars
3254 for the count, but it's potentially so expensive I just don't
3259 for the count, but it's potentially so expensive I just don't
3255 think it's worth doing.
3260 think it's worth doing.
3256
3261
3257 2002-12-19 *** Released version 0.2.14pre50
3262 2002-12-19 *** Released version 0.2.14pre50
3258
3263
3259 2002-12-19 Fernando Perez <fperez@colorado.edu>
3264 2002-12-19 Fernando Perez <fperez@colorado.edu>
3260
3265
3261 * tools/release (version): Changed release scripts to inform
3266 * tools/release (version): Changed release scripts to inform
3262 Andrea and build a NEWS file with a list of recent changes.
3267 Andrea and build a NEWS file with a list of recent changes.
3263
3268
3264 * IPython/ColorANSI.py (__all__): changed terminal detection
3269 * IPython/ColorANSI.py (__all__): changed terminal detection
3265 code. Seems to work better for xterms without breaking
3270 code. Seems to work better for xterms without breaking
3266 konsole. Will need more testing to determine if WinXP and Mac OSX
3271 konsole. Will need more testing to determine if WinXP and Mac OSX
3267 also work ok.
3272 also work ok.
3268
3273
3269 2002-12-18 *** Released version 0.2.14pre49
3274 2002-12-18 *** Released version 0.2.14pre49
3270
3275
3271 2002-12-18 Fernando Perez <fperez@colorado.edu>
3276 2002-12-18 Fernando Perez <fperez@colorado.edu>
3272
3277
3273 * Docs: added new info about Mac OSX, from Andrea.
3278 * Docs: added new info about Mac OSX, from Andrea.
3274
3279
3275 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3280 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3276 allow direct plotting of python strings whose format is the same
3281 allow direct plotting of python strings whose format is the same
3277 of gnuplot data files.
3282 of gnuplot data files.
3278
3283
3279 2002-12-16 Fernando Perez <fperez@colorado.edu>
3284 2002-12-16 Fernando Perez <fperez@colorado.edu>
3280
3285
3281 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3286 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3282 value of exit question to be acknowledged.
3287 value of exit question to be acknowledged.
3283
3288
3284 2002-12-03 Fernando Perez <fperez@colorado.edu>
3289 2002-12-03 Fernando Perez <fperez@colorado.edu>
3285
3290
3286 * IPython/ipmaker.py: removed generators, which had been added
3291 * IPython/ipmaker.py: removed generators, which had been added
3287 by mistake in an earlier debugging run. This was causing trouble
3292 by mistake in an earlier debugging run. This was causing trouble
3288 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3293 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3289 for pointing this out.
3294 for pointing this out.
3290
3295
3291 2002-11-17 Fernando Perez <fperez@colorado.edu>
3296 2002-11-17 Fernando Perez <fperez@colorado.edu>
3292
3297
3293 * Manual: updated the Gnuplot section.
3298 * Manual: updated the Gnuplot section.
3294
3299
3295 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3300 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3296 a much better split of what goes in Runtime and what goes in
3301 a much better split of what goes in Runtime and what goes in
3297 Interactive.
3302 Interactive.
3298
3303
3299 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3304 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3300 being imported from iplib.
3305 being imported from iplib.
3301
3306
3302 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3307 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3303 for command-passing. Now the global Gnuplot instance is called
3308 for command-passing. Now the global Gnuplot instance is called
3304 'gp' instead of 'g', which was really a far too fragile and
3309 'gp' instead of 'g', which was really a far too fragile and
3305 common name.
3310 common name.
3306
3311
3307 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3312 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3308 bounding boxes generated by Gnuplot for square plots.
3313 bounding boxes generated by Gnuplot for square plots.
3309
3314
3310 * IPython/genutils.py (popkey): new function added. I should
3315 * IPython/genutils.py (popkey): new function added. I should
3311 suggest this on c.l.py as a dict method, it seems useful.
3316 suggest this on c.l.py as a dict method, it seems useful.
3312
3317
3313 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3318 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3314 to transparently handle PostScript generation. MUCH better than
3319 to transparently handle PostScript generation. MUCH better than
3315 the previous plot_eps/replot_eps (which I removed now). The code
3320 the previous plot_eps/replot_eps (which I removed now). The code
3316 is also fairly clean and well documented now (including
3321 is also fairly clean and well documented now (including
3317 docstrings).
3322 docstrings).
3318
3323
3319 2002-11-13 Fernando Perez <fperez@colorado.edu>
3324 2002-11-13 Fernando Perez <fperez@colorado.edu>
3320
3325
3321 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3326 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3322 (inconsistent with options).
3327 (inconsistent with options).
3323
3328
3324 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3329 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3325 manually disabled, I don't know why. Fixed it.
3330 manually disabled, I don't know why. Fixed it.
3326 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3331 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3327 eps output.
3332 eps output.
3328
3333
3329 2002-11-12 Fernando Perez <fperez@colorado.edu>
3334 2002-11-12 Fernando Perez <fperez@colorado.edu>
3330
3335
3331 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3336 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3332 don't propagate up to caller. Fixes crash reported by François
3337 don't propagate up to caller. Fixes crash reported by François
3333 Pinard.
3338 Pinard.
3334
3339
3335 2002-11-09 Fernando Perez <fperez@colorado.edu>
3340 2002-11-09 Fernando Perez <fperez@colorado.edu>
3336
3341
3337 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3342 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3338 history file for new users.
3343 history file for new users.
3339 (make_IPython): fixed bug where initial install would leave the
3344 (make_IPython): fixed bug where initial install would leave the
3340 user running in the .ipython dir.
3345 user running in the .ipython dir.
3341 (make_IPython): fixed bug where config dir .ipython would be
3346 (make_IPython): fixed bug where config dir .ipython would be
3342 created regardless of the given -ipythondir option. Thanks to Cory
3347 created regardless of the given -ipythondir option. Thanks to Cory
3343 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3348 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3344
3349
3345 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3350 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3346 type confirmations. Will need to use it in all of IPython's code
3351 type confirmations. Will need to use it in all of IPython's code
3347 consistently.
3352 consistently.
3348
3353
3349 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3354 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3350 context to print 31 lines instead of the default 5. This will make
3355 context to print 31 lines instead of the default 5. This will make
3351 the crash reports extremely detailed in case the problem is in
3356 the crash reports extremely detailed in case the problem is in
3352 libraries I don't have access to.
3357 libraries I don't have access to.
3353
3358
3354 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3359 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3355 line of defense' code to still crash, but giving users fair
3360 line of defense' code to still crash, but giving users fair
3356 warning. I don't want internal errors to go unreported: if there's
3361 warning. I don't want internal errors to go unreported: if there's
3357 an internal problem, IPython should crash and generate a full
3362 an internal problem, IPython should crash and generate a full
3358 report.
3363 report.
3359
3364
3360 2002-11-08 Fernando Perez <fperez@colorado.edu>
3365 2002-11-08 Fernando Perez <fperez@colorado.edu>
3361
3366
3362 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3367 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3363 otherwise uncaught exceptions which can appear if people set
3368 otherwise uncaught exceptions which can appear if people set
3364 sys.stdout to something badly broken. Thanks to a crash report
3369 sys.stdout to something badly broken. Thanks to a crash report
3365 from henni-AT-mail.brainbot.com.
3370 from henni-AT-mail.brainbot.com.
3366
3371
3367 2002-11-04 Fernando Perez <fperez@colorado.edu>
3372 2002-11-04 Fernando Perez <fperez@colorado.edu>
3368
3373
3369 * IPython/iplib.py (InteractiveShell.interact): added
3374 * IPython/iplib.py (InteractiveShell.interact): added
3370 __IPYTHON__active to the builtins. It's a flag which goes on when
3375 __IPYTHON__active to the builtins. It's a flag which goes on when
3371 the interaction starts and goes off again when it stops. This
3376 the interaction starts and goes off again when it stops. This
3372 allows embedding code to detect being inside IPython. Before this
3377 allows embedding code to detect being inside IPython. Before this
3373 was done via __IPYTHON__, but that only shows that an IPython
3378 was done via __IPYTHON__, but that only shows that an IPython
3374 instance has been created.
3379 instance has been created.
3375
3380
3376 * IPython/Magic.py (Magic.magic_env): I realized that in a
3381 * IPython/Magic.py (Magic.magic_env): I realized that in a
3377 UserDict, instance.data holds the data as a normal dict. So I
3382 UserDict, instance.data holds the data as a normal dict. So I
3378 modified @env to return os.environ.data instead of rebuilding a
3383 modified @env to return os.environ.data instead of rebuilding a
3379 dict by hand.
3384 dict by hand.
3380
3385
3381 2002-11-02 Fernando Perez <fperez@colorado.edu>
3386 2002-11-02 Fernando Perez <fperez@colorado.edu>
3382
3387
3383 * IPython/genutils.py (warn): changed so that level 1 prints no
3388 * IPython/genutils.py (warn): changed so that level 1 prints no
3384 header. Level 2 is now the default (with 'WARNING' header, as
3389 header. Level 2 is now the default (with 'WARNING' header, as
3385 before). I think I tracked all places where changes were needed in
3390 before). I think I tracked all places where changes were needed in
3386 IPython, but outside code using the old level numbering may have
3391 IPython, but outside code using the old level numbering may have
3387 broken.
3392 broken.
3388
3393
3389 * IPython/iplib.py (InteractiveShell.runcode): added this to
3394 * IPython/iplib.py (InteractiveShell.runcode): added this to
3390 handle the tracebacks in SystemExit traps correctly. The previous
3395 handle the tracebacks in SystemExit traps correctly. The previous
3391 code (through interact) was printing more of the stack than
3396 code (through interact) was printing more of the stack than
3392 necessary, showing IPython internal code to the user.
3397 necessary, showing IPython internal code to the user.
3393
3398
3394 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3399 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3395 default. Now that the default at the confirmation prompt is yes,
3400 default. Now that the default at the confirmation prompt is yes,
3396 it's not so intrusive. François' argument that ipython sessions
3401 it's not so intrusive. François' argument that ipython sessions
3397 tend to be complex enough not to lose them from an accidental C-d,
3402 tend to be complex enough not to lose them from an accidental C-d,
3398 is a valid one.
3403 is a valid one.
3399
3404
3400 * IPython/iplib.py (InteractiveShell.interact): added a
3405 * IPython/iplib.py (InteractiveShell.interact): added a
3401 showtraceback() call to the SystemExit trap, and modified the exit
3406 showtraceback() call to the SystemExit trap, and modified the exit
3402 confirmation to have yes as the default.
3407 confirmation to have yes as the default.
3403
3408
3404 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3409 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3405 this file. It's been gone from the code for a long time, this was
3410 this file. It's been gone from the code for a long time, this was
3406 simply leftover junk.
3411 simply leftover junk.
3407
3412
3408 2002-11-01 Fernando Perez <fperez@colorado.edu>
3413 2002-11-01 Fernando Perez <fperez@colorado.edu>
3409
3414
3410 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3415 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3411 added. If set, IPython now traps EOF and asks for
3416 added. If set, IPython now traps EOF and asks for
3412 confirmation. After a request by François Pinard.
3417 confirmation. After a request by François Pinard.
3413
3418
3414 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3419 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3415 of @abort, and with a new (better) mechanism for handling the
3420 of @abort, and with a new (better) mechanism for handling the
3416 exceptions.
3421 exceptions.
3417
3422
3418 2002-10-27 Fernando Perez <fperez@colorado.edu>
3423 2002-10-27 Fernando Perez <fperez@colorado.edu>
3419
3424
3420 * IPython/usage.py (__doc__): updated the --help information and
3425 * IPython/usage.py (__doc__): updated the --help information and
3421 the ipythonrc file to indicate that -log generates
3426 the ipythonrc file to indicate that -log generates
3422 ./ipython.log. Also fixed the corresponding info in @logstart.
3427 ./ipython.log. Also fixed the corresponding info in @logstart.
3423 This and several other fixes in the manuals thanks to reports by
3428 This and several other fixes in the manuals thanks to reports by
3424 François Pinard <pinard-AT-iro.umontreal.ca>.
3429 François Pinard <pinard-AT-iro.umontreal.ca>.
3425
3430
3426 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3431 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3427 refer to @logstart (instead of @log, which doesn't exist).
3432 refer to @logstart (instead of @log, which doesn't exist).
3428
3433
3429 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3434 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3430 AttributeError crash. Thanks to Christopher Armstrong
3435 AttributeError crash. Thanks to Christopher Armstrong
3431 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3436 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3432 introduced recently (in 0.2.14pre37) with the fix to the eval
3437 introduced recently (in 0.2.14pre37) with the fix to the eval
3433 problem mentioned below.
3438 problem mentioned below.
3434
3439
3435 2002-10-17 Fernando Perez <fperez@colorado.edu>
3440 2002-10-17 Fernando Perez <fperez@colorado.edu>
3436
3441
3437 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3442 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3438 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3443 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3439
3444
3440 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3445 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3441 this function to fix a problem reported by Alex Schmolck. He saw
3446 this function to fix a problem reported by Alex Schmolck. He saw
3442 it with list comprehensions and generators, which were getting
3447 it with list comprehensions and generators, which were getting
3443 called twice. The real problem was an 'eval' call in testing for
3448 called twice. The real problem was an 'eval' call in testing for
3444 automagic which was evaluating the input line silently.
3449 automagic which was evaluating the input line silently.
3445
3450
3446 This is a potentially very nasty bug, if the input has side
3451 This is a potentially very nasty bug, if the input has side
3447 effects which must not be repeated. The code is much cleaner now,
3452 effects which must not be repeated. The code is much cleaner now,
3448 without any blanket 'except' left and with a regexp test for
3453 without any blanket 'except' left and with a regexp test for
3449 actual function names.
3454 actual function names.
3450
3455
3451 But an eval remains, which I'm not fully comfortable with. I just
3456 But an eval remains, which I'm not fully comfortable with. I just
3452 don't know how to find out if an expression could be a callable in
3457 don't know how to find out if an expression could be a callable in
3453 the user's namespace without doing an eval on the string. However
3458 the user's namespace without doing an eval on the string. However
3454 that string is now much more strictly checked so that no code
3459 that string is now much more strictly checked so that no code
3455 slips by, so the eval should only happen for things that can
3460 slips by, so the eval should only happen for things that can
3456 really be only function/method names.
3461 really be only function/method names.
3457
3462
3458 2002-10-15 Fernando Perez <fperez@colorado.edu>
3463 2002-10-15 Fernando Perez <fperez@colorado.edu>
3459
3464
3460 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3465 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3461 OSX information to main manual, removed README_Mac_OSX file from
3466 OSX information to main manual, removed README_Mac_OSX file from
3462 distribution. Also updated credits for recent additions.
3467 distribution. Also updated credits for recent additions.
3463
3468
3464 2002-10-10 Fernando Perez <fperez@colorado.edu>
3469 2002-10-10 Fernando Perez <fperez@colorado.edu>
3465
3470
3466 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3471 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3467 terminal-related issues. Many thanks to Andrea Riciputi
3472 terminal-related issues. Many thanks to Andrea Riciputi
3468 <andrea.riciputi-AT-libero.it> for writing it.
3473 <andrea.riciputi-AT-libero.it> for writing it.
3469
3474
3470 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3475 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3471 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3476 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3472
3477
3473 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3478 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3474 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3479 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3475 <syver-en-AT-online.no> who both submitted patches for this problem.
3480 <syver-en-AT-online.no> who both submitted patches for this problem.
3476
3481
3477 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3482 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3478 global embedding to make sure that things don't overwrite user
3483 global embedding to make sure that things don't overwrite user
3479 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3484 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3480
3485
3481 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3486 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3482 compatibility. Thanks to Hayden Callow
3487 compatibility. Thanks to Hayden Callow
3483 <h.callow-AT-elec.canterbury.ac.nz>
3488 <h.callow-AT-elec.canterbury.ac.nz>
3484
3489
3485 2002-10-04 Fernando Perez <fperez@colorado.edu>
3490 2002-10-04 Fernando Perez <fperez@colorado.edu>
3486
3491
3487 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3492 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3488 Gnuplot.File objects.
3493 Gnuplot.File objects.
3489
3494
3490 2002-07-23 Fernando Perez <fperez@colorado.edu>
3495 2002-07-23 Fernando Perez <fperez@colorado.edu>
3491
3496
3492 * IPython/genutils.py (timing): Added timings() and timing() for
3497 * IPython/genutils.py (timing): Added timings() and timing() for
3493 quick access to the most commonly needed data, the execution
3498 quick access to the most commonly needed data, the execution
3494 times. Old timing() renamed to timings_out().
3499 times. Old timing() renamed to timings_out().
3495
3500
3496 2002-07-18 Fernando Perez <fperez@colorado.edu>
3501 2002-07-18 Fernando Perez <fperez@colorado.edu>
3497
3502
3498 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3503 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3499 bug with nested instances disrupting the parent's tab completion.
3504 bug with nested instances disrupting the parent's tab completion.
3500
3505
3501 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3506 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3502 all_completions code to begin the emacs integration.
3507 all_completions code to begin the emacs integration.
3503
3508
3504 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3509 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3505 argument to allow titling individual arrays when plotting.
3510 argument to allow titling individual arrays when plotting.
3506
3511
3507 2002-07-15 Fernando Perez <fperez@colorado.edu>
3512 2002-07-15 Fernando Perez <fperez@colorado.edu>
3508
3513
3509 * setup.py (make_shortcut): changed to retrieve the value of
3514 * setup.py (make_shortcut): changed to retrieve the value of
3510 'Program Files' directory from the registry (this value changes in
3515 'Program Files' directory from the registry (this value changes in
3511 non-english versions of Windows). Thanks to Thomas Fanslau
3516 non-english versions of Windows). Thanks to Thomas Fanslau
3512 <tfanslau-AT-gmx.de> for the report.
3517 <tfanslau-AT-gmx.de> for the report.
3513
3518
3514 2002-07-10 Fernando Perez <fperez@colorado.edu>
3519 2002-07-10 Fernando Perez <fperez@colorado.edu>
3515
3520
3516 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3521 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3517 a bug in pdb, which crashes if a line with only whitespace is
3522 a bug in pdb, which crashes if a line with only whitespace is
3518 entered. Bug report submitted to sourceforge.
3523 entered. Bug report submitted to sourceforge.
3519
3524
3520 2002-07-09 Fernando Perez <fperez@colorado.edu>
3525 2002-07-09 Fernando Perez <fperez@colorado.edu>
3521
3526
3522 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3527 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3523 reporting exceptions (it's a bug in inspect.py, I just set a
3528 reporting exceptions (it's a bug in inspect.py, I just set a
3524 workaround).
3529 workaround).
3525
3530
3526 2002-07-08 Fernando Perez <fperez@colorado.edu>
3531 2002-07-08 Fernando Perez <fperez@colorado.edu>
3527
3532
3528 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3533 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3529 __IPYTHON__ in __builtins__ to show up in user_ns.
3534 __IPYTHON__ in __builtins__ to show up in user_ns.
3530
3535
3531 2002-07-03 Fernando Perez <fperez@colorado.edu>
3536 2002-07-03 Fernando Perez <fperez@colorado.edu>
3532
3537
3533 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3538 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3534 name from @gp_set_instance to @gp_set_default.
3539 name from @gp_set_instance to @gp_set_default.
3535
3540
3536 * IPython/ipmaker.py (make_IPython): default editor value set to
3541 * IPython/ipmaker.py (make_IPython): default editor value set to
3537 '0' (a string), to match the rc file. Otherwise will crash when
3542 '0' (a string), to match the rc file. Otherwise will crash when
3538 .strip() is called on it.
3543 .strip() is called on it.
3539
3544
3540
3545
3541 2002-06-28 Fernando Perez <fperez@colorado.edu>
3546 2002-06-28 Fernando Perez <fperez@colorado.edu>
3542
3547
3543 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3548 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3544 of files in current directory when a file is executed via
3549 of files in current directory when a file is executed via
3545 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3550 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3546
3551
3547 * setup.py (manfiles): fix for rpm builds, submitted by RA
3552 * setup.py (manfiles): fix for rpm builds, submitted by RA
3548 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3553 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3549
3554
3550 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3555 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3551 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3556 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3552 string!). A. Schmolck caught this one.
3557 string!). A. Schmolck caught this one.
3553
3558
3554 2002-06-27 Fernando Perez <fperez@colorado.edu>
3559 2002-06-27 Fernando Perez <fperez@colorado.edu>
3555
3560
3556 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3561 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3557 defined files at the cmd line. __name__ wasn't being set to
3562 defined files at the cmd line. __name__ wasn't being set to
3558 __main__.
3563 __main__.
3559
3564
3560 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3565 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3561 regular lists and tuples besides Numeric arrays.
3566 regular lists and tuples besides Numeric arrays.
3562
3567
3563 * IPython/Prompts.py (CachedOutput.__call__): Added output
3568 * IPython/Prompts.py (CachedOutput.__call__): Added output
3564 supression for input ending with ';'. Similar to Mathematica and
3569 supression for input ending with ';'. Similar to Mathematica and
3565 Matlab. The _* vars and Out[] list are still updated, just like
3570 Matlab. The _* vars and Out[] list are still updated, just like
3566 Mathematica behaves.
3571 Mathematica behaves.
3567
3572
3568 2002-06-25 Fernando Perez <fperez@colorado.edu>
3573 2002-06-25 Fernando Perez <fperez@colorado.edu>
3569
3574
3570 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3575 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3571 .ini extensions for profiels under Windows.
3576 .ini extensions for profiels under Windows.
3572
3577
3573 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3578 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3574 string form. Fix contributed by Alexander Schmolck
3579 string form. Fix contributed by Alexander Schmolck
3575 <a.schmolck-AT-gmx.net>
3580 <a.schmolck-AT-gmx.net>
3576
3581
3577 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3582 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3578 pre-configured Gnuplot instance.
3583 pre-configured Gnuplot instance.
3579
3584
3580 2002-06-21 Fernando Perez <fperez@colorado.edu>
3585 2002-06-21 Fernando Perez <fperez@colorado.edu>
3581
3586
3582 * IPython/numutils.py (exp_safe): new function, works around the
3587 * IPython/numutils.py (exp_safe): new function, works around the
3583 underflow problems in Numeric.
3588 underflow problems in Numeric.
3584 (log2): New fn. Safe log in base 2: returns exact integer answer
3589 (log2): New fn. Safe log in base 2: returns exact integer answer
3585 for exact integer powers of 2.
3590 for exact integer powers of 2.
3586
3591
3587 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3592 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3588 properly.
3593 properly.
3589
3594
3590 2002-06-20 Fernando Perez <fperez@colorado.edu>
3595 2002-06-20 Fernando Perez <fperez@colorado.edu>
3591
3596
3592 * IPython/genutils.py (timing): new function like
3597 * IPython/genutils.py (timing): new function like
3593 Mathematica's. Similar to time_test, but returns more info.
3598 Mathematica's. Similar to time_test, but returns more info.
3594
3599
3595 2002-06-18 Fernando Perez <fperez@colorado.edu>
3600 2002-06-18 Fernando Perez <fperez@colorado.edu>
3596
3601
3597 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3602 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3598 according to Mike Heeter's suggestions.
3603 according to Mike Heeter's suggestions.
3599
3604
3600 2002-06-16 Fernando Perez <fperez@colorado.edu>
3605 2002-06-16 Fernando Perez <fperez@colorado.edu>
3601
3606
3602 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3607 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3603 system. GnuplotMagic is gone as a user-directory option. New files
3608 system. GnuplotMagic is gone as a user-directory option. New files
3604 make it easier to use all the gnuplot stuff both from external
3609 make it easier to use all the gnuplot stuff both from external
3605 programs as well as from IPython. Had to rewrite part of
3610 programs as well as from IPython. Had to rewrite part of
3606 hardcopy() b/c of a strange bug: often the ps files simply don't
3611 hardcopy() b/c of a strange bug: often the ps files simply don't
3607 get created, and require a repeat of the command (often several
3612 get created, and require a repeat of the command (often several
3608 times).
3613 times).
3609
3614
3610 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3615 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3611 resolve output channel at call time, so that if sys.stderr has
3616 resolve output channel at call time, so that if sys.stderr has
3612 been redirected by user this gets honored.
3617 been redirected by user this gets honored.
3613
3618
3614 2002-06-13 Fernando Perez <fperez@colorado.edu>
3619 2002-06-13 Fernando Perez <fperez@colorado.edu>
3615
3620
3616 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3621 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3617 IPShell. Kept a copy with the old names to avoid breaking people's
3622 IPShell. Kept a copy with the old names to avoid breaking people's
3618 embedded code.
3623 embedded code.
3619
3624
3620 * IPython/ipython: simplified it to the bare minimum after
3625 * IPython/ipython: simplified it to the bare minimum after
3621 Holger's suggestions. Added info about how to use it in
3626 Holger's suggestions. Added info about how to use it in
3622 PYTHONSTARTUP.
3627 PYTHONSTARTUP.
3623
3628
3624 * IPython/Shell.py (IPythonShell): changed the options passing
3629 * IPython/Shell.py (IPythonShell): changed the options passing
3625 from a string with funky %s replacements to a straight list. Maybe
3630 from a string with funky %s replacements to a straight list. Maybe
3626 a bit more typing, but it follows sys.argv conventions, so there's
3631 a bit more typing, but it follows sys.argv conventions, so there's
3627 less special-casing to remember.
3632 less special-casing to remember.
3628
3633
3629 2002-06-12 Fernando Perez <fperez@colorado.edu>
3634 2002-06-12 Fernando Perez <fperez@colorado.edu>
3630
3635
3631 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3636 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3632 command. Thanks to a suggestion by Mike Heeter.
3637 command. Thanks to a suggestion by Mike Heeter.
3633 (Magic.magic_pfile): added behavior to look at filenames if given
3638 (Magic.magic_pfile): added behavior to look at filenames if given
3634 arg is not a defined object.
3639 arg is not a defined object.
3635 (Magic.magic_save): New @save function to save code snippets. Also
3640 (Magic.magic_save): New @save function to save code snippets. Also
3636 a Mike Heeter idea.
3641 a Mike Heeter idea.
3637
3642
3638 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3643 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3639 plot() and replot(). Much more convenient now, especially for
3644 plot() and replot(). Much more convenient now, especially for
3640 interactive use.
3645 interactive use.
3641
3646
3642 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3647 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3643 filenames.
3648 filenames.
3644
3649
3645 2002-06-02 Fernando Perez <fperez@colorado.edu>
3650 2002-06-02 Fernando Perez <fperez@colorado.edu>
3646
3651
3647 * IPython/Struct.py (Struct.__init__): modified to admit
3652 * IPython/Struct.py (Struct.__init__): modified to admit
3648 initialization via another struct.
3653 initialization via another struct.
3649
3654
3650 * IPython/genutils.py (SystemExec.__init__): New stateful
3655 * IPython/genutils.py (SystemExec.__init__): New stateful
3651 interface to xsys and bq. Useful for writing system scripts.
3656 interface to xsys and bq. Useful for writing system scripts.
3652
3657
3653 2002-05-30 Fernando Perez <fperez@colorado.edu>
3658 2002-05-30 Fernando Perez <fperez@colorado.edu>
3654
3659
3655 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3660 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3656 documents. This will make the user download smaller (it's getting
3661 documents. This will make the user download smaller (it's getting
3657 too big).
3662 too big).
3658
3663
3659 2002-05-29 Fernando Perez <fperez@colorado.edu>
3664 2002-05-29 Fernando Perez <fperez@colorado.edu>
3660
3665
3661 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3666 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3662 fix problems with shelve and pickle. Seems to work, but I don't
3667 fix problems with shelve and pickle. Seems to work, but I don't
3663 know if corner cases break it. Thanks to Mike Heeter
3668 know if corner cases break it. Thanks to Mike Heeter
3664 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3669 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3665
3670
3666 2002-05-24 Fernando Perez <fperez@colorado.edu>
3671 2002-05-24 Fernando Perez <fperez@colorado.edu>
3667
3672
3668 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3673 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3669 macros having broken.
3674 macros having broken.
3670
3675
3671 2002-05-21 Fernando Perez <fperez@colorado.edu>
3676 2002-05-21 Fernando Perez <fperez@colorado.edu>
3672
3677
3673 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3678 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3674 introduced logging bug: all history before logging started was
3679 introduced logging bug: all history before logging started was
3675 being written one character per line! This came from the redesign
3680 being written one character per line! This came from the redesign
3676 of the input history as a special list which slices to strings,
3681 of the input history as a special list which slices to strings,
3677 not to lists.
3682 not to lists.
3678
3683
3679 2002-05-20 Fernando Perez <fperez@colorado.edu>
3684 2002-05-20 Fernando Perez <fperez@colorado.edu>
3680
3685
3681 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3686 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3682 be an attribute of all classes in this module. The design of these
3687 be an attribute of all classes in this module. The design of these
3683 classes needs some serious overhauling.
3688 classes needs some serious overhauling.
3684
3689
3685 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3690 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3686 which was ignoring '_' in option names.
3691 which was ignoring '_' in option names.
3687
3692
3688 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3693 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3689 'Verbose_novars' to 'Context' and made it the new default. It's a
3694 'Verbose_novars' to 'Context' and made it the new default. It's a
3690 bit more readable and also safer than verbose.
3695 bit more readable and also safer than verbose.
3691
3696
3692 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3697 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3693 triple-quoted strings.
3698 triple-quoted strings.
3694
3699
3695 * IPython/OInspect.py (__all__): new module exposing the object
3700 * IPython/OInspect.py (__all__): new module exposing the object
3696 introspection facilities. Now the corresponding magics are dummy
3701 introspection facilities. Now the corresponding magics are dummy
3697 wrappers around this. Having this module will make it much easier
3702 wrappers around this. Having this module will make it much easier
3698 to put these functions into our modified pdb.
3703 to put these functions into our modified pdb.
3699 This new object inspector system uses the new colorizing module,
3704 This new object inspector system uses the new colorizing module,
3700 so source code and other things are nicely syntax highlighted.
3705 so source code and other things are nicely syntax highlighted.
3701
3706
3702 2002-05-18 Fernando Perez <fperez@colorado.edu>
3707 2002-05-18 Fernando Perez <fperez@colorado.edu>
3703
3708
3704 * IPython/ColorANSI.py: Split the coloring tools into a separate
3709 * IPython/ColorANSI.py: Split the coloring tools into a separate
3705 module so I can use them in other code easier (they were part of
3710 module so I can use them in other code easier (they were part of
3706 ultraTB).
3711 ultraTB).
3707
3712
3708 2002-05-17 Fernando Perez <fperez@colorado.edu>
3713 2002-05-17 Fernando Perez <fperez@colorado.edu>
3709
3714
3710 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3715 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3711 fixed it to set the global 'g' also to the called instance, as
3716 fixed it to set the global 'g' also to the called instance, as
3712 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3717 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3713 user's 'g' variables).
3718 user's 'g' variables).
3714
3719
3715 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3720 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3716 global variables (aliases to _ih,_oh) so that users which expect
3721 global variables (aliases to _ih,_oh) so that users which expect
3717 In[5] or Out[7] to work aren't unpleasantly surprised.
3722 In[5] or Out[7] to work aren't unpleasantly surprised.
3718 (InputList.__getslice__): new class to allow executing slices of
3723 (InputList.__getslice__): new class to allow executing slices of
3719 input history directly. Very simple class, complements the use of
3724 input history directly. Very simple class, complements the use of
3720 macros.
3725 macros.
3721
3726
3722 2002-05-16 Fernando Perez <fperez@colorado.edu>
3727 2002-05-16 Fernando Perez <fperez@colorado.edu>
3723
3728
3724 * setup.py (docdirbase): make doc directory be just doc/IPython
3729 * setup.py (docdirbase): make doc directory be just doc/IPython
3725 without version numbers, it will reduce clutter for users.
3730 without version numbers, it will reduce clutter for users.
3726
3731
3727 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3732 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3728 execfile call to prevent possible memory leak. See for details:
3733 execfile call to prevent possible memory leak. See for details:
3729 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3734 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3730
3735
3731 2002-05-15 Fernando Perez <fperez@colorado.edu>
3736 2002-05-15 Fernando Perez <fperez@colorado.edu>
3732
3737
3733 * IPython/Magic.py (Magic.magic_psource): made the object
3738 * IPython/Magic.py (Magic.magic_psource): made the object
3734 introspection names be more standard: pdoc, pdef, pfile and
3739 introspection names be more standard: pdoc, pdef, pfile and
3735 psource. They all print/page their output, and it makes
3740 psource. They all print/page their output, and it makes
3736 remembering them easier. Kept old names for compatibility as
3741 remembering them easier. Kept old names for compatibility as
3737 aliases.
3742 aliases.
3738
3743
3739 2002-05-14 Fernando Perez <fperez@colorado.edu>
3744 2002-05-14 Fernando Perez <fperez@colorado.edu>
3740
3745
3741 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3746 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3742 what the mouse problem was. The trick is to use gnuplot with temp
3747 what the mouse problem was. The trick is to use gnuplot with temp
3743 files and NOT with pipes (for data communication), because having
3748 files and NOT with pipes (for data communication), because having
3744 both pipes and the mouse on is bad news.
3749 both pipes and the mouse on is bad news.
3745
3750
3746 2002-05-13 Fernando Perez <fperez@colorado.edu>
3751 2002-05-13 Fernando Perez <fperez@colorado.edu>
3747
3752
3748 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3753 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3749 bug. Information would be reported about builtins even when
3754 bug. Information would be reported about builtins even when
3750 user-defined functions overrode them.
3755 user-defined functions overrode them.
3751
3756
3752 2002-05-11 Fernando Perez <fperez@colorado.edu>
3757 2002-05-11 Fernando Perez <fperez@colorado.edu>
3753
3758
3754 * IPython/__init__.py (__all__): removed FlexCompleter from
3759 * IPython/__init__.py (__all__): removed FlexCompleter from
3755 __all__ so that things don't fail in platforms without readline.
3760 __all__ so that things don't fail in platforms without readline.
3756
3761
3757 2002-05-10 Fernando Perez <fperez@colorado.edu>
3762 2002-05-10 Fernando Perez <fperez@colorado.edu>
3758
3763
3759 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3764 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3760 it requires Numeric, effectively making Numeric a dependency for
3765 it requires Numeric, effectively making Numeric a dependency for
3761 IPython.
3766 IPython.
3762
3767
3763 * Released 0.2.13
3768 * Released 0.2.13
3764
3769
3765 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3770 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3766 profiler interface. Now all the major options from the profiler
3771 profiler interface. Now all the major options from the profiler
3767 module are directly supported in IPython, both for single
3772 module are directly supported in IPython, both for single
3768 expressions (@prun) and for full programs (@run -p).
3773 expressions (@prun) and for full programs (@run -p).
3769
3774
3770 2002-05-09 Fernando Perez <fperez@colorado.edu>
3775 2002-05-09 Fernando Perez <fperez@colorado.edu>
3771
3776
3772 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3777 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3773 magic properly formatted for screen.
3778 magic properly formatted for screen.
3774
3779
3775 * setup.py (make_shortcut): Changed things to put pdf version in
3780 * setup.py (make_shortcut): Changed things to put pdf version in
3776 doc/ instead of doc/manual (had to change lyxport a bit).
3781 doc/ instead of doc/manual (had to change lyxport a bit).
3777
3782
3778 * IPython/Magic.py (Profile.string_stats): made profile runs go
3783 * IPython/Magic.py (Profile.string_stats): made profile runs go
3779 through pager (they are long and a pager allows searching, saving,
3784 through pager (they are long and a pager allows searching, saving,
3780 etc.)
3785 etc.)
3781
3786
3782 2002-05-08 Fernando Perez <fperez@colorado.edu>
3787 2002-05-08 Fernando Perez <fperez@colorado.edu>
3783
3788
3784 * Released 0.2.12
3789 * Released 0.2.12
3785
3790
3786 2002-05-06 Fernando Perez <fperez@colorado.edu>
3791 2002-05-06 Fernando Perez <fperez@colorado.edu>
3787
3792
3788 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3793 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3789 introduced); 'hist n1 n2' was broken.
3794 introduced); 'hist n1 n2' was broken.
3790 (Magic.magic_pdb): added optional on/off arguments to @pdb
3795 (Magic.magic_pdb): added optional on/off arguments to @pdb
3791 (Magic.magic_run): added option -i to @run, which executes code in
3796 (Magic.magic_run): added option -i to @run, which executes code in
3792 the IPython namespace instead of a clean one. Also added @irun as
3797 the IPython namespace instead of a clean one. Also added @irun as
3793 an alias to @run -i.
3798 an alias to @run -i.
3794
3799
3795 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3800 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3796 fixed (it didn't really do anything, the namespaces were wrong).
3801 fixed (it didn't really do anything, the namespaces were wrong).
3797
3802
3798 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3803 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3799
3804
3800 * IPython/__init__.py (__all__): Fixed package namespace, now
3805 * IPython/__init__.py (__all__): Fixed package namespace, now
3801 'import IPython' does give access to IPython.<all> as
3806 'import IPython' does give access to IPython.<all> as
3802 expected. Also renamed __release__ to Release.
3807 expected. Also renamed __release__ to Release.
3803
3808
3804 * IPython/Debugger.py (__license__): created new Pdb class which
3809 * IPython/Debugger.py (__license__): created new Pdb class which
3805 functions like a drop-in for the normal pdb.Pdb but does NOT
3810 functions like a drop-in for the normal pdb.Pdb but does NOT
3806 import readline by default. This way it doesn't muck up IPython's
3811 import readline by default. This way it doesn't muck up IPython's
3807 readline handling, and now tab-completion finally works in the
3812 readline handling, and now tab-completion finally works in the
3808 debugger -- sort of. It completes things globally visible, but the
3813 debugger -- sort of. It completes things globally visible, but the
3809 completer doesn't track the stack as pdb walks it. That's a bit
3814 completer doesn't track the stack as pdb walks it. That's a bit
3810 tricky, and I'll have to implement it later.
3815 tricky, and I'll have to implement it later.
3811
3816
3812 2002-05-05 Fernando Perez <fperez@colorado.edu>
3817 2002-05-05 Fernando Perez <fperez@colorado.edu>
3813
3818
3814 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3819 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3815 magic docstrings when printed via ? (explicit \'s were being
3820 magic docstrings when printed via ? (explicit \'s were being
3816 printed).
3821 printed).
3817
3822
3818 * IPython/ipmaker.py (make_IPython): fixed namespace
3823 * IPython/ipmaker.py (make_IPython): fixed namespace
3819 identification bug. Now variables loaded via logs or command-line
3824 identification bug. Now variables loaded via logs or command-line
3820 files are recognized in the interactive namespace by @who.
3825 files are recognized in the interactive namespace by @who.
3821
3826
3822 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3827 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3823 log replay system stemming from the string form of Structs.
3828 log replay system stemming from the string form of Structs.
3824
3829
3825 * IPython/Magic.py (Macro.__init__): improved macros to properly
3830 * IPython/Magic.py (Macro.__init__): improved macros to properly
3826 handle magic commands in them.
3831 handle magic commands in them.
3827 (Magic.magic_logstart): usernames are now expanded so 'logstart
3832 (Magic.magic_logstart): usernames are now expanded so 'logstart
3828 ~/mylog' now works.
3833 ~/mylog' now works.
3829
3834
3830 * IPython/iplib.py (complete): fixed bug where paths starting with
3835 * IPython/iplib.py (complete): fixed bug where paths starting with
3831 '/' would be completed as magic names.
3836 '/' would be completed as magic names.
3832
3837
3833 2002-05-04 Fernando Perez <fperez@colorado.edu>
3838 2002-05-04 Fernando Perez <fperez@colorado.edu>
3834
3839
3835 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
3840 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
3836 allow running full programs under the profiler's control.
3841 allow running full programs under the profiler's control.
3837
3842
3838 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
3843 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
3839 mode to report exceptions verbosely but without formatting
3844 mode to report exceptions verbosely but without formatting
3840 variables. This addresses the issue of ipython 'freezing' (it's
3845 variables. This addresses the issue of ipython 'freezing' (it's
3841 not frozen, but caught in an expensive formatting loop) when huge
3846 not frozen, but caught in an expensive formatting loop) when huge
3842 variables are in the context of an exception.
3847 variables are in the context of an exception.
3843 (VerboseTB.text): Added '--->' markers at line where exception was
3848 (VerboseTB.text): Added '--->' markers at line where exception was
3844 triggered. Much clearer to read, especially in NoColor modes.
3849 triggered. Much clearer to read, especially in NoColor modes.
3845
3850
3846 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
3851 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
3847 implemented in reverse when changing to the new parse_options().
3852 implemented in reverse when changing to the new parse_options().
3848
3853
3849 2002-05-03 Fernando Perez <fperez@colorado.edu>
3854 2002-05-03 Fernando Perez <fperez@colorado.edu>
3850
3855
3851 * IPython/Magic.py (Magic.parse_options): new function so that
3856 * IPython/Magic.py (Magic.parse_options): new function so that
3852 magics can parse options easier.
3857 magics can parse options easier.
3853 (Magic.magic_prun): new function similar to profile.run(),
3858 (Magic.magic_prun): new function similar to profile.run(),
3854 suggested by Chris Hart.
3859 suggested by Chris Hart.
3855 (Magic.magic_cd): fixed behavior so that it only changes if
3860 (Magic.magic_cd): fixed behavior so that it only changes if
3856 directory actually is in history.
3861 directory actually is in history.
3857
3862
3858 * IPython/usage.py (__doc__): added information about potential
3863 * IPython/usage.py (__doc__): added information about potential
3859 slowness of Verbose exception mode when there are huge data
3864 slowness of Verbose exception mode when there are huge data
3860 structures to be formatted (thanks to Archie Paulson).
3865 structures to be formatted (thanks to Archie Paulson).
3861
3866
3862 * IPython/ipmaker.py (make_IPython): Changed default logging
3867 * IPython/ipmaker.py (make_IPython): Changed default logging
3863 (when simply called with -log) to use curr_dir/ipython.log in
3868 (when simply called with -log) to use curr_dir/ipython.log in
3864 rotate mode. Fixed crash which was occuring with -log before
3869 rotate mode. Fixed crash which was occuring with -log before
3865 (thanks to Jim Boyle).
3870 (thanks to Jim Boyle).
3866
3871
3867 2002-05-01 Fernando Perez <fperez@colorado.edu>
3872 2002-05-01 Fernando Perez <fperez@colorado.edu>
3868
3873
3869 * Released 0.2.11 for these fixes (mainly the ultraTB one which
3874 * Released 0.2.11 for these fixes (mainly the ultraTB one which
3870 was nasty -- though somewhat of a corner case).
3875 was nasty -- though somewhat of a corner case).
3871
3876
3872 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
3877 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
3873 text (was a bug).
3878 text (was a bug).
3874
3879
3875 2002-04-30 Fernando Perez <fperez@colorado.edu>
3880 2002-04-30 Fernando Perez <fperez@colorado.edu>
3876
3881
3877 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
3882 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
3878 a print after ^D or ^C from the user so that the In[] prompt
3883 a print after ^D or ^C from the user so that the In[] prompt
3879 doesn't over-run the gnuplot one.
3884 doesn't over-run the gnuplot one.
3880
3885
3881 2002-04-29 Fernando Perez <fperez@colorado.edu>
3886 2002-04-29 Fernando Perez <fperez@colorado.edu>
3882
3887
3883 * Released 0.2.10
3888 * Released 0.2.10
3884
3889
3885 * IPython/__release__.py (version): get date dynamically.
3890 * IPython/__release__.py (version): get date dynamically.
3886
3891
3887 * Misc. documentation updates thanks to Arnd's comments. Also ran
3892 * Misc. documentation updates thanks to Arnd's comments. Also ran
3888 a full spellcheck on the manual (hadn't been done in a while).
3893 a full spellcheck on the manual (hadn't been done in a while).
3889
3894
3890 2002-04-27 Fernando Perez <fperez@colorado.edu>
3895 2002-04-27 Fernando Perez <fperez@colorado.edu>
3891
3896
3892 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
3897 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
3893 starting a log in mid-session would reset the input history list.
3898 starting a log in mid-session would reset the input history list.
3894
3899
3895 2002-04-26 Fernando Perez <fperez@colorado.edu>
3900 2002-04-26 Fernando Perez <fperez@colorado.edu>
3896
3901
3897 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
3902 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
3898 all files were being included in an update. Now anything in
3903 all files were being included in an update. Now anything in
3899 UserConfig that matches [A-Za-z]*.py will go (this excludes
3904 UserConfig that matches [A-Za-z]*.py will go (this excludes
3900 __init__.py)
3905 __init__.py)
3901
3906
3902 2002-04-25 Fernando Perez <fperez@colorado.edu>
3907 2002-04-25 Fernando Perez <fperez@colorado.edu>
3903
3908
3904 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
3909 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
3905 to __builtins__ so that any form of embedded or imported code can
3910 to __builtins__ so that any form of embedded or imported code can
3906 test for being inside IPython.
3911 test for being inside IPython.
3907
3912
3908 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
3913 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
3909 changed to GnuplotMagic because it's now an importable module,
3914 changed to GnuplotMagic because it's now an importable module,
3910 this makes the name follow that of the standard Gnuplot module.
3915 this makes the name follow that of the standard Gnuplot module.
3911 GnuplotMagic can now be loaded at any time in mid-session.
3916 GnuplotMagic can now be loaded at any time in mid-session.
3912
3917
3913 2002-04-24 Fernando Perez <fperez@colorado.edu>
3918 2002-04-24 Fernando Perez <fperez@colorado.edu>
3914
3919
3915 * IPython/numutils.py: removed SIUnits. It doesn't properly set
3920 * IPython/numutils.py: removed SIUnits. It doesn't properly set
3916 the globals (IPython has its own namespace) and the
3921 the globals (IPython has its own namespace) and the
3917 PhysicalQuantity stuff is much better anyway.
3922 PhysicalQuantity stuff is much better anyway.
3918
3923
3919 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
3924 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
3920 embedding example to standard user directory for
3925 embedding example to standard user directory for
3921 distribution. Also put it in the manual.
3926 distribution. Also put it in the manual.
3922
3927
3923 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
3928 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
3924 instance as first argument (so it doesn't rely on some obscure
3929 instance as first argument (so it doesn't rely on some obscure
3925 hidden global).
3930 hidden global).
3926
3931
3927 * IPython/UserConfig/ipythonrc.py: put () back in accepted
3932 * IPython/UserConfig/ipythonrc.py: put () back in accepted
3928 delimiters. While it prevents ().TAB from working, it allows
3933 delimiters. While it prevents ().TAB from working, it allows
3929 completions in open (... expressions. This is by far a more common
3934 completions in open (... expressions. This is by far a more common
3930 case.
3935 case.
3931
3936
3932 2002-04-23 Fernando Perez <fperez@colorado.edu>
3937 2002-04-23 Fernando Perez <fperez@colorado.edu>
3933
3938
3934 * IPython/Extensions/InterpreterPasteInput.py: new
3939 * IPython/Extensions/InterpreterPasteInput.py: new
3935 syntax-processing module for pasting lines with >>> or ... at the
3940 syntax-processing module for pasting lines with >>> or ... at the
3936 start.
3941 start.
3937
3942
3938 * IPython/Extensions/PhysicalQ_Interactive.py
3943 * IPython/Extensions/PhysicalQ_Interactive.py
3939 (PhysicalQuantityInteractive.__int__): fixed to work with either
3944 (PhysicalQuantityInteractive.__int__): fixed to work with either
3940 Numeric or math.
3945 Numeric or math.
3941
3946
3942 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
3947 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
3943 provided profiles. Now we have:
3948 provided profiles. Now we have:
3944 -math -> math module as * and cmath with its own namespace.
3949 -math -> math module as * and cmath with its own namespace.
3945 -numeric -> Numeric as *, plus gnuplot & grace
3950 -numeric -> Numeric as *, plus gnuplot & grace
3946 -physics -> same as before
3951 -physics -> same as before
3947
3952
3948 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
3953 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
3949 user-defined magics wouldn't be found by @magic if they were
3954 user-defined magics wouldn't be found by @magic if they were
3950 defined as class methods. Also cleaned up the namespace search
3955 defined as class methods. Also cleaned up the namespace search
3951 logic and the string building (to use %s instead of many repeated
3956 logic and the string building (to use %s instead of many repeated
3952 string adds).
3957 string adds).
3953
3958
3954 * IPython/UserConfig/example-magic.py (magic_foo): updated example
3959 * IPython/UserConfig/example-magic.py (magic_foo): updated example
3955 of user-defined magics to operate with class methods (cleaner, in
3960 of user-defined magics to operate with class methods (cleaner, in
3956 line with the gnuplot code).
3961 line with the gnuplot code).
3957
3962
3958 2002-04-22 Fernando Perez <fperez@colorado.edu>
3963 2002-04-22 Fernando Perez <fperez@colorado.edu>
3959
3964
3960 * setup.py: updated dependency list so that manual is updated when
3965 * setup.py: updated dependency list so that manual is updated when
3961 all included files change.
3966 all included files change.
3962
3967
3963 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
3968 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
3964 the delimiter removal option (the fix is ugly right now).
3969 the delimiter removal option (the fix is ugly right now).
3965
3970
3966 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
3971 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
3967 all of the math profile (quicker loading, no conflict between
3972 all of the math profile (quicker loading, no conflict between
3968 g-9.8 and g-gnuplot).
3973 g-9.8 and g-gnuplot).
3969
3974
3970 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
3975 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
3971 name of post-mortem files to IPython_crash_report.txt.
3976 name of post-mortem files to IPython_crash_report.txt.
3972
3977
3973 * Cleanup/update of the docs. Added all the new readline info and
3978 * Cleanup/update of the docs. Added all the new readline info and
3974 formatted all lists as 'real lists'.
3979 formatted all lists as 'real lists'.
3975
3980
3976 * IPython/ipmaker.py (make_IPython): removed now-obsolete
3981 * IPython/ipmaker.py (make_IPython): removed now-obsolete
3977 tab-completion options, since the full readline parse_and_bind is
3982 tab-completion options, since the full readline parse_and_bind is
3978 now accessible.
3983 now accessible.
3979
3984
3980 * IPython/iplib.py (InteractiveShell.init_readline): Changed
3985 * IPython/iplib.py (InteractiveShell.init_readline): Changed
3981 handling of readline options. Now users can specify any string to
3986 handling of readline options. Now users can specify any string to
3982 be passed to parse_and_bind(), as well as the delimiters to be
3987 be passed to parse_and_bind(), as well as the delimiters to be
3983 removed.
3988 removed.
3984 (InteractiveShell.__init__): Added __name__ to the global
3989 (InteractiveShell.__init__): Added __name__ to the global
3985 namespace so that things like Itpl which rely on its existence
3990 namespace so that things like Itpl which rely on its existence
3986 don't crash.
3991 don't crash.
3987 (InteractiveShell._prefilter): Defined the default with a _ so
3992 (InteractiveShell._prefilter): Defined the default with a _ so
3988 that prefilter() is easier to override, while the default one
3993 that prefilter() is easier to override, while the default one
3989 remains available.
3994 remains available.
3990
3995
3991 2002-04-18 Fernando Perez <fperez@colorado.edu>
3996 2002-04-18 Fernando Perez <fperez@colorado.edu>
3992
3997
3993 * Added information about pdb in the docs.
3998 * Added information about pdb in the docs.
3994
3999
3995 2002-04-17 Fernando Perez <fperez@colorado.edu>
4000 2002-04-17 Fernando Perez <fperez@colorado.edu>
3996
4001
3997 * IPython/ipmaker.py (make_IPython): added rc_override option to
4002 * IPython/ipmaker.py (make_IPython): added rc_override option to
3998 allow passing config options at creation time which may override
4003 allow passing config options at creation time which may override
3999 anything set in the config files or command line. This is
4004 anything set in the config files or command line. This is
4000 particularly useful for configuring embedded instances.
4005 particularly useful for configuring embedded instances.
4001
4006
4002 2002-04-15 Fernando Perez <fperez@colorado.edu>
4007 2002-04-15 Fernando Perez <fperez@colorado.edu>
4003
4008
4004 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4009 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4005 crash embedded instances because of the input cache falling out of
4010 crash embedded instances because of the input cache falling out of
4006 sync with the output counter.
4011 sync with the output counter.
4007
4012
4008 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4013 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4009 mode which calls pdb after an uncaught exception in IPython itself.
4014 mode which calls pdb after an uncaught exception in IPython itself.
4010
4015
4011 2002-04-14 Fernando Perez <fperez@colorado.edu>
4016 2002-04-14 Fernando Perez <fperez@colorado.edu>
4012
4017
4013 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4018 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4014 readline, fix it back after each call.
4019 readline, fix it back after each call.
4015
4020
4016 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4021 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4017 method to force all access via __call__(), which guarantees that
4022 method to force all access via __call__(), which guarantees that
4018 traceback references are properly deleted.
4023 traceback references are properly deleted.
4019
4024
4020 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4025 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4021 improve printing when pprint is in use.
4026 improve printing when pprint is in use.
4022
4027
4023 2002-04-13 Fernando Perez <fperez@colorado.edu>
4028 2002-04-13 Fernando Perez <fperez@colorado.edu>
4024
4029
4025 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4030 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4026 exceptions aren't caught anymore. If the user triggers one, he
4031 exceptions aren't caught anymore. If the user triggers one, he
4027 should know why he's doing it and it should go all the way up,
4032 should know why he's doing it and it should go all the way up,
4028 just like any other exception. So now @abort will fully kill the
4033 just like any other exception. So now @abort will fully kill the
4029 embedded interpreter and the embedding code (unless that happens
4034 embedded interpreter and the embedding code (unless that happens
4030 to catch SystemExit).
4035 to catch SystemExit).
4031
4036
4032 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4037 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4033 and a debugger() method to invoke the interactive pdb debugger
4038 and a debugger() method to invoke the interactive pdb debugger
4034 after printing exception information. Also added the corresponding
4039 after printing exception information. Also added the corresponding
4035 -pdb option and @pdb magic to control this feature, and updated
4040 -pdb option and @pdb magic to control this feature, and updated
4036 the docs. After a suggestion from Christopher Hart
4041 the docs. After a suggestion from Christopher Hart
4037 (hart-AT-caltech.edu).
4042 (hart-AT-caltech.edu).
4038
4043
4039 2002-04-12 Fernando Perez <fperez@colorado.edu>
4044 2002-04-12 Fernando Perez <fperez@colorado.edu>
4040
4045
4041 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4046 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4042 the exception handlers defined by the user (not the CrashHandler)
4047 the exception handlers defined by the user (not the CrashHandler)
4043 so that user exceptions don't trigger an ipython bug report.
4048 so that user exceptions don't trigger an ipython bug report.
4044
4049
4045 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4050 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4046 configurable (it should have always been so).
4051 configurable (it should have always been so).
4047
4052
4048 2002-03-26 Fernando Perez <fperez@colorado.edu>
4053 2002-03-26 Fernando Perez <fperez@colorado.edu>
4049
4054
4050 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4055 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4051 and there to fix embedding namespace issues. This should all be
4056 and there to fix embedding namespace issues. This should all be
4052 done in a more elegant way.
4057 done in a more elegant way.
4053
4058
4054 2002-03-25 Fernando Perez <fperez@colorado.edu>
4059 2002-03-25 Fernando Perez <fperez@colorado.edu>
4055
4060
4056 * IPython/genutils.py (get_home_dir): Try to make it work under
4061 * IPython/genutils.py (get_home_dir): Try to make it work under
4057 win9x also.
4062 win9x also.
4058
4063
4059 2002-03-20 Fernando Perez <fperez@colorado.edu>
4064 2002-03-20 Fernando Perez <fperez@colorado.edu>
4060
4065
4061 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4066 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4062 sys.displayhook untouched upon __init__.
4067 sys.displayhook untouched upon __init__.
4063
4068
4064 2002-03-19 Fernando Perez <fperez@colorado.edu>
4069 2002-03-19 Fernando Perez <fperez@colorado.edu>
4065
4070
4066 * Released 0.2.9 (for embedding bug, basically).
4071 * Released 0.2.9 (for embedding bug, basically).
4067
4072
4068 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4073 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4069 exceptions so that enclosing shell's state can be restored.
4074 exceptions so that enclosing shell's state can be restored.
4070
4075
4071 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4076 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4072 naming conventions in the .ipython/ dir.
4077 naming conventions in the .ipython/ dir.
4073
4078
4074 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4079 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4075 from delimiters list so filenames with - in them get expanded.
4080 from delimiters list so filenames with - in them get expanded.
4076
4081
4077 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4082 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4078 sys.displayhook not being properly restored after an embedded call.
4083 sys.displayhook not being properly restored after an embedded call.
4079
4084
4080 2002-03-18 Fernando Perez <fperez@colorado.edu>
4085 2002-03-18 Fernando Perez <fperez@colorado.edu>
4081
4086
4082 * Released 0.2.8
4087 * Released 0.2.8
4083
4088
4084 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4089 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4085 some files weren't being included in a -upgrade.
4090 some files weren't being included in a -upgrade.
4086 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4091 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4087 on' so that the first tab completes.
4092 on' so that the first tab completes.
4088 (InteractiveShell.handle_magic): fixed bug with spaces around
4093 (InteractiveShell.handle_magic): fixed bug with spaces around
4089 quotes breaking many magic commands.
4094 quotes breaking many magic commands.
4090
4095
4091 * setup.py: added note about ignoring the syntax error messages at
4096 * setup.py: added note about ignoring the syntax error messages at
4092 installation.
4097 installation.
4093
4098
4094 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4099 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4095 streamlining the gnuplot interface, now there's only one magic @gp.
4100 streamlining the gnuplot interface, now there's only one magic @gp.
4096
4101
4097 2002-03-17 Fernando Perez <fperez@colorado.edu>
4102 2002-03-17 Fernando Perez <fperez@colorado.edu>
4098
4103
4099 * IPython/UserConfig/magic_gnuplot.py: new name for the
4104 * IPython/UserConfig/magic_gnuplot.py: new name for the
4100 example-magic_pm.py file. Much enhanced system, now with a shell
4105 example-magic_pm.py file. Much enhanced system, now with a shell
4101 for communicating directly with gnuplot, one command at a time.
4106 for communicating directly with gnuplot, one command at a time.
4102
4107
4103 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4108 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4104 setting __name__=='__main__'.
4109 setting __name__=='__main__'.
4105
4110
4106 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4111 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4107 mini-shell for accessing gnuplot from inside ipython. Should
4112 mini-shell for accessing gnuplot from inside ipython. Should
4108 extend it later for grace access too. Inspired by Arnd's
4113 extend it later for grace access too. Inspired by Arnd's
4109 suggestion.
4114 suggestion.
4110
4115
4111 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4116 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4112 calling magic functions with () in their arguments. Thanks to Arnd
4117 calling magic functions with () in their arguments. Thanks to Arnd
4113 Baecker for pointing this to me.
4118 Baecker for pointing this to me.
4114
4119
4115 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4120 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4116 infinitely for integer or complex arrays (only worked with floats).
4121 infinitely for integer or complex arrays (only worked with floats).
4117
4122
4118 2002-03-16 Fernando Perez <fperez@colorado.edu>
4123 2002-03-16 Fernando Perez <fperez@colorado.edu>
4119
4124
4120 * setup.py: Merged setup and setup_windows into a single script
4125 * setup.py: Merged setup and setup_windows into a single script
4121 which properly handles things for windows users.
4126 which properly handles things for windows users.
4122
4127
4123 2002-03-15 Fernando Perez <fperez@colorado.edu>
4128 2002-03-15 Fernando Perez <fperez@colorado.edu>
4124
4129
4125 * Big change to the manual: now the magics are all automatically
4130 * Big change to the manual: now the magics are all automatically
4126 documented. This information is generated from their docstrings
4131 documented. This information is generated from their docstrings
4127 and put in a latex file included by the manual lyx file. This way
4132 and put in a latex file included by the manual lyx file. This way
4128 we get always up to date information for the magics. The manual
4133 we get always up to date information for the magics. The manual
4129 now also has proper version information, also auto-synced.
4134 now also has proper version information, also auto-synced.
4130
4135
4131 For this to work, an undocumented --magic_docstrings option was added.
4136 For this to work, an undocumented --magic_docstrings option was added.
4132
4137
4133 2002-03-13 Fernando Perez <fperez@colorado.edu>
4138 2002-03-13 Fernando Perez <fperez@colorado.edu>
4134
4139
4135 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4140 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4136 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4141 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4137
4142
4138 2002-03-12 Fernando Perez <fperez@colorado.edu>
4143 2002-03-12 Fernando Perez <fperez@colorado.edu>
4139
4144
4140 * IPython/ultraTB.py (TermColors): changed color escapes again to
4145 * IPython/ultraTB.py (TermColors): changed color escapes again to
4141 fix the (old, reintroduced) line-wrapping bug. Basically, if
4146 fix the (old, reintroduced) line-wrapping bug. Basically, if
4142 \001..\002 aren't given in the color escapes, lines get wrapped
4147 \001..\002 aren't given in the color escapes, lines get wrapped
4143 weirdly. But giving those screws up old xterms and emacs terms. So
4148 weirdly. But giving those screws up old xterms and emacs terms. So
4144 I added some logic for emacs terms to be ok, but I can't identify old
4149 I added some logic for emacs terms to be ok, but I can't identify old
4145 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4150 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4146
4151
4147 2002-03-10 Fernando Perez <fperez@colorado.edu>
4152 2002-03-10 Fernando Perez <fperez@colorado.edu>
4148
4153
4149 * IPython/usage.py (__doc__): Various documentation cleanups and
4154 * IPython/usage.py (__doc__): Various documentation cleanups and
4150 updates, both in usage docstrings and in the manual.
4155 updates, both in usage docstrings and in the manual.
4151
4156
4152 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4157 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4153 handling of caching. Set minimum acceptabe value for having a
4158 handling of caching. Set minimum acceptabe value for having a
4154 cache at 20 values.
4159 cache at 20 values.
4155
4160
4156 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4161 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4157 install_first_time function to a method, renamed it and added an
4162 install_first_time function to a method, renamed it and added an
4158 'upgrade' mode. Now people can update their config directory with
4163 'upgrade' mode. Now people can update their config directory with
4159 a simple command line switch (-upgrade, also new).
4164 a simple command line switch (-upgrade, also new).
4160
4165
4161 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4166 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4162 @file (convenient for automagic users under Python >= 2.2).
4167 @file (convenient for automagic users under Python >= 2.2).
4163 Removed @files (it seemed more like a plural than an abbrev. of
4168 Removed @files (it seemed more like a plural than an abbrev. of
4164 'file show').
4169 'file show').
4165
4170
4166 * IPython/iplib.py (install_first_time): Fixed crash if there were
4171 * IPython/iplib.py (install_first_time): Fixed crash if there were
4167 backup files ('~') in .ipython/ install directory.
4172 backup files ('~') in .ipython/ install directory.
4168
4173
4169 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4174 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4170 system. Things look fine, but these changes are fairly
4175 system. Things look fine, but these changes are fairly
4171 intrusive. Test them for a few days.
4176 intrusive. Test them for a few days.
4172
4177
4173 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4178 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4174 the prompts system. Now all in/out prompt strings are user
4179 the prompts system. Now all in/out prompt strings are user
4175 controllable. This is particularly useful for embedding, as one
4180 controllable. This is particularly useful for embedding, as one
4176 can tag embedded instances with particular prompts.
4181 can tag embedded instances with particular prompts.
4177
4182
4178 Also removed global use of sys.ps1/2, which now allows nested
4183 Also removed global use of sys.ps1/2, which now allows nested
4179 embeddings without any problems. Added command-line options for
4184 embeddings without any problems. Added command-line options for
4180 the prompt strings.
4185 the prompt strings.
4181
4186
4182 2002-03-08 Fernando Perez <fperez@colorado.edu>
4187 2002-03-08 Fernando Perez <fperez@colorado.edu>
4183
4188
4184 * IPython/UserConfig/example-embed-short.py (ipshell): added
4189 * IPython/UserConfig/example-embed-short.py (ipshell): added
4185 example file with the bare minimum code for embedding.
4190 example file with the bare minimum code for embedding.
4186
4191
4187 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4192 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4188 functionality for the embeddable shell to be activated/deactivated
4193 functionality for the embeddable shell to be activated/deactivated
4189 either globally or at each call.
4194 either globally or at each call.
4190
4195
4191 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4196 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4192 rewriting the prompt with '--->' for auto-inputs with proper
4197 rewriting the prompt with '--->' for auto-inputs with proper
4193 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4198 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4194 this is handled by the prompts class itself, as it should.
4199 this is handled by the prompts class itself, as it should.
4195
4200
4196 2002-03-05 Fernando Perez <fperez@colorado.edu>
4201 2002-03-05 Fernando Perez <fperez@colorado.edu>
4197
4202
4198 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4203 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4199 @logstart to avoid name clashes with the math log function.
4204 @logstart to avoid name clashes with the math log function.
4200
4205
4201 * Big updates to X/Emacs section of the manual.
4206 * Big updates to X/Emacs section of the manual.
4202
4207
4203 * Removed ipython_emacs. Milan explained to me how to pass
4208 * Removed ipython_emacs. Milan explained to me how to pass
4204 arguments to ipython through Emacs. Some day I'm going to end up
4209 arguments to ipython through Emacs. Some day I'm going to end up
4205 learning some lisp...
4210 learning some lisp...
4206
4211
4207 2002-03-04 Fernando Perez <fperez@colorado.edu>
4212 2002-03-04 Fernando Perez <fperez@colorado.edu>
4208
4213
4209 * IPython/ipython_emacs: Created script to be used as the
4214 * IPython/ipython_emacs: Created script to be used as the
4210 py-python-command Emacs variable so we can pass IPython
4215 py-python-command Emacs variable so we can pass IPython
4211 parameters. I can't figure out how to tell Emacs directly to pass
4216 parameters. I can't figure out how to tell Emacs directly to pass
4212 parameters to IPython, so a dummy shell script will do it.
4217 parameters to IPython, so a dummy shell script will do it.
4213
4218
4214 Other enhancements made for things to work better under Emacs'
4219 Other enhancements made for things to work better under Emacs'
4215 various types of terminals. Many thanks to Milan Zamazal
4220 various types of terminals. Many thanks to Milan Zamazal
4216 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4221 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4217
4222
4218 2002-03-01 Fernando Perez <fperez@colorado.edu>
4223 2002-03-01 Fernando Perez <fperez@colorado.edu>
4219
4224
4220 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4225 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4221 that loading of readline is now optional. This gives better
4226 that loading of readline is now optional. This gives better
4222 control to emacs users.
4227 control to emacs users.
4223
4228
4224 * IPython/ultraTB.py (__date__): Modified color escape sequences
4229 * IPython/ultraTB.py (__date__): Modified color escape sequences
4225 and now things work fine under xterm and in Emacs' term buffers
4230 and now things work fine under xterm and in Emacs' term buffers
4226 (though not shell ones). Well, in emacs you get colors, but all
4231 (though not shell ones). Well, in emacs you get colors, but all
4227 seem to be 'light' colors (no difference between dark and light
4232 seem to be 'light' colors (no difference between dark and light
4228 ones). But the garbage chars are gone, and also in xterms. It
4233 ones). But the garbage chars are gone, and also in xterms. It
4229 seems that now I'm using 'cleaner' ansi sequences.
4234 seems that now I'm using 'cleaner' ansi sequences.
4230
4235
4231 2002-02-21 Fernando Perez <fperez@colorado.edu>
4236 2002-02-21 Fernando Perez <fperez@colorado.edu>
4232
4237
4233 * Released 0.2.7 (mainly to publish the scoping fix).
4238 * Released 0.2.7 (mainly to publish the scoping fix).
4234
4239
4235 * IPython/Logger.py (Logger.logstate): added. A corresponding
4240 * IPython/Logger.py (Logger.logstate): added. A corresponding
4236 @logstate magic was created.
4241 @logstate magic was created.
4237
4242
4238 * IPython/Magic.py: fixed nested scoping problem under Python
4243 * IPython/Magic.py: fixed nested scoping problem under Python
4239 2.1.x (automagic wasn't working).
4244 2.1.x (automagic wasn't working).
4240
4245
4241 2002-02-20 Fernando Perez <fperez@colorado.edu>
4246 2002-02-20 Fernando Perez <fperez@colorado.edu>
4242
4247
4243 * Released 0.2.6.
4248 * Released 0.2.6.
4244
4249
4245 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4250 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4246 option so that logs can come out without any headers at all.
4251 option so that logs can come out without any headers at all.
4247
4252
4248 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4253 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4249 SciPy.
4254 SciPy.
4250
4255
4251 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4256 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4252 that embedded IPython calls don't require vars() to be explicitly
4257 that embedded IPython calls don't require vars() to be explicitly
4253 passed. Now they are extracted from the caller's frame (code
4258 passed. Now they are extracted from the caller's frame (code
4254 snatched from Eric Jones' weave). Added better documentation to
4259 snatched from Eric Jones' weave). Added better documentation to
4255 the section on embedding and the example file.
4260 the section on embedding and the example file.
4256
4261
4257 * IPython/genutils.py (page): Changed so that under emacs, it just
4262 * IPython/genutils.py (page): Changed so that under emacs, it just
4258 prints the string. You can then page up and down in the emacs
4263 prints the string. You can then page up and down in the emacs
4259 buffer itself. This is how the builtin help() works.
4264 buffer itself. This is how the builtin help() works.
4260
4265
4261 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4266 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4262 macro scoping: macros need to be executed in the user's namespace
4267 macro scoping: macros need to be executed in the user's namespace
4263 to work as if they had been typed by the user.
4268 to work as if they had been typed by the user.
4264
4269
4265 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4270 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4266 execute automatically (no need to type 'exec...'). They then
4271 execute automatically (no need to type 'exec...'). They then
4267 behave like 'true macros'. The printing system was also modified
4272 behave like 'true macros'. The printing system was also modified
4268 for this to work.
4273 for this to work.
4269
4274
4270 2002-02-19 Fernando Perez <fperez@colorado.edu>
4275 2002-02-19 Fernando Perez <fperez@colorado.edu>
4271
4276
4272 * IPython/genutils.py (page_file): new function for paging files
4277 * IPython/genutils.py (page_file): new function for paging files
4273 in an OS-independent way. Also necessary for file viewing to work
4278 in an OS-independent way. Also necessary for file viewing to work
4274 well inside Emacs buffers.
4279 well inside Emacs buffers.
4275 (page): Added checks for being in an emacs buffer.
4280 (page): Added checks for being in an emacs buffer.
4276 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4281 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4277 same bug in iplib.
4282 same bug in iplib.
4278
4283
4279 2002-02-18 Fernando Perez <fperez@colorado.edu>
4284 2002-02-18 Fernando Perez <fperez@colorado.edu>
4280
4285
4281 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4286 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4282 of readline so that IPython can work inside an Emacs buffer.
4287 of readline so that IPython can work inside an Emacs buffer.
4283
4288
4284 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4289 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4285 method signatures (they weren't really bugs, but it looks cleaner
4290 method signatures (they weren't really bugs, but it looks cleaner
4286 and keeps PyChecker happy).
4291 and keeps PyChecker happy).
4287
4292
4288 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4293 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4289 for implementing various user-defined hooks. Currently only
4294 for implementing various user-defined hooks. Currently only
4290 display is done.
4295 display is done.
4291
4296
4292 * IPython/Prompts.py (CachedOutput._display): changed display
4297 * IPython/Prompts.py (CachedOutput._display): changed display
4293 functions so that they can be dynamically changed by users easily.
4298 functions so that they can be dynamically changed by users easily.
4294
4299
4295 * IPython/Extensions/numeric_formats.py (num_display): added an
4300 * IPython/Extensions/numeric_formats.py (num_display): added an
4296 extension for printing NumPy arrays in flexible manners. It
4301 extension for printing NumPy arrays in flexible manners. It
4297 doesn't do anything yet, but all the structure is in
4302 doesn't do anything yet, but all the structure is in
4298 place. Ultimately the plan is to implement output format control
4303 place. Ultimately the plan is to implement output format control
4299 like in Octave.
4304 like in Octave.
4300
4305
4301 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4306 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4302 methods are found at run-time by all the automatic machinery.
4307 methods are found at run-time by all the automatic machinery.
4303
4308
4304 2002-02-17 Fernando Perez <fperez@colorado.edu>
4309 2002-02-17 Fernando Perez <fperez@colorado.edu>
4305
4310
4306 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4311 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4307 whole file a little.
4312 whole file a little.
4308
4313
4309 * ToDo: closed this document. Now there's a new_design.lyx
4314 * ToDo: closed this document. Now there's a new_design.lyx
4310 document for all new ideas. Added making a pdf of it for the
4315 document for all new ideas. Added making a pdf of it for the
4311 end-user distro.
4316 end-user distro.
4312
4317
4313 * IPython/Logger.py (Logger.switch_log): Created this to replace
4318 * IPython/Logger.py (Logger.switch_log): Created this to replace
4314 logon() and logoff(). It also fixes a nasty crash reported by
4319 logon() and logoff(). It also fixes a nasty crash reported by
4315 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4320 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4316
4321
4317 * IPython/iplib.py (complete): got auto-completion to work with
4322 * IPython/iplib.py (complete): got auto-completion to work with
4318 automagic (I had wanted this for a long time).
4323 automagic (I had wanted this for a long time).
4319
4324
4320 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4325 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4321 to @file, since file() is now a builtin and clashes with automagic
4326 to @file, since file() is now a builtin and clashes with automagic
4322 for @file.
4327 for @file.
4323
4328
4324 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4329 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4325 of this was previously in iplib, which had grown to more than 2000
4330 of this was previously in iplib, which had grown to more than 2000
4326 lines, way too long. No new functionality, but it makes managing
4331 lines, way too long. No new functionality, but it makes managing
4327 the code a bit easier.
4332 the code a bit easier.
4328
4333
4329 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4334 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4330 information to crash reports.
4335 information to crash reports.
4331
4336
4332 2002-02-12 Fernando Perez <fperez@colorado.edu>
4337 2002-02-12 Fernando Perez <fperez@colorado.edu>
4333
4338
4334 * Released 0.2.5.
4339 * Released 0.2.5.
4335
4340
4336 2002-02-11 Fernando Perez <fperez@colorado.edu>
4341 2002-02-11 Fernando Perez <fperez@colorado.edu>
4337
4342
4338 * Wrote a relatively complete Windows installer. It puts
4343 * Wrote a relatively complete Windows installer. It puts
4339 everything in place, creates Start Menu entries and fixes the
4344 everything in place, creates Start Menu entries and fixes the
4340 color issues. Nothing fancy, but it works.
4345 color issues. Nothing fancy, but it works.
4341
4346
4342 2002-02-10 Fernando Perez <fperez@colorado.edu>
4347 2002-02-10 Fernando Perez <fperez@colorado.edu>
4343
4348
4344 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4349 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4345 os.path.expanduser() call so that we can type @run ~/myfile.py and
4350 os.path.expanduser() call so that we can type @run ~/myfile.py and
4346 have thigs work as expected.
4351 have thigs work as expected.
4347
4352
4348 * IPython/genutils.py (page): fixed exception handling so things
4353 * IPython/genutils.py (page): fixed exception handling so things
4349 work both in Unix and Windows correctly. Quitting a pager triggers
4354 work both in Unix and Windows correctly. Quitting a pager triggers
4350 an IOError/broken pipe in Unix, and in windows not finding a pager
4355 an IOError/broken pipe in Unix, and in windows not finding a pager
4351 is also an IOError, so I had to actually look at the return value
4356 is also an IOError, so I had to actually look at the return value
4352 of the exception, not just the exception itself. Should be ok now.
4357 of the exception, not just the exception itself. Should be ok now.
4353
4358
4354 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4359 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4355 modified to allow case-insensitive color scheme changes.
4360 modified to allow case-insensitive color scheme changes.
4356
4361
4357 2002-02-09 Fernando Perez <fperez@colorado.edu>
4362 2002-02-09 Fernando Perez <fperez@colorado.edu>
4358
4363
4359 * IPython/genutils.py (native_line_ends): new function to leave
4364 * IPython/genutils.py (native_line_ends): new function to leave
4360 user config files with os-native line-endings.
4365 user config files with os-native line-endings.
4361
4366
4362 * README and manual updates.
4367 * README and manual updates.
4363
4368
4364 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4369 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4365 instead of StringType to catch Unicode strings.
4370 instead of StringType to catch Unicode strings.
4366
4371
4367 * IPython/genutils.py (filefind): fixed bug for paths with
4372 * IPython/genutils.py (filefind): fixed bug for paths with
4368 embedded spaces (very common in Windows).
4373 embedded spaces (very common in Windows).
4369
4374
4370 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4375 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4371 files under Windows, so that they get automatically associated
4376 files under Windows, so that they get automatically associated
4372 with a text editor. Windows makes it a pain to handle
4377 with a text editor. Windows makes it a pain to handle
4373 extension-less files.
4378 extension-less files.
4374
4379
4375 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4380 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4376 warning about readline only occur for Posix. In Windows there's no
4381 warning about readline only occur for Posix. In Windows there's no
4377 way to get readline, so why bother with the warning.
4382 way to get readline, so why bother with the warning.
4378
4383
4379 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4384 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4380 for __str__ instead of dir(self), since dir() changed in 2.2.
4385 for __str__ instead of dir(self), since dir() changed in 2.2.
4381
4386
4382 * Ported to Windows! Tested on XP, I suspect it should work fine
4387 * Ported to Windows! Tested on XP, I suspect it should work fine
4383 on NT/2000, but I don't think it will work on 98 et al. That
4388 on NT/2000, but I don't think it will work on 98 et al. That
4384 series of Windows is such a piece of junk anyway that I won't try
4389 series of Windows is such a piece of junk anyway that I won't try
4385 porting it there. The XP port was straightforward, showed a few
4390 porting it there. The XP port was straightforward, showed a few
4386 bugs here and there (fixed all), in particular some string
4391 bugs here and there (fixed all), in particular some string
4387 handling stuff which required considering Unicode strings (which
4392 handling stuff which required considering Unicode strings (which
4388 Windows uses). This is good, but hasn't been too tested :) No
4393 Windows uses). This is good, but hasn't been too tested :) No
4389 fancy installer yet, I'll put a note in the manual so people at
4394 fancy installer yet, I'll put a note in the manual so people at
4390 least make manually a shortcut.
4395 least make manually a shortcut.
4391
4396
4392 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4397 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4393 into a single one, "colors". This now controls both prompt and
4398 into a single one, "colors". This now controls both prompt and
4394 exception color schemes, and can be changed both at startup
4399 exception color schemes, and can be changed both at startup
4395 (either via command-line switches or via ipythonrc files) and at
4400 (either via command-line switches or via ipythonrc files) and at
4396 runtime, with @colors.
4401 runtime, with @colors.
4397 (Magic.magic_run): renamed @prun to @run and removed the old
4402 (Magic.magic_run): renamed @prun to @run and removed the old
4398 @run. The two were too similar to warrant keeping both.
4403 @run. The two were too similar to warrant keeping both.
4399
4404
4400 2002-02-03 Fernando Perez <fperez@colorado.edu>
4405 2002-02-03 Fernando Perez <fperez@colorado.edu>
4401
4406
4402 * IPython/iplib.py (install_first_time): Added comment on how to
4407 * IPython/iplib.py (install_first_time): Added comment on how to
4403 configure the color options for first-time users. Put a <return>
4408 configure the color options for first-time users. Put a <return>
4404 request at the end so that small-terminal users get a chance to
4409 request at the end so that small-terminal users get a chance to
4405 read the startup info.
4410 read the startup info.
4406
4411
4407 2002-01-23 Fernando Perez <fperez@colorado.edu>
4412 2002-01-23 Fernando Perez <fperez@colorado.edu>
4408
4413
4409 * IPython/iplib.py (CachedOutput.update): Changed output memory
4414 * IPython/iplib.py (CachedOutput.update): Changed output memory
4410 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4415 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4411 input history we still use _i. Did this b/c these variable are
4416 input history we still use _i. Did this b/c these variable are
4412 very commonly used in interactive work, so the less we need to
4417 very commonly used in interactive work, so the less we need to
4413 type the better off we are.
4418 type the better off we are.
4414 (Magic.magic_prun): updated @prun to better handle the namespaces
4419 (Magic.magic_prun): updated @prun to better handle the namespaces
4415 the file will run in, including a fix for __name__ not being set
4420 the file will run in, including a fix for __name__ not being set
4416 before.
4421 before.
4417
4422
4418 2002-01-20 Fernando Perez <fperez@colorado.edu>
4423 2002-01-20 Fernando Perez <fperez@colorado.edu>
4419
4424
4420 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4425 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4421 extra garbage for Python 2.2. Need to look more carefully into
4426 extra garbage for Python 2.2. Need to look more carefully into
4422 this later.
4427 this later.
4423
4428
4424 2002-01-19 Fernando Perez <fperez@colorado.edu>
4429 2002-01-19 Fernando Perez <fperez@colorado.edu>
4425
4430
4426 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4431 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4427 display SyntaxError exceptions properly formatted when they occur
4432 display SyntaxError exceptions properly formatted when they occur
4428 (they can be triggered by imported code).
4433 (they can be triggered by imported code).
4429
4434
4430 2002-01-18 Fernando Perez <fperez@colorado.edu>
4435 2002-01-18 Fernando Perez <fperez@colorado.edu>
4431
4436
4432 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4437 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4433 SyntaxError exceptions are reported nicely formatted, instead of
4438 SyntaxError exceptions are reported nicely formatted, instead of
4434 spitting out only offset information as before.
4439 spitting out only offset information as before.
4435 (Magic.magic_prun): Added the @prun function for executing
4440 (Magic.magic_prun): Added the @prun function for executing
4436 programs with command line args inside IPython.
4441 programs with command line args inside IPython.
4437
4442
4438 2002-01-16 Fernando Perez <fperez@colorado.edu>
4443 2002-01-16 Fernando Perez <fperez@colorado.edu>
4439
4444
4440 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4445 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4441 to *not* include the last item given in a range. This brings their
4446 to *not* include the last item given in a range. This brings their
4442 behavior in line with Python's slicing:
4447 behavior in line with Python's slicing:
4443 a[n1:n2] -> a[n1]...a[n2-1]
4448 a[n1:n2] -> a[n1]...a[n2-1]
4444 It may be a bit less convenient, but I prefer to stick to Python's
4449 It may be a bit less convenient, but I prefer to stick to Python's
4445 conventions *everywhere*, so users never have to wonder.
4450 conventions *everywhere*, so users never have to wonder.
4446 (Magic.magic_macro): Added @macro function to ease the creation of
4451 (Magic.magic_macro): Added @macro function to ease the creation of
4447 macros.
4452 macros.
4448
4453
4449 2002-01-05 Fernando Perez <fperez@colorado.edu>
4454 2002-01-05 Fernando Perez <fperez@colorado.edu>
4450
4455
4451 * Released 0.2.4.
4456 * Released 0.2.4.
4452
4457
4453 * IPython/iplib.py (Magic.magic_pdef):
4458 * IPython/iplib.py (Magic.magic_pdef):
4454 (InteractiveShell.safe_execfile): report magic lines and error
4459 (InteractiveShell.safe_execfile): report magic lines and error
4455 lines without line numbers so one can easily copy/paste them for
4460 lines without line numbers so one can easily copy/paste them for
4456 re-execution.
4461 re-execution.
4457
4462
4458 * Updated manual with recent changes.
4463 * Updated manual with recent changes.
4459
4464
4460 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4465 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4461 docstring printing when class? is called. Very handy for knowing
4466 docstring printing when class? is called. Very handy for knowing
4462 how to create class instances (as long as __init__ is well
4467 how to create class instances (as long as __init__ is well
4463 documented, of course :)
4468 documented, of course :)
4464 (Magic.magic_doc): print both class and constructor docstrings.
4469 (Magic.magic_doc): print both class and constructor docstrings.
4465 (Magic.magic_pdef): give constructor info if passed a class and
4470 (Magic.magic_pdef): give constructor info if passed a class and
4466 __call__ info for callable object instances.
4471 __call__ info for callable object instances.
4467
4472
4468 2002-01-04 Fernando Perez <fperez@colorado.edu>
4473 2002-01-04 Fernando Perez <fperez@colorado.edu>
4469
4474
4470 * Made deep_reload() off by default. It doesn't always work
4475 * Made deep_reload() off by default. It doesn't always work
4471 exactly as intended, so it's probably safer to have it off. It's
4476 exactly as intended, so it's probably safer to have it off. It's
4472 still available as dreload() anyway, so nothing is lost.
4477 still available as dreload() anyway, so nothing is lost.
4473
4478
4474 2002-01-02 Fernando Perez <fperez@colorado.edu>
4479 2002-01-02 Fernando Perez <fperez@colorado.edu>
4475
4480
4476 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4481 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4477 so I wanted an updated release).
4482 so I wanted an updated release).
4478
4483
4479 2001-12-27 Fernando Perez <fperez@colorado.edu>
4484 2001-12-27 Fernando Perez <fperez@colorado.edu>
4480
4485
4481 * IPython/iplib.py (InteractiveShell.interact): Added the original
4486 * IPython/iplib.py (InteractiveShell.interact): Added the original
4482 code from 'code.py' for this module in order to change the
4487 code from 'code.py' for this module in order to change the
4483 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4488 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4484 the history cache would break when the user hit Ctrl-C, and
4489 the history cache would break when the user hit Ctrl-C, and
4485 interact() offers no way to add any hooks to it.
4490 interact() offers no way to add any hooks to it.
4486
4491
4487 2001-12-23 Fernando Perez <fperez@colorado.edu>
4492 2001-12-23 Fernando Perez <fperez@colorado.edu>
4488
4493
4489 * setup.py: added check for 'MANIFEST' before trying to remove
4494 * setup.py: added check for 'MANIFEST' before trying to remove
4490 it. Thanks to Sean Reifschneider.
4495 it. Thanks to Sean Reifschneider.
4491
4496
4492 2001-12-22 Fernando Perez <fperez@colorado.edu>
4497 2001-12-22 Fernando Perez <fperez@colorado.edu>
4493
4498
4494 * Released 0.2.2.
4499 * Released 0.2.2.
4495
4500
4496 * Finished (reasonably) writing the manual. Later will add the
4501 * Finished (reasonably) writing the manual. Later will add the
4497 python-standard navigation stylesheets, but for the time being
4502 python-standard navigation stylesheets, but for the time being
4498 it's fairly complete. Distribution will include html and pdf
4503 it's fairly complete. Distribution will include html and pdf
4499 versions.
4504 versions.
4500
4505
4501 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4506 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4502 (MayaVi author).
4507 (MayaVi author).
4503
4508
4504 2001-12-21 Fernando Perez <fperez@colorado.edu>
4509 2001-12-21 Fernando Perez <fperez@colorado.edu>
4505
4510
4506 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4511 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4507 good public release, I think (with the manual and the distutils
4512 good public release, I think (with the manual and the distutils
4508 installer). The manual can use some work, but that can go
4513 installer). The manual can use some work, but that can go
4509 slowly. Otherwise I think it's quite nice for end users. Next
4514 slowly. Otherwise I think it's quite nice for end users. Next
4510 summer, rewrite the guts of it...
4515 summer, rewrite the guts of it...
4511
4516
4512 * Changed format of ipythonrc files to use whitespace as the
4517 * Changed format of ipythonrc files to use whitespace as the
4513 separator instead of an explicit '='. Cleaner.
4518 separator instead of an explicit '='. Cleaner.
4514
4519
4515 2001-12-20 Fernando Perez <fperez@colorado.edu>
4520 2001-12-20 Fernando Perez <fperez@colorado.edu>
4516
4521
4517 * Started a manual in LyX. For now it's just a quick merge of the
4522 * Started a manual in LyX. For now it's just a quick merge of the
4518 various internal docstrings and READMEs. Later it may grow into a
4523 various internal docstrings and READMEs. Later it may grow into a
4519 nice, full-blown manual.
4524 nice, full-blown manual.
4520
4525
4521 * Set up a distutils based installer. Installation should now be
4526 * Set up a distutils based installer. Installation should now be
4522 trivially simple for end-users.
4527 trivially simple for end-users.
4523
4528
4524 2001-12-11 Fernando Perez <fperez@colorado.edu>
4529 2001-12-11 Fernando Perez <fperez@colorado.edu>
4525
4530
4526 * Released 0.2.0. First public release, announced it at
4531 * Released 0.2.0. First public release, announced it at
4527 comp.lang.python. From now on, just bugfixes...
4532 comp.lang.python. From now on, just bugfixes...
4528
4533
4529 * Went through all the files, set copyright/license notices and
4534 * Went through all the files, set copyright/license notices and
4530 cleaned up things. Ready for release.
4535 cleaned up things. Ready for release.
4531
4536
4532 2001-12-10 Fernando Perez <fperez@colorado.edu>
4537 2001-12-10 Fernando Perez <fperez@colorado.edu>
4533
4538
4534 * Changed the first-time installer not to use tarfiles. It's more
4539 * Changed the first-time installer not to use tarfiles. It's more
4535 robust now and less unix-dependent. Also makes it easier for
4540 robust now and less unix-dependent. Also makes it easier for
4536 people to later upgrade versions.
4541 people to later upgrade versions.
4537
4542
4538 * Changed @exit to @abort to reflect the fact that it's pretty
4543 * Changed @exit to @abort to reflect the fact that it's pretty
4539 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4544 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4540 becomes significant only when IPyhton is embedded: in that case,
4545 becomes significant only when IPyhton is embedded: in that case,
4541 C-D closes IPython only, but @abort kills the enclosing program
4546 C-D closes IPython only, but @abort kills the enclosing program
4542 too (unless it had called IPython inside a try catching
4547 too (unless it had called IPython inside a try catching
4543 SystemExit).
4548 SystemExit).
4544
4549
4545 * Created Shell module which exposes the actuall IPython Shell
4550 * Created Shell module which exposes the actuall IPython Shell
4546 classes, currently the normal and the embeddable one. This at
4551 classes, currently the normal and the embeddable one. This at
4547 least offers a stable interface we won't need to change when
4552 least offers a stable interface we won't need to change when
4548 (later) the internals are rewritten. That rewrite will be confined
4553 (later) the internals are rewritten. That rewrite will be confined
4549 to iplib and ipmaker, but the Shell interface should remain as is.
4554 to iplib and ipmaker, but the Shell interface should remain as is.
4550
4555
4551 * Added embed module which offers an embeddable IPShell object,
4556 * Added embed module which offers an embeddable IPShell object,
4552 useful to fire up IPython *inside* a running program. Great for
4557 useful to fire up IPython *inside* a running program. Great for
4553 debugging or dynamical data analysis.
4558 debugging or dynamical data analysis.
4554
4559
4555 2001-12-08 Fernando Perez <fperez@colorado.edu>
4560 2001-12-08 Fernando Perez <fperez@colorado.edu>
4556
4561
4557 * Fixed small bug preventing seeing info from methods of defined
4562 * Fixed small bug preventing seeing info from methods of defined
4558 objects (incorrect namespace in _ofind()).
4563 objects (incorrect namespace in _ofind()).
4559
4564
4560 * Documentation cleanup. Moved the main usage docstrings to a
4565 * Documentation cleanup. Moved the main usage docstrings to a
4561 separate file, usage.py (cleaner to maintain, and hopefully in the
4566 separate file, usage.py (cleaner to maintain, and hopefully in the
4562 future some perlpod-like way of producing interactive, man and
4567 future some perlpod-like way of producing interactive, man and
4563 html docs out of it will be found).
4568 html docs out of it will be found).
4564
4569
4565 * Added @profile to see your profile at any time.
4570 * Added @profile to see your profile at any time.
4566
4571
4567 * Added @p as an alias for 'print'. It's especially convenient if
4572 * Added @p as an alias for 'print'. It's especially convenient if
4568 using automagic ('p x' prints x).
4573 using automagic ('p x' prints x).
4569
4574
4570 * Small cleanups and fixes after a pychecker run.
4575 * Small cleanups and fixes after a pychecker run.
4571
4576
4572 * Changed the @cd command to handle @cd - and @cd -<n> for
4577 * Changed the @cd command to handle @cd - and @cd -<n> for
4573 visiting any directory in _dh.
4578 visiting any directory in _dh.
4574
4579
4575 * Introduced _dh, a history of visited directories. @dhist prints
4580 * Introduced _dh, a history of visited directories. @dhist prints
4576 it out with numbers.
4581 it out with numbers.
4577
4582
4578 2001-12-07 Fernando Perez <fperez@colorado.edu>
4583 2001-12-07 Fernando Perez <fperez@colorado.edu>
4579
4584
4580 * Released 0.1.22
4585 * Released 0.1.22
4581
4586
4582 * Made initialization a bit more robust against invalid color
4587 * Made initialization a bit more robust against invalid color
4583 options in user input (exit, not traceback-crash).
4588 options in user input (exit, not traceback-crash).
4584
4589
4585 * Changed the bug crash reporter to write the report only in the
4590 * Changed the bug crash reporter to write the report only in the
4586 user's .ipython directory. That way IPython won't litter people's
4591 user's .ipython directory. That way IPython won't litter people's
4587 hard disks with crash files all over the place. Also print on
4592 hard disks with crash files all over the place. Also print on
4588 screen the necessary mail command.
4593 screen the necessary mail command.
4589
4594
4590 * With the new ultraTB, implemented LightBG color scheme for light
4595 * With the new ultraTB, implemented LightBG color scheme for light
4591 background terminals. A lot of people like white backgrounds, so I
4596 background terminals. A lot of people like white backgrounds, so I
4592 guess we should at least give them something readable.
4597 guess we should at least give them something readable.
4593
4598
4594 2001-12-06 Fernando Perez <fperez@colorado.edu>
4599 2001-12-06 Fernando Perez <fperez@colorado.edu>
4595
4600
4596 * Modified the structure of ultraTB. Now there's a proper class
4601 * Modified the structure of ultraTB. Now there's a proper class
4597 for tables of color schemes which allow adding schemes easily and
4602 for tables of color schemes which allow adding schemes easily and
4598 switching the active scheme without creating a new instance every
4603 switching the active scheme without creating a new instance every
4599 time (which was ridiculous). The syntax for creating new schemes
4604 time (which was ridiculous). The syntax for creating new schemes
4600 is also cleaner. I think ultraTB is finally done, with a clean
4605 is also cleaner. I think ultraTB is finally done, with a clean
4601 class structure. Names are also much cleaner (now there's proper
4606 class structure. Names are also much cleaner (now there's proper
4602 color tables, no need for every variable to also have 'color' in
4607 color tables, no need for every variable to also have 'color' in
4603 its name).
4608 its name).
4604
4609
4605 * Broke down genutils into separate files. Now genutils only
4610 * Broke down genutils into separate files. Now genutils only
4606 contains utility functions, and classes have been moved to their
4611 contains utility functions, and classes have been moved to their
4607 own files (they had enough independent functionality to warrant
4612 own files (they had enough independent functionality to warrant
4608 it): ConfigLoader, OutputTrap, Struct.
4613 it): ConfigLoader, OutputTrap, Struct.
4609
4614
4610 2001-12-05 Fernando Perez <fperez@colorado.edu>
4615 2001-12-05 Fernando Perez <fperez@colorado.edu>
4611
4616
4612 * IPython turns 21! Released version 0.1.21, as a candidate for
4617 * IPython turns 21! Released version 0.1.21, as a candidate for
4613 public consumption. If all goes well, release in a few days.
4618 public consumption. If all goes well, release in a few days.
4614
4619
4615 * Fixed path bug (files in Extensions/ directory wouldn't be found
4620 * Fixed path bug (files in Extensions/ directory wouldn't be found
4616 unless IPython/ was explicitly in sys.path).
4621 unless IPython/ was explicitly in sys.path).
4617
4622
4618 * Extended the FlexCompleter class as MagicCompleter to allow
4623 * Extended the FlexCompleter class as MagicCompleter to allow
4619 completion of @-starting lines.
4624 completion of @-starting lines.
4620
4625
4621 * Created __release__.py file as a central repository for release
4626 * Created __release__.py file as a central repository for release
4622 info that other files can read from.
4627 info that other files can read from.
4623
4628
4624 * Fixed small bug in logging: when logging was turned on in
4629 * Fixed small bug in logging: when logging was turned on in
4625 mid-session, old lines with special meanings (!@?) were being
4630 mid-session, old lines with special meanings (!@?) were being
4626 logged without the prepended comment, which is necessary since
4631 logged without the prepended comment, which is necessary since
4627 they are not truly valid python syntax. This should make session
4632 they are not truly valid python syntax. This should make session
4628 restores produce less errors.
4633 restores produce less errors.
4629
4634
4630 * The namespace cleanup forced me to make a FlexCompleter class
4635 * The namespace cleanup forced me to make a FlexCompleter class
4631 which is nothing but a ripoff of rlcompleter, but with selectable
4636 which is nothing but a ripoff of rlcompleter, but with selectable
4632 namespace (rlcompleter only works in __main__.__dict__). I'll try
4637 namespace (rlcompleter only works in __main__.__dict__). I'll try
4633 to submit a note to the authors to see if this change can be
4638 to submit a note to the authors to see if this change can be
4634 incorporated in future rlcompleter releases (Dec.6: done)
4639 incorporated in future rlcompleter releases (Dec.6: done)
4635
4640
4636 * More fixes to namespace handling. It was a mess! Now all
4641 * More fixes to namespace handling. It was a mess! Now all
4637 explicit references to __main__.__dict__ are gone (except when
4642 explicit references to __main__.__dict__ are gone (except when
4638 really needed) and everything is handled through the namespace
4643 really needed) and everything is handled through the namespace
4639 dicts in the IPython instance. We seem to be getting somewhere
4644 dicts in the IPython instance. We seem to be getting somewhere
4640 with this, finally...
4645 with this, finally...
4641
4646
4642 * Small documentation updates.
4647 * Small documentation updates.
4643
4648
4644 * Created the Extensions directory under IPython (with an
4649 * Created the Extensions directory under IPython (with an
4645 __init__.py). Put the PhysicalQ stuff there. This directory should
4650 __init__.py). Put the PhysicalQ stuff there. This directory should
4646 be used for all special-purpose extensions.
4651 be used for all special-purpose extensions.
4647
4652
4648 * File renaming:
4653 * File renaming:
4649 ipythonlib --> ipmaker
4654 ipythonlib --> ipmaker
4650 ipplib --> iplib
4655 ipplib --> iplib
4651 This makes a bit more sense in terms of what these files actually do.
4656 This makes a bit more sense in terms of what these files actually do.
4652
4657
4653 * Moved all the classes and functions in ipythonlib to ipplib, so
4658 * Moved all the classes and functions in ipythonlib to ipplib, so
4654 now ipythonlib only has make_IPython(). This will ease up its
4659 now ipythonlib only has make_IPython(). This will ease up its
4655 splitting in smaller functional chunks later.
4660 splitting in smaller functional chunks later.
4656
4661
4657 * Cleaned up (done, I think) output of @whos. Better column
4662 * Cleaned up (done, I think) output of @whos. Better column
4658 formatting, and now shows str(var) for as much as it can, which is
4663 formatting, and now shows str(var) for as much as it can, which is
4659 typically what one gets with a 'print var'.
4664 typically what one gets with a 'print var'.
4660
4665
4661 2001-12-04 Fernando Perez <fperez@colorado.edu>
4666 2001-12-04 Fernando Perez <fperez@colorado.edu>
4662
4667
4663 * Fixed namespace problems. Now builtin/IPyhton/user names get
4668 * Fixed namespace problems. Now builtin/IPyhton/user names get
4664 properly reported in their namespace. Internal namespace handling
4669 properly reported in their namespace. Internal namespace handling
4665 is finally getting decent (not perfect yet, but much better than
4670 is finally getting decent (not perfect yet, but much better than
4666 the ad-hoc mess we had).
4671 the ad-hoc mess we had).
4667
4672
4668 * Removed -exit option. If people just want to run a python
4673 * Removed -exit option. If people just want to run a python
4669 script, that's what the normal interpreter is for. Less
4674 script, that's what the normal interpreter is for. Less
4670 unnecessary options, less chances for bugs.
4675 unnecessary options, less chances for bugs.
4671
4676
4672 * Added a crash handler which generates a complete post-mortem if
4677 * Added a crash handler which generates a complete post-mortem if
4673 IPython crashes. This will help a lot in tracking bugs down the
4678 IPython crashes. This will help a lot in tracking bugs down the
4674 road.
4679 road.
4675
4680
4676 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4681 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4677 which were boud to functions being reassigned would bypass the
4682 which were boud to functions being reassigned would bypass the
4678 logger, breaking the sync of _il with the prompt counter. This
4683 logger, breaking the sync of _il with the prompt counter. This
4679 would then crash IPython later when a new line was logged.
4684 would then crash IPython later when a new line was logged.
4680
4685
4681 2001-12-02 Fernando Perez <fperez@colorado.edu>
4686 2001-12-02 Fernando Perez <fperez@colorado.edu>
4682
4687
4683 * Made IPython a package. This means people don't have to clutter
4688 * Made IPython a package. This means people don't have to clutter
4684 their sys.path with yet another directory. Changed the INSTALL
4689 their sys.path with yet another directory. Changed the INSTALL
4685 file accordingly.
4690 file accordingly.
4686
4691
4687 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4692 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4688 sorts its output (so @who shows it sorted) and @whos formats the
4693 sorts its output (so @who shows it sorted) and @whos formats the
4689 table according to the width of the first column. Nicer, easier to
4694 table according to the width of the first column. Nicer, easier to
4690 read. Todo: write a generic table_format() which takes a list of
4695 read. Todo: write a generic table_format() which takes a list of
4691 lists and prints it nicely formatted, with optional row/column
4696 lists and prints it nicely formatted, with optional row/column
4692 separators and proper padding and justification.
4697 separators and proper padding and justification.
4693
4698
4694 * Released 0.1.20
4699 * Released 0.1.20
4695
4700
4696 * Fixed bug in @log which would reverse the inputcache list (a
4701 * Fixed bug in @log which would reverse the inputcache list (a
4697 copy operation was missing).
4702 copy operation was missing).
4698
4703
4699 * Code cleanup. @config was changed to use page(). Better, since
4704 * Code cleanup. @config was changed to use page(). Better, since
4700 its output is always quite long.
4705 its output is always quite long.
4701
4706
4702 * Itpl is back as a dependency. I was having too many problems
4707 * Itpl is back as a dependency. I was having too many problems
4703 getting the parametric aliases to work reliably, and it's just
4708 getting the parametric aliases to work reliably, and it's just
4704 easier to code weird string operations with it than playing %()s
4709 easier to code weird string operations with it than playing %()s
4705 games. It's only ~6k, so I don't think it's too big a deal.
4710 games. It's only ~6k, so I don't think it's too big a deal.
4706
4711
4707 * Found (and fixed) a very nasty bug with history. !lines weren't
4712 * Found (and fixed) a very nasty bug with history. !lines weren't
4708 getting cached, and the out of sync caches would crash
4713 getting cached, and the out of sync caches would crash
4709 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4714 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4710 division of labor a bit better. Bug fixed, cleaner structure.
4715 division of labor a bit better. Bug fixed, cleaner structure.
4711
4716
4712 2001-12-01 Fernando Perez <fperez@colorado.edu>
4717 2001-12-01 Fernando Perez <fperez@colorado.edu>
4713
4718
4714 * Released 0.1.19
4719 * Released 0.1.19
4715
4720
4716 * Added option -n to @hist to prevent line number printing. Much
4721 * Added option -n to @hist to prevent line number printing. Much
4717 easier to copy/paste code this way.
4722 easier to copy/paste code this way.
4718
4723
4719 * Created global _il to hold the input list. Allows easy
4724 * Created global _il to hold the input list. Allows easy
4720 re-execution of blocks of code by slicing it (inspired by Janko's
4725 re-execution of blocks of code by slicing it (inspired by Janko's
4721 comment on 'macros').
4726 comment on 'macros').
4722
4727
4723 * Small fixes and doc updates.
4728 * Small fixes and doc updates.
4724
4729
4725 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4730 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4726 much too fragile with automagic. Handles properly multi-line
4731 much too fragile with automagic. Handles properly multi-line
4727 statements and takes parameters.
4732 statements and takes parameters.
4728
4733
4729 2001-11-30 Fernando Perez <fperez@colorado.edu>
4734 2001-11-30 Fernando Perez <fperez@colorado.edu>
4730
4735
4731 * Version 0.1.18 released.
4736 * Version 0.1.18 released.
4732
4737
4733 * Fixed nasty namespace bug in initial module imports.
4738 * Fixed nasty namespace bug in initial module imports.
4734
4739
4735 * Added copyright/license notes to all code files (except
4740 * Added copyright/license notes to all code files (except
4736 DPyGetOpt). For the time being, LGPL. That could change.
4741 DPyGetOpt). For the time being, LGPL. That could change.
4737
4742
4738 * Rewrote a much nicer README, updated INSTALL, cleaned up
4743 * Rewrote a much nicer README, updated INSTALL, cleaned up
4739 ipythonrc-* samples.
4744 ipythonrc-* samples.
4740
4745
4741 * Overall code/documentation cleanup. Basically ready for
4746 * Overall code/documentation cleanup. Basically ready for
4742 release. Only remaining thing: licence decision (LGPL?).
4747 release. Only remaining thing: licence decision (LGPL?).
4743
4748
4744 * Converted load_config to a class, ConfigLoader. Now recursion
4749 * Converted load_config to a class, ConfigLoader. Now recursion
4745 control is better organized. Doesn't include the same file twice.
4750 control is better organized. Doesn't include the same file twice.
4746
4751
4747 2001-11-29 Fernando Perez <fperez@colorado.edu>
4752 2001-11-29 Fernando Perez <fperez@colorado.edu>
4748
4753
4749 * Got input history working. Changed output history variables from
4754 * Got input history working. Changed output history variables from
4750 _p to _o so that _i is for input and _o for output. Just cleaner
4755 _p to _o so that _i is for input and _o for output. Just cleaner
4751 convention.
4756 convention.
4752
4757
4753 * Implemented parametric aliases. This pretty much allows the
4758 * Implemented parametric aliases. This pretty much allows the
4754 alias system to offer full-blown shell convenience, I think.
4759 alias system to offer full-blown shell convenience, I think.
4755
4760
4756 * Version 0.1.17 released, 0.1.18 opened.
4761 * Version 0.1.17 released, 0.1.18 opened.
4757
4762
4758 * dot_ipython/ipythonrc (alias): added documentation.
4763 * dot_ipython/ipythonrc (alias): added documentation.
4759 (xcolor): Fixed small bug (xcolors -> xcolor)
4764 (xcolor): Fixed small bug (xcolors -> xcolor)
4760
4765
4761 * Changed the alias system. Now alias is a magic command to define
4766 * Changed the alias system. Now alias is a magic command to define
4762 aliases just like the shell. Rationale: the builtin magics should
4767 aliases just like the shell. Rationale: the builtin magics should
4763 be there for things deeply connected to IPython's
4768 be there for things deeply connected to IPython's
4764 architecture. And this is a much lighter system for what I think
4769 architecture. And this is a much lighter system for what I think
4765 is the really important feature: allowing users to define quickly
4770 is the really important feature: allowing users to define quickly
4766 magics that will do shell things for them, so they can customize
4771 magics that will do shell things for them, so they can customize
4767 IPython easily to match their work habits. If someone is really
4772 IPython easily to match their work habits. If someone is really
4768 desperate to have another name for a builtin alias, they can
4773 desperate to have another name for a builtin alias, they can
4769 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4774 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4770 works.
4775 works.
4771
4776
4772 2001-11-28 Fernando Perez <fperez@colorado.edu>
4777 2001-11-28 Fernando Perez <fperez@colorado.edu>
4773
4778
4774 * Changed @file so that it opens the source file at the proper
4779 * Changed @file so that it opens the source file at the proper
4775 line. Since it uses less, if your EDITOR environment is
4780 line. Since it uses less, if your EDITOR environment is
4776 configured, typing v will immediately open your editor of choice
4781 configured, typing v will immediately open your editor of choice
4777 right at the line where the object is defined. Not as quick as
4782 right at the line where the object is defined. Not as quick as
4778 having a direct @edit command, but for all intents and purposes it
4783 having a direct @edit command, but for all intents and purposes it
4779 works. And I don't have to worry about writing @edit to deal with
4784 works. And I don't have to worry about writing @edit to deal with
4780 all the editors, less does that.
4785 all the editors, less does that.
4781
4786
4782 * Version 0.1.16 released, 0.1.17 opened.
4787 * Version 0.1.16 released, 0.1.17 opened.
4783
4788
4784 * Fixed some nasty bugs in the page/page_dumb combo that could
4789 * Fixed some nasty bugs in the page/page_dumb combo that could
4785 crash IPython.
4790 crash IPython.
4786
4791
4787 2001-11-27 Fernando Perez <fperez@colorado.edu>
4792 2001-11-27 Fernando Perez <fperez@colorado.edu>
4788
4793
4789 * Version 0.1.15 released, 0.1.16 opened.
4794 * Version 0.1.15 released, 0.1.16 opened.
4790
4795
4791 * Finally got ? and ?? to work for undefined things: now it's
4796 * Finally got ? and ?? to work for undefined things: now it's
4792 possible to type {}.get? and get information about the get method
4797 possible to type {}.get? and get information about the get method
4793 of dicts, or os.path? even if only os is defined (so technically
4798 of dicts, or os.path? even if only os is defined (so technically
4794 os.path isn't). Works at any level. For example, after import os,
4799 os.path isn't). Works at any level. For example, after import os,
4795 os?, os.path?, os.path.abspath? all work. This is great, took some
4800 os?, os.path?, os.path.abspath? all work. This is great, took some
4796 work in _ofind.
4801 work in _ofind.
4797
4802
4798 * Fixed more bugs with logging. The sanest way to do it was to add
4803 * Fixed more bugs with logging. The sanest way to do it was to add
4799 to @log a 'mode' parameter. Killed two in one shot (this mode
4804 to @log a 'mode' parameter. Killed two in one shot (this mode
4800 option was a request of Janko's). I think it's finally clean
4805 option was a request of Janko's). I think it's finally clean
4801 (famous last words).
4806 (famous last words).
4802
4807
4803 * Added a page_dumb() pager which does a decent job of paging on
4808 * Added a page_dumb() pager which does a decent job of paging on
4804 screen, if better things (like less) aren't available. One less
4809 screen, if better things (like less) aren't available. One less
4805 unix dependency (someday maybe somebody will port this to
4810 unix dependency (someday maybe somebody will port this to
4806 windows).
4811 windows).
4807
4812
4808 * Fixed problem in magic_log: would lock of logging out if log
4813 * Fixed problem in magic_log: would lock of logging out if log
4809 creation failed (because it would still think it had succeeded).
4814 creation failed (because it would still think it had succeeded).
4810
4815
4811 * Improved the page() function using curses to auto-detect screen
4816 * Improved the page() function using curses to auto-detect screen
4812 size. Now it can make a much better decision on whether to print
4817 size. Now it can make a much better decision on whether to print
4813 or page a string. Option screen_length was modified: a value 0
4818 or page a string. Option screen_length was modified: a value 0
4814 means auto-detect, and that's the default now.
4819 means auto-detect, and that's the default now.
4815
4820
4816 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4821 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4817 go out. I'll test it for a few days, then talk to Janko about
4822 go out. I'll test it for a few days, then talk to Janko about
4818 licences and announce it.
4823 licences and announce it.
4819
4824
4820 * Fixed the length of the auto-generated ---> prompt which appears
4825 * Fixed the length of the auto-generated ---> prompt which appears
4821 for auto-parens and auto-quotes. Getting this right isn't trivial,
4826 for auto-parens and auto-quotes. Getting this right isn't trivial,
4822 with all the color escapes, different prompt types and optional
4827 with all the color escapes, different prompt types and optional
4823 separators. But it seems to be working in all the combinations.
4828 separators. But it seems to be working in all the combinations.
4824
4829
4825 2001-11-26 Fernando Perez <fperez@colorado.edu>
4830 2001-11-26 Fernando Perez <fperez@colorado.edu>
4826
4831
4827 * Wrote a regexp filter to get option types from the option names
4832 * Wrote a regexp filter to get option types from the option names
4828 string. This eliminates the need to manually keep two duplicate
4833 string. This eliminates the need to manually keep two duplicate
4829 lists.
4834 lists.
4830
4835
4831 * Removed the unneeded check_option_names. Now options are handled
4836 * Removed the unneeded check_option_names. Now options are handled
4832 in a much saner manner and it's easy to visually check that things
4837 in a much saner manner and it's easy to visually check that things
4833 are ok.
4838 are ok.
4834
4839
4835 * Updated version numbers on all files I modified to carry a
4840 * Updated version numbers on all files I modified to carry a
4836 notice so Janko and Nathan have clear version markers.
4841 notice so Janko and Nathan have clear version markers.
4837
4842
4838 * Updated docstring for ultraTB with my changes. I should send
4843 * Updated docstring for ultraTB with my changes. I should send
4839 this to Nathan.
4844 this to Nathan.
4840
4845
4841 * Lots of small fixes. Ran everything through pychecker again.
4846 * Lots of small fixes. Ran everything through pychecker again.
4842
4847
4843 * Made loading of deep_reload an cmd line option. If it's not too
4848 * Made loading of deep_reload an cmd line option. If it's not too
4844 kosher, now people can just disable it. With -nodeep_reload it's
4849 kosher, now people can just disable it. With -nodeep_reload it's
4845 still available as dreload(), it just won't overwrite reload().
4850 still available as dreload(), it just won't overwrite reload().
4846
4851
4847 * Moved many options to the no| form (-opt and -noopt
4852 * Moved many options to the no| form (-opt and -noopt
4848 accepted). Cleaner.
4853 accepted). Cleaner.
4849
4854
4850 * Changed magic_log so that if called with no parameters, it uses
4855 * Changed magic_log so that if called with no parameters, it uses
4851 'rotate' mode. That way auto-generated logs aren't automatically
4856 'rotate' mode. That way auto-generated logs aren't automatically
4852 over-written. For normal logs, now a backup is made if it exists
4857 over-written. For normal logs, now a backup is made if it exists
4853 (only 1 level of backups). A new 'backup' mode was added to the
4858 (only 1 level of backups). A new 'backup' mode was added to the
4854 Logger class to support this. This was a request by Janko.
4859 Logger class to support this. This was a request by Janko.
4855
4860
4856 * Added @logoff/@logon to stop/restart an active log.
4861 * Added @logoff/@logon to stop/restart an active log.
4857
4862
4858 * Fixed a lot of bugs in log saving/replay. It was pretty
4863 * Fixed a lot of bugs in log saving/replay. It was pretty
4859 broken. Now special lines (!@,/) appear properly in the command
4864 broken. Now special lines (!@,/) appear properly in the command
4860 history after a log replay.
4865 history after a log replay.
4861
4866
4862 * Tried and failed to implement full session saving via pickle. My
4867 * Tried and failed to implement full session saving via pickle. My
4863 idea was to pickle __main__.__dict__, but modules can't be
4868 idea was to pickle __main__.__dict__, but modules can't be
4864 pickled. This would be a better alternative to replaying logs, but
4869 pickled. This would be a better alternative to replaying logs, but
4865 seems quite tricky to get to work. Changed -session to be called
4870 seems quite tricky to get to work. Changed -session to be called
4866 -logplay, which more accurately reflects what it does. And if we
4871 -logplay, which more accurately reflects what it does. And if we
4867 ever get real session saving working, -session is now available.
4872 ever get real session saving working, -session is now available.
4868
4873
4869 * Implemented color schemes for prompts also. As for tracebacks,
4874 * Implemented color schemes for prompts also. As for tracebacks,
4870 currently only NoColor and Linux are supported. But now the
4875 currently only NoColor and Linux are supported. But now the
4871 infrastructure is in place, based on a generic ColorScheme
4876 infrastructure is in place, based on a generic ColorScheme
4872 class. So writing and activating new schemes both for the prompts
4877 class. So writing and activating new schemes both for the prompts
4873 and the tracebacks should be straightforward.
4878 and the tracebacks should be straightforward.
4874
4879
4875 * Version 0.1.13 released, 0.1.14 opened.
4880 * Version 0.1.13 released, 0.1.14 opened.
4876
4881
4877 * Changed handling of options for output cache. Now counter is
4882 * Changed handling of options for output cache. Now counter is
4878 hardwired starting at 1 and one specifies the maximum number of
4883 hardwired starting at 1 and one specifies the maximum number of
4879 entries *in the outcache* (not the max prompt counter). This is
4884 entries *in the outcache* (not the max prompt counter). This is
4880 much better, since many statements won't increase the cache
4885 much better, since many statements won't increase the cache
4881 count. It also eliminated some confusing options, now there's only
4886 count. It also eliminated some confusing options, now there's only
4882 one: cache_size.
4887 one: cache_size.
4883
4888
4884 * Added 'alias' magic function and magic_alias option in the
4889 * Added 'alias' magic function and magic_alias option in the
4885 ipythonrc file. Now the user can easily define whatever names he
4890 ipythonrc file. Now the user can easily define whatever names he
4886 wants for the magic functions without having to play weird
4891 wants for the magic functions without having to play weird
4887 namespace games. This gives IPython a real shell-like feel.
4892 namespace games. This gives IPython a real shell-like feel.
4888
4893
4889 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
4894 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
4890 @ or not).
4895 @ or not).
4891
4896
4892 This was one of the last remaining 'visible' bugs (that I know
4897 This was one of the last remaining 'visible' bugs (that I know
4893 of). I think if I can clean up the session loading so it works
4898 of). I think if I can clean up the session loading so it works
4894 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
4899 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
4895 about licensing).
4900 about licensing).
4896
4901
4897 2001-11-25 Fernando Perez <fperez@colorado.edu>
4902 2001-11-25 Fernando Perez <fperez@colorado.edu>
4898
4903
4899 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
4904 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
4900 there's a cleaner distinction between what ? and ?? show.
4905 there's a cleaner distinction between what ? and ?? show.
4901
4906
4902 * Added screen_length option. Now the user can define his own
4907 * Added screen_length option. Now the user can define his own
4903 screen size for page() operations.
4908 screen size for page() operations.
4904
4909
4905 * Implemented magic shell-like functions with automatic code
4910 * Implemented magic shell-like functions with automatic code
4906 generation. Now adding another function is just a matter of adding
4911 generation. Now adding another function is just a matter of adding
4907 an entry to a dict, and the function is dynamically generated at
4912 an entry to a dict, and the function is dynamically generated at
4908 run-time. Python has some really cool features!
4913 run-time. Python has some really cool features!
4909
4914
4910 * Renamed many options to cleanup conventions a little. Now all
4915 * Renamed many options to cleanup conventions a little. Now all
4911 are lowercase, and only underscores where needed. Also in the code
4916 are lowercase, and only underscores where needed. Also in the code
4912 option name tables are clearer.
4917 option name tables are clearer.
4913
4918
4914 * Changed prompts a little. Now input is 'In [n]:' instead of
4919 * Changed prompts a little. Now input is 'In [n]:' instead of
4915 'In[n]:='. This allows it the numbers to be aligned with the
4920 'In[n]:='. This allows it the numbers to be aligned with the
4916 Out[n] numbers, and removes usage of ':=' which doesn't exist in
4921 Out[n] numbers, and removes usage of ':=' which doesn't exist in
4917 Python (it was a Mathematica thing). The '...' continuation prompt
4922 Python (it was a Mathematica thing). The '...' continuation prompt
4918 was also changed a little to align better.
4923 was also changed a little to align better.
4919
4924
4920 * Fixed bug when flushing output cache. Not all _p<n> variables
4925 * Fixed bug when flushing output cache. Not all _p<n> variables
4921 exist, so their deletion needs to be wrapped in a try:
4926 exist, so their deletion needs to be wrapped in a try:
4922
4927
4923 * Figured out how to properly use inspect.formatargspec() (it
4928 * Figured out how to properly use inspect.formatargspec() (it
4924 requires the args preceded by *). So I removed all the code from
4929 requires the args preceded by *). So I removed all the code from
4925 _get_pdef in Magic, which was just replicating that.
4930 _get_pdef in Magic, which was just replicating that.
4926
4931
4927 * Added test to prefilter to allow redefining magic function names
4932 * Added test to prefilter to allow redefining magic function names
4928 as variables. This is ok, since the @ form is always available,
4933 as variables. This is ok, since the @ form is always available,
4929 but whe should allow the user to define a variable called 'ls' if
4934 but whe should allow the user to define a variable called 'ls' if
4930 he needs it.
4935 he needs it.
4931
4936
4932 * Moved the ToDo information from README into a separate ToDo.
4937 * Moved the ToDo information from README into a separate ToDo.
4933
4938
4934 * General code cleanup and small bugfixes. I think it's close to a
4939 * General code cleanup and small bugfixes. I think it's close to a
4935 state where it can be released, obviously with a big 'beta'
4940 state where it can be released, obviously with a big 'beta'
4936 warning on it.
4941 warning on it.
4937
4942
4938 * Got the magic function split to work. Now all magics are defined
4943 * Got the magic function split to work. Now all magics are defined
4939 in a separate class. It just organizes things a bit, and now
4944 in a separate class. It just organizes things a bit, and now
4940 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
4945 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
4941 was too long).
4946 was too long).
4942
4947
4943 * Changed @clear to @reset to avoid potential confusions with
4948 * Changed @clear to @reset to avoid potential confusions with
4944 the shell command clear. Also renamed @cl to @clear, which does
4949 the shell command clear. Also renamed @cl to @clear, which does
4945 exactly what people expect it to from their shell experience.
4950 exactly what people expect it to from their shell experience.
4946
4951
4947 Added a check to the @reset command (since it's so
4952 Added a check to the @reset command (since it's so
4948 destructive, it's probably a good idea to ask for confirmation).
4953 destructive, it's probably a good idea to ask for confirmation).
4949 But now reset only works for full namespace resetting. Since the
4954 But now reset only works for full namespace resetting. Since the
4950 del keyword is already there for deleting a few specific
4955 del keyword is already there for deleting a few specific
4951 variables, I don't see the point of having a redundant magic
4956 variables, I don't see the point of having a redundant magic
4952 function for the same task.
4957 function for the same task.
4953
4958
4954 2001-11-24 Fernando Perez <fperez@colorado.edu>
4959 2001-11-24 Fernando Perez <fperez@colorado.edu>
4955
4960
4956 * Updated the builtin docs (esp. the ? ones).
4961 * Updated the builtin docs (esp. the ? ones).
4957
4962
4958 * Ran all the code through pychecker. Not terribly impressed with
4963 * Ran all the code through pychecker. Not terribly impressed with
4959 it: lots of spurious warnings and didn't really find anything of
4964 it: lots of spurious warnings and didn't really find anything of
4960 substance (just a few modules being imported and not used).
4965 substance (just a few modules being imported and not used).
4961
4966
4962 * Implemented the new ultraTB functionality into IPython. New
4967 * Implemented the new ultraTB functionality into IPython. New
4963 option: xcolors. This chooses color scheme. xmode now only selects
4968 option: xcolors. This chooses color scheme. xmode now only selects
4964 between Plain and Verbose. Better orthogonality.
4969 between Plain and Verbose. Better orthogonality.
4965
4970
4966 * Large rewrite of ultraTB. Much cleaner now, with a separation of
4971 * Large rewrite of ultraTB. Much cleaner now, with a separation of
4967 mode and color scheme for the exception handlers. Now it's
4972 mode and color scheme for the exception handlers. Now it's
4968 possible to have the verbose traceback with no coloring.
4973 possible to have the verbose traceback with no coloring.
4969
4974
4970 2001-11-23 Fernando Perez <fperez@colorado.edu>
4975 2001-11-23 Fernando Perez <fperez@colorado.edu>
4971
4976
4972 * Version 0.1.12 released, 0.1.13 opened.
4977 * Version 0.1.12 released, 0.1.13 opened.
4973
4978
4974 * Removed option to set auto-quote and auto-paren escapes by
4979 * Removed option to set auto-quote and auto-paren escapes by
4975 user. The chances of breaking valid syntax are just too high. If
4980 user. The chances of breaking valid syntax are just too high. If
4976 someone *really* wants, they can always dig into the code.
4981 someone *really* wants, they can always dig into the code.
4977
4982
4978 * Made prompt separators configurable.
4983 * Made prompt separators configurable.
4979
4984
4980 2001-11-22 Fernando Perez <fperez@colorado.edu>
4985 2001-11-22 Fernando Perez <fperez@colorado.edu>
4981
4986
4982 * Small bugfixes in many places.
4987 * Small bugfixes in many places.
4983
4988
4984 * Removed the MyCompleter class from ipplib. It seemed redundant
4989 * Removed the MyCompleter class from ipplib. It seemed redundant
4985 with the C-p,C-n history search functionality. Less code to
4990 with the C-p,C-n history search functionality. Less code to
4986 maintain.
4991 maintain.
4987
4992
4988 * Moved all the original ipython.py code into ipythonlib.py. Right
4993 * Moved all the original ipython.py code into ipythonlib.py. Right
4989 now it's just one big dump into a function called make_IPython, so
4994 now it's just one big dump into a function called make_IPython, so
4990 no real modularity has been gained. But at least it makes the
4995 no real modularity has been gained. But at least it makes the
4991 wrapper script tiny, and since ipythonlib is a module, it gets
4996 wrapper script tiny, and since ipythonlib is a module, it gets
4992 compiled and startup is much faster.
4997 compiled and startup is much faster.
4993
4998
4994 This is a reasobably 'deep' change, so we should test it for a
4999 This is a reasobably 'deep' change, so we should test it for a
4995 while without messing too much more with the code.
5000 while without messing too much more with the code.
4996
5001
4997 2001-11-21 Fernando Perez <fperez@colorado.edu>
5002 2001-11-21 Fernando Perez <fperez@colorado.edu>
4998
5003
4999 * Version 0.1.11 released, 0.1.12 opened for further work.
5004 * Version 0.1.11 released, 0.1.12 opened for further work.
5000
5005
5001 * Removed dependency on Itpl. It was only needed in one place. It
5006 * Removed dependency on Itpl. It was only needed in one place. It
5002 would be nice if this became part of python, though. It makes life
5007 would be nice if this became part of python, though. It makes life
5003 *a lot* easier in some cases.
5008 *a lot* easier in some cases.
5004
5009
5005 * Simplified the prefilter code a bit. Now all handlers are
5010 * Simplified the prefilter code a bit. Now all handlers are
5006 expected to explicitly return a value (at least a blank string).
5011 expected to explicitly return a value (at least a blank string).
5007
5012
5008 * Heavy edits in ipplib. Removed the help system altogether. Now
5013 * Heavy edits in ipplib. Removed the help system altogether. Now
5009 obj?/?? is used for inspecting objects, a magic @doc prints
5014 obj?/?? is used for inspecting objects, a magic @doc prints
5010 docstrings, and full-blown Python help is accessed via the 'help'
5015 docstrings, and full-blown Python help is accessed via the 'help'
5011 keyword. This cleans up a lot of code (less to maintain) and does
5016 keyword. This cleans up a lot of code (less to maintain) and does
5012 the job. Since 'help' is now a standard Python component, might as
5017 the job. Since 'help' is now a standard Python component, might as
5013 well use it and remove duplicate functionality.
5018 well use it and remove duplicate functionality.
5014
5019
5015 Also removed the option to use ipplib as a standalone program. By
5020 Also removed the option to use ipplib as a standalone program. By
5016 now it's too dependent on other parts of IPython to function alone.
5021 now it's too dependent on other parts of IPython to function alone.
5017
5022
5018 * Fixed bug in genutils.pager. It would crash if the pager was
5023 * Fixed bug in genutils.pager. It would crash if the pager was
5019 exited immediately after opening (broken pipe).
5024 exited immediately after opening (broken pipe).
5020
5025
5021 * Trimmed down the VerboseTB reporting a little. The header is
5026 * Trimmed down the VerboseTB reporting a little. The header is
5022 much shorter now and the repeated exception arguments at the end
5027 much shorter now and the repeated exception arguments at the end
5023 have been removed. For interactive use the old header seemed a bit
5028 have been removed. For interactive use the old header seemed a bit
5024 excessive.
5029 excessive.
5025
5030
5026 * Fixed small bug in output of @whos for variables with multi-word
5031 * Fixed small bug in output of @whos for variables with multi-word
5027 types (only first word was displayed).
5032 types (only first word was displayed).
5028
5033
5029 2001-11-17 Fernando Perez <fperez@colorado.edu>
5034 2001-11-17 Fernando Perez <fperez@colorado.edu>
5030
5035
5031 * Version 0.1.10 released, 0.1.11 opened for further work.
5036 * Version 0.1.10 released, 0.1.11 opened for further work.
5032
5037
5033 * Modified dirs and friends. dirs now *returns* the stack (not
5038 * Modified dirs and friends. dirs now *returns* the stack (not
5034 prints), so one can manipulate it as a variable. Convenient to
5039 prints), so one can manipulate it as a variable. Convenient to
5035 travel along many directories.
5040 travel along many directories.
5036
5041
5037 * Fixed bug in magic_pdef: would only work with functions with
5042 * Fixed bug in magic_pdef: would only work with functions with
5038 arguments with default values.
5043 arguments with default values.
5039
5044
5040 2001-11-14 Fernando Perez <fperez@colorado.edu>
5045 2001-11-14 Fernando Perez <fperez@colorado.edu>
5041
5046
5042 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5047 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5043 example with IPython. Various other minor fixes and cleanups.
5048 example with IPython. Various other minor fixes and cleanups.
5044
5049
5045 * Version 0.1.9 released, 0.1.10 opened for further work.
5050 * Version 0.1.9 released, 0.1.10 opened for further work.
5046
5051
5047 * Added sys.path to the list of directories searched in the
5052 * Added sys.path to the list of directories searched in the
5048 execfile= option. It used to be the current directory and the
5053 execfile= option. It used to be the current directory and the
5049 user's IPYTHONDIR only.
5054 user's IPYTHONDIR only.
5050
5055
5051 2001-11-13 Fernando Perez <fperez@colorado.edu>
5056 2001-11-13 Fernando Perez <fperez@colorado.edu>
5052
5057
5053 * Reinstated the raw_input/prefilter separation that Janko had
5058 * Reinstated the raw_input/prefilter separation that Janko had
5054 initially. This gives a more convenient setup for extending the
5059 initially. This gives a more convenient setup for extending the
5055 pre-processor from the outside: raw_input always gets a string,
5060 pre-processor from the outside: raw_input always gets a string,
5056 and prefilter has to process it. We can then redefine prefilter
5061 and prefilter has to process it. We can then redefine prefilter
5057 from the outside and implement extensions for special
5062 from the outside and implement extensions for special
5058 purposes.
5063 purposes.
5059
5064
5060 Today I got one for inputting PhysicalQuantity objects
5065 Today I got one for inputting PhysicalQuantity objects
5061 (from Scientific) without needing any function calls at
5066 (from Scientific) without needing any function calls at
5062 all. Extremely convenient, and it's all done as a user-level
5067 all. Extremely convenient, and it's all done as a user-level
5063 extension (no IPython code was touched). Now instead of:
5068 extension (no IPython code was touched). Now instead of:
5064 a = PhysicalQuantity(4.2,'m/s**2')
5069 a = PhysicalQuantity(4.2,'m/s**2')
5065 one can simply say
5070 one can simply say
5066 a = 4.2 m/s**2
5071 a = 4.2 m/s**2
5067 or even
5072 or even
5068 a = 4.2 m/s^2
5073 a = 4.2 m/s^2
5069
5074
5070 I use this, but it's also a proof of concept: IPython really is
5075 I use this, but it's also a proof of concept: IPython really is
5071 fully user-extensible, even at the level of the parsing of the
5076 fully user-extensible, even at the level of the parsing of the
5072 command line. It's not trivial, but it's perfectly doable.
5077 command line. It's not trivial, but it's perfectly doable.
5073
5078
5074 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5079 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5075 the problem of modules being loaded in the inverse order in which
5080 the problem of modules being loaded in the inverse order in which
5076 they were defined in
5081 they were defined in
5077
5082
5078 * Version 0.1.8 released, 0.1.9 opened for further work.
5083 * Version 0.1.8 released, 0.1.9 opened for further work.
5079
5084
5080 * Added magics pdef, source and file. They respectively show the
5085 * Added magics pdef, source and file. They respectively show the
5081 definition line ('prototype' in C), source code and full python
5086 definition line ('prototype' in C), source code and full python
5082 file for any callable object. The object inspector oinfo uses
5087 file for any callable object. The object inspector oinfo uses
5083 these to show the same information.
5088 these to show the same information.
5084
5089
5085 * Version 0.1.7 released, 0.1.8 opened for further work.
5090 * Version 0.1.7 released, 0.1.8 opened for further work.
5086
5091
5087 * Separated all the magic functions into a class called Magic. The
5092 * Separated all the magic functions into a class called Magic. The
5088 InteractiveShell class was becoming too big for Xemacs to handle
5093 InteractiveShell class was becoming too big for Xemacs to handle
5089 (de-indenting a line would lock it up for 10 seconds while it
5094 (de-indenting a line would lock it up for 10 seconds while it
5090 backtracked on the whole class!)
5095 backtracked on the whole class!)
5091
5096
5092 FIXME: didn't work. It can be done, but right now namespaces are
5097 FIXME: didn't work. It can be done, but right now namespaces are
5093 all messed up. Do it later (reverted it for now, so at least
5098 all messed up. Do it later (reverted it for now, so at least
5094 everything works as before).
5099 everything works as before).
5095
5100
5096 * Got the object introspection system (magic_oinfo) working! I
5101 * Got the object introspection system (magic_oinfo) working! I
5097 think this is pretty much ready for release to Janko, so he can
5102 think this is pretty much ready for release to Janko, so he can
5098 test it for a while and then announce it. Pretty much 100% of what
5103 test it for a while and then announce it. Pretty much 100% of what
5099 I wanted for the 'phase 1' release is ready. Happy, tired.
5104 I wanted for the 'phase 1' release is ready. Happy, tired.
5100
5105
5101 2001-11-12 Fernando Perez <fperez@colorado.edu>
5106 2001-11-12 Fernando Perez <fperez@colorado.edu>
5102
5107
5103 * Version 0.1.6 released, 0.1.7 opened for further work.
5108 * Version 0.1.6 released, 0.1.7 opened for further work.
5104
5109
5105 * Fixed bug in printing: it used to test for truth before
5110 * Fixed bug in printing: it used to test for truth before
5106 printing, so 0 wouldn't print. Now checks for None.
5111 printing, so 0 wouldn't print. Now checks for None.
5107
5112
5108 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5113 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5109 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5114 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5110 reaches by hand into the outputcache. Think of a better way to do
5115 reaches by hand into the outputcache. Think of a better way to do
5111 this later.
5116 this later.
5112
5117
5113 * Various small fixes thanks to Nathan's comments.
5118 * Various small fixes thanks to Nathan's comments.
5114
5119
5115 * Changed magic_pprint to magic_Pprint. This way it doesn't
5120 * Changed magic_pprint to magic_Pprint. This way it doesn't
5116 collide with pprint() and the name is consistent with the command
5121 collide with pprint() and the name is consistent with the command
5117 line option.
5122 line option.
5118
5123
5119 * Changed prompt counter behavior to be fully like
5124 * Changed prompt counter behavior to be fully like
5120 Mathematica's. That is, even input that doesn't return a result
5125 Mathematica's. That is, even input that doesn't return a result
5121 raises the prompt counter. The old behavior was kind of confusing
5126 raises the prompt counter. The old behavior was kind of confusing
5122 (getting the same prompt number several times if the operation
5127 (getting the same prompt number several times if the operation
5123 didn't return a result).
5128 didn't return a result).
5124
5129
5125 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5130 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5126
5131
5127 * Fixed -Classic mode (wasn't working anymore).
5132 * Fixed -Classic mode (wasn't working anymore).
5128
5133
5129 * Added colored prompts using Nathan's new code. Colors are
5134 * Added colored prompts using Nathan's new code. Colors are
5130 currently hardwired, they can be user-configurable. For
5135 currently hardwired, they can be user-configurable. For
5131 developers, they can be chosen in file ipythonlib.py, at the
5136 developers, they can be chosen in file ipythonlib.py, at the
5132 beginning of the CachedOutput class def.
5137 beginning of the CachedOutput class def.
5133
5138
5134 2001-11-11 Fernando Perez <fperez@colorado.edu>
5139 2001-11-11 Fernando Perez <fperez@colorado.edu>
5135
5140
5136 * Version 0.1.5 released, 0.1.6 opened for further work.
5141 * Version 0.1.5 released, 0.1.6 opened for further work.
5137
5142
5138 * Changed magic_env to *return* the environment as a dict (not to
5143 * Changed magic_env to *return* the environment as a dict (not to
5139 print it). This way it prints, but it can also be processed.
5144 print it). This way it prints, but it can also be processed.
5140
5145
5141 * Added Verbose exception reporting to interactive
5146 * Added Verbose exception reporting to interactive
5142 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5147 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5143 traceback. Had to make some changes to the ultraTB file. This is
5148 traceback. Had to make some changes to the ultraTB file. This is
5144 probably the last 'big' thing in my mental todo list. This ties
5149 probably the last 'big' thing in my mental todo list. This ties
5145 in with the next entry:
5150 in with the next entry:
5146
5151
5147 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5152 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5148 has to specify is Plain, Color or Verbose for all exception
5153 has to specify is Plain, Color or Verbose for all exception
5149 handling.
5154 handling.
5150
5155
5151 * Removed ShellServices option. All this can really be done via
5156 * Removed ShellServices option. All this can really be done via
5152 the magic system. It's easier to extend, cleaner and has automatic
5157 the magic system. It's easier to extend, cleaner and has automatic
5153 namespace protection and documentation.
5158 namespace protection and documentation.
5154
5159
5155 2001-11-09 Fernando Perez <fperez@colorado.edu>
5160 2001-11-09 Fernando Perez <fperez@colorado.edu>
5156
5161
5157 * Fixed bug in output cache flushing (missing parameter to
5162 * Fixed bug in output cache flushing (missing parameter to
5158 __init__). Other small bugs fixed (found using pychecker).
5163 __init__). Other small bugs fixed (found using pychecker).
5159
5164
5160 * Version 0.1.4 opened for bugfixing.
5165 * Version 0.1.4 opened for bugfixing.
5161
5166
5162 2001-11-07 Fernando Perez <fperez@colorado.edu>
5167 2001-11-07 Fernando Perez <fperez@colorado.edu>
5163
5168
5164 * Version 0.1.3 released, mainly because of the raw_input bug.
5169 * Version 0.1.3 released, mainly because of the raw_input bug.
5165
5170
5166 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5171 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5167 and when testing for whether things were callable, a call could
5172 and when testing for whether things were callable, a call could
5168 actually be made to certain functions. They would get called again
5173 actually be made to certain functions. They would get called again
5169 once 'really' executed, with a resulting double call. A disaster
5174 once 'really' executed, with a resulting double call. A disaster
5170 in many cases (list.reverse() would never work!).
5175 in many cases (list.reverse() would never work!).
5171
5176
5172 * Removed prefilter() function, moved its code to raw_input (which
5177 * Removed prefilter() function, moved its code to raw_input (which
5173 after all was just a near-empty caller for prefilter). This saves
5178 after all was just a near-empty caller for prefilter). This saves
5174 a function call on every prompt, and simplifies the class a tiny bit.
5179 a function call on every prompt, and simplifies the class a tiny bit.
5175
5180
5176 * Fix _ip to __ip name in magic example file.
5181 * Fix _ip to __ip name in magic example file.
5177
5182
5178 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5183 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5179 work with non-gnu versions of tar.
5184 work with non-gnu versions of tar.
5180
5185
5181 2001-11-06 Fernando Perez <fperez@colorado.edu>
5186 2001-11-06 Fernando Perez <fperez@colorado.edu>
5182
5187
5183 * Version 0.1.2. Just to keep track of the recent changes.
5188 * Version 0.1.2. Just to keep track of the recent changes.
5184
5189
5185 * Fixed nasty bug in output prompt routine. It used to check 'if
5190 * Fixed nasty bug in output prompt routine. It used to check 'if
5186 arg != None...'. Problem is, this fails if arg implements a
5191 arg != None...'. Problem is, this fails if arg implements a
5187 special comparison (__cmp__) which disallows comparing to
5192 special comparison (__cmp__) which disallows comparing to
5188 None. Found it when trying to use the PhysicalQuantity module from
5193 None. Found it when trying to use the PhysicalQuantity module from
5189 ScientificPython.
5194 ScientificPython.
5190
5195
5191 2001-11-05 Fernando Perez <fperez@colorado.edu>
5196 2001-11-05 Fernando Perez <fperez@colorado.edu>
5192
5197
5193 * Also added dirs. Now the pushd/popd/dirs family functions
5198 * Also added dirs. Now the pushd/popd/dirs family functions
5194 basically like the shell, with the added convenience of going home
5199 basically like the shell, with the added convenience of going home
5195 when called with no args.
5200 when called with no args.
5196
5201
5197 * pushd/popd slightly modified to mimic shell behavior more
5202 * pushd/popd slightly modified to mimic shell behavior more
5198 closely.
5203 closely.
5199
5204
5200 * Added env,pushd,popd from ShellServices as magic functions. I
5205 * Added env,pushd,popd from ShellServices as magic functions. I
5201 think the cleanest will be to port all desired functions from
5206 think the cleanest will be to port all desired functions from
5202 ShellServices as magics and remove ShellServices altogether. This
5207 ShellServices as magics and remove ShellServices altogether. This
5203 will provide a single, clean way of adding functionality
5208 will provide a single, clean way of adding functionality
5204 (shell-type or otherwise) to IP.
5209 (shell-type or otherwise) to IP.
5205
5210
5206 2001-11-04 Fernando Perez <fperez@colorado.edu>
5211 2001-11-04 Fernando Perez <fperez@colorado.edu>
5207
5212
5208 * Added .ipython/ directory to sys.path. This way users can keep
5213 * Added .ipython/ directory to sys.path. This way users can keep
5209 customizations there and access them via import.
5214 customizations there and access them via import.
5210
5215
5211 2001-11-03 Fernando Perez <fperez@colorado.edu>
5216 2001-11-03 Fernando Perez <fperez@colorado.edu>
5212
5217
5213 * Opened version 0.1.1 for new changes.
5218 * Opened version 0.1.1 for new changes.
5214
5219
5215 * Changed version number to 0.1.0: first 'public' release, sent to
5220 * Changed version number to 0.1.0: first 'public' release, sent to
5216 Nathan and Janko.
5221 Nathan and Janko.
5217
5222
5218 * Lots of small fixes and tweaks.
5223 * Lots of small fixes and tweaks.
5219
5224
5220 * Minor changes to whos format. Now strings are shown, snipped if
5225 * Minor changes to whos format. Now strings are shown, snipped if
5221 too long.
5226 too long.
5222
5227
5223 * Changed ShellServices to work on __main__ so they show up in @who
5228 * Changed ShellServices to work on __main__ so they show up in @who
5224
5229
5225 * Help also works with ? at the end of a line:
5230 * Help also works with ? at the end of a line:
5226 ?sin and sin?
5231 ?sin and sin?
5227 both produce the same effect. This is nice, as often I use the
5232 both produce the same effect. This is nice, as often I use the
5228 tab-complete to find the name of a method, but I used to then have
5233 tab-complete to find the name of a method, but I used to then have
5229 to go to the beginning of the line to put a ? if I wanted more
5234 to go to the beginning of the line to put a ? if I wanted more
5230 info. Now I can just add the ? and hit return. Convenient.
5235 info. Now I can just add the ? and hit return. Convenient.
5231
5236
5232 2001-11-02 Fernando Perez <fperez@colorado.edu>
5237 2001-11-02 Fernando Perez <fperez@colorado.edu>
5233
5238
5234 * Python version check (>=2.1) added.
5239 * Python version check (>=2.1) added.
5235
5240
5236 * Added LazyPython documentation. At this point the docs are quite
5241 * Added LazyPython documentation. At this point the docs are quite
5237 a mess. A cleanup is in order.
5242 a mess. A cleanup is in order.
5238
5243
5239 * Auto-installer created. For some bizarre reason, the zipfiles
5244 * Auto-installer created. For some bizarre reason, the zipfiles
5240 module isn't working on my system. So I made a tar version
5245 module isn't working on my system. So I made a tar version
5241 (hopefully the command line options in various systems won't kill
5246 (hopefully the command line options in various systems won't kill
5242 me).
5247 me).
5243
5248
5244 * Fixes to Struct in genutils. Now all dictionary-like methods are
5249 * Fixes to Struct in genutils. Now all dictionary-like methods are
5245 protected (reasonably).
5250 protected (reasonably).
5246
5251
5247 * Added pager function to genutils and changed ? to print usage
5252 * Added pager function to genutils and changed ? to print usage
5248 note through it (it was too long).
5253 note through it (it was too long).
5249
5254
5250 * Added the LazyPython functionality. Works great! I changed the
5255 * Added the LazyPython functionality. Works great! I changed the
5251 auto-quote escape to ';', it's on home row and next to '. But
5256 auto-quote escape to ';', it's on home row and next to '. But
5252 both auto-quote and auto-paren (still /) escapes are command-line
5257 both auto-quote and auto-paren (still /) escapes are command-line
5253 parameters.
5258 parameters.
5254
5259
5255
5260
5256 2001-11-01 Fernando Perez <fperez@colorado.edu>
5261 2001-11-01 Fernando Perez <fperez@colorado.edu>
5257
5262
5258 * Version changed to 0.0.7. Fairly large change: configuration now
5263 * Version changed to 0.0.7. Fairly large change: configuration now
5259 is all stored in a directory, by default .ipython. There, all
5264 is all stored in a directory, by default .ipython. There, all
5260 config files have normal looking names (not .names)
5265 config files have normal looking names (not .names)
5261
5266
5262 * Version 0.0.6 Released first to Lucas and Archie as a test
5267 * Version 0.0.6 Released first to Lucas and Archie as a test
5263 run. Since it's the first 'semi-public' release, change version to
5268 run. Since it's the first 'semi-public' release, change version to
5264 > 0.0.6 for any changes now.
5269 > 0.0.6 for any changes now.
5265
5270
5266 * Stuff I had put in the ipplib.py changelog:
5271 * Stuff I had put in the ipplib.py changelog:
5267
5272
5268 Changes to InteractiveShell:
5273 Changes to InteractiveShell:
5269
5274
5270 - Made the usage message a parameter.
5275 - Made the usage message a parameter.
5271
5276
5272 - Require the name of the shell variable to be given. It's a bit
5277 - Require the name of the shell variable to be given. It's a bit
5273 of a hack, but allows the name 'shell' not to be hardwire in the
5278 of a hack, but allows the name 'shell' not to be hardwire in the
5274 magic (@) handler, which is problematic b/c it requires
5279 magic (@) handler, which is problematic b/c it requires
5275 polluting the global namespace with 'shell'. This in turn is
5280 polluting the global namespace with 'shell'. This in turn is
5276 fragile: if a user redefines a variable called shell, things
5281 fragile: if a user redefines a variable called shell, things
5277 break.
5282 break.
5278
5283
5279 - magic @: all functions available through @ need to be defined
5284 - magic @: all functions available through @ need to be defined
5280 as magic_<name>, even though they can be called simply as
5285 as magic_<name>, even though they can be called simply as
5281 @<name>. This allows the special command @magic to gather
5286 @<name>. This allows the special command @magic to gather
5282 information automatically about all existing magic functions,
5287 information automatically about all existing magic functions,
5283 even if they are run-time user extensions, by parsing the shell
5288 even if they are run-time user extensions, by parsing the shell
5284 instance __dict__ looking for special magic_ names.
5289 instance __dict__ looking for special magic_ names.
5285
5290
5286 - mainloop: added *two* local namespace parameters. This allows
5291 - mainloop: added *two* local namespace parameters. This allows
5287 the class to differentiate between parameters which were there
5292 the class to differentiate between parameters which were there
5288 before and after command line initialization was processed. This
5293 before and after command line initialization was processed. This
5289 way, later @who can show things loaded at startup by the
5294 way, later @who can show things loaded at startup by the
5290 user. This trick was necessary to make session saving/reloading
5295 user. This trick was necessary to make session saving/reloading
5291 really work: ideally after saving/exiting/reloading a session,
5296 really work: ideally after saving/exiting/reloading a session,
5292 *everythin* should look the same, including the output of @who. I
5297 *everythin* should look the same, including the output of @who. I
5293 was only able to make this work with this double namespace
5298 was only able to make this work with this double namespace
5294 trick.
5299 trick.
5295
5300
5296 - added a header to the logfile which allows (almost) full
5301 - added a header to the logfile which allows (almost) full
5297 session restoring.
5302 session restoring.
5298
5303
5299 - prepend lines beginning with @ or !, with a and log
5304 - prepend lines beginning with @ or !, with a and log
5300 them. Why? !lines: may be useful to know what you did @lines:
5305 them. Why? !lines: may be useful to know what you did @lines:
5301 they may affect session state. So when restoring a session, at
5306 they may affect session state. So when restoring a session, at
5302 least inform the user of their presence. I couldn't quite get
5307 least inform the user of their presence. I couldn't quite get
5303 them to properly re-execute, but at least the user is warned.
5308 them to properly re-execute, but at least the user is warned.
5304
5309
5305 * Started ChangeLog.
5310 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now