##// END OF EJS Templates
honor -ipythondir flag correctly at initialization time.
fperez -
Show More
@@ -1,753 +1,753 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """
2 """
3 IPython -- An enhanced Interactive Python
3 IPython -- An enhanced Interactive Python
4
4
5 Requires Python 2.1 or better.
5 Requires Python 2.1 or better.
6
6
7 This file contains the main make_IPython() starter function.
7 This file contains the main make_IPython() starter function.
8
8
9 $Id: ipmaker.py 1330 2006-05-26 22:34:48Z fperez $"""
9 $Id: ipmaker.py 1346 2006-06-03 23:55:15Z fperez $"""
10
10
11 #*****************************************************************************
11 #*****************************************************************************
12 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
12 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
13 #
13 #
14 # Distributed under the terms of the BSD License. The full license is in
14 # Distributed under the terms of the BSD License. The full license is in
15 # the file COPYING, distributed as part of this software.
15 # the file COPYING, distributed as part of this software.
16 #*****************************************************************************
16 #*****************************************************************************
17
17
18 from IPython import Release
18 from IPython import Release
19 __author__ = '%s <%s>' % Release.authors['Fernando']
19 __author__ = '%s <%s>' % Release.authors['Fernando']
20 __license__ = Release.license
20 __license__ = Release.license
21 __version__ = Release.version
21 __version__ = Release.version
22
22
23 credits._Printer__data = """
23 credits._Printer__data = """
24 Python: %s
24 Python: %s
25
25
26 IPython: Fernando Perez, Janko Hauser, Nathan Gray, and many users.
26 IPython: Fernando Perez, Janko Hauser, Nathan Gray, and many users.
27 See http://ipython.scipy.org for more information.""" \
27 See http://ipython.scipy.org for more information.""" \
28 % credits._Printer__data
28 % credits._Printer__data
29
29
30 copyright._Printer__data += """
30 copyright._Printer__data += """
31
31
32 Copyright (c) 2001-2004 Fernando Perez, Janko Hauser, Nathan Gray.
32 Copyright (c) 2001-2004 Fernando Perez, Janko Hauser, Nathan Gray.
33 All Rights Reserved."""
33 All Rights Reserved."""
34
34
35 #****************************************************************************
35 #****************************************************************************
36 # Required modules
36 # Required modules
37
37
38 # From the standard library
38 # From the standard library
39 import __main__
39 import __main__
40 import __builtin__
40 import __builtin__
41 import os
41 import os
42 import re
42 import re
43 import sys
43 import sys
44 import types
44 import types
45 from pprint import pprint,pformat
45 from pprint import pprint,pformat
46
46
47 # Our own
47 # Our own
48 from IPython import DPyGetOpt
48 from IPython import DPyGetOpt
49 from IPython.ipstruct import Struct
49 from IPython.ipstruct import Struct
50 from IPython.OutputTrap import OutputTrap
50 from IPython.OutputTrap import OutputTrap
51 from IPython.ConfigLoader import ConfigLoader
51 from IPython.ConfigLoader import ConfigLoader
52 from IPython.iplib import InteractiveShell
52 from IPython.iplib import InteractiveShell
53 from IPython.usage import cmd_line_usage,interactive_usage
53 from IPython.usage import cmd_line_usage,interactive_usage
54 from IPython.genutils import *
54 from IPython.genutils import *
55
55
56 #-----------------------------------------------------------------------------
56 #-----------------------------------------------------------------------------
57 def make_IPython(argv=None,user_ns=None,user_global_ns=None,debug=1,
57 def make_IPython(argv=None,user_ns=None,user_global_ns=None,debug=1,
58 rc_override=None,shell_class=InteractiveShell,
58 rc_override=None,shell_class=InteractiveShell,
59 embedded=False,**kw):
59 embedded=False,**kw):
60 """This is a dump of IPython into a single function.
60 """This is a dump of IPython into a single function.
61
61
62 Later it will have to be broken up in a sensible manner.
62 Later it will have to be broken up in a sensible manner.
63
63
64 Arguments:
64 Arguments:
65
65
66 - argv: a list similar to sys.argv[1:]. It should NOT contain the desired
66 - argv: a list similar to sys.argv[1:]. It should NOT contain the desired
67 script name, b/c DPyGetOpt strips the first argument only for the real
67 script name, b/c DPyGetOpt strips the first argument only for the real
68 sys.argv.
68 sys.argv.
69
69
70 - user_ns: a dict to be used as the user's namespace."""
70 - user_ns: a dict to be used as the user's namespace."""
71
71
72 #----------------------------------------------------------------------
72 #----------------------------------------------------------------------
73 # Defaults and initialization
73 # Defaults and initialization
74
74
75 # For developer debugging, deactivates crash handler and uses pdb.
75 # For developer debugging, deactivates crash handler and uses pdb.
76 DEVDEBUG = False
76 DEVDEBUG = False
77
77
78 if argv is None:
78 if argv is None:
79 argv = sys.argv
79 argv = sys.argv
80
80
81 # __IP is the main global that lives throughout and represents the whole
81 # __IP is the main global that lives throughout and represents the whole
82 # application. If the user redefines it, all bets are off as to what
82 # application. If the user redefines it, all bets are off as to what
83 # happens.
83 # happens.
84
84
85 # __IP is the name of he global which the caller will have accessible as
85 # __IP is the name of he global which the caller will have accessible as
86 # __IP.name. We set its name via the first parameter passed to
86 # __IP.name. We set its name via the first parameter passed to
87 # InteractiveShell:
87 # InteractiveShell:
88
88
89 IP = shell_class('__IP',user_ns=user_ns,user_global_ns=user_global_ns,
89 IP = shell_class('__IP',user_ns=user_ns,user_global_ns=user_global_ns,
90 embedded=embedded,**kw)
90 embedded=embedded,**kw)
91
91
92 # Put 'help' in the user namespace
92 # Put 'help' in the user namespace
93 from site import _Helper
93 from site import _Helper
94 IP.user_ns['help'] = _Helper()
94 IP.user_ns['help'] = _Helper()
95
95
96
96
97 if DEVDEBUG:
97 if DEVDEBUG:
98 # For developer debugging only (global flag)
98 # For developer debugging only (global flag)
99 from IPython import ultraTB
99 from IPython import ultraTB
100 sys.excepthook = ultraTB.VerboseTB(call_pdb=1)
100 sys.excepthook = ultraTB.VerboseTB(call_pdb=1)
101
101
102 IP.BANNER_PARTS = ['Python %s\n'
102 IP.BANNER_PARTS = ['Python %s\n'
103 'Type "copyright", "credits" or "license" '
103 'Type "copyright", "credits" or "license" '
104 'for more information.\n'
104 'for more information.\n'
105 % (sys.version.split('\n')[0],),
105 % (sys.version.split('\n')[0],),
106 "IPython %s -- An enhanced Interactive Python."
106 "IPython %s -- An enhanced Interactive Python."
107 % (__version__,),
107 % (__version__,),
108 """? -> Introduction to IPython's features.
108 """? -> Introduction to IPython's features.
109 %magic -> Information about IPython's 'magic' % functions.
109 %magic -> Information about IPython's 'magic' % functions.
110 help -> Python's own help system.
110 help -> Python's own help system.
111 object? -> Details about 'object'. ?object also works, ?? prints more.
111 object? -> Details about 'object'. ?object also works, ?? prints more.
112 """ ]
112 """ ]
113
113
114 IP.usage = interactive_usage
114 IP.usage = interactive_usage
115
115
116 # Platform-dependent suffix and directory names. We use _ipython instead
116 # Platform-dependent suffix and directory names. We use _ipython instead
117 # of .ipython under win32 b/c there's software that breaks with .named
117 # of .ipython under win32 b/c there's software that breaks with .named
118 # directories on that platform.
118 # directories on that platform.
119 if os.name == 'posix':
119 if os.name == 'posix':
120 rc_suffix = ''
120 rc_suffix = ''
121 ipdir_def = '.ipython'
121 ipdir_def = '.ipython'
122 else:
122 else:
123 rc_suffix = '.ini'
123 rc_suffix = '.ini'
124 ipdir_def = '_ipython'
124 ipdir_def = '_ipython'
125
125
126 # default directory for configuration
126 # default directory for configuration
127 ipythondir = os.path.abspath(os.environ.get('IPYTHONDIR',
127 ipythondir_def = os.path.abspath(os.environ.get('IPYTHONDIR',
128 os.path.join(IP.home_dir,ipdir_def)))
128 os.path.join(IP.home_dir,ipdir_def)))
129
129
130 # add personal .ipython dir to sys.path so that users can put things in
131 # there for customization
132 sys.path.append(ipythondir)
133
134 sys.path.insert(0, '') # add . to sys.path. Fix from Prabhu Ramachandran
130 sys.path.insert(0, '') # add . to sys.path. Fix from Prabhu Ramachandran
135
131
136 # we need the directory where IPython itself is installed
132 # we need the directory where IPython itself is installed
137 import IPython
133 import IPython
138 IPython_dir = os.path.dirname(IPython.__file__)
134 IPython_dir = os.path.dirname(IPython.__file__)
139 del IPython
135 del IPython
140
136
141 #-------------------------------------------------------------------------
137 #-------------------------------------------------------------------------
142 # Command line handling
138 # Command line handling
143
139
144 # Valid command line options (uses DPyGetOpt syntax, like Perl's
140 # Valid command line options (uses DPyGetOpt syntax, like Perl's
145 # GetOpt::Long)
141 # GetOpt::Long)
146
142
147 # Any key not listed here gets deleted even if in the file (like session
143 # Any key not listed here gets deleted even if in the file (like session
148 # or profile). That's deliberate, to maintain the rc namespace clean.
144 # or profile). That's deliberate, to maintain the rc namespace clean.
149
145
150 # Each set of options appears twice: under _conv only the names are
146 # Each set of options appears twice: under _conv only the names are
151 # listed, indicating which type they must be converted to when reading the
147 # listed, indicating which type they must be converted to when reading the
152 # ipythonrc file. And under DPyGetOpt they are listed with the regular
148 # ipythonrc file. And under DPyGetOpt they are listed with the regular
153 # DPyGetOpt syntax (=s,=i,:f,etc).
149 # DPyGetOpt syntax (=s,=i,:f,etc).
154
150
155 # Make sure there's a space before each end of line (they get auto-joined!)
151 # Make sure there's a space before each end of line (they get auto-joined!)
156 cmdline_opts = ('autocall=i autoindent! automagic! banner! cache_size|cs=i '
152 cmdline_opts = ('autocall=i autoindent! automagic! banner! cache_size|cs=i '
157 'c=s classic|cl color_info! colors=s confirm_exit! '
153 'c=s classic|cl color_info! colors=s confirm_exit! '
158 'debug! deep_reload! editor=s log|l messages! nosep '
154 'debug! deep_reload! editor=s log|l messages! nosep '
159 'object_info_string_level=i pdb! '
155 'object_info_string_level=i pdb! '
160 'pprint! prompt_in1|pi1=s prompt_in2|pi2=s prompt_out|po=s '
156 'pprint! prompt_in1|pi1=s prompt_in2|pi2=s prompt_out|po=s '
161 'quick screen_length|sl=i prompts_pad_left=i '
157 'quick screen_length|sl=i prompts_pad_left=i '
162 'logfile|lf=s logplay|lp=s profile|p=s '
158 'logfile|lf=s logplay|lp=s profile|p=s '
163 'readline! readline_merge_completions! '
159 'readline! readline_merge_completions! '
164 'readline_omit__names! '
160 'readline_omit__names! '
165 'rcfile=s separate_in|si=s separate_out|so=s '
161 'rcfile=s separate_in|si=s separate_out|so=s '
166 'separate_out2|so2=s xmode=s wildcards_case_sensitive! '
162 'separate_out2|so2=s xmode=s wildcards_case_sensitive! '
167 'magic_docstrings system_verbose! '
163 'magic_docstrings system_verbose! '
168 'multi_line_specials! '
164 'multi_line_specials! '
169 'wxversion=s '
165 'wxversion=s '
170 'autoedit_syntax!')
166 'autoedit_syntax!')
171
167
172 # Options that can *only* appear at the cmd line (not in rcfiles).
168 # Options that can *only* appear at the cmd line (not in rcfiles).
173
169
174 # The "ignore" option is a kludge so that Emacs buffers don't crash, since
170 # The "ignore" option is a kludge so that Emacs buffers don't crash, since
175 # the 'C-c !' command in emacs automatically appends a -i option at the end.
171 # the 'C-c !' command in emacs automatically appends a -i option at the end.
176 cmdline_only = ('help ignore|i ipythondir=s Version upgrade '
172 cmdline_only = ('help ignore|i ipythondir=s Version upgrade '
177 'gthread! qthread! wthread! pylab! tk!')
173 'gthread! qthread! wthread! pylab! tk!')
178
174
179 # Build the actual name list to be used by DPyGetOpt
175 # Build the actual name list to be used by DPyGetOpt
180 opts_names = qw(cmdline_opts) + qw(cmdline_only)
176 opts_names = qw(cmdline_opts) + qw(cmdline_only)
181
177
182 # Set sensible command line defaults.
178 # Set sensible command line defaults.
183 # This should have everything from cmdline_opts and cmdline_only
179 # This should have everything from cmdline_opts and cmdline_only
184 opts_def = Struct(autocall = 1,
180 opts_def = Struct(autocall = 1,
185 autoedit_syntax = 0,
181 autoedit_syntax = 0,
186 autoindent = 0,
182 autoindent = 0,
187 automagic = 1,
183 automagic = 1,
188 banner = 1,
184 banner = 1,
189 cache_size = 1000,
185 cache_size = 1000,
190 c = '',
186 c = '',
191 classic = 0,
187 classic = 0,
192 colors = 'NoColor',
188 colors = 'NoColor',
193 color_info = 0,
189 color_info = 0,
194 confirm_exit = 1,
190 confirm_exit = 1,
195 debug = 0,
191 debug = 0,
196 deep_reload = 0,
192 deep_reload = 0,
197 editor = '0',
193 editor = '0',
198 help = 0,
194 help = 0,
199 ignore = 0,
195 ignore = 0,
200 ipythondir = ipythondir,
196 ipythondir = ipythondir_def,
201 log = 0,
197 log = 0,
202 logfile = '',
198 logfile = '',
203 logplay = '',
199 logplay = '',
204 multi_line_specials = 1,
200 multi_line_specials = 1,
205 messages = 1,
201 messages = 1,
206 object_info_string_level = 0,
202 object_info_string_level = 0,
207 nosep = 0,
203 nosep = 0,
208 pdb = 0,
204 pdb = 0,
209 pprint = 0,
205 pprint = 0,
210 profile = '',
206 profile = '',
211 prompt_in1 = 'In [\\#]: ',
207 prompt_in1 = 'In [\\#]: ',
212 prompt_in2 = ' .\\D.: ',
208 prompt_in2 = ' .\\D.: ',
213 prompt_out = 'Out[\\#]: ',
209 prompt_out = 'Out[\\#]: ',
214 prompts_pad_left = 1,
210 prompts_pad_left = 1,
215 quick = 0,
211 quick = 0,
216 readline = 1,
212 readline = 1,
217 readline_merge_completions = 1,
213 readline_merge_completions = 1,
218 readline_omit__names = 0,
214 readline_omit__names = 0,
219 rcfile = 'ipythonrc' + rc_suffix,
215 rcfile = 'ipythonrc' + rc_suffix,
220 screen_length = 0,
216 screen_length = 0,
221 separate_in = '\n',
217 separate_in = '\n',
222 separate_out = '\n',
218 separate_out = '\n',
223 separate_out2 = '',
219 separate_out2 = '',
224 system_verbose = 0,
220 system_verbose = 0,
225 gthread = 0,
221 gthread = 0,
226 qthread = 0,
222 qthread = 0,
227 wthread = 0,
223 wthread = 0,
228 pylab = 0,
224 pylab = 0,
229 tk = 0,
225 tk = 0,
230 upgrade = 0,
226 upgrade = 0,
231 Version = 0,
227 Version = 0,
232 xmode = 'Verbose',
228 xmode = 'Verbose',
233 wildcards_case_sensitive = 1,
229 wildcards_case_sensitive = 1,
234 wxversion = '0',
230 wxversion = '0',
235 magic_docstrings = 0, # undocumented, for doc generation
231 magic_docstrings = 0, # undocumented, for doc generation
236 )
232 )
237
233
238 # Things that will *only* appear in rcfiles (not at the command line).
234 # Things that will *only* appear in rcfiles (not at the command line).
239 # Make sure there's a space before each end of line (they get auto-joined!)
235 # Make sure there's a space before each end of line (they get auto-joined!)
240 rcfile_opts = { qwflat: 'include import_mod import_all execfile ',
236 rcfile_opts = { qwflat: 'include import_mod import_all execfile ',
241 qw_lol: 'import_some ',
237 qw_lol: 'import_some ',
242 # for things with embedded whitespace:
238 # for things with embedded whitespace:
243 list_strings:'execute alias readline_parse_and_bind ',
239 list_strings:'execute alias readline_parse_and_bind ',
244 # Regular strings need no conversion:
240 # Regular strings need no conversion:
245 None:'readline_remove_delims ',
241 None:'readline_remove_delims ',
246 }
242 }
247 # Default values for these
243 # Default values for these
248 rc_def = Struct(include = [],
244 rc_def = Struct(include = [],
249 import_mod = [],
245 import_mod = [],
250 import_all = [],
246 import_all = [],
251 import_some = [[]],
247 import_some = [[]],
252 execute = [],
248 execute = [],
253 execfile = [],
249 execfile = [],
254 alias = [],
250 alias = [],
255 readline_parse_and_bind = [],
251 readline_parse_and_bind = [],
256 readline_remove_delims = '',
252 readline_remove_delims = '',
257 )
253 )
258
254
259 # Build the type conversion dictionary from the above tables:
255 # Build the type conversion dictionary from the above tables:
260 typeconv = rcfile_opts.copy()
256 typeconv = rcfile_opts.copy()
261 typeconv.update(optstr2types(cmdline_opts))
257 typeconv.update(optstr2types(cmdline_opts))
262
258
263 # FIXME: the None key appears in both, put that back together by hand. Ugly!
259 # FIXME: the None key appears in both, put that back together by hand. Ugly!
264 typeconv[None] += ' ' + rcfile_opts[None]
260 typeconv[None] += ' ' + rcfile_opts[None]
265
261
266 # Remove quotes at ends of all strings (used to protect spaces)
262 # Remove quotes at ends of all strings (used to protect spaces)
267 typeconv[unquote_ends] = typeconv[None]
263 typeconv[unquote_ends] = typeconv[None]
268 del typeconv[None]
264 del typeconv[None]
269
265
270 # Build the list we'll use to make all config decisions with defaults:
266 # Build the list we'll use to make all config decisions with defaults:
271 opts_all = opts_def.copy()
267 opts_all = opts_def.copy()
272 opts_all.update(rc_def)
268 opts_all.update(rc_def)
273
269
274 # Build conflict resolver for recursive loading of config files:
270 # Build conflict resolver for recursive loading of config files:
275 # - preserve means the outermost file maintains the value, it is not
271 # - preserve means the outermost file maintains the value, it is not
276 # overwritten if an included file has the same key.
272 # overwritten if an included file has the same key.
277 # - add_flip applies + to the two values, so it better make sense to add
273 # - add_flip applies + to the two values, so it better make sense to add
278 # those types of keys. But it flips them first so that things loaded
274 # those types of keys. But it flips them first so that things loaded
279 # deeper in the inclusion chain have lower precedence.
275 # deeper in the inclusion chain have lower precedence.
280 conflict = {'preserve': ' '.join([ typeconv[int],
276 conflict = {'preserve': ' '.join([ typeconv[int],
281 typeconv[unquote_ends] ]),
277 typeconv[unquote_ends] ]),
282 'add_flip': ' '.join([ typeconv[qwflat],
278 'add_flip': ' '.join([ typeconv[qwflat],
283 typeconv[qw_lol],
279 typeconv[qw_lol],
284 typeconv[list_strings] ])
280 typeconv[list_strings] ])
285 }
281 }
286
282
287 # Now actually process the command line
283 # Now actually process the command line
288 getopt = DPyGetOpt.DPyGetOpt()
284 getopt = DPyGetOpt.DPyGetOpt()
289 getopt.setIgnoreCase(0)
285 getopt.setIgnoreCase(0)
290
286
291 getopt.parseConfiguration(opts_names)
287 getopt.parseConfiguration(opts_names)
292
288
293 try:
289 try:
294 getopt.processArguments(argv)
290 getopt.processArguments(argv)
295 except:
291 except:
296 print cmd_line_usage
292 print cmd_line_usage
297 warn('\nError in Arguments: ' + `sys.exc_value`)
293 warn('\nError in Arguments: ' + `sys.exc_value`)
298 sys.exit(1)
294 sys.exit(1)
299
295
300 # convert the options dict to a struct for much lighter syntax later
296 # convert the options dict to a struct for much lighter syntax later
301 opts = Struct(getopt.optionValues)
297 opts = Struct(getopt.optionValues)
302 args = getopt.freeValues
298 args = getopt.freeValues
303
299
304 # this is the struct (which has default values at this point) with which
300 # this is the struct (which has default values at this point) with which
305 # we make all decisions:
301 # we make all decisions:
306 opts_all.update(opts)
302 opts_all.update(opts)
307
303
308 # Options that force an immediate exit
304 # Options that force an immediate exit
309 if opts_all.help:
305 if opts_all.help:
310 page(cmd_line_usage)
306 page(cmd_line_usage)
311 sys.exit()
307 sys.exit()
312
308
313 if opts_all.Version:
309 if opts_all.Version:
314 print __version__
310 print __version__
315 sys.exit()
311 sys.exit()
316
312
317 if opts_all.magic_docstrings:
313 if opts_all.magic_docstrings:
318 IP.magic_magic('-latex')
314 IP.magic_magic('-latex')
319 sys.exit()
315 sys.exit()
320
316
317 # add personal ipythondir to sys.path so that users can put things in
318 # there for customization
319 sys.path.append(os.path.abspath(opts_all.ipythondir))
320
321 # Create user config directory if it doesn't exist. This must be done
321 # Create user config directory if it doesn't exist. This must be done
322 # *after* getting the cmd line options.
322 # *after* getting the cmd line options.
323 if not os.path.isdir(opts_all.ipythondir):
323 if not os.path.isdir(opts_all.ipythondir):
324 IP.user_setup(opts_all.ipythondir,rc_suffix,'install')
324 IP.user_setup(opts_all.ipythondir,rc_suffix,'install')
325
325
326 # upgrade user config files while preserving a copy of the originals
326 # upgrade user config files while preserving a copy of the originals
327 if opts_all.upgrade:
327 if opts_all.upgrade:
328 IP.user_setup(opts_all.ipythondir,rc_suffix,'upgrade')
328 IP.user_setup(opts_all.ipythondir,rc_suffix,'upgrade')
329
329
330 # check mutually exclusive options in the *original* command line
330 # check mutually exclusive options in the *original* command line
331 mutex_opts(opts,[qw('log logfile'),qw('rcfile profile'),
331 mutex_opts(opts,[qw('log logfile'),qw('rcfile profile'),
332 qw('classic profile'),qw('classic rcfile')])
332 qw('classic profile'),qw('classic rcfile')])
333
333
334 #---------------------------------------------------------------------------
334 #---------------------------------------------------------------------------
335 # Log replay
335 # Log replay
336
336
337 # if -logplay, we need to 'become' the other session. That basically means
337 # if -logplay, we need to 'become' the other session. That basically means
338 # replacing the current command line environment with that of the old
338 # replacing the current command line environment with that of the old
339 # session and moving on.
339 # session and moving on.
340
340
341 # this is needed so that later we know we're in session reload mode, as
341 # this is needed so that later we know we're in session reload mode, as
342 # opts_all will get overwritten:
342 # opts_all will get overwritten:
343 load_logplay = 0
343 load_logplay = 0
344
344
345 if opts_all.logplay:
345 if opts_all.logplay:
346 load_logplay = opts_all.logplay
346 load_logplay = opts_all.logplay
347 opts_debug_save = opts_all.debug
347 opts_debug_save = opts_all.debug
348 try:
348 try:
349 logplay = open(opts_all.logplay)
349 logplay = open(opts_all.logplay)
350 except IOError:
350 except IOError:
351 if opts_all.debug: IP.InteractiveTB()
351 if opts_all.debug: IP.InteractiveTB()
352 warn('Could not open logplay file '+`opts_all.logplay`)
352 warn('Could not open logplay file '+`opts_all.logplay`)
353 # restore state as if nothing had happened and move on, but make
353 # restore state as if nothing had happened and move on, but make
354 # sure that later we don't try to actually load the session file
354 # sure that later we don't try to actually load the session file
355 logplay = None
355 logplay = None
356 load_logplay = 0
356 load_logplay = 0
357 del opts_all.logplay
357 del opts_all.logplay
358 else:
358 else:
359 try:
359 try:
360 logplay.readline()
360 logplay.readline()
361 logplay.readline();
361 logplay.readline();
362 # this reloads that session's command line
362 # this reloads that session's command line
363 cmd = logplay.readline()[6:]
363 cmd = logplay.readline()[6:]
364 exec cmd
364 exec cmd
365 # restore the true debug flag given so that the process of
365 # restore the true debug flag given so that the process of
366 # session loading itself can be monitored.
366 # session loading itself can be monitored.
367 opts.debug = opts_debug_save
367 opts.debug = opts_debug_save
368 # save the logplay flag so later we don't overwrite the log
368 # save the logplay flag so later we don't overwrite the log
369 opts.logplay = load_logplay
369 opts.logplay = load_logplay
370 # now we must update our own structure with defaults
370 # now we must update our own structure with defaults
371 opts_all.update(opts)
371 opts_all.update(opts)
372 # now load args
372 # now load args
373 cmd = logplay.readline()[6:]
373 cmd = logplay.readline()[6:]
374 exec cmd
374 exec cmd
375 logplay.close()
375 logplay.close()
376 except:
376 except:
377 logplay.close()
377 logplay.close()
378 if opts_all.debug: IP.InteractiveTB()
378 if opts_all.debug: IP.InteractiveTB()
379 warn("Logplay file lacking full configuration information.\n"
379 warn("Logplay file lacking full configuration information.\n"
380 "I'll try to read it, but some things may not work.")
380 "I'll try to read it, but some things may not work.")
381
381
382 #-------------------------------------------------------------------------
382 #-------------------------------------------------------------------------
383 # set up output traps: catch all output from files, being run, modules
383 # set up output traps: catch all output from files, being run, modules
384 # loaded, etc. Then give it to the user in a clean form at the end.
384 # loaded, etc. Then give it to the user in a clean form at the end.
385
385
386 msg_out = 'Output messages. '
386 msg_out = 'Output messages. '
387 msg_err = 'Error messages. '
387 msg_err = 'Error messages. '
388 msg_sep = '\n'
388 msg_sep = '\n'
389 msg = Struct(config = OutputTrap('Configuration Loader',msg_out,
389 msg = Struct(config = OutputTrap('Configuration Loader',msg_out,
390 msg_err,msg_sep,debug,
390 msg_err,msg_sep,debug,
391 quiet_out=1),
391 quiet_out=1),
392 user_exec = OutputTrap('User File Execution',msg_out,
392 user_exec = OutputTrap('User File Execution',msg_out,
393 msg_err,msg_sep,debug),
393 msg_err,msg_sep,debug),
394 logplay = OutputTrap('Log Loader',msg_out,
394 logplay = OutputTrap('Log Loader',msg_out,
395 msg_err,msg_sep,debug),
395 msg_err,msg_sep,debug),
396 summary = ''
396 summary = ''
397 )
397 )
398
398
399 #-------------------------------------------------------------------------
399 #-------------------------------------------------------------------------
400 # Process user ipythonrc-type configuration files
400 # Process user ipythonrc-type configuration files
401
401
402 # turn on output trapping and log to msg.config
402 # turn on output trapping and log to msg.config
403 # remember that with debug on, trapping is actually disabled
403 # remember that with debug on, trapping is actually disabled
404 msg.config.trap_all()
404 msg.config.trap_all()
405
405
406 # look for rcfile in current or default directory
406 # look for rcfile in current or default directory
407 try:
407 try:
408 opts_all.rcfile = filefind(opts_all.rcfile,opts_all.ipythondir)
408 opts_all.rcfile = filefind(opts_all.rcfile,opts_all.ipythondir)
409 except IOError:
409 except IOError:
410 if opts_all.debug: IP.InteractiveTB()
410 if opts_all.debug: IP.InteractiveTB()
411 warn('Configuration file %s not found. Ignoring request.'
411 warn('Configuration file %s not found. Ignoring request.'
412 % (opts_all.rcfile) )
412 % (opts_all.rcfile) )
413
413
414 # 'profiles' are a shorthand notation for config filenames
414 # 'profiles' are a shorthand notation for config filenames
415 if opts_all.profile:
415 if opts_all.profile:
416
416
417 try:
417 try:
418 opts_all.rcfile = filefind('ipythonrc-' + opts_all.profile
418 opts_all.rcfile = filefind('ipythonrc-' + opts_all.profile
419 + rc_suffix,
419 + rc_suffix,
420 opts_all.ipythondir)
420 opts_all.ipythondir)
421 except IOError:
421 except IOError:
422 if opts_all.debug: IP.InteractiveTB()
422 if opts_all.debug: IP.InteractiveTB()
423 opts.profile = '' # remove profile from options if invalid
423 opts.profile = '' # remove profile from options if invalid
424 # We won't warn anymore, primary method is ipy_profile_PROFNAME
424 # We won't warn anymore, primary method is ipy_profile_PROFNAME
425 # which does trigger a warning.
425 # which does trigger a warning.
426
426
427 # load the config file
427 # load the config file
428 rcfiledata = None
428 rcfiledata = None
429 if opts_all.quick:
429 if opts_all.quick:
430 print 'Launching IPython in quick mode. No config file read.'
430 print 'Launching IPython in quick mode. No config file read.'
431 elif opts_all.classic:
431 elif opts_all.classic:
432 print 'Launching IPython in classic mode. No config file read.'
432 print 'Launching IPython in classic mode. No config file read.'
433 elif opts_all.rcfile:
433 elif opts_all.rcfile:
434 try:
434 try:
435 cfg_loader = ConfigLoader(conflict)
435 cfg_loader = ConfigLoader(conflict)
436 rcfiledata = cfg_loader.load(opts_all.rcfile,typeconv,
436 rcfiledata = cfg_loader.load(opts_all.rcfile,typeconv,
437 'include',opts_all.ipythondir,
437 'include',opts_all.ipythondir,
438 purge = 1,
438 purge = 1,
439 unique = conflict['preserve'])
439 unique = conflict['preserve'])
440 except:
440 except:
441 IP.InteractiveTB()
441 IP.InteractiveTB()
442 warn('Problems loading configuration file '+
442 warn('Problems loading configuration file '+
443 `opts_all.rcfile`+
443 `opts_all.rcfile`+
444 '\nStarting with default -bare bones- configuration.')
444 '\nStarting with default -bare bones- configuration.')
445 else:
445 else:
446 warn('No valid configuration file found in either currrent directory\n'+
446 warn('No valid configuration file found in either currrent directory\n'+
447 'or in the IPython config. directory: '+`opts_all.ipythondir`+
447 'or in the IPython config. directory: '+`opts_all.ipythondir`+
448 '\nProceeding with internal defaults.')
448 '\nProceeding with internal defaults.')
449
449
450 #------------------------------------------------------------------------
450 #------------------------------------------------------------------------
451 # Set exception handlers in mode requested by user.
451 # Set exception handlers in mode requested by user.
452 otrap = OutputTrap(trap_out=1) # trap messages from magic_xmode
452 otrap = OutputTrap(trap_out=1) # trap messages from magic_xmode
453 IP.magic_xmode(opts_all.xmode)
453 IP.magic_xmode(opts_all.xmode)
454 otrap.release_out()
454 otrap.release_out()
455
455
456 #------------------------------------------------------------------------
456 #------------------------------------------------------------------------
457 # Execute user config
457 # Execute user config
458
458
459 # Create a valid config structure with the right precedence order:
459 # Create a valid config structure with the right precedence order:
460 # defaults < rcfile < command line. This needs to be in the instance, so
460 # defaults < rcfile < command line. This needs to be in the instance, so
461 # that method calls below that rely on it find it.
461 # that method calls below that rely on it find it.
462 IP.rc = rc_def.copy()
462 IP.rc = rc_def.copy()
463
463
464 # Work with a local alias inside this routine to avoid unnecessary
464 # Work with a local alias inside this routine to avoid unnecessary
465 # attribute lookups.
465 # attribute lookups.
466 IP_rc = IP.rc
466 IP_rc = IP.rc
467
467
468 IP_rc.update(opts_def)
468 IP_rc.update(opts_def)
469 if rcfiledata:
469 if rcfiledata:
470 # now we can update
470 # now we can update
471 IP_rc.update(rcfiledata)
471 IP_rc.update(rcfiledata)
472 IP_rc.update(opts)
472 IP_rc.update(opts)
473 IP_rc.update(rc_override)
473 IP_rc.update(rc_override)
474
474
475 # Store the original cmd line for reference:
475 # Store the original cmd line for reference:
476 IP_rc.opts = opts
476 IP_rc.opts = opts
477 IP_rc.args = args
477 IP_rc.args = args
478
478
479 # create a *runtime* Struct like rc for holding parameters which may be
479 # create a *runtime* Struct like rc for holding parameters which may be
480 # created and/or modified by runtime user extensions.
480 # created and/or modified by runtime user extensions.
481 IP.runtime_rc = Struct()
481 IP.runtime_rc = Struct()
482
482
483 # from this point on, all config should be handled through IP_rc,
483 # from this point on, all config should be handled through IP_rc,
484 # opts* shouldn't be used anymore.
484 # opts* shouldn't be used anymore.
485
485
486
486
487 # update IP_rc with some special things that need manual
487 # update IP_rc with some special things that need manual
488 # tweaks. Basically options which affect other options. I guess this
488 # tweaks. Basically options which affect other options. I guess this
489 # should just be written so that options are fully orthogonal and we
489 # should just be written so that options are fully orthogonal and we
490 # wouldn't worry about this stuff!
490 # wouldn't worry about this stuff!
491
491
492 if IP_rc.classic:
492 if IP_rc.classic:
493 IP_rc.quick = 1
493 IP_rc.quick = 1
494 IP_rc.cache_size = 0
494 IP_rc.cache_size = 0
495 IP_rc.pprint = 0
495 IP_rc.pprint = 0
496 IP_rc.prompt_in1 = '>>> '
496 IP_rc.prompt_in1 = '>>> '
497 IP_rc.prompt_in2 = '... '
497 IP_rc.prompt_in2 = '... '
498 IP_rc.prompt_out = ''
498 IP_rc.prompt_out = ''
499 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
499 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
500 IP_rc.colors = 'NoColor'
500 IP_rc.colors = 'NoColor'
501 IP_rc.xmode = 'Plain'
501 IP_rc.xmode = 'Plain'
502
502
503 IP.pre_config_initialization()
503 IP.pre_config_initialization()
504 # configure readline
504 # configure readline
505 # Define the history file for saving commands in between sessions
505 # Define the history file for saving commands in between sessions
506 if IP_rc.profile:
506 if IP_rc.profile:
507 histfname = 'history-%s' % IP_rc.profile
507 histfname = 'history-%s' % IP_rc.profile
508 else:
508 else:
509 histfname = 'history'
509 histfname = 'history'
510 IP.histfile = os.path.join(opts_all.ipythondir,histfname)
510 IP.histfile = os.path.join(opts_all.ipythondir,histfname)
511
511
512 # update exception handlers with rc file status
512 # update exception handlers with rc file status
513 otrap.trap_out() # I don't want these messages ever.
513 otrap.trap_out() # I don't want these messages ever.
514 IP.magic_xmode(IP_rc.xmode)
514 IP.magic_xmode(IP_rc.xmode)
515 otrap.release_out()
515 otrap.release_out()
516
516
517 # activate logging if requested and not reloading a log
517 # activate logging if requested and not reloading a log
518 if IP_rc.logplay:
518 if IP_rc.logplay:
519 IP.magic_logstart(IP_rc.logplay + ' append')
519 IP.magic_logstart(IP_rc.logplay + ' append')
520 elif IP_rc.logfile:
520 elif IP_rc.logfile:
521 IP.magic_logstart(IP_rc.logfile)
521 IP.magic_logstart(IP_rc.logfile)
522 elif IP_rc.log:
522 elif IP_rc.log:
523 IP.magic_logstart()
523 IP.magic_logstart()
524
524
525 # find user editor so that it we don't have to look it up constantly
525 # find user editor so that it we don't have to look it up constantly
526 if IP_rc.editor.strip()=='0':
526 if IP_rc.editor.strip()=='0':
527 try:
527 try:
528 ed = os.environ['EDITOR']
528 ed = os.environ['EDITOR']
529 except KeyError:
529 except KeyError:
530 if os.name == 'posix':
530 if os.name == 'posix':
531 ed = 'vi' # the only one guaranteed to be there!
531 ed = 'vi' # the only one guaranteed to be there!
532 else:
532 else:
533 ed = 'notepad' # same in Windows!
533 ed = 'notepad' # same in Windows!
534 IP_rc.editor = ed
534 IP_rc.editor = ed
535
535
536 # Keep track of whether this is an embedded instance or not (useful for
536 # Keep track of whether this is an embedded instance or not (useful for
537 # post-mortems).
537 # post-mortems).
538 IP_rc.embedded = IP.embedded
538 IP_rc.embedded = IP.embedded
539
539
540 # Recursive reload
540 # Recursive reload
541 try:
541 try:
542 from IPython import deep_reload
542 from IPython import deep_reload
543 if IP_rc.deep_reload:
543 if IP_rc.deep_reload:
544 __builtin__.reload = deep_reload.reload
544 __builtin__.reload = deep_reload.reload
545 else:
545 else:
546 __builtin__.dreload = deep_reload.reload
546 __builtin__.dreload = deep_reload.reload
547 del deep_reload
547 del deep_reload
548 except ImportError:
548 except ImportError:
549 pass
549 pass
550
550
551 # Save the current state of our namespace so that the interactive shell
551 # Save the current state of our namespace so that the interactive shell
552 # can later know which variables have been created by us from config files
552 # can later know which variables have been created by us from config files
553 # and loading. This way, loading a file (in any way) is treated just like
553 # and loading. This way, loading a file (in any way) is treated just like
554 # defining things on the command line, and %who works as expected.
554 # defining things on the command line, and %who works as expected.
555
555
556 # DON'T do anything that affects the namespace beyond this point!
556 # DON'T do anything that affects the namespace beyond this point!
557 IP.internal_ns.update(__main__.__dict__)
557 IP.internal_ns.update(__main__.__dict__)
558
558
559 #IP.internal_ns.update(locals()) # so our stuff doesn't show up in %who
559 #IP.internal_ns.update(locals()) # so our stuff doesn't show up in %who
560
560
561 # Now run through the different sections of the users's config
561 # Now run through the different sections of the users's config
562 if IP_rc.debug:
562 if IP_rc.debug:
563 print 'Trying to execute the following configuration structure:'
563 print 'Trying to execute the following configuration structure:'
564 print '(Things listed first are deeper in the inclusion tree and get'
564 print '(Things listed first are deeper in the inclusion tree and get'
565 print 'loaded first).\n'
565 print 'loaded first).\n'
566 pprint(IP_rc.__dict__)
566 pprint(IP_rc.__dict__)
567
567
568 for mod in IP_rc.import_mod:
568 for mod in IP_rc.import_mod:
569 try:
569 try:
570 exec 'import '+mod in IP.user_ns
570 exec 'import '+mod in IP.user_ns
571 except :
571 except :
572 IP.InteractiveTB()
572 IP.InteractiveTB()
573 import_fail_info(mod)
573 import_fail_info(mod)
574
574
575 for mod_fn in IP_rc.import_some:
575 for mod_fn in IP_rc.import_some:
576 if mod_fn == []: break
576 if mod_fn == []: break
577 mod,fn = mod_fn[0],','.join(mod_fn[1:])
577 mod,fn = mod_fn[0],','.join(mod_fn[1:])
578 try:
578 try:
579 exec 'from '+mod+' import '+fn in IP.user_ns
579 exec 'from '+mod+' import '+fn in IP.user_ns
580 except :
580 except :
581 IP.InteractiveTB()
581 IP.InteractiveTB()
582 import_fail_info(mod,fn)
582 import_fail_info(mod,fn)
583
583
584 for mod in IP_rc.import_all:
584 for mod in IP_rc.import_all:
585 try:
585 try:
586 exec 'from '+mod+' import *' in IP.user_ns
586 exec 'from '+mod+' import *' in IP.user_ns
587 except :
587 except :
588 IP.InteractiveTB()
588 IP.InteractiveTB()
589 import_fail_info(mod)
589 import_fail_info(mod)
590
590
591 for code in IP_rc.execute:
591 for code in IP_rc.execute:
592 try:
592 try:
593 exec code in IP.user_ns
593 exec code in IP.user_ns
594 except:
594 except:
595 IP.InteractiveTB()
595 IP.InteractiveTB()
596 warn('Failure executing code: ' + `code`)
596 warn('Failure executing code: ' + `code`)
597
597
598 # Execute the files the user wants in ipythonrc
598 # Execute the files the user wants in ipythonrc
599 for file in IP_rc.execfile:
599 for file in IP_rc.execfile:
600 try:
600 try:
601 file = filefind(file,sys.path+[IPython_dir])
601 file = filefind(file,sys.path+[IPython_dir])
602 except IOError:
602 except IOError:
603 warn(itpl('File $file not found. Skipping it.'))
603 warn(itpl('File $file not found. Skipping it.'))
604 else:
604 else:
605 IP.safe_execfile(os.path.expanduser(file),IP.user_ns)
605 IP.safe_execfile(os.path.expanduser(file),IP.user_ns)
606
606
607 # finally, try importing ipy_*_conf for final configuration
607 # finally, try importing ipy_*_conf for final configuration
608 try:
608 try:
609 import ipy_system_conf
609 import ipy_system_conf
610 except ImportError:
610 except ImportError:
611 if opts_all.debug: IP.InteractiveTB()
611 if opts_all.debug: IP.InteractiveTB()
612 warn("Could not import 'ipy_system_conf'")
612 warn("Could not import 'ipy_system_conf'")
613 except:
613 except:
614 IP.InteractiveTB()
614 IP.InteractiveTB()
615 import_fail_info('ipy_system_conf')
615 import_fail_info('ipy_system_conf')
616
616
617 if opts_all.profile:
617 if opts_all.profile:
618 profmodname = 'ipy_profile_' + opts_all.profile
618 profmodname = 'ipy_profile_' + opts_all.profile
619 try:
619 try:
620 __import__(profmodname)
620 __import__(profmodname)
621 except ImportError:
621 except ImportError:
622 # only warn if ipythonrc-PROFNAME didn't exist
622 # only warn if ipythonrc-PROFNAME didn't exist
623 if opts.profile =='':
623 if opts.profile =='':
624 warn("Could not start with profile '%s'!\n ('%s/%s.py' does not exist? run '%%upgrade')" % (
624 warn("Could not start with profile '%s'!\n ('%s/%s.py' does not exist? run '%%upgrade')" % (
625 opts_all.profile, ipythondir, profmodname)
625 opts_all.profile, ipythondir, profmodname)
626
626
627 )
627 )
628 except:
628 except:
629 print "Error importing",profmodname
629 print "Error importing",profmodname
630 IP.InteractiveTB()
630 IP.InteractiveTB()
631 import_fail_info(profmodname)
631 import_fail_info(profmodname)
632
632
633 try:
633 try:
634 import ipy_user_conf
634 import ipy_user_conf
635 except ImportError:
635 except ImportError:
636 if opts_all.debug: IP.InteractiveTB()
636 if opts_all.debug: IP.InteractiveTB()
637 warn("Could not import user config!\n ('%s/ipy_user_conf.py' does not exist? Please run '%%upgrade')\n" %
637 warn("Could not import user config!\n "
638 ipythondir)
638 "('%s/ipy_user_conf.py' does not exist? Please run '%%upgrade')\n"
639 % opts_all.ipythondir)
639 except:
640 except:
640 print "Error importing ipy_user_conf"
641 print "Error importing ipy_user_conf"
641 IP.InteractiveTB()
642 IP.InteractiveTB()
642 import_fail_info("ipy_user_conf")
643 import_fail_info("ipy_user_conf")
643
644
644
645 # release stdout and stderr and save config log into a global summary
645 # release stdout and stderr and save config log into a global summary
646 msg.config.release_all()
646 msg.config.release_all()
647 if IP_rc.messages:
647 if IP_rc.messages:
648 msg.summary += msg.config.summary_all()
648 msg.summary += msg.config.summary_all()
649
649
650 #------------------------------------------------------------------------
650 #------------------------------------------------------------------------
651 # Setup interactive session
651 # Setup interactive session
652
652
653 # Now we should be fully configured. We can then execute files or load
653 # Now we should be fully configured. We can then execute files or load
654 # things only needed for interactive use. Then we'll open the shell.
654 # things only needed for interactive use. Then we'll open the shell.
655
655
656 # Take a snapshot of the user namespace before opening the shell. That way
656 # Take a snapshot of the user namespace before opening the shell. That way
657 # we'll be able to identify which things were interactively defined and
657 # we'll be able to identify which things were interactively defined and
658 # which were defined through config files.
658 # which were defined through config files.
659 IP.user_config_ns = IP.user_ns.copy()
659 IP.user_config_ns = IP.user_ns.copy()
660
660
661 # Force reading a file as if it were a session log. Slower but safer.
661 # Force reading a file as if it were a session log. Slower but safer.
662 if load_logplay:
662 if load_logplay:
663 print 'Replaying log...'
663 print 'Replaying log...'
664 try:
664 try:
665 if IP_rc.debug:
665 if IP_rc.debug:
666 logplay_quiet = 0
666 logplay_quiet = 0
667 else:
667 else:
668 logplay_quiet = 1
668 logplay_quiet = 1
669
669
670 msg.logplay.trap_all()
670 msg.logplay.trap_all()
671 IP.safe_execfile(load_logplay,IP.user_ns,
671 IP.safe_execfile(load_logplay,IP.user_ns,
672 islog = 1, quiet = logplay_quiet)
672 islog = 1, quiet = logplay_quiet)
673 msg.logplay.release_all()
673 msg.logplay.release_all()
674 if IP_rc.messages:
674 if IP_rc.messages:
675 msg.summary += msg.logplay.summary_all()
675 msg.summary += msg.logplay.summary_all()
676 except:
676 except:
677 warn('Problems replaying logfile %s.' % load_logplay)
677 warn('Problems replaying logfile %s.' % load_logplay)
678 IP.InteractiveTB()
678 IP.InteractiveTB()
679
679
680 # Load remaining files in command line
680 # Load remaining files in command line
681 msg.user_exec.trap_all()
681 msg.user_exec.trap_all()
682
682
683 # Do NOT execute files named in the command line as scripts to be loaded
683 # Do NOT execute files named in the command line as scripts to be loaded
684 # by embedded instances. Doing so has the potential for an infinite
684 # by embedded instances. Doing so has the potential for an infinite
685 # recursion if there are exceptions thrown in the process.
685 # recursion if there are exceptions thrown in the process.
686
686
687 # XXX FIXME: the execution of user files should be moved out to after
687 # XXX FIXME: the execution of user files should be moved out to after
688 # ipython is fully initialized, just as if they were run via %run at the
688 # ipython is fully initialized, just as if they were run via %run at the
689 # ipython prompt. This would also give them the benefit of ipython's
689 # ipython prompt. This would also give them the benefit of ipython's
690 # nice tracebacks.
690 # nice tracebacks.
691
691
692 if (not embedded and IP_rc.args and
692 if (not embedded and IP_rc.args and
693 not IP_rc.args[0].lower().endswith('.ipy')):
693 not IP_rc.args[0].lower().endswith('.ipy')):
694 name_save = IP.user_ns['__name__']
694 name_save = IP.user_ns['__name__']
695 IP.user_ns['__name__'] = '__main__'
695 IP.user_ns['__name__'] = '__main__'
696 # Set our own excepthook in case the user code tries to call it
696 # Set our own excepthook in case the user code tries to call it
697 # directly. This prevents triggering the IPython crash handler.
697 # directly. This prevents triggering the IPython crash handler.
698 old_excepthook,sys.excepthook = sys.excepthook, IP.excepthook
698 old_excepthook,sys.excepthook = sys.excepthook, IP.excepthook
699
699
700 save_argv = sys.argv[1:] # save it for later restoring
700 save_argv = sys.argv[1:] # save it for later restoring
701
701
702 sys.argv = args
702 sys.argv = args
703
703
704 try:
704 try:
705 IP.safe_execfile(args[0], IP.user_ns)
705 IP.safe_execfile(args[0], IP.user_ns)
706 finally:
706 finally:
707 # Reset our crash handler in place
707 # Reset our crash handler in place
708 sys.excepthook = old_excepthook
708 sys.excepthook = old_excepthook
709 sys.argv[:] = save_argv
709 sys.argv[:] = save_argv
710 IP.user_ns['__name__'] = name_save
710 IP.user_ns['__name__'] = name_save
711
711
712 msg.user_exec.release_all()
712 msg.user_exec.release_all()
713
713
714 if IP_rc.messages:
714 if IP_rc.messages:
715 msg.summary += msg.user_exec.summary_all()
715 msg.summary += msg.user_exec.summary_all()
716
716
717 # since we can't specify a null string on the cmd line, 0 is the equivalent:
717 # since we can't specify a null string on the cmd line, 0 is the equivalent:
718 if IP_rc.nosep:
718 if IP_rc.nosep:
719 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
719 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
720 if IP_rc.separate_in == '0': IP_rc.separate_in = ''
720 if IP_rc.separate_in == '0': IP_rc.separate_in = ''
721 if IP_rc.separate_out == '0': IP_rc.separate_out = ''
721 if IP_rc.separate_out == '0': IP_rc.separate_out = ''
722 if IP_rc.separate_out2 == '0': IP_rc.separate_out2 = ''
722 if IP_rc.separate_out2 == '0': IP_rc.separate_out2 = ''
723 IP_rc.separate_in = IP_rc.separate_in.replace('\\n','\n')
723 IP_rc.separate_in = IP_rc.separate_in.replace('\\n','\n')
724 IP_rc.separate_out = IP_rc.separate_out.replace('\\n','\n')
724 IP_rc.separate_out = IP_rc.separate_out.replace('\\n','\n')
725 IP_rc.separate_out2 = IP_rc.separate_out2.replace('\\n','\n')
725 IP_rc.separate_out2 = IP_rc.separate_out2.replace('\\n','\n')
726
726
727 # Determine how many lines at the bottom of the screen are needed for
727 # Determine how many lines at the bottom of the screen are needed for
728 # showing prompts, so we can know wheter long strings are to be printed or
728 # showing prompts, so we can know wheter long strings are to be printed or
729 # paged:
729 # paged:
730 num_lines_bot = IP_rc.separate_in.count('\n')+1
730 num_lines_bot = IP_rc.separate_in.count('\n')+1
731 IP_rc.screen_length = IP_rc.screen_length - num_lines_bot
731 IP_rc.screen_length = IP_rc.screen_length - num_lines_bot
732
732
733 # configure startup banner
733 # configure startup banner
734 if IP_rc.c: # regular python doesn't print the banner with -c
734 if IP_rc.c: # regular python doesn't print the banner with -c
735 IP_rc.banner = 0
735 IP_rc.banner = 0
736 if IP_rc.banner:
736 if IP_rc.banner:
737 BANN_P = IP.BANNER_PARTS
737 BANN_P = IP.BANNER_PARTS
738 else:
738 else:
739 BANN_P = []
739 BANN_P = []
740
740
741 if IP_rc.profile: BANN_P.append('IPython profile: %s\n' % IP_rc.profile)
741 if IP_rc.profile: BANN_P.append('IPython profile: %s\n' % IP_rc.profile)
742
742
743 # add message log (possibly empty)
743 # add message log (possibly empty)
744 if msg.summary: BANN_P.append(msg.summary)
744 if msg.summary: BANN_P.append(msg.summary)
745 # Final banner is a string
745 # Final banner is a string
746 IP.BANNER = '\n'.join(BANN_P)
746 IP.BANNER = '\n'.join(BANN_P)
747
747
748 # Finalize the IPython instance. This assumes the rc structure is fully
748 # Finalize the IPython instance. This assumes the rc structure is fully
749 # in place.
749 # in place.
750 IP.post_config_initialization()
750 IP.post_config_initialization()
751
751
752 return IP
752 return IP
753 #************************ end of file <ipmaker.py> **************************
753 #************************ end of file <ipmaker.py> **************************
@@ -1,5505 +1,5509 b''
1 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
2
2
3 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
4 correctly at initialization time. Bug reported by Krishna Mohan
5 Gundu <gkmohan-AT-gmail.com> on the user list.
6
3 * IPython/Release.py (version): Mark 0.7.2 version to start
7 * IPython/Release.py (version): Mark 0.7.2 version to start
4 testing for release on 06/06.
8 testing for release on 06/06.
5
9
6 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
10 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
7
11
8 * scripts/irunner: thin script interface so users don't have to
12 * scripts/irunner: thin script interface so users don't have to
9 find the module and call it as an executable, since modules rarely
13 find the module and call it as an executable, since modules rarely
10 live in people's PATH.
14 live in people's PATH.
11
15
12 * IPython/irunner.py (InteractiveRunner.__init__): added
16 * IPython/irunner.py (InteractiveRunner.__init__): added
13 delaybeforesend attribute to control delays with newer versions of
17 delaybeforesend attribute to control delays with newer versions of
14 pexpect. Thanks to detailed help from pexpect's author, Noah
18 pexpect. Thanks to detailed help from pexpect's author, Noah
15 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
19 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
16 correctly (it works in NoColor mode).
20 correctly (it works in NoColor mode).
17
21
18 * IPython/iplib.py (handle_normal): fix nasty crash reported on
22 * IPython/iplib.py (handle_normal): fix nasty crash reported on
19 SAGE list, from improper log() calls.
23 SAGE list, from improper log() calls.
20
24
21 2006-05-31 Ville Vainio <vivainio@gmail.com>
25 2006-05-31 Ville Vainio <vivainio@gmail.com>
22
26
23 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
27 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
24 with args in parens to work correctly with dirs that have spaces.
28 with args in parens to work correctly with dirs that have spaces.
25
29
26 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
30 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
27
31
28 * IPython/Logger.py (Logger.logstart): add option to log raw input
32 * IPython/Logger.py (Logger.logstart): add option to log raw input
29 instead of the processed one. A -r flag was added to the
33 instead of the processed one. A -r flag was added to the
30 %logstart magic used for controlling logging.
34 %logstart magic used for controlling logging.
31
35
32 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
36 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
33
37
34 * IPython/iplib.py (InteractiveShell.__init__): add check for the
38 * IPython/iplib.py (InteractiveShell.__init__): add check for the
35 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
39 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
36 recognize the option. After a bug report by Will Maier. This
40 recognize the option. After a bug report by Will Maier. This
37 closes #64 (will do it after confirmation from W. Maier).
41 closes #64 (will do it after confirmation from W. Maier).
38
42
39 * IPython/irunner.py: New module to run scripts as if manually
43 * IPython/irunner.py: New module to run scripts as if manually
40 typed into an interactive environment, based on pexpect. After a
44 typed into an interactive environment, based on pexpect. After a
41 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
45 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
42 ipython-user list. Simple unittests in the tests/ directory.
46 ipython-user list. Simple unittests in the tests/ directory.
43
47
44 * tools/release: add Will Maier, OpenBSD port maintainer, to
48 * tools/release: add Will Maier, OpenBSD port maintainer, to
45 recepients list. We are now officially part of the OpenBSD ports:
49 recepients list. We are now officially part of the OpenBSD ports:
46 http://www.openbsd.org/ports.html ! Many thanks to Will for the
50 http://www.openbsd.org/ports.html ! Many thanks to Will for the
47 work.
51 work.
48
52
49 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
53 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
50
54
51 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
55 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
52 so that it doesn't break tkinter apps.
56 so that it doesn't break tkinter apps.
53
57
54 * IPython/iplib.py (_prefilter): fix bug where aliases would
58 * IPython/iplib.py (_prefilter): fix bug where aliases would
55 shadow variables when autocall was fully off. Reported by SAGE
59 shadow variables when autocall was fully off. Reported by SAGE
56 author William Stein.
60 author William Stein.
57
61
58 * IPython/OInspect.py (Inspector.__init__): add a flag to control
62 * IPython/OInspect.py (Inspector.__init__): add a flag to control
59 at what detail level strings are computed when foo? is requested.
63 at what detail level strings are computed when foo? is requested.
60 This allows users to ask for example that the string form of an
64 This allows users to ask for example that the string form of an
61 object is only computed when foo?? is called, or even never, by
65 object is only computed when foo?? is called, or even never, by
62 setting the object_info_string_level >= 2 in the configuration
66 setting the object_info_string_level >= 2 in the configuration
63 file. This new option has been added and documented. After a
67 file. This new option has been added and documented. After a
64 request by SAGE to be able to control the printing of very large
68 request by SAGE to be able to control the printing of very large
65 objects more easily.
69 objects more easily.
66
70
67 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
71 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
68
72
69 * IPython/ipmaker.py (make_IPython): remove the ipython call path
73 * IPython/ipmaker.py (make_IPython): remove the ipython call path
70 from sys.argv, to be 100% consistent with how Python itself works
74 from sys.argv, to be 100% consistent with how Python itself works
71 (as seen for example with python -i file.py). After a bug report
75 (as seen for example with python -i file.py). After a bug report
72 by Jeffrey Collins.
76 by Jeffrey Collins.
73
77
74 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
78 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
75 nasty bug which was preventing custom namespaces with -pylab,
79 nasty bug which was preventing custom namespaces with -pylab,
76 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
80 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
77 compatibility (long gone from mpl).
81 compatibility (long gone from mpl).
78
82
79 * IPython/ipapi.py (make_session): name change: create->make. We
83 * IPython/ipapi.py (make_session): name change: create->make. We
80 use make in other places (ipmaker,...), it's shorter and easier to
84 use make in other places (ipmaker,...), it's shorter and easier to
81 type and say, etc. I'm trying to clean things before 0.7.2 so
85 type and say, etc. I'm trying to clean things before 0.7.2 so
82 that I can keep things stable wrt to ipapi in the chainsaw branch.
86 that I can keep things stable wrt to ipapi in the chainsaw branch.
83
87
84 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
88 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
85 python-mode recognizes our debugger mode. Add support for
89 python-mode recognizes our debugger mode. Add support for
86 autoindent inside (X)emacs. After a patch sent in by Jin Liu
90 autoindent inside (X)emacs. After a patch sent in by Jin Liu
87 <m.liu.jin-AT-gmail.com> originally written by
91 <m.liu.jin-AT-gmail.com> originally written by
88 doxgen-AT-newsmth.net (with minor modifications for xemacs
92 doxgen-AT-newsmth.net (with minor modifications for xemacs
89 compatibility)
93 compatibility)
90
94
91 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
95 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
92 tracebacks when walking the stack so that the stack tracking system
96 tracebacks when walking the stack so that the stack tracking system
93 in emacs' python-mode can identify the frames correctly.
97 in emacs' python-mode can identify the frames correctly.
94
98
95 * IPython/ipmaker.py (make_IPython): make the internal (and
99 * IPython/ipmaker.py (make_IPython): make the internal (and
96 default config) autoedit_syntax value false by default. Too many
100 default config) autoedit_syntax value false by default. Too many
97 users have complained to me (both on and off-list) about problems
101 users have complained to me (both on and off-list) about problems
98 with this option being on by default, so I'm making it default to
102 with this option being on by default, so I'm making it default to
99 off. It can still be enabled by anyone via the usual mechanisms.
103 off. It can still be enabled by anyone via the usual mechanisms.
100
104
101 * IPython/completer.py (Completer.attr_matches): add support for
105 * IPython/completer.py (Completer.attr_matches): add support for
102 PyCrust-style _getAttributeNames magic method. Patch contributed
106 PyCrust-style _getAttributeNames magic method. Patch contributed
103 by <mscott-AT-goldenspud.com>. Closes #50.
107 by <mscott-AT-goldenspud.com>. Closes #50.
104
108
105 * IPython/iplib.py (InteractiveShell.__init__): remove the
109 * IPython/iplib.py (InteractiveShell.__init__): remove the
106 deletion of exit/quit from __builtin__, which can break
110 deletion of exit/quit from __builtin__, which can break
107 third-party tools like the Zope debugging console. The
111 third-party tools like the Zope debugging console. The
108 %exit/%quit magics remain. In general, it's probably a good idea
112 %exit/%quit magics remain. In general, it's probably a good idea
109 not to delete anything from __builtin__, since we never know what
113 not to delete anything from __builtin__, since we never know what
110 that will break. In any case, python now (for 2.5) will support
114 that will break. In any case, python now (for 2.5) will support
111 'real' exit/quit, so this issue is moot. Closes #55.
115 'real' exit/quit, so this issue is moot. Closes #55.
112
116
113 * IPython/genutils.py (with_obj): rename the 'with' function to
117 * IPython/genutils.py (with_obj): rename the 'with' function to
114 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
118 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
115 becomes a language keyword. Closes #53.
119 becomes a language keyword. Closes #53.
116
120
117 * IPython/FakeModule.py (FakeModule.__init__): add a proper
121 * IPython/FakeModule.py (FakeModule.__init__): add a proper
118 __file__ attribute to this so it fools more things into thinking
122 __file__ attribute to this so it fools more things into thinking
119 it is a real module. Closes #59.
123 it is a real module. Closes #59.
120
124
121 * IPython/Magic.py (magic_edit): add -n option to open the editor
125 * IPython/Magic.py (magic_edit): add -n option to open the editor
122 at a specific line number. After a patch by Stefan van der Walt.
126 at a specific line number. After a patch by Stefan van der Walt.
123
127
124 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
128 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
125
129
126 * IPython/iplib.py (edit_syntax_error): fix crash when for some
130 * IPython/iplib.py (edit_syntax_error): fix crash when for some
127 reason the file could not be opened. After automatic crash
131 reason the file could not be opened. After automatic crash
128 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
132 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
129 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
133 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
130 (_should_recompile): Don't fire editor if using %bg, since there
134 (_should_recompile): Don't fire editor if using %bg, since there
131 is no file in the first place. From the same report as above.
135 is no file in the first place. From the same report as above.
132 (raw_input): protect against faulty third-party prefilters. After
136 (raw_input): protect against faulty third-party prefilters. After
133 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
137 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
134 while running under SAGE.
138 while running under SAGE.
135
139
136 2006-05-23 Ville Vainio <vivainio@gmail.com>
140 2006-05-23 Ville Vainio <vivainio@gmail.com>
137
141
138 * ipapi.py: Stripped down ip.to_user_ns() to work only as
142 * ipapi.py: Stripped down ip.to_user_ns() to work only as
139 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
143 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
140 now returns None (again), unless dummy is specifically allowed by
144 now returns None (again), unless dummy is specifically allowed by
141 ipapi.get(allow_dummy=True).
145 ipapi.get(allow_dummy=True).
142
146
143 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
147 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
144
148
145 * IPython: remove all 2.2-compatibility objects and hacks from
149 * IPython: remove all 2.2-compatibility objects and hacks from
146 everywhere, since we only support 2.3 at this point. Docs
150 everywhere, since we only support 2.3 at this point. Docs
147 updated.
151 updated.
148
152
149 * IPython/ipapi.py (IPApi.__init__): Clean up of all getters.
153 * IPython/ipapi.py (IPApi.__init__): Clean up of all getters.
150 Anything requiring extra validation can be turned into a Python
154 Anything requiring extra validation can be turned into a Python
151 property in the future. I used a property for the db one b/c
155 property in the future. I used a property for the db one b/c
152 there was a nasty circularity problem with the initialization
156 there was a nasty circularity problem with the initialization
153 order, which right now I don't have time to clean up.
157 order, which right now I don't have time to clean up.
154
158
155 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
159 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
156 another locking bug reported by Jorgen. I'm not 100% sure though,
160 another locking bug reported by Jorgen. I'm not 100% sure though,
157 so more testing is needed...
161 so more testing is needed...
158
162
159 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
163 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
160
164
161 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
165 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
162 local variables from any routine in user code (typically executed
166 local variables from any routine in user code (typically executed
163 with %run) directly into the interactive namespace. Very useful
167 with %run) directly into the interactive namespace. Very useful
164 when doing complex debugging.
168 when doing complex debugging.
165 (IPythonNotRunning): Changed the default None object to a dummy
169 (IPythonNotRunning): Changed the default None object to a dummy
166 whose attributes can be queried as well as called without
170 whose attributes can be queried as well as called without
167 exploding, to ease writing code which works transparently both in
171 exploding, to ease writing code which works transparently both in
168 and out of ipython and uses some of this API.
172 and out of ipython and uses some of this API.
169
173
170 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
174 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
171
175
172 * IPython/hooks.py (result_display): Fix the fact that our display
176 * IPython/hooks.py (result_display): Fix the fact that our display
173 hook was using str() instead of repr(), as the default python
177 hook was using str() instead of repr(), as the default python
174 console does. This had gone unnoticed b/c it only happened if
178 console does. This had gone unnoticed b/c it only happened if
175 %Pprint was off, but the inconsistency was there.
179 %Pprint was off, but the inconsistency was there.
176
180
177 2006-05-15 Ville Vainio <vivainio@gmail.com>
181 2006-05-15 Ville Vainio <vivainio@gmail.com>
178
182
179 * Oinspect.py: Only show docstring for nonexisting/binary files
183 * Oinspect.py: Only show docstring for nonexisting/binary files
180 when doing object??, closing ticket #62
184 when doing object??, closing ticket #62
181
185
182 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
186 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
183
187
184 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
188 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
185 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
189 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
186 was being released in a routine which hadn't checked if it had
190 was being released in a routine which hadn't checked if it had
187 been the one to acquire it.
191 been the one to acquire it.
188
192
189 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
193 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
190
194
191 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
195 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
192
196
193 2006-04-11 Ville Vainio <vivainio@gmail.com>
197 2006-04-11 Ville Vainio <vivainio@gmail.com>
194
198
195 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
199 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
196 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
200 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
197 prefilters, allowing stuff like magics and aliases in the file.
201 prefilters, allowing stuff like magics and aliases in the file.
198
202
199 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
203 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
200 added. Supported now are "%clear in" and "%clear out" (clear input and
204 added. Supported now are "%clear in" and "%clear out" (clear input and
201 output history, respectively). Also fixed CachedOutput.flush to
205 output history, respectively). Also fixed CachedOutput.flush to
202 properly flush the output cache.
206 properly flush the output cache.
203
207
204 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
208 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
205 half-success (and fail explicitly).
209 half-success (and fail explicitly).
206
210
207 2006-03-28 Ville Vainio <vivainio@gmail.com>
211 2006-03-28 Ville Vainio <vivainio@gmail.com>
208
212
209 * iplib.py: Fix quoting of aliases so that only argless ones
213 * iplib.py: Fix quoting of aliases so that only argless ones
210 are quoted
214 are quoted
211
215
212 2006-03-28 Ville Vainio <vivainio@gmail.com>
216 2006-03-28 Ville Vainio <vivainio@gmail.com>
213
217
214 * iplib.py: Quote aliases with spaces in the name.
218 * iplib.py: Quote aliases with spaces in the name.
215 "c:\program files\blah\bin" is now legal alias target.
219 "c:\program files\blah\bin" is now legal alias target.
216
220
217 * ext_rehashdir.py: Space no longer allowed as arg
221 * ext_rehashdir.py: Space no longer allowed as arg
218 separator, since space is legal in path names.
222 separator, since space is legal in path names.
219
223
220 2006-03-16 Ville Vainio <vivainio@gmail.com>
224 2006-03-16 Ville Vainio <vivainio@gmail.com>
221
225
222 * upgrade_dir.py: Take path.py from Extensions, correcting
226 * upgrade_dir.py: Take path.py from Extensions, correcting
223 %upgrade magic
227 %upgrade magic
224
228
225 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
229 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
226
230
227 * hooks.py: Only enclose editor binary in quotes if legal and
231 * hooks.py: Only enclose editor binary in quotes if legal and
228 necessary (space in the name, and is an existing file). Fixes a bug
232 necessary (space in the name, and is an existing file). Fixes a bug
229 reported by Zachary Pincus.
233 reported by Zachary Pincus.
230
234
231 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
235 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
232
236
233 * Manual: thanks to a tip on proper color handling for Emacs, by
237 * Manual: thanks to a tip on proper color handling for Emacs, by
234 Eric J Haywiser <ejh1-AT-MIT.EDU>.
238 Eric J Haywiser <ejh1-AT-MIT.EDU>.
235
239
236 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
240 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
237 by applying the provided patch. Thanks to Liu Jin
241 by applying the provided patch. Thanks to Liu Jin
238 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
242 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
239 XEmacs/Linux, I'm trusting the submitter that it actually helps
243 XEmacs/Linux, I'm trusting the submitter that it actually helps
240 under win32/GNU Emacs. Will revisit if any problems are reported.
244 under win32/GNU Emacs. Will revisit if any problems are reported.
241
245
242 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
246 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
243
247
244 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
248 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
245 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
249 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
246
250
247 2006-03-12 Ville Vainio <vivainio@gmail.com>
251 2006-03-12 Ville Vainio <vivainio@gmail.com>
248
252
249 * Magic.py (magic_timeit): Added %timeit magic, contributed by
253 * Magic.py (magic_timeit): Added %timeit magic, contributed by
250 Torsten Marek.
254 Torsten Marek.
251
255
252 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
256 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
253
257
254 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
258 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
255 line ranges works again.
259 line ranges works again.
256
260
257 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
261 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
258
262
259 * IPython/iplib.py (showtraceback): add back sys.last_traceback
263 * IPython/iplib.py (showtraceback): add back sys.last_traceback
260 and friends, after a discussion with Zach Pincus on ipython-user.
264 and friends, after a discussion with Zach Pincus on ipython-user.
261 I'm not 100% sure, but after thinking aobut it quite a bit, it may
265 I'm not 100% sure, but after thinking aobut it quite a bit, it may
262 be OK. Testing with the multithreaded shells didn't reveal any
266 be OK. Testing with the multithreaded shells didn't reveal any
263 problems, but let's keep an eye out.
267 problems, but let's keep an eye out.
264
268
265 In the process, I fixed a few things which were calling
269 In the process, I fixed a few things which were calling
266 self.InteractiveTB() directly (like safe_execfile), which is a
270 self.InteractiveTB() directly (like safe_execfile), which is a
267 mistake: ALL exception reporting should be done by calling
271 mistake: ALL exception reporting should be done by calling
268 self.showtraceback(), which handles state and tab-completion and
272 self.showtraceback(), which handles state and tab-completion and
269 more.
273 more.
270
274
271 2006-03-01 Ville Vainio <vivainio@gmail.com>
275 2006-03-01 Ville Vainio <vivainio@gmail.com>
272
276
273 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
277 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
274 To use, do "from ipipe import *".
278 To use, do "from ipipe import *".
275
279
276 2006-02-24 Ville Vainio <vivainio@gmail.com>
280 2006-02-24 Ville Vainio <vivainio@gmail.com>
277
281
278 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
282 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
279 "cleanly" and safely than the older upgrade mechanism.
283 "cleanly" and safely than the older upgrade mechanism.
280
284
281 2006-02-21 Ville Vainio <vivainio@gmail.com>
285 2006-02-21 Ville Vainio <vivainio@gmail.com>
282
286
283 * Magic.py: %save works again.
287 * Magic.py: %save works again.
284
288
285 2006-02-15 Ville Vainio <vivainio@gmail.com>
289 2006-02-15 Ville Vainio <vivainio@gmail.com>
286
290
287 * Magic.py: %Pprint works again
291 * Magic.py: %Pprint works again
288
292
289 * Extensions/ipy_sane_defaults.py: Provide everything provided
293 * Extensions/ipy_sane_defaults.py: Provide everything provided
290 in default ipythonrc, to make it possible to have a completely empty
294 in default ipythonrc, to make it possible to have a completely empty
291 ipythonrc (and thus completely rc-file free configuration)
295 ipythonrc (and thus completely rc-file free configuration)
292
296
293
297
294 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
298 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
295
299
296 * IPython/hooks.py (editor): quote the call to the editor command,
300 * IPython/hooks.py (editor): quote the call to the editor command,
297 to allow commands with spaces in them. Problem noted by watching
301 to allow commands with spaces in them. Problem noted by watching
298 Ian Oswald's video about textpad under win32 at
302 Ian Oswald's video about textpad under win32 at
299 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
303 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
300
304
301 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
305 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
302 describing magics (we haven't used @ for a loong time).
306 describing magics (we haven't used @ for a loong time).
303
307
304 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
308 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
305 contributed by marienz to close
309 contributed by marienz to close
306 http://www.scipy.net/roundup/ipython/issue53.
310 http://www.scipy.net/roundup/ipython/issue53.
307
311
308 2006-02-10 Ville Vainio <vivainio@gmail.com>
312 2006-02-10 Ville Vainio <vivainio@gmail.com>
309
313
310 * genutils.py: getoutput now works in win32 too
314 * genutils.py: getoutput now works in win32 too
311
315
312 * completer.py: alias and magic completion only invoked
316 * completer.py: alias and magic completion only invoked
313 at the first "item" in the line, to avoid "cd %store"
317 at the first "item" in the line, to avoid "cd %store"
314 nonsense.
318 nonsense.
315
319
316 2006-02-09 Ville Vainio <vivainio@gmail.com>
320 2006-02-09 Ville Vainio <vivainio@gmail.com>
317
321
318 * test/*: Added a unit testing framework (finally).
322 * test/*: Added a unit testing framework (finally).
319 '%run runtests.py' to run test_*.
323 '%run runtests.py' to run test_*.
320
324
321 * ipapi.py: Exposed runlines and set_custom_exc
325 * ipapi.py: Exposed runlines and set_custom_exc
322
326
323 2006-02-07 Ville Vainio <vivainio@gmail.com>
327 2006-02-07 Ville Vainio <vivainio@gmail.com>
324
328
325 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
329 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
326 instead use "f(1 2)" as before.
330 instead use "f(1 2)" as before.
327
331
328 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
332 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
329
333
330 * IPython/demo.py (IPythonDemo): Add new classes to the demo
334 * IPython/demo.py (IPythonDemo): Add new classes to the demo
331 facilities, for demos processed by the IPython input filter
335 facilities, for demos processed by the IPython input filter
332 (IPythonDemo), and for running a script one-line-at-a-time as a
336 (IPythonDemo), and for running a script one-line-at-a-time as a
333 demo, both for pure Python (LineDemo) and for IPython-processed
337 demo, both for pure Python (LineDemo) and for IPython-processed
334 input (IPythonLineDemo). After a request by Dave Kohel, from the
338 input (IPythonLineDemo). After a request by Dave Kohel, from the
335 SAGE team.
339 SAGE team.
336 (Demo.edit): added and edit() method to the demo objects, to edit
340 (Demo.edit): added and edit() method to the demo objects, to edit
337 the in-memory copy of the last executed block.
341 the in-memory copy of the last executed block.
338
342
339 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
343 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
340 processing to %edit, %macro and %save. These commands can now be
344 processing to %edit, %macro and %save. These commands can now be
341 invoked on the unprocessed input as it was typed by the user
345 invoked on the unprocessed input as it was typed by the user
342 (without any prefilters applied). After requests by the SAGE team
346 (without any prefilters applied). After requests by the SAGE team
343 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
347 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
344
348
345 2006-02-01 Ville Vainio <vivainio@gmail.com>
349 2006-02-01 Ville Vainio <vivainio@gmail.com>
346
350
347 * setup.py, eggsetup.py: easy_install ipython==dev works
351 * setup.py, eggsetup.py: easy_install ipython==dev works
348 correctly now (on Linux)
352 correctly now (on Linux)
349
353
350 * ipy_user_conf,ipmaker: user config changes, removed spurious
354 * ipy_user_conf,ipmaker: user config changes, removed spurious
351 warnings
355 warnings
352
356
353 * iplib: if rc.banner is string, use it as is.
357 * iplib: if rc.banner is string, use it as is.
354
358
355 * Magic: %pycat accepts a string argument and pages it's contents.
359 * Magic: %pycat accepts a string argument and pages it's contents.
356
360
357
361
358 2006-01-30 Ville Vainio <vivainio@gmail.com>
362 2006-01-30 Ville Vainio <vivainio@gmail.com>
359
363
360 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
364 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
361 Now %store and bookmarks work through PickleShare, meaning that
365 Now %store and bookmarks work through PickleShare, meaning that
362 concurrent access is possible and all ipython sessions see the
366 concurrent access is possible and all ipython sessions see the
363 same database situation all the time, instead of snapshot of
367 same database situation all the time, instead of snapshot of
364 the situation when the session was started. Hence, %bookmark
368 the situation when the session was started. Hence, %bookmark
365 results are immediately accessible from othes sessions. The database
369 results are immediately accessible from othes sessions. The database
366 is also available for use by user extensions. See:
370 is also available for use by user extensions. See:
367 http://www.python.org/pypi/pickleshare
371 http://www.python.org/pypi/pickleshare
368
372
369 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
373 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
370
374
371 * aliases can now be %store'd
375 * aliases can now be %store'd
372
376
373 * path.py move to Extensions so that pickleshare does not need
377 * path.py move to Extensions so that pickleshare does not need
374 IPython-specific import. Extensions added to pythonpath right
378 IPython-specific import. Extensions added to pythonpath right
375 at __init__.
379 at __init__.
376
380
377 * iplib.py: ipalias deprecated/redundant; aliases are converted and
381 * iplib.py: ipalias deprecated/redundant; aliases are converted and
378 called with _ip.system and the pre-transformed command string.
382 called with _ip.system and the pre-transformed command string.
379
383
380 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
384 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
381
385
382 * IPython/iplib.py (interact): Fix that we were not catching
386 * IPython/iplib.py (interact): Fix that we were not catching
383 KeyboardInterrupt exceptions properly. I'm not quite sure why the
387 KeyboardInterrupt exceptions properly. I'm not quite sure why the
384 logic here had to change, but it's fixed now.
388 logic here had to change, but it's fixed now.
385
389
386 2006-01-29 Ville Vainio <vivainio@gmail.com>
390 2006-01-29 Ville Vainio <vivainio@gmail.com>
387
391
388 * iplib.py: Try to import pyreadline on Windows.
392 * iplib.py: Try to import pyreadline on Windows.
389
393
390 2006-01-27 Ville Vainio <vivainio@gmail.com>
394 2006-01-27 Ville Vainio <vivainio@gmail.com>
391
395
392 * iplib.py: Expose ipapi as _ip in builtin namespace.
396 * iplib.py: Expose ipapi as _ip in builtin namespace.
393 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
397 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
394 and ip_set_hook (-> _ip.set_hook) redundant. % and !
398 and ip_set_hook (-> _ip.set_hook) redundant. % and !
395 syntax now produce _ip.* variant of the commands.
399 syntax now produce _ip.* variant of the commands.
396
400
397 * "_ip.options().autoedit_syntax = 2" automatically throws
401 * "_ip.options().autoedit_syntax = 2" automatically throws
398 user to editor for syntax error correction without prompting.
402 user to editor for syntax error correction without prompting.
399
403
400 2006-01-27 Ville Vainio <vivainio@gmail.com>
404 2006-01-27 Ville Vainio <vivainio@gmail.com>
401
405
402 * ipmaker.py: Give "realistic" sys.argv for scripts (without
406 * ipmaker.py: Give "realistic" sys.argv for scripts (without
403 'ipython' at argv[0]) executed through command line.
407 'ipython' at argv[0]) executed through command line.
404 NOTE: this DEPRECATES calling ipython with multiple scripts
408 NOTE: this DEPRECATES calling ipython with multiple scripts
405 ("ipython a.py b.py c.py")
409 ("ipython a.py b.py c.py")
406
410
407 * iplib.py, hooks.py: Added configurable input prefilter,
411 * iplib.py, hooks.py: Added configurable input prefilter,
408 named 'input_prefilter'. See ext_rescapture.py for example
412 named 'input_prefilter'. See ext_rescapture.py for example
409 usage.
413 usage.
410
414
411 * ext_rescapture.py, Magic.py: Better system command output capture
415 * ext_rescapture.py, Magic.py: Better system command output capture
412 through 'var = !ls' (deprecates user-visible %sc). Same notation
416 through 'var = !ls' (deprecates user-visible %sc). Same notation
413 applies for magics, 'var = %alias' assigns alias list to var.
417 applies for magics, 'var = %alias' assigns alias list to var.
414
418
415 * ipapi.py: added meta() for accessing extension-usable data store.
419 * ipapi.py: added meta() for accessing extension-usable data store.
416
420
417 * iplib.py: added InteractiveShell.getapi(). New magics should be
421 * iplib.py: added InteractiveShell.getapi(). New magics should be
418 written doing self.getapi() instead of using the shell directly.
422 written doing self.getapi() instead of using the shell directly.
419
423
420 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
424 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
421 %store foo >> ~/myfoo.txt to store variables to files (in clean
425 %store foo >> ~/myfoo.txt to store variables to files (in clean
422 textual form, not a restorable pickle).
426 textual form, not a restorable pickle).
423
427
424 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
428 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
425
429
426 * usage.py, Magic.py: added %quickref
430 * usage.py, Magic.py: added %quickref
427
431
428 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
432 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
429
433
430 * GetoptErrors when invoking magics etc. with wrong args
434 * GetoptErrors when invoking magics etc. with wrong args
431 are now more helpful:
435 are now more helpful:
432 GetoptError: option -l not recognized (allowed: "qb" )
436 GetoptError: option -l not recognized (allowed: "qb" )
433
437
434 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
438 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
435
439
436 * IPython/demo.py (Demo.show): Flush stdout after each block, so
440 * IPython/demo.py (Demo.show): Flush stdout after each block, so
437 computationally intensive blocks don't appear to stall the demo.
441 computationally intensive blocks don't appear to stall the demo.
438
442
439 2006-01-24 Ville Vainio <vivainio@gmail.com>
443 2006-01-24 Ville Vainio <vivainio@gmail.com>
440
444
441 * iplib.py, hooks.py: 'result_display' hook can return a non-None
445 * iplib.py, hooks.py: 'result_display' hook can return a non-None
442 value to manipulate resulting history entry.
446 value to manipulate resulting history entry.
443
447
444 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
448 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
445 to instance methods of IPApi class, to make extending an embedded
449 to instance methods of IPApi class, to make extending an embedded
446 IPython feasible. See ext_rehashdir.py for example usage.
450 IPython feasible. See ext_rehashdir.py for example usage.
447
451
448 * Merged 1071-1076 from banches/0.7.1
452 * Merged 1071-1076 from banches/0.7.1
449
453
450
454
451 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
455 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
452
456
453 * tools/release (daystamp): Fix build tools to use the new
457 * tools/release (daystamp): Fix build tools to use the new
454 eggsetup.py script to build lightweight eggs.
458 eggsetup.py script to build lightweight eggs.
455
459
456 * Applied changesets 1062 and 1064 before 0.7.1 release.
460 * Applied changesets 1062 and 1064 before 0.7.1 release.
457
461
458 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
462 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
459 see the raw input history (without conversions like %ls ->
463 see the raw input history (without conversions like %ls ->
460 ipmagic("ls")). After a request from W. Stein, SAGE
464 ipmagic("ls")). After a request from W. Stein, SAGE
461 (http://modular.ucsd.edu/sage) developer. This information is
465 (http://modular.ucsd.edu/sage) developer. This information is
462 stored in the input_hist_raw attribute of the IPython instance, so
466 stored in the input_hist_raw attribute of the IPython instance, so
463 developers can access it if needed (it's an InputList instance).
467 developers can access it if needed (it's an InputList instance).
464
468
465 * Versionstring = 0.7.2.svn
469 * Versionstring = 0.7.2.svn
466
470
467 * eggsetup.py: A separate script for constructing eggs, creates
471 * eggsetup.py: A separate script for constructing eggs, creates
468 proper launch scripts even on Windows (an .exe file in
472 proper launch scripts even on Windows (an .exe file in
469 \python24\scripts).
473 \python24\scripts).
470
474
471 * ipapi.py: launch_new_instance, launch entry point needed for the
475 * ipapi.py: launch_new_instance, launch entry point needed for the
472 egg.
476 egg.
473
477
474 2006-01-23 Ville Vainio <vivainio@gmail.com>
478 2006-01-23 Ville Vainio <vivainio@gmail.com>
475
479
476 * Added %cpaste magic for pasting python code
480 * Added %cpaste magic for pasting python code
477
481
478 2006-01-22 Ville Vainio <vivainio@gmail.com>
482 2006-01-22 Ville Vainio <vivainio@gmail.com>
479
483
480 * Merge from branches/0.7.1 into trunk, revs 1052-1057
484 * Merge from branches/0.7.1 into trunk, revs 1052-1057
481
485
482 * Versionstring = 0.7.2.svn
486 * Versionstring = 0.7.2.svn
483
487
484 * eggsetup.py: A separate script for constructing eggs, creates
488 * eggsetup.py: A separate script for constructing eggs, creates
485 proper launch scripts even on Windows (an .exe file in
489 proper launch scripts even on Windows (an .exe file in
486 \python24\scripts).
490 \python24\scripts).
487
491
488 * ipapi.py: launch_new_instance, launch entry point needed for the
492 * ipapi.py: launch_new_instance, launch entry point needed for the
489 egg.
493 egg.
490
494
491 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
495 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
492
496
493 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
497 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
494 %pfile foo would print the file for foo even if it was a binary.
498 %pfile foo would print the file for foo even if it was a binary.
495 Now, extensions '.so' and '.dll' are skipped.
499 Now, extensions '.so' and '.dll' are skipped.
496
500
497 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
501 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
498 bug, where macros would fail in all threaded modes. I'm not 100%
502 bug, where macros would fail in all threaded modes. I'm not 100%
499 sure, so I'm going to put out an rc instead of making a release
503 sure, so I'm going to put out an rc instead of making a release
500 today, and wait for feedback for at least a few days.
504 today, and wait for feedback for at least a few days.
501
505
502 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
506 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
503 it...) the handling of pasting external code with autoindent on.
507 it...) the handling of pasting external code with autoindent on.
504 To get out of a multiline input, the rule will appear for most
508 To get out of a multiline input, the rule will appear for most
505 users unchanged: two blank lines or change the indent level
509 users unchanged: two blank lines or change the indent level
506 proposed by IPython. But there is a twist now: you can
510 proposed by IPython. But there is a twist now: you can
507 add/subtract only *one or two spaces*. If you add/subtract three
511 add/subtract only *one or two spaces*. If you add/subtract three
508 or more (unless you completely delete the line), IPython will
512 or more (unless you completely delete the line), IPython will
509 accept that line, and you'll need to enter a second one of pure
513 accept that line, and you'll need to enter a second one of pure
510 whitespace. I know it sounds complicated, but I can't find a
514 whitespace. I know it sounds complicated, but I can't find a
511 different solution that covers all the cases, with the right
515 different solution that covers all the cases, with the right
512 heuristics. Hopefully in actual use, nobody will really notice
516 heuristics. Hopefully in actual use, nobody will really notice
513 all these strange rules and things will 'just work'.
517 all these strange rules and things will 'just work'.
514
518
515 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
519 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
516
520
517 * IPython/iplib.py (interact): catch exceptions which can be
521 * IPython/iplib.py (interact): catch exceptions which can be
518 triggered asynchronously by signal handlers. Thanks to an
522 triggered asynchronously by signal handlers. Thanks to an
519 automatic crash report, submitted by Colin Kingsley
523 automatic crash report, submitted by Colin Kingsley
520 <tercel-AT-gentoo.org>.
524 <tercel-AT-gentoo.org>.
521
525
522 2006-01-20 Ville Vainio <vivainio@gmail.com>
526 2006-01-20 Ville Vainio <vivainio@gmail.com>
523
527
524 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
528 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
525 (%rehashdir, very useful, try it out) of how to extend ipython
529 (%rehashdir, very useful, try it out) of how to extend ipython
526 with new magics. Also added Extensions dir to pythonpath to make
530 with new magics. Also added Extensions dir to pythonpath to make
527 importing extensions easy.
531 importing extensions easy.
528
532
529 * %store now complains when trying to store interactively declared
533 * %store now complains when trying to store interactively declared
530 classes / instances of those classes.
534 classes / instances of those classes.
531
535
532 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
536 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
533 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
537 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
534 if they exist, and ipy_user_conf.py with some defaults is created for
538 if they exist, and ipy_user_conf.py with some defaults is created for
535 the user.
539 the user.
536
540
537 * Startup rehashing done by the config file, not InterpreterExec.
541 * Startup rehashing done by the config file, not InterpreterExec.
538 This means system commands are available even without selecting the
542 This means system commands are available even without selecting the
539 pysh profile. It's the sensible default after all.
543 pysh profile. It's the sensible default after all.
540
544
541 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
545 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
542
546
543 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
547 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
544 multiline code with autoindent on working. But I am really not
548 multiline code with autoindent on working. But I am really not
545 sure, so this needs more testing. Will commit a debug-enabled
549 sure, so this needs more testing. Will commit a debug-enabled
546 version for now, while I test it some more, so that Ville and
550 version for now, while I test it some more, so that Ville and
547 others may also catch any problems. Also made
551 others may also catch any problems. Also made
548 self.indent_current_str() a method, to ensure that there's no
552 self.indent_current_str() a method, to ensure that there's no
549 chance of the indent space count and the corresponding string
553 chance of the indent space count and the corresponding string
550 falling out of sync. All code needing the string should just call
554 falling out of sync. All code needing the string should just call
551 the method.
555 the method.
552
556
553 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
557 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
554
558
555 * IPython/Magic.py (magic_edit): fix check for when users don't
559 * IPython/Magic.py (magic_edit): fix check for when users don't
556 save their output files, the try/except was in the wrong section.
560 save their output files, the try/except was in the wrong section.
557
561
558 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
562 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
559
563
560 * IPython/Magic.py (magic_run): fix __file__ global missing from
564 * IPython/Magic.py (magic_run): fix __file__ global missing from
561 script's namespace when executed via %run. After a report by
565 script's namespace when executed via %run. After a report by
562 Vivian.
566 Vivian.
563
567
564 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
568 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
565 when using python 2.4. The parent constructor changed in 2.4, and
569 when using python 2.4. The parent constructor changed in 2.4, and
566 we need to track it directly (we can't call it, as it messes up
570 we need to track it directly (we can't call it, as it messes up
567 readline and tab-completion inside our pdb would stop working).
571 readline and tab-completion inside our pdb would stop working).
568 After a bug report by R. Bernstein <rocky-AT-panix.com>.
572 After a bug report by R. Bernstein <rocky-AT-panix.com>.
569
573
570 2006-01-16 Ville Vainio <vivainio@gmail.com>
574 2006-01-16 Ville Vainio <vivainio@gmail.com>
571
575
572 * Ipython/magic.py:Reverted back to old %edit functionality
576 * Ipython/magic.py:Reverted back to old %edit functionality
573 that returns file contents on exit.
577 that returns file contents on exit.
574
578
575 * IPython/path.py: Added Jason Orendorff's "path" module to
579 * IPython/path.py: Added Jason Orendorff's "path" module to
576 IPython tree, http://www.jorendorff.com/articles/python/path/.
580 IPython tree, http://www.jorendorff.com/articles/python/path/.
577 You can get path objects conveniently through %sc, and !!, e.g.:
581 You can get path objects conveniently through %sc, and !!, e.g.:
578 sc files=ls
582 sc files=ls
579 for p in files.paths: # or files.p
583 for p in files.paths: # or files.p
580 print p,p.mtime
584 print p,p.mtime
581
585
582 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
586 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
583 now work again without considering the exclusion regexp -
587 now work again without considering the exclusion regexp -
584 hence, things like ',foo my/path' turn to 'foo("my/path")'
588 hence, things like ',foo my/path' turn to 'foo("my/path")'
585 instead of syntax error.
589 instead of syntax error.
586
590
587
591
588 2006-01-14 Ville Vainio <vivainio@gmail.com>
592 2006-01-14 Ville Vainio <vivainio@gmail.com>
589
593
590 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
594 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
591 ipapi decorators for python 2.4 users, options() provides access to rc
595 ipapi decorators for python 2.4 users, options() provides access to rc
592 data.
596 data.
593
597
594 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
598 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
595 as path separators (even on Linux ;-). Space character after
599 as path separators (even on Linux ;-). Space character after
596 backslash (as yielded by tab completer) is still space;
600 backslash (as yielded by tab completer) is still space;
597 "%cd long\ name" works as expected.
601 "%cd long\ name" works as expected.
598
602
599 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
603 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
600 as "chain of command", with priority. API stays the same,
604 as "chain of command", with priority. API stays the same,
601 TryNext exception raised by a hook function signals that
605 TryNext exception raised by a hook function signals that
602 current hook failed and next hook should try handling it, as
606 current hook failed and next hook should try handling it, as
603 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
607 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
604 requested configurable display hook, which is now implemented.
608 requested configurable display hook, which is now implemented.
605
609
606 2006-01-13 Ville Vainio <vivainio@gmail.com>
610 2006-01-13 Ville Vainio <vivainio@gmail.com>
607
611
608 * IPython/platutils*.py: platform specific utility functions,
612 * IPython/platutils*.py: platform specific utility functions,
609 so far only set_term_title is implemented (change terminal
613 so far only set_term_title is implemented (change terminal
610 label in windowing systems). %cd now changes the title to
614 label in windowing systems). %cd now changes the title to
611 current dir.
615 current dir.
612
616
613 * IPython/Release.py: Added myself to "authors" list,
617 * IPython/Release.py: Added myself to "authors" list,
614 had to create new files.
618 had to create new files.
615
619
616 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
620 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
617 shell escape; not a known bug but had potential to be one in the
621 shell escape; not a known bug but had potential to be one in the
618 future.
622 future.
619
623
620 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
624 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
621 extension API for IPython! See the module for usage example. Fix
625 extension API for IPython! See the module for usage example. Fix
622 OInspect for docstring-less magic functions.
626 OInspect for docstring-less magic functions.
623
627
624
628
625 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
629 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
626
630
627 * IPython/iplib.py (raw_input): temporarily deactivate all
631 * IPython/iplib.py (raw_input): temporarily deactivate all
628 attempts at allowing pasting of code with autoindent on. It
632 attempts at allowing pasting of code with autoindent on. It
629 introduced bugs (reported by Prabhu) and I can't seem to find a
633 introduced bugs (reported by Prabhu) and I can't seem to find a
630 robust combination which works in all cases. Will have to revisit
634 robust combination which works in all cases. Will have to revisit
631 later.
635 later.
632
636
633 * IPython/genutils.py: remove isspace() function. We've dropped
637 * IPython/genutils.py: remove isspace() function. We've dropped
634 2.2 compatibility, so it's OK to use the string method.
638 2.2 compatibility, so it's OK to use the string method.
635
639
636 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
640 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
637
641
638 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
642 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
639 matching what NOT to autocall on, to include all python binary
643 matching what NOT to autocall on, to include all python binary
640 operators (including things like 'and', 'or', 'is' and 'in').
644 operators (including things like 'and', 'or', 'is' and 'in').
641 Prompted by a bug report on 'foo & bar', but I realized we had
645 Prompted by a bug report on 'foo & bar', but I realized we had
642 many more potential bug cases with other operators. The regexp is
646 many more potential bug cases with other operators. The regexp is
643 self.re_exclude_auto, it's fairly commented.
647 self.re_exclude_auto, it's fairly commented.
644
648
645 2006-01-12 Ville Vainio <vivainio@gmail.com>
649 2006-01-12 Ville Vainio <vivainio@gmail.com>
646
650
647 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
651 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
648 Prettified and hardened string/backslash quoting with ipsystem(),
652 Prettified and hardened string/backslash quoting with ipsystem(),
649 ipalias() and ipmagic(). Now even \ characters are passed to
653 ipalias() and ipmagic(). Now even \ characters are passed to
650 %magics, !shell escapes and aliases exactly as they are in the
654 %magics, !shell escapes and aliases exactly as they are in the
651 ipython command line. Should improve backslash experience,
655 ipython command line. Should improve backslash experience,
652 particularly in Windows (path delimiter for some commands that
656 particularly in Windows (path delimiter for some commands that
653 won't understand '/'), but Unix benefits as well (regexps). %cd
657 won't understand '/'), but Unix benefits as well (regexps). %cd
654 magic still doesn't support backslash path delimiters, though. Also
658 magic still doesn't support backslash path delimiters, though. Also
655 deleted all pretense of supporting multiline command strings in
659 deleted all pretense of supporting multiline command strings in
656 !system or %magic commands. Thanks to Jerry McRae for suggestions.
660 !system or %magic commands. Thanks to Jerry McRae for suggestions.
657
661
658 * doc/build_doc_instructions.txt added. Documentation on how to
662 * doc/build_doc_instructions.txt added. Documentation on how to
659 use doc/update_manual.py, added yesterday. Both files contributed
663 use doc/update_manual.py, added yesterday. Both files contributed
660 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
664 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
661 doc/*.sh for deprecation at a later date.
665 doc/*.sh for deprecation at a later date.
662
666
663 * /ipython.py Added ipython.py to root directory for
667 * /ipython.py Added ipython.py to root directory for
664 zero-installation (tar xzvf ipython.tgz; cd ipython; python
668 zero-installation (tar xzvf ipython.tgz; cd ipython; python
665 ipython.py) and development convenience (no need to kee doing
669 ipython.py) and development convenience (no need to kee doing
666 "setup.py install" between changes).
670 "setup.py install" between changes).
667
671
668 * Made ! and !! shell escapes work (again) in multiline expressions:
672 * Made ! and !! shell escapes work (again) in multiline expressions:
669 if 1:
673 if 1:
670 !ls
674 !ls
671 !!ls
675 !!ls
672
676
673 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
677 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
674
678
675 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
679 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
676 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
680 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
677 module in case-insensitive installation. Was causing crashes
681 module in case-insensitive installation. Was causing crashes
678 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
682 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
679
683
680 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
684 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
681 <marienz-AT-gentoo.org>, closes
685 <marienz-AT-gentoo.org>, closes
682 http://www.scipy.net/roundup/ipython/issue51.
686 http://www.scipy.net/roundup/ipython/issue51.
683
687
684 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
688 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
685
689
686 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
690 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
687 problem of excessive CPU usage under *nix and keyboard lag under
691 problem of excessive CPU usage under *nix and keyboard lag under
688 win32.
692 win32.
689
693
690 2006-01-10 *** Released version 0.7.0
694 2006-01-10 *** Released version 0.7.0
691
695
692 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
696 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
693
697
694 * IPython/Release.py (revision): tag version number to 0.7.0,
698 * IPython/Release.py (revision): tag version number to 0.7.0,
695 ready for release.
699 ready for release.
696
700
697 * IPython/Magic.py (magic_edit): Add print statement to %edit so
701 * IPython/Magic.py (magic_edit): Add print statement to %edit so
698 it informs the user of the name of the temp. file used. This can
702 it informs the user of the name of the temp. file used. This can
699 help if you decide later to reuse that same file, so you know
703 help if you decide later to reuse that same file, so you know
700 where to copy the info from.
704 where to copy the info from.
701
705
702 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
706 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
703
707
704 * setup_bdist_egg.py: little script to build an egg. Added
708 * setup_bdist_egg.py: little script to build an egg. Added
705 support in the release tools as well.
709 support in the release tools as well.
706
710
707 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
711 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
708
712
709 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
713 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
710 version selection (new -wxversion command line and ipythonrc
714 version selection (new -wxversion command line and ipythonrc
711 parameter). Patch contributed by Arnd Baecker
715 parameter). Patch contributed by Arnd Baecker
712 <arnd.baecker-AT-web.de>.
716 <arnd.baecker-AT-web.de>.
713
717
714 * IPython/iplib.py (embed_mainloop): fix tab-completion in
718 * IPython/iplib.py (embed_mainloop): fix tab-completion in
715 embedded instances, for variables defined at the interactive
719 embedded instances, for variables defined at the interactive
716 prompt of the embedded ipython. Reported by Arnd.
720 prompt of the embedded ipython. Reported by Arnd.
717
721
718 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
722 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
719 it can be used as a (stateful) toggle, or with a direct parameter.
723 it can be used as a (stateful) toggle, or with a direct parameter.
720
724
721 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
725 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
722 could be triggered in certain cases and cause the traceback
726 could be triggered in certain cases and cause the traceback
723 printer not to work.
727 printer not to work.
724
728
725 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
729 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
726
730
727 * IPython/iplib.py (_should_recompile): Small fix, closes
731 * IPython/iplib.py (_should_recompile): Small fix, closes
728 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
732 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
729
733
730 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
734 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
731
735
732 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
736 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
733 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
737 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
734 Moad for help with tracking it down.
738 Moad for help with tracking it down.
735
739
736 * IPython/iplib.py (handle_auto): fix autocall handling for
740 * IPython/iplib.py (handle_auto): fix autocall handling for
737 objects which support BOTH __getitem__ and __call__ (so that f [x]
741 objects which support BOTH __getitem__ and __call__ (so that f [x]
738 is left alone, instead of becoming f([x]) automatically).
742 is left alone, instead of becoming f([x]) automatically).
739
743
740 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
744 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
741 Ville's patch.
745 Ville's patch.
742
746
743 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
747 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
744
748
745 * IPython/iplib.py (handle_auto): changed autocall semantics to
749 * IPython/iplib.py (handle_auto): changed autocall semantics to
746 include 'smart' mode, where the autocall transformation is NOT
750 include 'smart' mode, where the autocall transformation is NOT
747 applied if there are no arguments on the line. This allows you to
751 applied if there are no arguments on the line. This allows you to
748 just type 'foo' if foo is a callable to see its internal form,
752 just type 'foo' if foo is a callable to see its internal form,
749 instead of having it called with no arguments (typically a
753 instead of having it called with no arguments (typically a
750 mistake). The old 'full' autocall still exists: for that, you
754 mistake). The old 'full' autocall still exists: for that, you
751 need to set the 'autocall' parameter to 2 in your ipythonrc file.
755 need to set the 'autocall' parameter to 2 in your ipythonrc file.
752
756
753 * IPython/completer.py (Completer.attr_matches): add
757 * IPython/completer.py (Completer.attr_matches): add
754 tab-completion support for Enthoughts' traits. After a report by
758 tab-completion support for Enthoughts' traits. After a report by
755 Arnd and a patch by Prabhu.
759 Arnd and a patch by Prabhu.
756
760
757 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
761 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
758
762
759 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
763 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
760 Schmolck's patch to fix inspect.getinnerframes().
764 Schmolck's patch to fix inspect.getinnerframes().
761
765
762 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
766 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
763 for embedded instances, regarding handling of namespaces and items
767 for embedded instances, regarding handling of namespaces and items
764 added to the __builtin__ one. Multiple embedded instances and
768 added to the __builtin__ one. Multiple embedded instances and
765 recursive embeddings should work better now (though I'm not sure
769 recursive embeddings should work better now (though I'm not sure
766 I've got all the corner cases fixed, that code is a bit of a brain
770 I've got all the corner cases fixed, that code is a bit of a brain
767 twister).
771 twister).
768
772
769 * IPython/Magic.py (magic_edit): added support to edit in-memory
773 * IPython/Magic.py (magic_edit): added support to edit in-memory
770 macros (automatically creates the necessary temp files). %edit
774 macros (automatically creates the necessary temp files). %edit
771 also doesn't return the file contents anymore, it's just noise.
775 also doesn't return the file contents anymore, it's just noise.
772
776
773 * IPython/completer.py (Completer.attr_matches): revert change to
777 * IPython/completer.py (Completer.attr_matches): revert change to
774 complete only on attributes listed in __all__. I realized it
778 complete only on attributes listed in __all__. I realized it
775 cripples the tab-completion system as a tool for exploring the
779 cripples the tab-completion system as a tool for exploring the
776 internals of unknown libraries (it renders any non-__all__
780 internals of unknown libraries (it renders any non-__all__
777 attribute off-limits). I got bit by this when trying to see
781 attribute off-limits). I got bit by this when trying to see
778 something inside the dis module.
782 something inside the dis module.
779
783
780 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
784 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
781
785
782 * IPython/iplib.py (InteractiveShell.__init__): add .meta
786 * IPython/iplib.py (InteractiveShell.__init__): add .meta
783 namespace for users and extension writers to hold data in. This
787 namespace for users and extension writers to hold data in. This
784 follows the discussion in
788 follows the discussion in
785 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
789 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
786
790
787 * IPython/completer.py (IPCompleter.complete): small patch to help
791 * IPython/completer.py (IPCompleter.complete): small patch to help
788 tab-completion under Emacs, after a suggestion by John Barnard
792 tab-completion under Emacs, after a suggestion by John Barnard
789 <barnarj-AT-ccf.org>.
793 <barnarj-AT-ccf.org>.
790
794
791 * IPython/Magic.py (Magic.extract_input_slices): added support for
795 * IPython/Magic.py (Magic.extract_input_slices): added support for
792 the slice notation in magics to use N-M to represent numbers N...M
796 the slice notation in magics to use N-M to represent numbers N...M
793 (closed endpoints). This is used by %macro and %save.
797 (closed endpoints). This is used by %macro and %save.
794
798
795 * IPython/completer.py (Completer.attr_matches): for modules which
799 * IPython/completer.py (Completer.attr_matches): for modules which
796 define __all__, complete only on those. After a patch by Jeffrey
800 define __all__, complete only on those. After a patch by Jeffrey
797 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
801 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
798 speed up this routine.
802 speed up this routine.
799
803
800 * IPython/Logger.py (Logger.log): fix a history handling bug. I
804 * IPython/Logger.py (Logger.log): fix a history handling bug. I
801 don't know if this is the end of it, but the behavior now is
805 don't know if this is the end of it, but the behavior now is
802 certainly much more correct. Note that coupled with macros,
806 certainly much more correct. Note that coupled with macros,
803 slightly surprising (at first) behavior may occur: a macro will in
807 slightly surprising (at first) behavior may occur: a macro will in
804 general expand to multiple lines of input, so upon exiting, the
808 general expand to multiple lines of input, so upon exiting, the
805 in/out counters will both be bumped by the corresponding amount
809 in/out counters will both be bumped by the corresponding amount
806 (as if the macro's contents had been typed interactively). Typing
810 (as if the macro's contents had been typed interactively). Typing
807 %hist will reveal the intermediate (silently processed) lines.
811 %hist will reveal the intermediate (silently processed) lines.
808
812
809 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
813 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
810 pickle to fail (%run was overwriting __main__ and not restoring
814 pickle to fail (%run was overwriting __main__ and not restoring
811 it, but pickle relies on __main__ to operate).
815 it, but pickle relies on __main__ to operate).
812
816
813 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
817 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
814 using properties, but forgot to make the main InteractiveShell
818 using properties, but forgot to make the main InteractiveShell
815 class a new-style class. Properties fail silently, and
819 class a new-style class. Properties fail silently, and
816 misteriously, with old-style class (getters work, but
820 misteriously, with old-style class (getters work, but
817 setters don't do anything).
821 setters don't do anything).
818
822
819 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
823 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
820
824
821 * IPython/Magic.py (magic_history): fix history reporting bug (I
825 * IPython/Magic.py (magic_history): fix history reporting bug (I
822 know some nasties are still there, I just can't seem to find a
826 know some nasties are still there, I just can't seem to find a
823 reproducible test case to track them down; the input history is
827 reproducible test case to track them down; the input history is
824 falling out of sync...)
828 falling out of sync...)
825
829
826 * IPython/iplib.py (handle_shell_escape): fix bug where both
830 * IPython/iplib.py (handle_shell_escape): fix bug where both
827 aliases and system accesses where broken for indented code (such
831 aliases and system accesses where broken for indented code (such
828 as loops).
832 as loops).
829
833
830 * IPython/genutils.py (shell): fix small but critical bug for
834 * IPython/genutils.py (shell): fix small but critical bug for
831 win32 system access.
835 win32 system access.
832
836
833 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
837 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
834
838
835 * IPython/iplib.py (showtraceback): remove use of the
839 * IPython/iplib.py (showtraceback): remove use of the
836 sys.last_{type/value/traceback} structures, which are non
840 sys.last_{type/value/traceback} structures, which are non
837 thread-safe.
841 thread-safe.
838 (_prefilter): change control flow to ensure that we NEVER
842 (_prefilter): change control flow to ensure that we NEVER
839 introspect objects when autocall is off. This will guarantee that
843 introspect objects when autocall is off. This will guarantee that
840 having an input line of the form 'x.y', where access to attribute
844 having an input line of the form 'x.y', where access to attribute
841 'y' has side effects, doesn't trigger the side effect TWICE. It
845 'y' has side effects, doesn't trigger the side effect TWICE. It
842 is important to note that, with autocall on, these side effects
846 is important to note that, with autocall on, these side effects
843 can still happen.
847 can still happen.
844 (ipsystem): new builtin, to complete the ip{magic/alias/system}
848 (ipsystem): new builtin, to complete the ip{magic/alias/system}
845 trio. IPython offers these three kinds of special calls which are
849 trio. IPython offers these three kinds of special calls which are
846 not python code, and it's a good thing to have their call method
850 not python code, and it's a good thing to have their call method
847 be accessible as pure python functions (not just special syntax at
851 be accessible as pure python functions (not just special syntax at
848 the command line). It gives us a better internal implementation
852 the command line). It gives us a better internal implementation
849 structure, as well as exposing these for user scripting more
853 structure, as well as exposing these for user scripting more
850 cleanly.
854 cleanly.
851
855
852 * IPython/macro.py (Macro.__init__): moved macros to a standalone
856 * IPython/macro.py (Macro.__init__): moved macros to a standalone
853 file. Now that they'll be more likely to be used with the
857 file. Now that they'll be more likely to be used with the
854 persistance system (%store), I want to make sure their module path
858 persistance system (%store), I want to make sure their module path
855 doesn't change in the future, so that we don't break things for
859 doesn't change in the future, so that we don't break things for
856 users' persisted data.
860 users' persisted data.
857
861
858 * IPython/iplib.py (autoindent_update): move indentation
862 * IPython/iplib.py (autoindent_update): move indentation
859 management into the _text_ processing loop, not the keyboard
863 management into the _text_ processing loop, not the keyboard
860 interactive one. This is necessary to correctly process non-typed
864 interactive one. This is necessary to correctly process non-typed
861 multiline input (such as macros).
865 multiline input (such as macros).
862
866
863 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
867 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
864 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
868 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
865 which was producing problems in the resulting manual.
869 which was producing problems in the resulting manual.
866 (magic_whos): improve reporting of instances (show their class,
870 (magic_whos): improve reporting of instances (show their class,
867 instead of simply printing 'instance' which isn't terribly
871 instead of simply printing 'instance' which isn't terribly
868 informative).
872 informative).
869
873
870 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
874 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
871 (minor mods) to support network shares under win32.
875 (minor mods) to support network shares under win32.
872
876
873 * IPython/winconsole.py (get_console_size): add new winconsole
877 * IPython/winconsole.py (get_console_size): add new winconsole
874 module and fixes to page_dumb() to improve its behavior under
878 module and fixes to page_dumb() to improve its behavior under
875 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
879 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
876
880
877 * IPython/Magic.py (Macro): simplified Macro class to just
881 * IPython/Magic.py (Macro): simplified Macro class to just
878 subclass list. We've had only 2.2 compatibility for a very long
882 subclass list. We've had only 2.2 compatibility for a very long
879 time, yet I was still avoiding subclassing the builtin types. No
883 time, yet I was still avoiding subclassing the builtin types. No
880 more (I'm also starting to use properties, though I won't shift to
884 more (I'm also starting to use properties, though I won't shift to
881 2.3-specific features quite yet).
885 2.3-specific features quite yet).
882 (magic_store): added Ville's patch for lightweight variable
886 (magic_store): added Ville's patch for lightweight variable
883 persistence, after a request on the user list by Matt Wilkie
887 persistence, after a request on the user list by Matt Wilkie
884 <maphew-AT-gmail.com>. The new %store magic's docstring has full
888 <maphew-AT-gmail.com>. The new %store magic's docstring has full
885 details.
889 details.
886
890
887 * IPython/iplib.py (InteractiveShell.post_config_initialization):
891 * IPython/iplib.py (InteractiveShell.post_config_initialization):
888 changed the default logfile name from 'ipython.log' to
892 changed the default logfile name from 'ipython.log' to
889 'ipython_log.py'. These logs are real python files, and now that
893 'ipython_log.py'. These logs are real python files, and now that
890 we have much better multiline support, people are more likely to
894 we have much better multiline support, people are more likely to
891 want to use them as such. Might as well name them correctly.
895 want to use them as such. Might as well name them correctly.
892
896
893 * IPython/Magic.py: substantial cleanup. While we can't stop
897 * IPython/Magic.py: substantial cleanup. While we can't stop
894 using magics as mixins, due to the existing customizations 'out
898 using magics as mixins, due to the existing customizations 'out
895 there' which rely on the mixin naming conventions, at least I
899 there' which rely on the mixin naming conventions, at least I
896 cleaned out all cross-class name usage. So once we are OK with
900 cleaned out all cross-class name usage. So once we are OK with
897 breaking compatibility, the two systems can be separated.
901 breaking compatibility, the two systems can be separated.
898
902
899 * IPython/Logger.py: major cleanup. This one is NOT a mixin
903 * IPython/Logger.py: major cleanup. This one is NOT a mixin
900 anymore, and the class is a fair bit less hideous as well. New
904 anymore, and the class is a fair bit less hideous as well. New
901 features were also introduced: timestamping of input, and logging
905 features were also introduced: timestamping of input, and logging
902 of output results. These are user-visible with the -t and -o
906 of output results. These are user-visible with the -t and -o
903 options to %logstart. Closes
907 options to %logstart. Closes
904 http://www.scipy.net/roundup/ipython/issue11 and a request by
908 http://www.scipy.net/roundup/ipython/issue11 and a request by
905 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
909 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
906
910
907 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
911 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
908
912
909 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
913 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
910 better hadnle backslashes in paths. See the thread 'More Windows
914 better hadnle backslashes in paths. See the thread 'More Windows
911 questions part 2 - \/ characters revisited' on the iypthon user
915 questions part 2 - \/ characters revisited' on the iypthon user
912 list:
916 list:
913 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
917 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
914
918
915 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
919 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
916
920
917 (InteractiveShell.__init__): change threaded shells to not use the
921 (InteractiveShell.__init__): change threaded shells to not use the
918 ipython crash handler. This was causing more problems than not,
922 ipython crash handler. This was causing more problems than not,
919 as exceptions in the main thread (GUI code, typically) would
923 as exceptions in the main thread (GUI code, typically) would
920 always show up as a 'crash', when they really weren't.
924 always show up as a 'crash', when they really weren't.
921
925
922 The colors and exception mode commands (%colors/%xmode) have been
926 The colors and exception mode commands (%colors/%xmode) have been
923 synchronized to also take this into account, so users can get
927 synchronized to also take this into account, so users can get
924 verbose exceptions for their threaded code as well. I also added
928 verbose exceptions for their threaded code as well. I also added
925 support for activating pdb inside this exception handler as well,
929 support for activating pdb inside this exception handler as well,
926 so now GUI authors can use IPython's enhanced pdb at runtime.
930 so now GUI authors can use IPython's enhanced pdb at runtime.
927
931
928 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
932 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
929 true by default, and add it to the shipped ipythonrc file. Since
933 true by default, and add it to the shipped ipythonrc file. Since
930 this asks the user before proceeding, I think it's OK to make it
934 this asks the user before proceeding, I think it's OK to make it
931 true by default.
935 true by default.
932
936
933 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
937 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
934 of the previous special-casing of input in the eval loop. I think
938 of the previous special-casing of input in the eval loop. I think
935 this is cleaner, as they really are commands and shouldn't have
939 this is cleaner, as they really are commands and shouldn't have
936 a special role in the middle of the core code.
940 a special role in the middle of the core code.
937
941
938 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
942 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
939
943
940 * IPython/iplib.py (edit_syntax_error): added support for
944 * IPython/iplib.py (edit_syntax_error): added support for
941 automatically reopening the editor if the file had a syntax error
945 automatically reopening the editor if the file had a syntax error
942 in it. Thanks to scottt who provided the patch at:
946 in it. Thanks to scottt who provided the patch at:
943 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
947 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
944 version committed).
948 version committed).
945
949
946 * IPython/iplib.py (handle_normal): add suport for multi-line
950 * IPython/iplib.py (handle_normal): add suport for multi-line
947 input with emtpy lines. This fixes
951 input with emtpy lines. This fixes
948 http://www.scipy.net/roundup/ipython/issue43 and a similar
952 http://www.scipy.net/roundup/ipython/issue43 and a similar
949 discussion on the user list.
953 discussion on the user list.
950
954
951 WARNING: a behavior change is necessarily introduced to support
955 WARNING: a behavior change is necessarily introduced to support
952 blank lines: now a single blank line with whitespace does NOT
956 blank lines: now a single blank line with whitespace does NOT
953 break the input loop, which means that when autoindent is on, by
957 break the input loop, which means that when autoindent is on, by
954 default hitting return on the next (indented) line does NOT exit.
958 default hitting return on the next (indented) line does NOT exit.
955
959
956 Instead, to exit a multiline input you can either have:
960 Instead, to exit a multiline input you can either have:
957
961
958 - TWO whitespace lines (just hit return again), or
962 - TWO whitespace lines (just hit return again), or
959 - a single whitespace line of a different length than provided
963 - a single whitespace line of a different length than provided
960 by the autoindent (add or remove a space).
964 by the autoindent (add or remove a space).
961
965
962 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
966 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
963 module to better organize all readline-related functionality.
967 module to better organize all readline-related functionality.
964 I've deleted FlexCompleter and put all completion clases here.
968 I've deleted FlexCompleter and put all completion clases here.
965
969
966 * IPython/iplib.py (raw_input): improve indentation management.
970 * IPython/iplib.py (raw_input): improve indentation management.
967 It is now possible to paste indented code with autoindent on, and
971 It is now possible to paste indented code with autoindent on, and
968 the code is interpreted correctly (though it still looks bad on
972 the code is interpreted correctly (though it still looks bad on
969 screen, due to the line-oriented nature of ipython).
973 screen, due to the line-oriented nature of ipython).
970 (MagicCompleter.complete): change behavior so that a TAB key on an
974 (MagicCompleter.complete): change behavior so that a TAB key on an
971 otherwise empty line actually inserts a tab, instead of completing
975 otherwise empty line actually inserts a tab, instead of completing
972 on the entire global namespace. This makes it easier to use the
976 on the entire global namespace. This makes it easier to use the
973 TAB key for indentation. After a request by Hans Meine
977 TAB key for indentation. After a request by Hans Meine
974 <hans_meine-AT-gmx.net>
978 <hans_meine-AT-gmx.net>
975 (_prefilter): add support so that typing plain 'exit' or 'quit'
979 (_prefilter): add support so that typing plain 'exit' or 'quit'
976 does a sensible thing. Originally I tried to deviate as little as
980 does a sensible thing. Originally I tried to deviate as little as
977 possible from the default python behavior, but even that one may
981 possible from the default python behavior, but even that one may
978 change in this direction (thread on python-dev to that effect).
982 change in this direction (thread on python-dev to that effect).
979 Regardless, ipython should do the right thing even if CPython's
983 Regardless, ipython should do the right thing even if CPython's
980 '>>>' prompt doesn't.
984 '>>>' prompt doesn't.
981 (InteractiveShell): removed subclassing code.InteractiveConsole
985 (InteractiveShell): removed subclassing code.InteractiveConsole
982 class. By now we'd overridden just about all of its methods: I've
986 class. By now we'd overridden just about all of its methods: I've
983 copied the remaining two over, and now ipython is a standalone
987 copied the remaining two over, and now ipython is a standalone
984 class. This will provide a clearer picture for the chainsaw
988 class. This will provide a clearer picture for the chainsaw
985 branch refactoring.
989 branch refactoring.
986
990
987 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
991 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
988
992
989 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
993 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
990 failures for objects which break when dir() is called on them.
994 failures for objects which break when dir() is called on them.
991
995
992 * IPython/FlexCompleter.py (Completer.__init__): Added support for
996 * IPython/FlexCompleter.py (Completer.__init__): Added support for
993 distinct local and global namespaces in the completer API. This
997 distinct local and global namespaces in the completer API. This
994 change allows us top properly handle completion with distinct
998 change allows us top properly handle completion with distinct
995 scopes, including in embedded instances (this had never really
999 scopes, including in embedded instances (this had never really
996 worked correctly).
1000 worked correctly).
997
1001
998 Note: this introduces a change in the constructor for
1002 Note: this introduces a change in the constructor for
999 MagicCompleter, as a new global_namespace parameter is now the
1003 MagicCompleter, as a new global_namespace parameter is now the
1000 second argument (the others were bumped one position).
1004 second argument (the others were bumped one position).
1001
1005
1002 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1006 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1003
1007
1004 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1008 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1005 embedded instances (which can be done now thanks to Vivian's
1009 embedded instances (which can be done now thanks to Vivian's
1006 frame-handling fixes for pdb).
1010 frame-handling fixes for pdb).
1007 (InteractiveShell.__init__): Fix namespace handling problem in
1011 (InteractiveShell.__init__): Fix namespace handling problem in
1008 embedded instances. We were overwriting __main__ unconditionally,
1012 embedded instances. We were overwriting __main__ unconditionally,
1009 and this should only be done for 'full' (non-embedded) IPython;
1013 and this should only be done for 'full' (non-embedded) IPython;
1010 embedded instances must respect the caller's __main__. Thanks to
1014 embedded instances must respect the caller's __main__. Thanks to
1011 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1015 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1012
1016
1013 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1017 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1014
1018
1015 * setup.py: added download_url to setup(). This registers the
1019 * setup.py: added download_url to setup(). This registers the
1016 download address at PyPI, which is not only useful to humans
1020 download address at PyPI, which is not only useful to humans
1017 browsing the site, but is also picked up by setuptools (the Eggs
1021 browsing the site, but is also picked up by setuptools (the Eggs
1018 machinery). Thanks to Ville and R. Kern for the info/discussion
1022 machinery). Thanks to Ville and R. Kern for the info/discussion
1019 on this.
1023 on this.
1020
1024
1021 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1025 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1022
1026
1023 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1027 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1024 This brings a lot of nice functionality to the pdb mode, which now
1028 This brings a lot of nice functionality to the pdb mode, which now
1025 has tab-completion, syntax highlighting, and better stack handling
1029 has tab-completion, syntax highlighting, and better stack handling
1026 than before. Many thanks to Vivian De Smedt
1030 than before. Many thanks to Vivian De Smedt
1027 <vivian-AT-vdesmedt.com> for the original patches.
1031 <vivian-AT-vdesmedt.com> for the original patches.
1028
1032
1029 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1033 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1030
1034
1031 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1035 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1032 sequence to consistently accept the banner argument. The
1036 sequence to consistently accept the banner argument. The
1033 inconsistency was tripping SAGE, thanks to Gary Zablackis
1037 inconsistency was tripping SAGE, thanks to Gary Zablackis
1034 <gzabl-AT-yahoo.com> for the report.
1038 <gzabl-AT-yahoo.com> for the report.
1035
1039
1036 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1040 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1037
1041
1038 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1042 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1039 Fix bug where a naked 'alias' call in the ipythonrc file would
1043 Fix bug where a naked 'alias' call in the ipythonrc file would
1040 cause a crash. Bug reported by Jorgen Stenarson.
1044 cause a crash. Bug reported by Jorgen Stenarson.
1041
1045
1042 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1046 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1043
1047
1044 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1048 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1045 startup time.
1049 startup time.
1046
1050
1047 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1051 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1048 instances had introduced a bug with globals in normal code. Now
1052 instances had introduced a bug with globals in normal code. Now
1049 it's working in all cases.
1053 it's working in all cases.
1050
1054
1051 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1055 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1052 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1056 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1053 has been introduced to set the default case sensitivity of the
1057 has been introduced to set the default case sensitivity of the
1054 searches. Users can still select either mode at runtime on a
1058 searches. Users can still select either mode at runtime on a
1055 per-search basis.
1059 per-search basis.
1056
1060
1057 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1061 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1058
1062
1059 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1063 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1060 attributes in wildcard searches for subclasses. Modified version
1064 attributes in wildcard searches for subclasses. Modified version
1061 of a patch by Jorgen.
1065 of a patch by Jorgen.
1062
1066
1063 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1067 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1064
1068
1065 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1069 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1066 embedded instances. I added a user_global_ns attribute to the
1070 embedded instances. I added a user_global_ns attribute to the
1067 InteractiveShell class to handle this.
1071 InteractiveShell class to handle this.
1068
1072
1069 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1073 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1070
1074
1071 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1075 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1072 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1076 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1073 (reported under win32, but may happen also in other platforms).
1077 (reported under win32, but may happen also in other platforms).
1074 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1078 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1075
1079
1076 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1080 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1077
1081
1078 * IPython/Magic.py (magic_psearch): new support for wildcard
1082 * IPython/Magic.py (magic_psearch): new support for wildcard
1079 patterns. Now, typing ?a*b will list all names which begin with a
1083 patterns. Now, typing ?a*b will list all names which begin with a
1080 and end in b, for example. The %psearch magic has full
1084 and end in b, for example. The %psearch magic has full
1081 docstrings. Many thanks to JΓΆrgen Stenarson
1085 docstrings. Many thanks to JΓΆrgen Stenarson
1082 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1086 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1083 implementing this functionality.
1087 implementing this functionality.
1084
1088
1085 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1089 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1086
1090
1087 * Manual: fixed long-standing annoyance of double-dashes (as in
1091 * Manual: fixed long-standing annoyance of double-dashes (as in
1088 --prefix=~, for example) being stripped in the HTML version. This
1092 --prefix=~, for example) being stripped in the HTML version. This
1089 is a latex2html bug, but a workaround was provided. Many thanks
1093 is a latex2html bug, but a workaround was provided. Many thanks
1090 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1094 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1091 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1095 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1092 rolling. This seemingly small issue had tripped a number of users
1096 rolling. This seemingly small issue had tripped a number of users
1093 when first installing, so I'm glad to see it gone.
1097 when first installing, so I'm glad to see it gone.
1094
1098
1095 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1099 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1096
1100
1097 * IPython/Extensions/numeric_formats.py: fix missing import,
1101 * IPython/Extensions/numeric_formats.py: fix missing import,
1098 reported by Stephen Walton.
1102 reported by Stephen Walton.
1099
1103
1100 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1104 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1101
1105
1102 * IPython/demo.py: finish demo module, fully documented now.
1106 * IPython/demo.py: finish demo module, fully documented now.
1103
1107
1104 * IPython/genutils.py (file_read): simple little utility to read a
1108 * IPython/genutils.py (file_read): simple little utility to read a
1105 file and ensure it's closed afterwards.
1109 file and ensure it's closed afterwards.
1106
1110
1107 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1111 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1108
1112
1109 * IPython/demo.py (Demo.__init__): added support for individually
1113 * IPython/demo.py (Demo.__init__): added support for individually
1110 tagging blocks for automatic execution.
1114 tagging blocks for automatic execution.
1111
1115
1112 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1116 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1113 syntax-highlighted python sources, requested by John.
1117 syntax-highlighted python sources, requested by John.
1114
1118
1115 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1119 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1116
1120
1117 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1121 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1118 finishing.
1122 finishing.
1119
1123
1120 * IPython/genutils.py (shlex_split): moved from Magic to here,
1124 * IPython/genutils.py (shlex_split): moved from Magic to here,
1121 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1125 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1122
1126
1123 * IPython/demo.py (Demo.__init__): added support for silent
1127 * IPython/demo.py (Demo.__init__): added support for silent
1124 blocks, improved marks as regexps, docstrings written.
1128 blocks, improved marks as regexps, docstrings written.
1125 (Demo.__init__): better docstring, added support for sys.argv.
1129 (Demo.__init__): better docstring, added support for sys.argv.
1126
1130
1127 * IPython/genutils.py (marquee): little utility used by the demo
1131 * IPython/genutils.py (marquee): little utility used by the demo
1128 code, handy in general.
1132 code, handy in general.
1129
1133
1130 * IPython/demo.py (Demo.__init__): new class for interactive
1134 * IPython/demo.py (Demo.__init__): new class for interactive
1131 demos. Not documented yet, I just wrote it in a hurry for
1135 demos. Not documented yet, I just wrote it in a hurry for
1132 scipy'05. Will docstring later.
1136 scipy'05. Will docstring later.
1133
1137
1134 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1138 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1135
1139
1136 * IPython/Shell.py (sigint_handler): Drastic simplification which
1140 * IPython/Shell.py (sigint_handler): Drastic simplification which
1137 also seems to make Ctrl-C work correctly across threads! This is
1141 also seems to make Ctrl-C work correctly across threads! This is
1138 so simple, that I can't beleive I'd missed it before. Needs more
1142 so simple, that I can't beleive I'd missed it before. Needs more
1139 testing, though.
1143 testing, though.
1140 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1144 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1141 like this before...
1145 like this before...
1142
1146
1143 * IPython/genutils.py (get_home_dir): add protection against
1147 * IPython/genutils.py (get_home_dir): add protection against
1144 non-dirs in win32 registry.
1148 non-dirs in win32 registry.
1145
1149
1146 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1150 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1147 bug where dict was mutated while iterating (pysh crash).
1151 bug where dict was mutated while iterating (pysh crash).
1148
1152
1149 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1153 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1150
1154
1151 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1155 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1152 spurious newlines added by this routine. After a report by
1156 spurious newlines added by this routine. After a report by
1153 F. Mantegazza.
1157 F. Mantegazza.
1154
1158
1155 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1159 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1156
1160
1157 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1161 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1158 calls. These were a leftover from the GTK 1.x days, and can cause
1162 calls. These were a leftover from the GTK 1.x days, and can cause
1159 problems in certain cases (after a report by John Hunter).
1163 problems in certain cases (after a report by John Hunter).
1160
1164
1161 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1165 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1162 os.getcwd() fails at init time. Thanks to patch from David Remahl
1166 os.getcwd() fails at init time. Thanks to patch from David Remahl
1163 <chmod007-AT-mac.com>.
1167 <chmod007-AT-mac.com>.
1164 (InteractiveShell.__init__): prevent certain special magics from
1168 (InteractiveShell.__init__): prevent certain special magics from
1165 being shadowed by aliases. Closes
1169 being shadowed by aliases. Closes
1166 http://www.scipy.net/roundup/ipython/issue41.
1170 http://www.scipy.net/roundup/ipython/issue41.
1167
1171
1168 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1172 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1169
1173
1170 * IPython/iplib.py (InteractiveShell.complete): Added new
1174 * IPython/iplib.py (InteractiveShell.complete): Added new
1171 top-level completion method to expose the completion mechanism
1175 top-level completion method to expose the completion mechanism
1172 beyond readline-based environments.
1176 beyond readline-based environments.
1173
1177
1174 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1178 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1175
1179
1176 * tools/ipsvnc (svnversion): fix svnversion capture.
1180 * tools/ipsvnc (svnversion): fix svnversion capture.
1177
1181
1178 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1182 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1179 attribute to self, which was missing. Before, it was set by a
1183 attribute to self, which was missing. Before, it was set by a
1180 routine which in certain cases wasn't being called, so the
1184 routine which in certain cases wasn't being called, so the
1181 instance could end up missing the attribute. This caused a crash.
1185 instance could end up missing the attribute. This caused a crash.
1182 Closes http://www.scipy.net/roundup/ipython/issue40.
1186 Closes http://www.scipy.net/roundup/ipython/issue40.
1183
1187
1184 2005-08-16 Fernando Perez <fperez@colorado.edu>
1188 2005-08-16 Fernando Perez <fperez@colorado.edu>
1185
1189
1186 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1190 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1187 contains non-string attribute. Closes
1191 contains non-string attribute. Closes
1188 http://www.scipy.net/roundup/ipython/issue38.
1192 http://www.scipy.net/roundup/ipython/issue38.
1189
1193
1190 2005-08-14 Fernando Perez <fperez@colorado.edu>
1194 2005-08-14 Fernando Perez <fperez@colorado.edu>
1191
1195
1192 * tools/ipsvnc: Minor improvements, to add changeset info.
1196 * tools/ipsvnc: Minor improvements, to add changeset info.
1193
1197
1194 2005-08-12 Fernando Perez <fperez@colorado.edu>
1198 2005-08-12 Fernando Perez <fperez@colorado.edu>
1195
1199
1196 * IPython/iplib.py (runsource): remove self.code_to_run_src
1200 * IPython/iplib.py (runsource): remove self.code_to_run_src
1197 attribute. I realized this is nothing more than
1201 attribute. I realized this is nothing more than
1198 '\n'.join(self.buffer), and having the same data in two different
1202 '\n'.join(self.buffer), and having the same data in two different
1199 places is just asking for synchronization bugs. This may impact
1203 places is just asking for synchronization bugs. This may impact
1200 people who have custom exception handlers, so I need to warn
1204 people who have custom exception handlers, so I need to warn
1201 ipython-dev about it (F. Mantegazza may use them).
1205 ipython-dev about it (F. Mantegazza may use them).
1202
1206
1203 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1207 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1204
1208
1205 * IPython/genutils.py: fix 2.2 compatibility (generators)
1209 * IPython/genutils.py: fix 2.2 compatibility (generators)
1206
1210
1207 2005-07-18 Fernando Perez <fperez@colorado.edu>
1211 2005-07-18 Fernando Perez <fperez@colorado.edu>
1208
1212
1209 * IPython/genutils.py (get_home_dir): fix to help users with
1213 * IPython/genutils.py (get_home_dir): fix to help users with
1210 invalid $HOME under win32.
1214 invalid $HOME under win32.
1211
1215
1212 2005-07-17 Fernando Perez <fperez@colorado.edu>
1216 2005-07-17 Fernando Perez <fperez@colorado.edu>
1213
1217
1214 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1218 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1215 some old hacks and clean up a bit other routines; code should be
1219 some old hacks and clean up a bit other routines; code should be
1216 simpler and a bit faster.
1220 simpler and a bit faster.
1217
1221
1218 * IPython/iplib.py (interact): removed some last-resort attempts
1222 * IPython/iplib.py (interact): removed some last-resort attempts
1219 to survive broken stdout/stderr. That code was only making it
1223 to survive broken stdout/stderr. That code was only making it
1220 harder to abstract out the i/o (necessary for gui integration),
1224 harder to abstract out the i/o (necessary for gui integration),
1221 and the crashes it could prevent were extremely rare in practice
1225 and the crashes it could prevent were extremely rare in practice
1222 (besides being fully user-induced in a pretty violent manner).
1226 (besides being fully user-induced in a pretty violent manner).
1223
1227
1224 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1228 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1225 Nothing major yet, but the code is simpler to read; this should
1229 Nothing major yet, but the code is simpler to read; this should
1226 make it easier to do more serious modifications in the future.
1230 make it easier to do more serious modifications in the future.
1227
1231
1228 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1232 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1229 which broke in .15 (thanks to a report by Ville).
1233 which broke in .15 (thanks to a report by Ville).
1230
1234
1231 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1235 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1232 be quite correct, I know next to nothing about unicode). This
1236 be quite correct, I know next to nothing about unicode). This
1233 will allow unicode strings to be used in prompts, amongst other
1237 will allow unicode strings to be used in prompts, amongst other
1234 cases. It also will prevent ipython from crashing when unicode
1238 cases. It also will prevent ipython from crashing when unicode
1235 shows up unexpectedly in many places. If ascii encoding fails, we
1239 shows up unexpectedly in many places. If ascii encoding fails, we
1236 assume utf_8. Currently the encoding is not a user-visible
1240 assume utf_8. Currently the encoding is not a user-visible
1237 setting, though it could be made so if there is demand for it.
1241 setting, though it could be made so if there is demand for it.
1238
1242
1239 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1243 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1240
1244
1241 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1245 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1242
1246
1243 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1247 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1244
1248
1245 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1249 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1246 code can work transparently for 2.2/2.3.
1250 code can work transparently for 2.2/2.3.
1247
1251
1248 2005-07-16 Fernando Perez <fperez@colorado.edu>
1252 2005-07-16 Fernando Perez <fperez@colorado.edu>
1249
1253
1250 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1254 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1251 out of the color scheme table used for coloring exception
1255 out of the color scheme table used for coloring exception
1252 tracebacks. This allows user code to add new schemes at runtime.
1256 tracebacks. This allows user code to add new schemes at runtime.
1253 This is a minimally modified version of the patch at
1257 This is a minimally modified version of the patch at
1254 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1258 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1255 for the contribution.
1259 for the contribution.
1256
1260
1257 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1261 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1258 slightly modified version of the patch in
1262 slightly modified version of the patch in
1259 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1263 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1260 to remove the previous try/except solution (which was costlier).
1264 to remove the previous try/except solution (which was costlier).
1261 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1265 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1262
1266
1263 2005-06-08 Fernando Perez <fperez@colorado.edu>
1267 2005-06-08 Fernando Perez <fperez@colorado.edu>
1264
1268
1265 * IPython/iplib.py (write/write_err): Add methods to abstract all
1269 * IPython/iplib.py (write/write_err): Add methods to abstract all
1266 I/O a bit more.
1270 I/O a bit more.
1267
1271
1268 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1272 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1269 warning, reported by Aric Hagberg, fix by JD Hunter.
1273 warning, reported by Aric Hagberg, fix by JD Hunter.
1270
1274
1271 2005-06-02 *** Released version 0.6.15
1275 2005-06-02 *** Released version 0.6.15
1272
1276
1273 2005-06-01 Fernando Perez <fperez@colorado.edu>
1277 2005-06-01 Fernando Perez <fperez@colorado.edu>
1274
1278
1275 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1279 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1276 tab-completion of filenames within open-quoted strings. Note that
1280 tab-completion of filenames within open-quoted strings. Note that
1277 this requires that in ~/.ipython/ipythonrc, users change the
1281 this requires that in ~/.ipython/ipythonrc, users change the
1278 readline delimiters configuration to read:
1282 readline delimiters configuration to read:
1279
1283
1280 readline_remove_delims -/~
1284 readline_remove_delims -/~
1281
1285
1282
1286
1283 2005-05-31 *** Released version 0.6.14
1287 2005-05-31 *** Released version 0.6.14
1284
1288
1285 2005-05-29 Fernando Perez <fperez@colorado.edu>
1289 2005-05-29 Fernando Perez <fperez@colorado.edu>
1286
1290
1287 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1291 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1288 with files not on the filesystem. Reported by Eliyahu Sandler
1292 with files not on the filesystem. Reported by Eliyahu Sandler
1289 <eli@gondolin.net>
1293 <eli@gondolin.net>
1290
1294
1291 2005-05-22 Fernando Perez <fperez@colorado.edu>
1295 2005-05-22 Fernando Perez <fperez@colorado.edu>
1292
1296
1293 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1297 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1294 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1298 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1295
1299
1296 2005-05-19 Fernando Perez <fperez@colorado.edu>
1300 2005-05-19 Fernando Perez <fperez@colorado.edu>
1297
1301
1298 * IPython/iplib.py (safe_execfile): close a file which could be
1302 * IPython/iplib.py (safe_execfile): close a file which could be
1299 left open (causing problems in win32, which locks open files).
1303 left open (causing problems in win32, which locks open files).
1300 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1304 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1301
1305
1302 2005-05-18 Fernando Perez <fperez@colorado.edu>
1306 2005-05-18 Fernando Perez <fperez@colorado.edu>
1303
1307
1304 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1308 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1305 keyword arguments correctly to safe_execfile().
1309 keyword arguments correctly to safe_execfile().
1306
1310
1307 2005-05-13 Fernando Perez <fperez@colorado.edu>
1311 2005-05-13 Fernando Perez <fperez@colorado.edu>
1308
1312
1309 * ipython.1: Added info about Qt to manpage, and threads warning
1313 * ipython.1: Added info about Qt to manpage, and threads warning
1310 to usage page (invoked with --help).
1314 to usage page (invoked with --help).
1311
1315
1312 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1316 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1313 new matcher (it goes at the end of the priority list) to do
1317 new matcher (it goes at the end of the priority list) to do
1314 tab-completion on named function arguments. Submitted by George
1318 tab-completion on named function arguments. Submitted by George
1315 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1319 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1316 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1320 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1317 for more details.
1321 for more details.
1318
1322
1319 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1323 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1320 SystemExit exceptions in the script being run. Thanks to a report
1324 SystemExit exceptions in the script being run. Thanks to a report
1321 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1325 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1322 producing very annoying behavior when running unit tests.
1326 producing very annoying behavior when running unit tests.
1323
1327
1324 2005-05-12 Fernando Perez <fperez@colorado.edu>
1328 2005-05-12 Fernando Perez <fperez@colorado.edu>
1325
1329
1326 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1330 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1327 which I'd broken (again) due to a changed regexp. In the process,
1331 which I'd broken (again) due to a changed regexp. In the process,
1328 added ';' as an escape to auto-quote the whole line without
1332 added ';' as an escape to auto-quote the whole line without
1329 splitting its arguments. Thanks to a report by Jerry McRae
1333 splitting its arguments. Thanks to a report by Jerry McRae
1330 <qrs0xyc02-AT-sneakemail.com>.
1334 <qrs0xyc02-AT-sneakemail.com>.
1331
1335
1332 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1336 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1333 possible crashes caused by a TokenError. Reported by Ed Schofield
1337 possible crashes caused by a TokenError. Reported by Ed Schofield
1334 <schofield-AT-ftw.at>.
1338 <schofield-AT-ftw.at>.
1335
1339
1336 2005-05-06 Fernando Perez <fperez@colorado.edu>
1340 2005-05-06 Fernando Perez <fperez@colorado.edu>
1337
1341
1338 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1342 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1339
1343
1340 2005-04-29 Fernando Perez <fperez@colorado.edu>
1344 2005-04-29 Fernando Perez <fperez@colorado.edu>
1341
1345
1342 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1346 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1343 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1347 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1344 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1348 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1345 which provides support for Qt interactive usage (similar to the
1349 which provides support for Qt interactive usage (similar to the
1346 existing one for WX and GTK). This had been often requested.
1350 existing one for WX and GTK). This had been often requested.
1347
1351
1348 2005-04-14 *** Released version 0.6.13
1352 2005-04-14 *** Released version 0.6.13
1349
1353
1350 2005-04-08 Fernando Perez <fperez@colorado.edu>
1354 2005-04-08 Fernando Perez <fperez@colorado.edu>
1351
1355
1352 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1356 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1353 from _ofind, which gets called on almost every input line. Now,
1357 from _ofind, which gets called on almost every input line. Now,
1354 we only try to get docstrings if they are actually going to be
1358 we only try to get docstrings if they are actually going to be
1355 used (the overhead of fetching unnecessary docstrings can be
1359 used (the overhead of fetching unnecessary docstrings can be
1356 noticeable for certain objects, such as Pyro proxies).
1360 noticeable for certain objects, such as Pyro proxies).
1357
1361
1358 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1362 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1359 for completers. For some reason I had been passing them the state
1363 for completers. For some reason I had been passing them the state
1360 variable, which completers never actually need, and was in
1364 variable, which completers never actually need, and was in
1361 conflict with the rlcompleter API. Custom completers ONLY need to
1365 conflict with the rlcompleter API. Custom completers ONLY need to
1362 take the text parameter.
1366 take the text parameter.
1363
1367
1364 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1368 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1365 work correctly in pysh. I've also moved all the logic which used
1369 work correctly in pysh. I've also moved all the logic which used
1366 to be in pysh.py here, which will prevent problems with future
1370 to be in pysh.py here, which will prevent problems with future
1367 upgrades. However, this time I must warn users to update their
1371 upgrades. However, this time I must warn users to update their
1368 pysh profile to include the line
1372 pysh profile to include the line
1369
1373
1370 import_all IPython.Extensions.InterpreterExec
1374 import_all IPython.Extensions.InterpreterExec
1371
1375
1372 because otherwise things won't work for them. They MUST also
1376 because otherwise things won't work for them. They MUST also
1373 delete pysh.py and the line
1377 delete pysh.py and the line
1374
1378
1375 execfile pysh.py
1379 execfile pysh.py
1376
1380
1377 from their ipythonrc-pysh.
1381 from their ipythonrc-pysh.
1378
1382
1379 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1383 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1380 robust in the face of objects whose dir() returns non-strings
1384 robust in the face of objects whose dir() returns non-strings
1381 (which it shouldn't, but some broken libs like ITK do). Thanks to
1385 (which it shouldn't, but some broken libs like ITK do). Thanks to
1382 a patch by John Hunter (implemented differently, though). Also
1386 a patch by John Hunter (implemented differently, though). Also
1383 minor improvements by using .extend instead of + on lists.
1387 minor improvements by using .extend instead of + on lists.
1384
1388
1385 * pysh.py:
1389 * pysh.py:
1386
1390
1387 2005-04-06 Fernando Perez <fperez@colorado.edu>
1391 2005-04-06 Fernando Perez <fperez@colorado.edu>
1388
1392
1389 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1393 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1390 by default, so that all users benefit from it. Those who don't
1394 by default, so that all users benefit from it. Those who don't
1391 want it can still turn it off.
1395 want it can still turn it off.
1392
1396
1393 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1397 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1394 config file, I'd forgotten about this, so users were getting it
1398 config file, I'd forgotten about this, so users were getting it
1395 off by default.
1399 off by default.
1396
1400
1397 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1401 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1398 consistency. Now magics can be called in multiline statements,
1402 consistency. Now magics can be called in multiline statements,
1399 and python variables can be expanded in magic calls via $var.
1403 and python variables can be expanded in magic calls via $var.
1400 This makes the magic system behave just like aliases or !system
1404 This makes the magic system behave just like aliases or !system
1401 calls.
1405 calls.
1402
1406
1403 2005-03-28 Fernando Perez <fperez@colorado.edu>
1407 2005-03-28 Fernando Perez <fperez@colorado.edu>
1404
1408
1405 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1409 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1406 expensive string additions for building command. Add support for
1410 expensive string additions for building command. Add support for
1407 trailing ';' when autocall is used.
1411 trailing ';' when autocall is used.
1408
1412
1409 2005-03-26 Fernando Perez <fperez@colorado.edu>
1413 2005-03-26 Fernando Perez <fperez@colorado.edu>
1410
1414
1411 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1415 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1412 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1416 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1413 ipython.el robust against prompts with any number of spaces
1417 ipython.el robust against prompts with any number of spaces
1414 (including 0) after the ':' character.
1418 (including 0) after the ':' character.
1415
1419
1416 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1420 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1417 continuation prompt, which misled users to think the line was
1421 continuation prompt, which misled users to think the line was
1418 already indented. Closes debian Bug#300847, reported to me by
1422 already indented. Closes debian Bug#300847, reported to me by
1419 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1423 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1420
1424
1421 2005-03-23 Fernando Perez <fperez@colorado.edu>
1425 2005-03-23 Fernando Perez <fperez@colorado.edu>
1422
1426
1423 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1427 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1424 properly aligned if they have embedded newlines.
1428 properly aligned if they have embedded newlines.
1425
1429
1426 * IPython/iplib.py (runlines): Add a public method to expose
1430 * IPython/iplib.py (runlines): Add a public method to expose
1427 IPython's code execution machinery, so that users can run strings
1431 IPython's code execution machinery, so that users can run strings
1428 as if they had been typed at the prompt interactively.
1432 as if they had been typed at the prompt interactively.
1429 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1433 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1430 methods which can call the system shell, but with python variable
1434 methods which can call the system shell, but with python variable
1431 expansion. The three such methods are: __IPYTHON__.system,
1435 expansion. The three such methods are: __IPYTHON__.system,
1432 .getoutput and .getoutputerror. These need to be documented in a
1436 .getoutput and .getoutputerror. These need to be documented in a
1433 'public API' section (to be written) of the manual.
1437 'public API' section (to be written) of the manual.
1434
1438
1435 2005-03-20 Fernando Perez <fperez@colorado.edu>
1439 2005-03-20 Fernando Perez <fperez@colorado.edu>
1436
1440
1437 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1441 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1438 for custom exception handling. This is quite powerful, and it
1442 for custom exception handling. This is quite powerful, and it
1439 allows for user-installable exception handlers which can trap
1443 allows for user-installable exception handlers which can trap
1440 custom exceptions at runtime and treat them separately from
1444 custom exceptions at runtime and treat them separately from
1441 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1445 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1442 Mantegazza <mantegazza-AT-ill.fr>.
1446 Mantegazza <mantegazza-AT-ill.fr>.
1443 (InteractiveShell.set_custom_completer): public API function to
1447 (InteractiveShell.set_custom_completer): public API function to
1444 add new completers at runtime.
1448 add new completers at runtime.
1445
1449
1446 2005-03-19 Fernando Perez <fperez@colorado.edu>
1450 2005-03-19 Fernando Perez <fperez@colorado.edu>
1447
1451
1448 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1452 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1449 allow objects which provide their docstrings via non-standard
1453 allow objects which provide their docstrings via non-standard
1450 mechanisms (like Pyro proxies) to still be inspected by ipython's
1454 mechanisms (like Pyro proxies) to still be inspected by ipython's
1451 ? system.
1455 ? system.
1452
1456
1453 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1457 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1454 automatic capture system. I tried quite hard to make it work
1458 automatic capture system. I tried quite hard to make it work
1455 reliably, and simply failed. I tried many combinations with the
1459 reliably, and simply failed. I tried many combinations with the
1456 subprocess module, but eventually nothing worked in all needed
1460 subprocess module, but eventually nothing worked in all needed
1457 cases (not blocking stdin for the child, duplicating stdout
1461 cases (not blocking stdin for the child, duplicating stdout
1458 without blocking, etc). The new %sc/%sx still do capture to these
1462 without blocking, etc). The new %sc/%sx still do capture to these
1459 magical list/string objects which make shell use much more
1463 magical list/string objects which make shell use much more
1460 conveninent, so not all is lost.
1464 conveninent, so not all is lost.
1461
1465
1462 XXX - FIX MANUAL for the change above!
1466 XXX - FIX MANUAL for the change above!
1463
1467
1464 (runsource): I copied code.py's runsource() into ipython to modify
1468 (runsource): I copied code.py's runsource() into ipython to modify
1465 it a bit. Now the code object and source to be executed are
1469 it a bit. Now the code object and source to be executed are
1466 stored in ipython. This makes this info accessible to third-party
1470 stored in ipython. This makes this info accessible to third-party
1467 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1471 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1468 Mantegazza <mantegazza-AT-ill.fr>.
1472 Mantegazza <mantegazza-AT-ill.fr>.
1469
1473
1470 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1474 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1471 history-search via readline (like C-p/C-n). I'd wanted this for a
1475 history-search via readline (like C-p/C-n). I'd wanted this for a
1472 long time, but only recently found out how to do it. For users
1476 long time, but only recently found out how to do it. For users
1473 who already have their ipythonrc files made and want this, just
1477 who already have their ipythonrc files made and want this, just
1474 add:
1478 add:
1475
1479
1476 readline_parse_and_bind "\e[A": history-search-backward
1480 readline_parse_and_bind "\e[A": history-search-backward
1477 readline_parse_and_bind "\e[B": history-search-forward
1481 readline_parse_and_bind "\e[B": history-search-forward
1478
1482
1479 2005-03-18 Fernando Perez <fperez@colorado.edu>
1483 2005-03-18 Fernando Perez <fperez@colorado.edu>
1480
1484
1481 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1485 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1482 LSString and SList classes which allow transparent conversions
1486 LSString and SList classes which allow transparent conversions
1483 between list mode and whitespace-separated string.
1487 between list mode and whitespace-separated string.
1484 (magic_r): Fix recursion problem in %r.
1488 (magic_r): Fix recursion problem in %r.
1485
1489
1486 * IPython/genutils.py (LSString): New class to be used for
1490 * IPython/genutils.py (LSString): New class to be used for
1487 automatic storage of the results of all alias/system calls in _o
1491 automatic storage of the results of all alias/system calls in _o
1488 and _e (stdout/err). These provide a .l/.list attribute which
1492 and _e (stdout/err). These provide a .l/.list attribute which
1489 does automatic splitting on newlines. This means that for most
1493 does automatic splitting on newlines. This means that for most
1490 uses, you'll never need to do capturing of output with %sc/%sx
1494 uses, you'll never need to do capturing of output with %sc/%sx
1491 anymore, since ipython keeps this always done for you. Note that
1495 anymore, since ipython keeps this always done for you. Note that
1492 only the LAST results are stored, the _o/e variables are
1496 only the LAST results are stored, the _o/e variables are
1493 overwritten on each call. If you need to save their contents
1497 overwritten on each call. If you need to save their contents
1494 further, simply bind them to any other name.
1498 further, simply bind them to any other name.
1495
1499
1496 2005-03-17 Fernando Perez <fperez@colorado.edu>
1500 2005-03-17 Fernando Perez <fperez@colorado.edu>
1497
1501
1498 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1502 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1499 prompt namespace handling.
1503 prompt namespace handling.
1500
1504
1501 2005-03-16 Fernando Perez <fperez@colorado.edu>
1505 2005-03-16 Fernando Perez <fperez@colorado.edu>
1502
1506
1503 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1507 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1504 classic prompts to be '>>> ' (final space was missing, and it
1508 classic prompts to be '>>> ' (final space was missing, and it
1505 trips the emacs python mode).
1509 trips the emacs python mode).
1506 (BasePrompt.__str__): Added safe support for dynamic prompt
1510 (BasePrompt.__str__): Added safe support for dynamic prompt
1507 strings. Now you can set your prompt string to be '$x', and the
1511 strings. Now you can set your prompt string to be '$x', and the
1508 value of x will be printed from your interactive namespace. The
1512 value of x will be printed from your interactive namespace. The
1509 interpolation syntax includes the full Itpl support, so
1513 interpolation syntax includes the full Itpl support, so
1510 ${foo()+x+bar()} is a valid prompt string now, and the function
1514 ${foo()+x+bar()} is a valid prompt string now, and the function
1511 calls will be made at runtime.
1515 calls will be made at runtime.
1512
1516
1513 2005-03-15 Fernando Perez <fperez@colorado.edu>
1517 2005-03-15 Fernando Perez <fperez@colorado.edu>
1514
1518
1515 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1519 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1516 avoid name clashes in pylab. %hist still works, it just forwards
1520 avoid name clashes in pylab. %hist still works, it just forwards
1517 the call to %history.
1521 the call to %history.
1518
1522
1519 2005-03-02 *** Released version 0.6.12
1523 2005-03-02 *** Released version 0.6.12
1520
1524
1521 2005-03-02 Fernando Perez <fperez@colorado.edu>
1525 2005-03-02 Fernando Perez <fperez@colorado.edu>
1522
1526
1523 * IPython/iplib.py (handle_magic): log magic calls properly as
1527 * IPython/iplib.py (handle_magic): log magic calls properly as
1524 ipmagic() function calls.
1528 ipmagic() function calls.
1525
1529
1526 * IPython/Magic.py (magic_time): Improved %time to support
1530 * IPython/Magic.py (magic_time): Improved %time to support
1527 statements and provide wall-clock as well as CPU time.
1531 statements and provide wall-clock as well as CPU time.
1528
1532
1529 2005-02-27 Fernando Perez <fperez@colorado.edu>
1533 2005-02-27 Fernando Perez <fperez@colorado.edu>
1530
1534
1531 * IPython/hooks.py: New hooks module, to expose user-modifiable
1535 * IPython/hooks.py: New hooks module, to expose user-modifiable
1532 IPython functionality in a clean manner. For now only the editor
1536 IPython functionality in a clean manner. For now only the editor
1533 hook is actually written, and other thigns which I intend to turn
1537 hook is actually written, and other thigns which I intend to turn
1534 into proper hooks aren't yet there. The display and prefilter
1538 into proper hooks aren't yet there. The display and prefilter
1535 stuff, for example, should be hooks. But at least now the
1539 stuff, for example, should be hooks. But at least now the
1536 framework is in place, and the rest can be moved here with more
1540 framework is in place, and the rest can be moved here with more
1537 time later. IPython had had a .hooks variable for a long time for
1541 time later. IPython had had a .hooks variable for a long time for
1538 this purpose, but I'd never actually used it for anything.
1542 this purpose, but I'd never actually used it for anything.
1539
1543
1540 2005-02-26 Fernando Perez <fperez@colorado.edu>
1544 2005-02-26 Fernando Perez <fperez@colorado.edu>
1541
1545
1542 * IPython/ipmaker.py (make_IPython): make the default ipython
1546 * IPython/ipmaker.py (make_IPython): make the default ipython
1543 directory be called _ipython under win32, to follow more the
1547 directory be called _ipython under win32, to follow more the
1544 naming peculiarities of that platform (where buggy software like
1548 naming peculiarities of that platform (where buggy software like
1545 Visual Sourcesafe breaks with .named directories). Reported by
1549 Visual Sourcesafe breaks with .named directories). Reported by
1546 Ville Vainio.
1550 Ville Vainio.
1547
1551
1548 2005-02-23 Fernando Perez <fperez@colorado.edu>
1552 2005-02-23 Fernando Perez <fperez@colorado.edu>
1549
1553
1550 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1554 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1551 auto_aliases for win32 which were causing problems. Users can
1555 auto_aliases for win32 which were causing problems. Users can
1552 define the ones they personally like.
1556 define the ones they personally like.
1553
1557
1554 2005-02-21 Fernando Perez <fperez@colorado.edu>
1558 2005-02-21 Fernando Perez <fperez@colorado.edu>
1555
1559
1556 * IPython/Magic.py (magic_time): new magic to time execution of
1560 * IPython/Magic.py (magic_time): new magic to time execution of
1557 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1561 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1558
1562
1559 2005-02-19 Fernando Perez <fperez@colorado.edu>
1563 2005-02-19 Fernando Perez <fperez@colorado.edu>
1560
1564
1561 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1565 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1562 into keys (for prompts, for example).
1566 into keys (for prompts, for example).
1563
1567
1564 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1568 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1565 prompts in case users want them. This introduces a small behavior
1569 prompts in case users want them. This introduces a small behavior
1566 change: ipython does not automatically add a space to all prompts
1570 change: ipython does not automatically add a space to all prompts
1567 anymore. To get the old prompts with a space, users should add it
1571 anymore. To get the old prompts with a space, users should add it
1568 manually to their ipythonrc file, so for example prompt_in1 should
1572 manually to their ipythonrc file, so for example prompt_in1 should
1569 now read 'In [\#]: ' instead of 'In [\#]:'.
1573 now read 'In [\#]: ' instead of 'In [\#]:'.
1570 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1574 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1571 file) to control left-padding of secondary prompts.
1575 file) to control left-padding of secondary prompts.
1572
1576
1573 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1577 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1574 the profiler can't be imported. Fix for Debian, which removed
1578 the profiler can't be imported. Fix for Debian, which removed
1575 profile.py because of License issues. I applied a slightly
1579 profile.py because of License issues. I applied a slightly
1576 modified version of the original Debian patch at
1580 modified version of the original Debian patch at
1577 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1581 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1578
1582
1579 2005-02-17 Fernando Perez <fperez@colorado.edu>
1583 2005-02-17 Fernando Perez <fperez@colorado.edu>
1580
1584
1581 * IPython/genutils.py (native_line_ends): Fix bug which would
1585 * IPython/genutils.py (native_line_ends): Fix bug which would
1582 cause improper line-ends under win32 b/c I was not opening files
1586 cause improper line-ends under win32 b/c I was not opening files
1583 in binary mode. Bug report and fix thanks to Ville.
1587 in binary mode. Bug report and fix thanks to Ville.
1584
1588
1585 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1589 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1586 trying to catch spurious foo[1] autocalls. My fix actually broke
1590 trying to catch spurious foo[1] autocalls. My fix actually broke
1587 ',/' autoquote/call with explicit escape (bad regexp).
1591 ',/' autoquote/call with explicit escape (bad regexp).
1588
1592
1589 2005-02-15 *** Released version 0.6.11
1593 2005-02-15 *** Released version 0.6.11
1590
1594
1591 2005-02-14 Fernando Perez <fperez@colorado.edu>
1595 2005-02-14 Fernando Perez <fperez@colorado.edu>
1592
1596
1593 * IPython/background_jobs.py: New background job management
1597 * IPython/background_jobs.py: New background job management
1594 subsystem. This is implemented via a new set of classes, and
1598 subsystem. This is implemented via a new set of classes, and
1595 IPython now provides a builtin 'jobs' object for background job
1599 IPython now provides a builtin 'jobs' object for background job
1596 execution. A convenience %bg magic serves as a lightweight
1600 execution. A convenience %bg magic serves as a lightweight
1597 frontend for starting the more common type of calls. This was
1601 frontend for starting the more common type of calls. This was
1598 inspired by discussions with B. Granger and the BackgroundCommand
1602 inspired by discussions with B. Granger and the BackgroundCommand
1599 class described in the book Python Scripting for Computational
1603 class described in the book Python Scripting for Computational
1600 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1604 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1601 (although ultimately no code from this text was used, as IPython's
1605 (although ultimately no code from this text was used, as IPython's
1602 system is a separate implementation).
1606 system is a separate implementation).
1603
1607
1604 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1608 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1605 to control the completion of single/double underscore names
1609 to control the completion of single/double underscore names
1606 separately. As documented in the example ipytonrc file, the
1610 separately. As documented in the example ipytonrc file, the
1607 readline_omit__names variable can now be set to 2, to omit even
1611 readline_omit__names variable can now be set to 2, to omit even
1608 single underscore names. Thanks to a patch by Brian Wong
1612 single underscore names. Thanks to a patch by Brian Wong
1609 <BrianWong-AT-AirgoNetworks.Com>.
1613 <BrianWong-AT-AirgoNetworks.Com>.
1610 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1614 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1611 be autocalled as foo([1]) if foo were callable. A problem for
1615 be autocalled as foo([1]) if foo were callable. A problem for
1612 things which are both callable and implement __getitem__.
1616 things which are both callable and implement __getitem__.
1613 (init_readline): Fix autoindentation for win32. Thanks to a patch
1617 (init_readline): Fix autoindentation for win32. Thanks to a patch
1614 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1618 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1615
1619
1616 2005-02-12 Fernando Perez <fperez@colorado.edu>
1620 2005-02-12 Fernando Perez <fperez@colorado.edu>
1617
1621
1618 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1622 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1619 which I had written long ago to sort out user error messages which
1623 which I had written long ago to sort out user error messages which
1620 may occur during startup. This seemed like a good idea initially,
1624 may occur during startup. This seemed like a good idea initially,
1621 but it has proven a disaster in retrospect. I don't want to
1625 but it has proven a disaster in retrospect. I don't want to
1622 change much code for now, so my fix is to set the internal 'debug'
1626 change much code for now, so my fix is to set the internal 'debug'
1623 flag to true everywhere, whose only job was precisely to control
1627 flag to true everywhere, whose only job was precisely to control
1624 this subsystem. This closes issue 28 (as well as avoiding all
1628 this subsystem. This closes issue 28 (as well as avoiding all
1625 sorts of strange hangups which occur from time to time).
1629 sorts of strange hangups which occur from time to time).
1626
1630
1627 2005-02-07 Fernando Perez <fperez@colorado.edu>
1631 2005-02-07 Fernando Perez <fperez@colorado.edu>
1628
1632
1629 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1633 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1630 previous call produced a syntax error.
1634 previous call produced a syntax error.
1631
1635
1632 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1636 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1633 classes without constructor.
1637 classes without constructor.
1634
1638
1635 2005-02-06 Fernando Perez <fperez@colorado.edu>
1639 2005-02-06 Fernando Perez <fperez@colorado.edu>
1636
1640
1637 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1641 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1638 completions with the results of each matcher, so we return results
1642 completions with the results of each matcher, so we return results
1639 to the user from all namespaces. This breaks with ipython
1643 to the user from all namespaces. This breaks with ipython
1640 tradition, but I think it's a nicer behavior. Now you get all
1644 tradition, but I think it's a nicer behavior. Now you get all
1641 possible completions listed, from all possible namespaces (python,
1645 possible completions listed, from all possible namespaces (python,
1642 filesystem, magics...) After a request by John Hunter
1646 filesystem, magics...) After a request by John Hunter
1643 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1647 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1644
1648
1645 2005-02-05 Fernando Perez <fperez@colorado.edu>
1649 2005-02-05 Fernando Perez <fperez@colorado.edu>
1646
1650
1647 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1651 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1648 the call had quote characters in it (the quotes were stripped).
1652 the call had quote characters in it (the quotes were stripped).
1649
1653
1650 2005-01-31 Fernando Perez <fperez@colorado.edu>
1654 2005-01-31 Fernando Perez <fperez@colorado.edu>
1651
1655
1652 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1656 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1653 Itpl.itpl() to make the code more robust against psyco
1657 Itpl.itpl() to make the code more robust against psyco
1654 optimizations.
1658 optimizations.
1655
1659
1656 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1660 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1657 of causing an exception. Quicker, cleaner.
1661 of causing an exception. Quicker, cleaner.
1658
1662
1659 2005-01-28 Fernando Perez <fperez@colorado.edu>
1663 2005-01-28 Fernando Perez <fperez@colorado.edu>
1660
1664
1661 * scripts/ipython_win_post_install.py (install): hardcode
1665 * scripts/ipython_win_post_install.py (install): hardcode
1662 sys.prefix+'python.exe' as the executable path. It turns out that
1666 sys.prefix+'python.exe' as the executable path. It turns out that
1663 during the post-installation run, sys.executable resolves to the
1667 during the post-installation run, sys.executable resolves to the
1664 name of the binary installer! I should report this as a distutils
1668 name of the binary installer! I should report this as a distutils
1665 bug, I think. I updated the .10 release with this tiny fix, to
1669 bug, I think. I updated the .10 release with this tiny fix, to
1666 avoid annoying the lists further.
1670 avoid annoying the lists further.
1667
1671
1668 2005-01-27 *** Released version 0.6.10
1672 2005-01-27 *** Released version 0.6.10
1669
1673
1670 2005-01-27 Fernando Perez <fperez@colorado.edu>
1674 2005-01-27 Fernando Perez <fperez@colorado.edu>
1671
1675
1672 * IPython/numutils.py (norm): Added 'inf' as optional name for
1676 * IPython/numutils.py (norm): Added 'inf' as optional name for
1673 L-infinity norm, included references to mathworld.com for vector
1677 L-infinity norm, included references to mathworld.com for vector
1674 norm definitions.
1678 norm definitions.
1675 (amin/amax): added amin/amax for array min/max. Similar to what
1679 (amin/amax): added amin/amax for array min/max. Similar to what
1676 pylab ships with after the recent reorganization of names.
1680 pylab ships with after the recent reorganization of names.
1677 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1681 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1678
1682
1679 * ipython.el: committed Alex's recent fixes and improvements.
1683 * ipython.el: committed Alex's recent fixes and improvements.
1680 Tested with python-mode from CVS, and it looks excellent. Since
1684 Tested with python-mode from CVS, and it looks excellent. Since
1681 python-mode hasn't released anything in a while, I'm temporarily
1685 python-mode hasn't released anything in a while, I'm temporarily
1682 putting a copy of today's CVS (v 4.70) of python-mode in:
1686 putting a copy of today's CVS (v 4.70) of python-mode in:
1683 http://ipython.scipy.org/tmp/python-mode.el
1687 http://ipython.scipy.org/tmp/python-mode.el
1684
1688
1685 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1689 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1686 sys.executable for the executable name, instead of assuming it's
1690 sys.executable for the executable name, instead of assuming it's
1687 called 'python.exe' (the post-installer would have produced broken
1691 called 'python.exe' (the post-installer would have produced broken
1688 setups on systems with a differently named python binary).
1692 setups on systems with a differently named python binary).
1689
1693
1690 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1694 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1691 references to os.linesep, to make the code more
1695 references to os.linesep, to make the code more
1692 platform-independent. This is also part of the win32 coloring
1696 platform-independent. This is also part of the win32 coloring
1693 fixes.
1697 fixes.
1694
1698
1695 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1699 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1696 lines, which actually cause coloring bugs because the length of
1700 lines, which actually cause coloring bugs because the length of
1697 the line is very difficult to correctly compute with embedded
1701 the line is very difficult to correctly compute with embedded
1698 escapes. This was the source of all the coloring problems under
1702 escapes. This was the source of all the coloring problems under
1699 Win32. I think that _finally_, Win32 users have a properly
1703 Win32. I think that _finally_, Win32 users have a properly
1700 working ipython in all respects. This would never have happened
1704 working ipython in all respects. This would never have happened
1701 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1705 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1702
1706
1703 2005-01-26 *** Released version 0.6.9
1707 2005-01-26 *** Released version 0.6.9
1704
1708
1705 2005-01-25 Fernando Perez <fperez@colorado.edu>
1709 2005-01-25 Fernando Perez <fperez@colorado.edu>
1706
1710
1707 * setup.py: finally, we have a true Windows installer, thanks to
1711 * setup.py: finally, we have a true Windows installer, thanks to
1708 the excellent work of Viktor Ransmayr
1712 the excellent work of Viktor Ransmayr
1709 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1713 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1710 Windows users. The setup routine is quite a bit cleaner thanks to
1714 Windows users. The setup routine is quite a bit cleaner thanks to
1711 this, and the post-install script uses the proper functions to
1715 this, and the post-install script uses the proper functions to
1712 allow a clean de-installation using the standard Windows Control
1716 allow a clean de-installation using the standard Windows Control
1713 Panel.
1717 Panel.
1714
1718
1715 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1719 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1716 environment variable under all OSes (including win32) if
1720 environment variable under all OSes (including win32) if
1717 available. This will give consistency to win32 users who have set
1721 available. This will give consistency to win32 users who have set
1718 this variable for any reason. If os.environ['HOME'] fails, the
1722 this variable for any reason. If os.environ['HOME'] fails, the
1719 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1723 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1720
1724
1721 2005-01-24 Fernando Perez <fperez@colorado.edu>
1725 2005-01-24 Fernando Perez <fperez@colorado.edu>
1722
1726
1723 * IPython/numutils.py (empty_like): add empty_like(), similar to
1727 * IPython/numutils.py (empty_like): add empty_like(), similar to
1724 zeros_like() but taking advantage of the new empty() Numeric routine.
1728 zeros_like() but taking advantage of the new empty() Numeric routine.
1725
1729
1726 2005-01-23 *** Released version 0.6.8
1730 2005-01-23 *** Released version 0.6.8
1727
1731
1728 2005-01-22 Fernando Perez <fperez@colorado.edu>
1732 2005-01-22 Fernando Perez <fperez@colorado.edu>
1729
1733
1730 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1734 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1731 automatic show() calls. After discussing things with JDH, it
1735 automatic show() calls. After discussing things with JDH, it
1732 turns out there are too many corner cases where this can go wrong.
1736 turns out there are too many corner cases where this can go wrong.
1733 It's best not to try to be 'too smart', and simply have ipython
1737 It's best not to try to be 'too smart', and simply have ipython
1734 reproduce as much as possible the default behavior of a normal
1738 reproduce as much as possible the default behavior of a normal
1735 python shell.
1739 python shell.
1736
1740
1737 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1741 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1738 line-splitting regexp and _prefilter() to avoid calling getattr()
1742 line-splitting regexp and _prefilter() to avoid calling getattr()
1739 on assignments. This closes
1743 on assignments. This closes
1740 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1744 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1741 readline uses getattr(), so a simple <TAB> keypress is still
1745 readline uses getattr(), so a simple <TAB> keypress is still
1742 enough to trigger getattr() calls on an object.
1746 enough to trigger getattr() calls on an object.
1743
1747
1744 2005-01-21 Fernando Perez <fperez@colorado.edu>
1748 2005-01-21 Fernando Perez <fperez@colorado.edu>
1745
1749
1746 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1750 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1747 docstring under pylab so it doesn't mask the original.
1751 docstring under pylab so it doesn't mask the original.
1748
1752
1749 2005-01-21 *** Released version 0.6.7
1753 2005-01-21 *** Released version 0.6.7
1750
1754
1751 2005-01-21 Fernando Perez <fperez@colorado.edu>
1755 2005-01-21 Fernando Perez <fperez@colorado.edu>
1752
1756
1753 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1757 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1754 signal handling for win32 users in multithreaded mode.
1758 signal handling for win32 users in multithreaded mode.
1755
1759
1756 2005-01-17 Fernando Perez <fperez@colorado.edu>
1760 2005-01-17 Fernando Perez <fperez@colorado.edu>
1757
1761
1758 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1762 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1759 instances with no __init__. After a crash report by Norbert Nemec
1763 instances with no __init__. After a crash report by Norbert Nemec
1760 <Norbert-AT-nemec-online.de>.
1764 <Norbert-AT-nemec-online.de>.
1761
1765
1762 2005-01-14 Fernando Perez <fperez@colorado.edu>
1766 2005-01-14 Fernando Perez <fperez@colorado.edu>
1763
1767
1764 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1768 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1765 names for verbose exceptions, when multiple dotted names and the
1769 names for verbose exceptions, when multiple dotted names and the
1766 'parent' object were present on the same line.
1770 'parent' object were present on the same line.
1767
1771
1768 2005-01-11 Fernando Perez <fperez@colorado.edu>
1772 2005-01-11 Fernando Perez <fperez@colorado.edu>
1769
1773
1770 * IPython/genutils.py (flag_calls): new utility to trap and flag
1774 * IPython/genutils.py (flag_calls): new utility to trap and flag
1771 calls in functions. I need it to clean up matplotlib support.
1775 calls in functions. I need it to clean up matplotlib support.
1772 Also removed some deprecated code in genutils.
1776 Also removed some deprecated code in genutils.
1773
1777
1774 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1778 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1775 that matplotlib scripts called with %run, which don't call show()
1779 that matplotlib scripts called with %run, which don't call show()
1776 themselves, still have their plotting windows open.
1780 themselves, still have their plotting windows open.
1777
1781
1778 2005-01-05 Fernando Perez <fperez@colorado.edu>
1782 2005-01-05 Fernando Perez <fperez@colorado.edu>
1779
1783
1780 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1784 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1781 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1785 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1782
1786
1783 2004-12-19 Fernando Perez <fperez@colorado.edu>
1787 2004-12-19 Fernando Perez <fperez@colorado.edu>
1784
1788
1785 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1789 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1786 parent_runcode, which was an eyesore. The same result can be
1790 parent_runcode, which was an eyesore. The same result can be
1787 obtained with Python's regular superclass mechanisms.
1791 obtained with Python's regular superclass mechanisms.
1788
1792
1789 2004-12-17 Fernando Perez <fperez@colorado.edu>
1793 2004-12-17 Fernando Perez <fperez@colorado.edu>
1790
1794
1791 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1795 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1792 reported by Prabhu.
1796 reported by Prabhu.
1793 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1797 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1794 sys.stderr) instead of explicitly calling sys.stderr. This helps
1798 sys.stderr) instead of explicitly calling sys.stderr. This helps
1795 maintain our I/O abstractions clean, for future GUI embeddings.
1799 maintain our I/O abstractions clean, for future GUI embeddings.
1796
1800
1797 * IPython/genutils.py (info): added new utility for sys.stderr
1801 * IPython/genutils.py (info): added new utility for sys.stderr
1798 unified info message handling (thin wrapper around warn()).
1802 unified info message handling (thin wrapper around warn()).
1799
1803
1800 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1804 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1801 composite (dotted) names on verbose exceptions.
1805 composite (dotted) names on verbose exceptions.
1802 (VerboseTB.nullrepr): harden against another kind of errors which
1806 (VerboseTB.nullrepr): harden against another kind of errors which
1803 Python's inspect module can trigger, and which were crashing
1807 Python's inspect module can trigger, and which were crashing
1804 IPython. Thanks to a report by Marco Lombardi
1808 IPython. Thanks to a report by Marco Lombardi
1805 <mlombard-AT-ma010192.hq.eso.org>.
1809 <mlombard-AT-ma010192.hq.eso.org>.
1806
1810
1807 2004-12-13 *** Released version 0.6.6
1811 2004-12-13 *** Released version 0.6.6
1808
1812
1809 2004-12-12 Fernando Perez <fperez@colorado.edu>
1813 2004-12-12 Fernando Perez <fperez@colorado.edu>
1810
1814
1811 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1815 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1812 generated by pygtk upon initialization if it was built without
1816 generated by pygtk upon initialization if it was built without
1813 threads (for matplotlib users). After a crash reported by
1817 threads (for matplotlib users). After a crash reported by
1814 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1818 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1815
1819
1816 * IPython/ipmaker.py (make_IPython): fix small bug in the
1820 * IPython/ipmaker.py (make_IPython): fix small bug in the
1817 import_some parameter for multiple imports.
1821 import_some parameter for multiple imports.
1818
1822
1819 * IPython/iplib.py (ipmagic): simplified the interface of
1823 * IPython/iplib.py (ipmagic): simplified the interface of
1820 ipmagic() to take a single string argument, just as it would be
1824 ipmagic() to take a single string argument, just as it would be
1821 typed at the IPython cmd line.
1825 typed at the IPython cmd line.
1822 (ipalias): Added new ipalias() with an interface identical to
1826 (ipalias): Added new ipalias() with an interface identical to
1823 ipmagic(). This completes exposing a pure python interface to the
1827 ipmagic(). This completes exposing a pure python interface to the
1824 alias and magic system, which can be used in loops or more complex
1828 alias and magic system, which can be used in loops or more complex
1825 code where IPython's automatic line mangling is not active.
1829 code where IPython's automatic line mangling is not active.
1826
1830
1827 * IPython/genutils.py (timing): changed interface of timing to
1831 * IPython/genutils.py (timing): changed interface of timing to
1828 simply run code once, which is the most common case. timings()
1832 simply run code once, which is the most common case. timings()
1829 remains unchanged, for the cases where you want multiple runs.
1833 remains unchanged, for the cases where you want multiple runs.
1830
1834
1831 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1835 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1832 bug where Python2.2 crashes with exec'ing code which does not end
1836 bug where Python2.2 crashes with exec'ing code which does not end
1833 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1837 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1834 before.
1838 before.
1835
1839
1836 2004-12-10 Fernando Perez <fperez@colorado.edu>
1840 2004-12-10 Fernando Perez <fperez@colorado.edu>
1837
1841
1838 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1842 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1839 -t to -T, to accomodate the new -t flag in %run (the %run and
1843 -t to -T, to accomodate the new -t flag in %run (the %run and
1840 %prun options are kind of intermixed, and it's not easy to change
1844 %prun options are kind of intermixed, and it's not easy to change
1841 this with the limitations of python's getopt).
1845 this with the limitations of python's getopt).
1842
1846
1843 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1847 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1844 the execution of scripts. It's not as fine-tuned as timeit.py,
1848 the execution of scripts. It's not as fine-tuned as timeit.py,
1845 but it works from inside ipython (and under 2.2, which lacks
1849 but it works from inside ipython (and under 2.2, which lacks
1846 timeit.py). Optionally a number of runs > 1 can be given for
1850 timeit.py). Optionally a number of runs > 1 can be given for
1847 timing very short-running code.
1851 timing very short-running code.
1848
1852
1849 * IPython/genutils.py (uniq_stable): new routine which returns a
1853 * IPython/genutils.py (uniq_stable): new routine which returns a
1850 list of unique elements in any iterable, but in stable order of
1854 list of unique elements in any iterable, but in stable order of
1851 appearance. I needed this for the ultraTB fixes, and it's a handy
1855 appearance. I needed this for the ultraTB fixes, and it's a handy
1852 utility.
1856 utility.
1853
1857
1854 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1858 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1855 dotted names in Verbose exceptions. This had been broken since
1859 dotted names in Verbose exceptions. This had been broken since
1856 the very start, now x.y will properly be printed in a Verbose
1860 the very start, now x.y will properly be printed in a Verbose
1857 traceback, instead of x being shown and y appearing always as an
1861 traceback, instead of x being shown and y appearing always as an
1858 'undefined global'. Getting this to work was a bit tricky,
1862 'undefined global'. Getting this to work was a bit tricky,
1859 because by default python tokenizers are stateless. Saved by
1863 because by default python tokenizers are stateless. Saved by
1860 python's ability to easily add a bit of state to an arbitrary
1864 python's ability to easily add a bit of state to an arbitrary
1861 function (without needing to build a full-blown callable object).
1865 function (without needing to build a full-blown callable object).
1862
1866
1863 Also big cleanup of this code, which had horrendous runtime
1867 Also big cleanup of this code, which had horrendous runtime
1864 lookups of zillions of attributes for colorization. Moved all
1868 lookups of zillions of attributes for colorization. Moved all
1865 this code into a few templates, which make it cleaner and quicker.
1869 this code into a few templates, which make it cleaner and quicker.
1866
1870
1867 Printout quality was also improved for Verbose exceptions: one
1871 Printout quality was also improved for Verbose exceptions: one
1868 variable per line, and memory addresses are printed (this can be
1872 variable per line, and memory addresses are printed (this can be
1869 quite handy in nasty debugging situations, which is what Verbose
1873 quite handy in nasty debugging situations, which is what Verbose
1870 is for).
1874 is for).
1871
1875
1872 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1876 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1873 the command line as scripts to be loaded by embedded instances.
1877 the command line as scripts to be loaded by embedded instances.
1874 Doing so has the potential for an infinite recursion if there are
1878 Doing so has the potential for an infinite recursion if there are
1875 exceptions thrown in the process. This fixes a strange crash
1879 exceptions thrown in the process. This fixes a strange crash
1876 reported by Philippe MULLER <muller-AT-irit.fr>.
1880 reported by Philippe MULLER <muller-AT-irit.fr>.
1877
1881
1878 2004-12-09 Fernando Perez <fperez@colorado.edu>
1882 2004-12-09 Fernando Perez <fperez@colorado.edu>
1879
1883
1880 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1884 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1881 to reflect new names in matplotlib, which now expose the
1885 to reflect new names in matplotlib, which now expose the
1882 matlab-compatible interface via a pylab module instead of the
1886 matlab-compatible interface via a pylab module instead of the
1883 'matlab' name. The new code is backwards compatible, so users of
1887 'matlab' name. The new code is backwards compatible, so users of
1884 all matplotlib versions are OK. Patch by J. Hunter.
1888 all matplotlib versions are OK. Patch by J. Hunter.
1885
1889
1886 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1890 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1887 of __init__ docstrings for instances (class docstrings are already
1891 of __init__ docstrings for instances (class docstrings are already
1888 automatically printed). Instances with customized docstrings
1892 automatically printed). Instances with customized docstrings
1889 (indep. of the class) are also recognized and all 3 separate
1893 (indep. of the class) are also recognized and all 3 separate
1890 docstrings are printed (instance, class, constructor). After some
1894 docstrings are printed (instance, class, constructor). After some
1891 comments/suggestions by J. Hunter.
1895 comments/suggestions by J. Hunter.
1892
1896
1893 2004-12-05 Fernando Perez <fperez@colorado.edu>
1897 2004-12-05 Fernando Perez <fperez@colorado.edu>
1894
1898
1895 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1899 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1896 warnings when tab-completion fails and triggers an exception.
1900 warnings when tab-completion fails and triggers an exception.
1897
1901
1898 2004-12-03 Fernando Perez <fperez@colorado.edu>
1902 2004-12-03 Fernando Perez <fperez@colorado.edu>
1899
1903
1900 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1904 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1901 be triggered when using 'run -p'. An incorrect option flag was
1905 be triggered when using 'run -p'. An incorrect option flag was
1902 being set ('d' instead of 'D').
1906 being set ('d' instead of 'D').
1903 (manpage): fix missing escaped \- sign.
1907 (manpage): fix missing escaped \- sign.
1904
1908
1905 2004-11-30 *** Released version 0.6.5
1909 2004-11-30 *** Released version 0.6.5
1906
1910
1907 2004-11-30 Fernando Perez <fperez@colorado.edu>
1911 2004-11-30 Fernando Perez <fperez@colorado.edu>
1908
1912
1909 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1913 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1910 setting with -d option.
1914 setting with -d option.
1911
1915
1912 * setup.py (docfiles): Fix problem where the doc glob I was using
1916 * setup.py (docfiles): Fix problem where the doc glob I was using
1913 was COMPLETELY BROKEN. It was giving the right files by pure
1917 was COMPLETELY BROKEN. It was giving the right files by pure
1914 accident, but failed once I tried to include ipython.el. Note:
1918 accident, but failed once I tried to include ipython.el. Note:
1915 glob() does NOT allow you to do exclusion on multiple endings!
1919 glob() does NOT allow you to do exclusion on multiple endings!
1916
1920
1917 2004-11-29 Fernando Perez <fperez@colorado.edu>
1921 2004-11-29 Fernando Perez <fperez@colorado.edu>
1918
1922
1919 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1923 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1920 the manpage as the source. Better formatting & consistency.
1924 the manpage as the source. Better formatting & consistency.
1921
1925
1922 * IPython/Magic.py (magic_run): Added new -d option, to run
1926 * IPython/Magic.py (magic_run): Added new -d option, to run
1923 scripts under the control of the python pdb debugger. Note that
1927 scripts under the control of the python pdb debugger. Note that
1924 this required changing the %prun option -d to -D, to avoid a clash
1928 this required changing the %prun option -d to -D, to avoid a clash
1925 (since %run must pass options to %prun, and getopt is too dumb to
1929 (since %run must pass options to %prun, and getopt is too dumb to
1926 handle options with string values with embedded spaces). Thanks
1930 handle options with string values with embedded spaces). Thanks
1927 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1931 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1928 (magic_who_ls): added type matching to %who and %whos, so that one
1932 (magic_who_ls): added type matching to %who and %whos, so that one
1929 can filter their output to only include variables of certain
1933 can filter their output to only include variables of certain
1930 types. Another suggestion by Matthew.
1934 types. Another suggestion by Matthew.
1931 (magic_whos): Added memory summaries in kb and Mb for arrays.
1935 (magic_whos): Added memory summaries in kb and Mb for arrays.
1932 (magic_who): Improve formatting (break lines every 9 vars).
1936 (magic_who): Improve formatting (break lines every 9 vars).
1933
1937
1934 2004-11-28 Fernando Perez <fperez@colorado.edu>
1938 2004-11-28 Fernando Perez <fperez@colorado.edu>
1935
1939
1936 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1940 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1937 cache when empty lines were present.
1941 cache when empty lines were present.
1938
1942
1939 2004-11-24 Fernando Perez <fperez@colorado.edu>
1943 2004-11-24 Fernando Perez <fperez@colorado.edu>
1940
1944
1941 * IPython/usage.py (__doc__): document the re-activated threading
1945 * IPython/usage.py (__doc__): document the re-activated threading
1942 options for WX and GTK.
1946 options for WX and GTK.
1943
1947
1944 2004-11-23 Fernando Perez <fperez@colorado.edu>
1948 2004-11-23 Fernando Perez <fperez@colorado.edu>
1945
1949
1946 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1950 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1947 the -wthread and -gthread options, along with a new -tk one to try
1951 the -wthread and -gthread options, along with a new -tk one to try
1948 and coordinate Tk threading with wx/gtk. The tk support is very
1952 and coordinate Tk threading with wx/gtk. The tk support is very
1949 platform dependent, since it seems to require Tcl and Tk to be
1953 platform dependent, since it seems to require Tcl and Tk to be
1950 built with threads (Fedora1/2 appears NOT to have it, but in
1954 built with threads (Fedora1/2 appears NOT to have it, but in
1951 Prabhu's Debian boxes it works OK). But even with some Tk
1955 Prabhu's Debian boxes it works OK). But even with some Tk
1952 limitations, this is a great improvement.
1956 limitations, this is a great improvement.
1953
1957
1954 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1958 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1955 info in user prompts. Patch by Prabhu.
1959 info in user prompts. Patch by Prabhu.
1956
1960
1957 2004-11-18 Fernando Perez <fperez@colorado.edu>
1961 2004-11-18 Fernando Perez <fperez@colorado.edu>
1958
1962
1959 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1963 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1960 EOFErrors and bail, to avoid infinite loops if a non-terminating
1964 EOFErrors and bail, to avoid infinite loops if a non-terminating
1961 file is fed into ipython. Patch submitted in issue 19 by user,
1965 file is fed into ipython. Patch submitted in issue 19 by user,
1962 many thanks.
1966 many thanks.
1963
1967
1964 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1968 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1965 autoquote/parens in continuation prompts, which can cause lots of
1969 autoquote/parens in continuation prompts, which can cause lots of
1966 problems. Closes roundup issue 20.
1970 problems. Closes roundup issue 20.
1967
1971
1968 2004-11-17 Fernando Perez <fperez@colorado.edu>
1972 2004-11-17 Fernando Perez <fperez@colorado.edu>
1969
1973
1970 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1974 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1971 reported as debian bug #280505. I'm not sure my local changelog
1975 reported as debian bug #280505. I'm not sure my local changelog
1972 entry has the proper debian format (Jack?).
1976 entry has the proper debian format (Jack?).
1973
1977
1974 2004-11-08 *** Released version 0.6.4
1978 2004-11-08 *** Released version 0.6.4
1975
1979
1976 2004-11-08 Fernando Perez <fperez@colorado.edu>
1980 2004-11-08 Fernando Perez <fperez@colorado.edu>
1977
1981
1978 * IPython/iplib.py (init_readline): Fix exit message for Windows
1982 * IPython/iplib.py (init_readline): Fix exit message for Windows
1979 when readline is active. Thanks to a report by Eric Jones
1983 when readline is active. Thanks to a report by Eric Jones
1980 <eric-AT-enthought.com>.
1984 <eric-AT-enthought.com>.
1981
1985
1982 2004-11-07 Fernando Perez <fperez@colorado.edu>
1986 2004-11-07 Fernando Perez <fperez@colorado.edu>
1983
1987
1984 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1988 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1985 sometimes seen by win2k/cygwin users.
1989 sometimes seen by win2k/cygwin users.
1986
1990
1987 2004-11-06 Fernando Perez <fperez@colorado.edu>
1991 2004-11-06 Fernando Perez <fperez@colorado.edu>
1988
1992
1989 * IPython/iplib.py (interact): Change the handling of %Exit from
1993 * IPython/iplib.py (interact): Change the handling of %Exit from
1990 trying to propagate a SystemExit to an internal ipython flag.
1994 trying to propagate a SystemExit to an internal ipython flag.
1991 This is less elegant than using Python's exception mechanism, but
1995 This is less elegant than using Python's exception mechanism, but
1992 I can't get that to work reliably with threads, so under -pylab
1996 I can't get that to work reliably with threads, so under -pylab
1993 %Exit was hanging IPython. Cross-thread exception handling is
1997 %Exit was hanging IPython. Cross-thread exception handling is
1994 really a bitch. Thaks to a bug report by Stephen Walton
1998 really a bitch. Thaks to a bug report by Stephen Walton
1995 <stephen.walton-AT-csun.edu>.
1999 <stephen.walton-AT-csun.edu>.
1996
2000
1997 2004-11-04 Fernando Perez <fperez@colorado.edu>
2001 2004-11-04 Fernando Perez <fperez@colorado.edu>
1998
2002
1999 * IPython/iplib.py (raw_input_original): store a pointer to the
2003 * IPython/iplib.py (raw_input_original): store a pointer to the
2000 true raw_input to harden against code which can modify it
2004 true raw_input to harden against code which can modify it
2001 (wx.py.PyShell does this and would otherwise crash ipython).
2005 (wx.py.PyShell does this and would otherwise crash ipython).
2002 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2006 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2003
2007
2004 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2008 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2005 Ctrl-C problem, which does not mess up the input line.
2009 Ctrl-C problem, which does not mess up the input line.
2006
2010
2007 2004-11-03 Fernando Perez <fperez@colorado.edu>
2011 2004-11-03 Fernando Perez <fperez@colorado.edu>
2008
2012
2009 * IPython/Release.py: Changed licensing to BSD, in all files.
2013 * IPython/Release.py: Changed licensing to BSD, in all files.
2010 (name): lowercase name for tarball/RPM release.
2014 (name): lowercase name for tarball/RPM release.
2011
2015
2012 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2016 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2013 use throughout ipython.
2017 use throughout ipython.
2014
2018
2015 * IPython/Magic.py (Magic._ofind): Switch to using the new
2019 * IPython/Magic.py (Magic._ofind): Switch to using the new
2016 OInspect.getdoc() function.
2020 OInspect.getdoc() function.
2017
2021
2018 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2022 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2019 of the line currently being canceled via Ctrl-C. It's extremely
2023 of the line currently being canceled via Ctrl-C. It's extremely
2020 ugly, but I don't know how to do it better (the problem is one of
2024 ugly, but I don't know how to do it better (the problem is one of
2021 handling cross-thread exceptions).
2025 handling cross-thread exceptions).
2022
2026
2023 2004-10-28 Fernando Perez <fperez@colorado.edu>
2027 2004-10-28 Fernando Perez <fperez@colorado.edu>
2024
2028
2025 * IPython/Shell.py (signal_handler): add signal handlers to trap
2029 * IPython/Shell.py (signal_handler): add signal handlers to trap
2026 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2030 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2027 report by Francesc Alted.
2031 report by Francesc Alted.
2028
2032
2029 2004-10-21 Fernando Perez <fperez@colorado.edu>
2033 2004-10-21 Fernando Perez <fperez@colorado.edu>
2030
2034
2031 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2035 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2032 to % for pysh syntax extensions.
2036 to % for pysh syntax extensions.
2033
2037
2034 2004-10-09 Fernando Perez <fperez@colorado.edu>
2038 2004-10-09 Fernando Perez <fperez@colorado.edu>
2035
2039
2036 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2040 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2037 arrays to print a more useful summary, without calling str(arr).
2041 arrays to print a more useful summary, without calling str(arr).
2038 This avoids the problem of extremely lengthy computations which
2042 This avoids the problem of extremely lengthy computations which
2039 occur if arr is large, and appear to the user as a system lockup
2043 occur if arr is large, and appear to the user as a system lockup
2040 with 100% cpu activity. After a suggestion by Kristian Sandberg
2044 with 100% cpu activity. After a suggestion by Kristian Sandberg
2041 <Kristian.Sandberg@colorado.edu>.
2045 <Kristian.Sandberg@colorado.edu>.
2042 (Magic.__init__): fix bug in global magic escapes not being
2046 (Magic.__init__): fix bug in global magic escapes not being
2043 correctly set.
2047 correctly set.
2044
2048
2045 2004-10-08 Fernando Perez <fperez@colorado.edu>
2049 2004-10-08 Fernando Perez <fperez@colorado.edu>
2046
2050
2047 * IPython/Magic.py (__license__): change to absolute imports of
2051 * IPython/Magic.py (__license__): change to absolute imports of
2048 ipython's own internal packages, to start adapting to the absolute
2052 ipython's own internal packages, to start adapting to the absolute
2049 import requirement of PEP-328.
2053 import requirement of PEP-328.
2050
2054
2051 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2055 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2052 files, and standardize author/license marks through the Release
2056 files, and standardize author/license marks through the Release
2053 module instead of having per/file stuff (except for files with
2057 module instead of having per/file stuff (except for files with
2054 particular licenses, like the MIT/PSF-licensed codes).
2058 particular licenses, like the MIT/PSF-licensed codes).
2055
2059
2056 * IPython/Debugger.py: remove dead code for python 2.1
2060 * IPython/Debugger.py: remove dead code for python 2.1
2057
2061
2058 2004-10-04 Fernando Perez <fperez@colorado.edu>
2062 2004-10-04 Fernando Perez <fperez@colorado.edu>
2059
2063
2060 * IPython/iplib.py (ipmagic): New function for accessing magics
2064 * IPython/iplib.py (ipmagic): New function for accessing magics
2061 via a normal python function call.
2065 via a normal python function call.
2062
2066
2063 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2067 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2064 from '@' to '%', to accomodate the new @decorator syntax of python
2068 from '@' to '%', to accomodate the new @decorator syntax of python
2065 2.4.
2069 2.4.
2066
2070
2067 2004-09-29 Fernando Perez <fperez@colorado.edu>
2071 2004-09-29 Fernando Perez <fperez@colorado.edu>
2068
2072
2069 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2073 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2070 matplotlib.use to prevent running scripts which try to switch
2074 matplotlib.use to prevent running scripts which try to switch
2071 interactive backends from within ipython. This will just crash
2075 interactive backends from within ipython. This will just crash
2072 the python interpreter, so we can't allow it (but a detailed error
2076 the python interpreter, so we can't allow it (but a detailed error
2073 is given to the user).
2077 is given to the user).
2074
2078
2075 2004-09-28 Fernando Perez <fperez@colorado.edu>
2079 2004-09-28 Fernando Perez <fperez@colorado.edu>
2076
2080
2077 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2081 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2078 matplotlib-related fixes so that using @run with non-matplotlib
2082 matplotlib-related fixes so that using @run with non-matplotlib
2079 scripts doesn't pop up spurious plot windows. This requires
2083 scripts doesn't pop up spurious plot windows. This requires
2080 matplotlib >= 0.63, where I had to make some changes as well.
2084 matplotlib >= 0.63, where I had to make some changes as well.
2081
2085
2082 * IPython/ipmaker.py (make_IPython): update version requirement to
2086 * IPython/ipmaker.py (make_IPython): update version requirement to
2083 python 2.2.
2087 python 2.2.
2084
2088
2085 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2089 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2086 banner arg for embedded customization.
2090 banner arg for embedded customization.
2087
2091
2088 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2092 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2089 explicit uses of __IP as the IPython's instance name. Now things
2093 explicit uses of __IP as the IPython's instance name. Now things
2090 are properly handled via the shell.name value. The actual code
2094 are properly handled via the shell.name value. The actual code
2091 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2095 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2092 is much better than before. I'll clean things completely when the
2096 is much better than before. I'll clean things completely when the
2093 magic stuff gets a real overhaul.
2097 magic stuff gets a real overhaul.
2094
2098
2095 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2099 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2096 minor changes to debian dir.
2100 minor changes to debian dir.
2097
2101
2098 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2102 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2099 pointer to the shell itself in the interactive namespace even when
2103 pointer to the shell itself in the interactive namespace even when
2100 a user-supplied dict is provided. This is needed for embedding
2104 a user-supplied dict is provided. This is needed for embedding
2101 purposes (found by tests with Michel Sanner).
2105 purposes (found by tests with Michel Sanner).
2102
2106
2103 2004-09-27 Fernando Perez <fperez@colorado.edu>
2107 2004-09-27 Fernando Perez <fperez@colorado.edu>
2104
2108
2105 * IPython/UserConfig/ipythonrc: remove []{} from
2109 * IPython/UserConfig/ipythonrc: remove []{} from
2106 readline_remove_delims, so that things like [modname.<TAB> do
2110 readline_remove_delims, so that things like [modname.<TAB> do
2107 proper completion. This disables [].TAB, but that's a less common
2111 proper completion. This disables [].TAB, but that's a less common
2108 case than module names in list comprehensions, for example.
2112 case than module names in list comprehensions, for example.
2109 Thanks to a report by Andrea Riciputi.
2113 Thanks to a report by Andrea Riciputi.
2110
2114
2111 2004-09-09 Fernando Perez <fperez@colorado.edu>
2115 2004-09-09 Fernando Perez <fperez@colorado.edu>
2112
2116
2113 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2117 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2114 blocking problems in win32 and osx. Fix by John.
2118 blocking problems in win32 and osx. Fix by John.
2115
2119
2116 2004-09-08 Fernando Perez <fperez@colorado.edu>
2120 2004-09-08 Fernando Perez <fperez@colorado.edu>
2117
2121
2118 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2122 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2119 for Win32 and OSX. Fix by John Hunter.
2123 for Win32 and OSX. Fix by John Hunter.
2120
2124
2121 2004-08-30 *** Released version 0.6.3
2125 2004-08-30 *** Released version 0.6.3
2122
2126
2123 2004-08-30 Fernando Perez <fperez@colorado.edu>
2127 2004-08-30 Fernando Perez <fperez@colorado.edu>
2124
2128
2125 * setup.py (isfile): Add manpages to list of dependent files to be
2129 * setup.py (isfile): Add manpages to list of dependent files to be
2126 updated.
2130 updated.
2127
2131
2128 2004-08-27 Fernando Perez <fperez@colorado.edu>
2132 2004-08-27 Fernando Perez <fperez@colorado.edu>
2129
2133
2130 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2134 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2131 for now. They don't really work with standalone WX/GTK code
2135 for now. They don't really work with standalone WX/GTK code
2132 (though matplotlib IS working fine with both of those backends).
2136 (though matplotlib IS working fine with both of those backends).
2133 This will neeed much more testing. I disabled most things with
2137 This will neeed much more testing. I disabled most things with
2134 comments, so turning it back on later should be pretty easy.
2138 comments, so turning it back on later should be pretty easy.
2135
2139
2136 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2140 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2137 autocalling of expressions like r'foo', by modifying the line
2141 autocalling of expressions like r'foo', by modifying the line
2138 split regexp. Closes
2142 split regexp. Closes
2139 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2143 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2140 Riley <ipythonbugs-AT-sabi.net>.
2144 Riley <ipythonbugs-AT-sabi.net>.
2141 (InteractiveShell.mainloop): honor --nobanner with banner
2145 (InteractiveShell.mainloop): honor --nobanner with banner
2142 extensions.
2146 extensions.
2143
2147
2144 * IPython/Shell.py: Significant refactoring of all classes, so
2148 * IPython/Shell.py: Significant refactoring of all classes, so
2145 that we can really support ALL matplotlib backends and threading
2149 that we can really support ALL matplotlib backends and threading
2146 models (John spotted a bug with Tk which required this). Now we
2150 models (John spotted a bug with Tk which required this). Now we
2147 should support single-threaded, WX-threads and GTK-threads, both
2151 should support single-threaded, WX-threads and GTK-threads, both
2148 for generic code and for matplotlib.
2152 for generic code and for matplotlib.
2149
2153
2150 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2154 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2151 -pylab, to simplify things for users. Will also remove the pylab
2155 -pylab, to simplify things for users. Will also remove the pylab
2152 profile, since now all of matplotlib configuration is directly
2156 profile, since now all of matplotlib configuration is directly
2153 handled here. This also reduces startup time.
2157 handled here. This also reduces startup time.
2154
2158
2155 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2159 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2156 shell wasn't being correctly called. Also in IPShellWX.
2160 shell wasn't being correctly called. Also in IPShellWX.
2157
2161
2158 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2162 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2159 fine-tune banner.
2163 fine-tune banner.
2160
2164
2161 * IPython/numutils.py (spike): Deprecate these spike functions,
2165 * IPython/numutils.py (spike): Deprecate these spike functions,
2162 delete (long deprecated) gnuplot_exec handler.
2166 delete (long deprecated) gnuplot_exec handler.
2163
2167
2164 2004-08-26 Fernando Perez <fperez@colorado.edu>
2168 2004-08-26 Fernando Perez <fperez@colorado.edu>
2165
2169
2166 * ipython.1: Update for threading options, plus some others which
2170 * ipython.1: Update for threading options, plus some others which
2167 were missing.
2171 were missing.
2168
2172
2169 * IPython/ipmaker.py (__call__): Added -wthread option for
2173 * IPython/ipmaker.py (__call__): Added -wthread option for
2170 wxpython thread handling. Make sure threading options are only
2174 wxpython thread handling. Make sure threading options are only
2171 valid at the command line.
2175 valid at the command line.
2172
2176
2173 * scripts/ipython: moved shell selection into a factory function
2177 * scripts/ipython: moved shell selection into a factory function
2174 in Shell.py, to keep the starter script to a minimum.
2178 in Shell.py, to keep the starter script to a minimum.
2175
2179
2176 2004-08-25 Fernando Perez <fperez@colorado.edu>
2180 2004-08-25 Fernando Perez <fperez@colorado.edu>
2177
2181
2178 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2182 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2179 John. Along with some recent changes he made to matplotlib, the
2183 John. Along with some recent changes he made to matplotlib, the
2180 next versions of both systems should work very well together.
2184 next versions of both systems should work very well together.
2181
2185
2182 2004-08-24 Fernando Perez <fperez@colorado.edu>
2186 2004-08-24 Fernando Perez <fperez@colorado.edu>
2183
2187
2184 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2188 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2185 tried to switch the profiling to using hotshot, but I'm getting
2189 tried to switch the profiling to using hotshot, but I'm getting
2186 strange errors from prof.runctx() there. I may be misreading the
2190 strange errors from prof.runctx() there. I may be misreading the
2187 docs, but it looks weird. For now the profiling code will
2191 docs, but it looks weird. For now the profiling code will
2188 continue to use the standard profiler.
2192 continue to use the standard profiler.
2189
2193
2190 2004-08-23 Fernando Perez <fperez@colorado.edu>
2194 2004-08-23 Fernando Perez <fperez@colorado.edu>
2191
2195
2192 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2196 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2193 threaded shell, by John Hunter. It's not quite ready yet, but
2197 threaded shell, by John Hunter. It's not quite ready yet, but
2194 close.
2198 close.
2195
2199
2196 2004-08-22 Fernando Perez <fperez@colorado.edu>
2200 2004-08-22 Fernando Perez <fperez@colorado.edu>
2197
2201
2198 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2202 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2199 in Magic and ultraTB.
2203 in Magic and ultraTB.
2200
2204
2201 * ipython.1: document threading options in manpage.
2205 * ipython.1: document threading options in manpage.
2202
2206
2203 * scripts/ipython: Changed name of -thread option to -gthread,
2207 * scripts/ipython: Changed name of -thread option to -gthread,
2204 since this is GTK specific. I want to leave the door open for a
2208 since this is GTK specific. I want to leave the door open for a
2205 -wthread option for WX, which will most likely be necessary. This
2209 -wthread option for WX, which will most likely be necessary. This
2206 change affects usage and ipmaker as well.
2210 change affects usage and ipmaker as well.
2207
2211
2208 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2212 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2209 handle the matplotlib shell issues. Code by John Hunter
2213 handle the matplotlib shell issues. Code by John Hunter
2210 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2214 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2211 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2215 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2212 broken (and disabled for end users) for now, but it puts the
2216 broken (and disabled for end users) for now, but it puts the
2213 infrastructure in place.
2217 infrastructure in place.
2214
2218
2215 2004-08-21 Fernando Perez <fperez@colorado.edu>
2219 2004-08-21 Fernando Perez <fperez@colorado.edu>
2216
2220
2217 * ipythonrc-pylab: Add matplotlib support.
2221 * ipythonrc-pylab: Add matplotlib support.
2218
2222
2219 * matplotlib_config.py: new files for matplotlib support, part of
2223 * matplotlib_config.py: new files for matplotlib support, part of
2220 the pylab profile.
2224 the pylab profile.
2221
2225
2222 * IPython/usage.py (__doc__): documented the threading options.
2226 * IPython/usage.py (__doc__): documented the threading options.
2223
2227
2224 2004-08-20 Fernando Perez <fperez@colorado.edu>
2228 2004-08-20 Fernando Perez <fperez@colorado.edu>
2225
2229
2226 * ipython: Modified the main calling routine to handle the -thread
2230 * ipython: Modified the main calling routine to handle the -thread
2227 and -mpthread options. This needs to be done as a top-level hack,
2231 and -mpthread options. This needs to be done as a top-level hack,
2228 because it determines which class to instantiate for IPython
2232 because it determines which class to instantiate for IPython
2229 itself.
2233 itself.
2230
2234
2231 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2235 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2232 classes to support multithreaded GTK operation without blocking,
2236 classes to support multithreaded GTK operation without blocking,
2233 and matplotlib with all backends. This is a lot of still very
2237 and matplotlib with all backends. This is a lot of still very
2234 experimental code, and threads are tricky. So it may still have a
2238 experimental code, and threads are tricky. So it may still have a
2235 few rough edges... This code owes a lot to
2239 few rough edges... This code owes a lot to
2236 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2240 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2237 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2241 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2238 to John Hunter for all the matplotlib work.
2242 to John Hunter for all the matplotlib work.
2239
2243
2240 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2244 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2241 options for gtk thread and matplotlib support.
2245 options for gtk thread and matplotlib support.
2242
2246
2243 2004-08-16 Fernando Perez <fperez@colorado.edu>
2247 2004-08-16 Fernando Perez <fperez@colorado.edu>
2244
2248
2245 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2249 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2246 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2250 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2247 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2251 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2248
2252
2249 2004-08-11 Fernando Perez <fperez@colorado.edu>
2253 2004-08-11 Fernando Perez <fperez@colorado.edu>
2250
2254
2251 * setup.py (isfile): Fix build so documentation gets updated for
2255 * setup.py (isfile): Fix build so documentation gets updated for
2252 rpms (it was only done for .tgz builds).
2256 rpms (it was only done for .tgz builds).
2253
2257
2254 2004-08-10 Fernando Perez <fperez@colorado.edu>
2258 2004-08-10 Fernando Perez <fperez@colorado.edu>
2255
2259
2256 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2260 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2257
2261
2258 * iplib.py : Silence syntax error exceptions in tab-completion.
2262 * iplib.py : Silence syntax error exceptions in tab-completion.
2259
2263
2260 2004-08-05 Fernando Perez <fperez@colorado.edu>
2264 2004-08-05 Fernando Perez <fperez@colorado.edu>
2261
2265
2262 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2266 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2263 'color off' mark for continuation prompts. This was causing long
2267 'color off' mark for continuation prompts. This was causing long
2264 continuation lines to mis-wrap.
2268 continuation lines to mis-wrap.
2265
2269
2266 2004-08-01 Fernando Perez <fperez@colorado.edu>
2270 2004-08-01 Fernando Perez <fperez@colorado.edu>
2267
2271
2268 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2272 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2269 for building ipython to be a parameter. All this is necessary
2273 for building ipython to be a parameter. All this is necessary
2270 right now to have a multithreaded version, but this insane
2274 right now to have a multithreaded version, but this insane
2271 non-design will be cleaned up soon. For now, it's a hack that
2275 non-design will be cleaned up soon. For now, it's a hack that
2272 works.
2276 works.
2273
2277
2274 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2278 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2275 args in various places. No bugs so far, but it's a dangerous
2279 args in various places. No bugs so far, but it's a dangerous
2276 practice.
2280 practice.
2277
2281
2278 2004-07-31 Fernando Perez <fperez@colorado.edu>
2282 2004-07-31 Fernando Perez <fperez@colorado.edu>
2279
2283
2280 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2284 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2281 fix completion of files with dots in their names under most
2285 fix completion of files with dots in their names under most
2282 profiles (pysh was OK because the completion order is different).
2286 profiles (pysh was OK because the completion order is different).
2283
2287
2284 2004-07-27 Fernando Perez <fperez@colorado.edu>
2288 2004-07-27 Fernando Perez <fperez@colorado.edu>
2285
2289
2286 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2290 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2287 keywords manually, b/c the one in keyword.py was removed in python
2291 keywords manually, b/c the one in keyword.py was removed in python
2288 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2292 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2289 This is NOT a bug under python 2.3 and earlier.
2293 This is NOT a bug under python 2.3 and earlier.
2290
2294
2291 2004-07-26 Fernando Perez <fperez@colorado.edu>
2295 2004-07-26 Fernando Perez <fperez@colorado.edu>
2292
2296
2293 * IPython/ultraTB.py (VerboseTB.text): Add another
2297 * IPython/ultraTB.py (VerboseTB.text): Add another
2294 linecache.checkcache() call to try to prevent inspect.py from
2298 linecache.checkcache() call to try to prevent inspect.py from
2295 crashing under python 2.3. I think this fixes
2299 crashing under python 2.3. I think this fixes
2296 http://www.scipy.net/roundup/ipython/issue17.
2300 http://www.scipy.net/roundup/ipython/issue17.
2297
2301
2298 2004-07-26 *** Released version 0.6.2
2302 2004-07-26 *** Released version 0.6.2
2299
2303
2300 2004-07-26 Fernando Perez <fperez@colorado.edu>
2304 2004-07-26 Fernando Perez <fperez@colorado.edu>
2301
2305
2302 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2306 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2303 fail for any number.
2307 fail for any number.
2304 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2308 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2305 empty bookmarks.
2309 empty bookmarks.
2306
2310
2307 2004-07-26 *** Released version 0.6.1
2311 2004-07-26 *** Released version 0.6.1
2308
2312
2309 2004-07-26 Fernando Perez <fperez@colorado.edu>
2313 2004-07-26 Fernando Perez <fperez@colorado.edu>
2310
2314
2311 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2315 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2312
2316
2313 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2317 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2314 escaping '()[]{}' in filenames.
2318 escaping '()[]{}' in filenames.
2315
2319
2316 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2320 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2317 Python 2.2 users who lack a proper shlex.split.
2321 Python 2.2 users who lack a proper shlex.split.
2318
2322
2319 2004-07-19 Fernando Perez <fperez@colorado.edu>
2323 2004-07-19 Fernando Perez <fperez@colorado.edu>
2320
2324
2321 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2325 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2322 for reading readline's init file. I follow the normal chain:
2326 for reading readline's init file. I follow the normal chain:
2323 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2327 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2324 report by Mike Heeter. This closes
2328 report by Mike Heeter. This closes
2325 http://www.scipy.net/roundup/ipython/issue16.
2329 http://www.scipy.net/roundup/ipython/issue16.
2326
2330
2327 2004-07-18 Fernando Perez <fperez@colorado.edu>
2331 2004-07-18 Fernando Perez <fperez@colorado.edu>
2328
2332
2329 * IPython/iplib.py (__init__): Add better handling of '\' under
2333 * IPython/iplib.py (__init__): Add better handling of '\' under
2330 Win32 for filenames. After a patch by Ville.
2334 Win32 for filenames. After a patch by Ville.
2331
2335
2332 2004-07-17 Fernando Perez <fperez@colorado.edu>
2336 2004-07-17 Fernando Perez <fperez@colorado.edu>
2333
2337
2334 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2338 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2335 autocalling would be triggered for 'foo is bar' if foo is
2339 autocalling would be triggered for 'foo is bar' if foo is
2336 callable. I also cleaned up the autocall detection code to use a
2340 callable. I also cleaned up the autocall detection code to use a
2337 regexp, which is faster. Bug reported by Alexander Schmolck.
2341 regexp, which is faster. Bug reported by Alexander Schmolck.
2338
2342
2339 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2343 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2340 '?' in them would confuse the help system. Reported by Alex
2344 '?' in them would confuse the help system. Reported by Alex
2341 Schmolck.
2345 Schmolck.
2342
2346
2343 2004-07-16 Fernando Perez <fperez@colorado.edu>
2347 2004-07-16 Fernando Perez <fperez@colorado.edu>
2344
2348
2345 * IPython/GnuplotInteractive.py (__all__): added plot2.
2349 * IPython/GnuplotInteractive.py (__all__): added plot2.
2346
2350
2347 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2351 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2348 plotting dictionaries, lists or tuples of 1d arrays.
2352 plotting dictionaries, lists or tuples of 1d arrays.
2349
2353
2350 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2354 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2351 optimizations.
2355 optimizations.
2352
2356
2353 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2357 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2354 the information which was there from Janko's original IPP code:
2358 the information which was there from Janko's original IPP code:
2355
2359
2356 03.05.99 20:53 porto.ifm.uni-kiel.de
2360 03.05.99 20:53 porto.ifm.uni-kiel.de
2357 --Started changelog.
2361 --Started changelog.
2358 --make clear do what it say it does
2362 --make clear do what it say it does
2359 --added pretty output of lines from inputcache
2363 --added pretty output of lines from inputcache
2360 --Made Logger a mixin class, simplifies handling of switches
2364 --Made Logger a mixin class, simplifies handling of switches
2361 --Added own completer class. .string<TAB> expands to last history
2365 --Added own completer class. .string<TAB> expands to last history
2362 line which starts with string. The new expansion is also present
2366 line which starts with string. The new expansion is also present
2363 with Ctrl-r from the readline library. But this shows, who this
2367 with Ctrl-r from the readline library. But this shows, who this
2364 can be done for other cases.
2368 can be done for other cases.
2365 --Added convention that all shell functions should accept a
2369 --Added convention that all shell functions should accept a
2366 parameter_string This opens the door for different behaviour for
2370 parameter_string This opens the door for different behaviour for
2367 each function. @cd is a good example of this.
2371 each function. @cd is a good example of this.
2368
2372
2369 04.05.99 12:12 porto.ifm.uni-kiel.de
2373 04.05.99 12:12 porto.ifm.uni-kiel.de
2370 --added logfile rotation
2374 --added logfile rotation
2371 --added new mainloop method which freezes first the namespace
2375 --added new mainloop method which freezes first the namespace
2372
2376
2373 07.05.99 21:24 porto.ifm.uni-kiel.de
2377 07.05.99 21:24 porto.ifm.uni-kiel.de
2374 --added the docreader classes. Now there is a help system.
2378 --added the docreader classes. Now there is a help system.
2375 -This is only a first try. Currently it's not easy to put new
2379 -This is only a first try. Currently it's not easy to put new
2376 stuff in the indices. But this is the way to go. Info would be
2380 stuff in the indices. But this is the way to go. Info would be
2377 better, but HTML is every where and not everybody has an info
2381 better, but HTML is every where and not everybody has an info
2378 system installed and it's not so easy to change html-docs to info.
2382 system installed and it's not so easy to change html-docs to info.
2379 --added global logfile option
2383 --added global logfile option
2380 --there is now a hook for object inspection method pinfo needs to
2384 --there is now a hook for object inspection method pinfo needs to
2381 be provided for this. Can be reached by two '??'.
2385 be provided for this. Can be reached by two '??'.
2382
2386
2383 08.05.99 20:51 porto.ifm.uni-kiel.de
2387 08.05.99 20:51 porto.ifm.uni-kiel.de
2384 --added a README
2388 --added a README
2385 --bug in rc file. Something has changed so functions in the rc
2389 --bug in rc file. Something has changed so functions in the rc
2386 file need to reference the shell and not self. Not clear if it's a
2390 file need to reference the shell and not self. Not clear if it's a
2387 bug or feature.
2391 bug or feature.
2388 --changed rc file for new behavior
2392 --changed rc file for new behavior
2389
2393
2390 2004-07-15 Fernando Perez <fperez@colorado.edu>
2394 2004-07-15 Fernando Perez <fperez@colorado.edu>
2391
2395
2392 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2396 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2393 cache was falling out of sync in bizarre manners when multi-line
2397 cache was falling out of sync in bizarre manners when multi-line
2394 input was present. Minor optimizations and cleanup.
2398 input was present. Minor optimizations and cleanup.
2395
2399
2396 (Logger): Remove old Changelog info for cleanup. This is the
2400 (Logger): Remove old Changelog info for cleanup. This is the
2397 information which was there from Janko's original code:
2401 information which was there from Janko's original code:
2398
2402
2399 Changes to Logger: - made the default log filename a parameter
2403 Changes to Logger: - made the default log filename a parameter
2400
2404
2401 - put a check for lines beginning with !@? in log(). Needed
2405 - put a check for lines beginning with !@? in log(). Needed
2402 (even if the handlers properly log their lines) for mid-session
2406 (even if the handlers properly log their lines) for mid-session
2403 logging activation to work properly. Without this, lines logged
2407 logging activation to work properly. Without this, lines logged
2404 in mid session, which get read from the cache, would end up
2408 in mid session, which get read from the cache, would end up
2405 'bare' (with !@? in the open) in the log. Now they are caught
2409 'bare' (with !@? in the open) in the log. Now they are caught
2406 and prepended with a #.
2410 and prepended with a #.
2407
2411
2408 * IPython/iplib.py (InteractiveShell.init_readline): added check
2412 * IPython/iplib.py (InteractiveShell.init_readline): added check
2409 in case MagicCompleter fails to be defined, so we don't crash.
2413 in case MagicCompleter fails to be defined, so we don't crash.
2410
2414
2411 2004-07-13 Fernando Perez <fperez@colorado.edu>
2415 2004-07-13 Fernando Perez <fperez@colorado.edu>
2412
2416
2413 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2417 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2414 of EPS if the requested filename ends in '.eps'.
2418 of EPS if the requested filename ends in '.eps'.
2415
2419
2416 2004-07-04 Fernando Perez <fperez@colorado.edu>
2420 2004-07-04 Fernando Perez <fperez@colorado.edu>
2417
2421
2418 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2422 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2419 escaping of quotes when calling the shell.
2423 escaping of quotes when calling the shell.
2420
2424
2421 2004-07-02 Fernando Perez <fperez@colorado.edu>
2425 2004-07-02 Fernando Perez <fperez@colorado.edu>
2422
2426
2423 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2427 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2424 gettext not working because we were clobbering '_'. Fixes
2428 gettext not working because we were clobbering '_'. Fixes
2425 http://www.scipy.net/roundup/ipython/issue6.
2429 http://www.scipy.net/roundup/ipython/issue6.
2426
2430
2427 2004-07-01 Fernando Perez <fperez@colorado.edu>
2431 2004-07-01 Fernando Perez <fperez@colorado.edu>
2428
2432
2429 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2433 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2430 into @cd. Patch by Ville.
2434 into @cd. Patch by Ville.
2431
2435
2432 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2436 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2433 new function to store things after ipmaker runs. Patch by Ville.
2437 new function to store things after ipmaker runs. Patch by Ville.
2434 Eventually this will go away once ipmaker is removed and the class
2438 Eventually this will go away once ipmaker is removed and the class
2435 gets cleaned up, but for now it's ok. Key functionality here is
2439 gets cleaned up, but for now it's ok. Key functionality here is
2436 the addition of the persistent storage mechanism, a dict for
2440 the addition of the persistent storage mechanism, a dict for
2437 keeping data across sessions (for now just bookmarks, but more can
2441 keeping data across sessions (for now just bookmarks, but more can
2438 be implemented later).
2442 be implemented later).
2439
2443
2440 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2444 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2441 persistent across sections. Patch by Ville, I modified it
2445 persistent across sections. Patch by Ville, I modified it
2442 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2446 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2443 added a '-l' option to list all bookmarks.
2447 added a '-l' option to list all bookmarks.
2444
2448
2445 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2449 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2446 center for cleanup. Registered with atexit.register(). I moved
2450 center for cleanup. Registered with atexit.register(). I moved
2447 here the old exit_cleanup(). After a patch by Ville.
2451 here the old exit_cleanup(). After a patch by Ville.
2448
2452
2449 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2453 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2450 characters in the hacked shlex_split for python 2.2.
2454 characters in the hacked shlex_split for python 2.2.
2451
2455
2452 * IPython/iplib.py (file_matches): more fixes to filenames with
2456 * IPython/iplib.py (file_matches): more fixes to filenames with
2453 whitespace in them. It's not perfect, but limitations in python's
2457 whitespace in them. It's not perfect, but limitations in python's
2454 readline make it impossible to go further.
2458 readline make it impossible to go further.
2455
2459
2456 2004-06-29 Fernando Perez <fperez@colorado.edu>
2460 2004-06-29 Fernando Perez <fperez@colorado.edu>
2457
2461
2458 * IPython/iplib.py (file_matches): escape whitespace correctly in
2462 * IPython/iplib.py (file_matches): escape whitespace correctly in
2459 filename completions. Bug reported by Ville.
2463 filename completions. Bug reported by Ville.
2460
2464
2461 2004-06-28 Fernando Perez <fperez@colorado.edu>
2465 2004-06-28 Fernando Perez <fperez@colorado.edu>
2462
2466
2463 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2467 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2464 the history file will be called 'history-PROFNAME' (or just
2468 the history file will be called 'history-PROFNAME' (or just
2465 'history' if no profile is loaded). I was getting annoyed at
2469 'history' if no profile is loaded). I was getting annoyed at
2466 getting my Numerical work history clobbered by pysh sessions.
2470 getting my Numerical work history clobbered by pysh sessions.
2467
2471
2468 * IPython/iplib.py (InteractiveShell.__init__): Internal
2472 * IPython/iplib.py (InteractiveShell.__init__): Internal
2469 getoutputerror() function so that we can honor the system_verbose
2473 getoutputerror() function so that we can honor the system_verbose
2470 flag for _all_ system calls. I also added escaping of #
2474 flag for _all_ system calls. I also added escaping of #
2471 characters here to avoid confusing Itpl.
2475 characters here to avoid confusing Itpl.
2472
2476
2473 * IPython/Magic.py (shlex_split): removed call to shell in
2477 * IPython/Magic.py (shlex_split): removed call to shell in
2474 parse_options and replaced it with shlex.split(). The annoying
2478 parse_options and replaced it with shlex.split(). The annoying
2475 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2479 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2476 to backport it from 2.3, with several frail hacks (the shlex
2480 to backport it from 2.3, with several frail hacks (the shlex
2477 module is rather limited in 2.2). Thanks to a suggestion by Ville
2481 module is rather limited in 2.2). Thanks to a suggestion by Ville
2478 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2482 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2479 problem.
2483 problem.
2480
2484
2481 (Magic.magic_system_verbose): new toggle to print the actual
2485 (Magic.magic_system_verbose): new toggle to print the actual
2482 system calls made by ipython. Mainly for debugging purposes.
2486 system calls made by ipython. Mainly for debugging purposes.
2483
2487
2484 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2488 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2485 doesn't support persistence. Reported (and fix suggested) by
2489 doesn't support persistence. Reported (and fix suggested) by
2486 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2490 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2487
2491
2488 2004-06-26 Fernando Perez <fperez@colorado.edu>
2492 2004-06-26 Fernando Perez <fperez@colorado.edu>
2489
2493
2490 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2494 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2491 continue prompts.
2495 continue prompts.
2492
2496
2493 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2497 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2494 function (basically a big docstring) and a few more things here to
2498 function (basically a big docstring) and a few more things here to
2495 speedup startup. pysh.py is now very lightweight. We want because
2499 speedup startup. pysh.py is now very lightweight. We want because
2496 it gets execfile'd, while InterpreterExec gets imported, so
2500 it gets execfile'd, while InterpreterExec gets imported, so
2497 byte-compilation saves time.
2501 byte-compilation saves time.
2498
2502
2499 2004-06-25 Fernando Perez <fperez@colorado.edu>
2503 2004-06-25 Fernando Perez <fperez@colorado.edu>
2500
2504
2501 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2505 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2502 -NUM', which was recently broken.
2506 -NUM', which was recently broken.
2503
2507
2504 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2508 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2505 in multi-line input (but not !!, which doesn't make sense there).
2509 in multi-line input (but not !!, which doesn't make sense there).
2506
2510
2507 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2511 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2508 It's just too useful, and people can turn it off in the less
2512 It's just too useful, and people can turn it off in the less
2509 common cases where it's a problem.
2513 common cases where it's a problem.
2510
2514
2511 2004-06-24 Fernando Perez <fperez@colorado.edu>
2515 2004-06-24 Fernando Perez <fperez@colorado.edu>
2512
2516
2513 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2517 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2514 special syntaxes (like alias calling) is now allied in multi-line
2518 special syntaxes (like alias calling) is now allied in multi-line
2515 input. This is still _very_ experimental, but it's necessary for
2519 input. This is still _very_ experimental, but it's necessary for
2516 efficient shell usage combining python looping syntax with system
2520 efficient shell usage combining python looping syntax with system
2517 calls. For now it's restricted to aliases, I don't think it
2521 calls. For now it's restricted to aliases, I don't think it
2518 really even makes sense to have this for magics.
2522 really even makes sense to have this for magics.
2519
2523
2520 2004-06-23 Fernando Perez <fperez@colorado.edu>
2524 2004-06-23 Fernando Perez <fperez@colorado.edu>
2521
2525
2522 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2526 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2523 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2527 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2524
2528
2525 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2529 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2526 extensions under Windows (after code sent by Gary Bishop). The
2530 extensions under Windows (after code sent by Gary Bishop). The
2527 extensions considered 'executable' are stored in IPython's rc
2531 extensions considered 'executable' are stored in IPython's rc
2528 structure as win_exec_ext.
2532 structure as win_exec_ext.
2529
2533
2530 * IPython/genutils.py (shell): new function, like system() but
2534 * IPython/genutils.py (shell): new function, like system() but
2531 without return value. Very useful for interactive shell work.
2535 without return value. Very useful for interactive shell work.
2532
2536
2533 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2537 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2534 delete aliases.
2538 delete aliases.
2535
2539
2536 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2540 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2537 sure that the alias table doesn't contain python keywords.
2541 sure that the alias table doesn't contain python keywords.
2538
2542
2539 2004-06-21 Fernando Perez <fperez@colorado.edu>
2543 2004-06-21 Fernando Perez <fperez@colorado.edu>
2540
2544
2541 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2545 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2542 non-existent items are found in $PATH. Reported by Thorsten.
2546 non-existent items are found in $PATH. Reported by Thorsten.
2543
2547
2544 2004-06-20 Fernando Perez <fperez@colorado.edu>
2548 2004-06-20 Fernando Perez <fperez@colorado.edu>
2545
2549
2546 * IPython/iplib.py (complete): modified the completer so that the
2550 * IPython/iplib.py (complete): modified the completer so that the
2547 order of priorities can be easily changed at runtime.
2551 order of priorities can be easily changed at runtime.
2548
2552
2549 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2553 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2550 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2554 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2551
2555
2552 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2556 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2553 expand Python variables prepended with $ in all system calls. The
2557 expand Python variables prepended with $ in all system calls. The
2554 same was done to InteractiveShell.handle_shell_escape. Now all
2558 same was done to InteractiveShell.handle_shell_escape. Now all
2555 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2559 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2556 expansion of python variables and expressions according to the
2560 expansion of python variables and expressions according to the
2557 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2561 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2558
2562
2559 Though PEP-215 has been rejected, a similar (but simpler) one
2563 Though PEP-215 has been rejected, a similar (but simpler) one
2560 seems like it will go into Python 2.4, PEP-292 -
2564 seems like it will go into Python 2.4, PEP-292 -
2561 http://www.python.org/peps/pep-0292.html.
2565 http://www.python.org/peps/pep-0292.html.
2562
2566
2563 I'll keep the full syntax of PEP-215, since IPython has since the
2567 I'll keep the full syntax of PEP-215, since IPython has since the
2564 start used Ka-Ping Yee's reference implementation discussed there
2568 start used Ka-Ping Yee's reference implementation discussed there
2565 (Itpl), and I actually like the powerful semantics it offers.
2569 (Itpl), and I actually like the powerful semantics it offers.
2566
2570
2567 In order to access normal shell variables, the $ has to be escaped
2571 In order to access normal shell variables, the $ has to be escaped
2568 via an extra $. For example:
2572 via an extra $. For example:
2569
2573
2570 In [7]: PATH='a python variable'
2574 In [7]: PATH='a python variable'
2571
2575
2572 In [8]: !echo $PATH
2576 In [8]: !echo $PATH
2573 a python variable
2577 a python variable
2574
2578
2575 In [9]: !echo $$PATH
2579 In [9]: !echo $$PATH
2576 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2580 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2577
2581
2578 (Magic.parse_options): escape $ so the shell doesn't evaluate
2582 (Magic.parse_options): escape $ so the shell doesn't evaluate
2579 things prematurely.
2583 things prematurely.
2580
2584
2581 * IPython/iplib.py (InteractiveShell.call_alias): added the
2585 * IPython/iplib.py (InteractiveShell.call_alias): added the
2582 ability for aliases to expand python variables via $.
2586 ability for aliases to expand python variables via $.
2583
2587
2584 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2588 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2585 system, now there's a @rehash/@rehashx pair of magics. These work
2589 system, now there's a @rehash/@rehashx pair of magics. These work
2586 like the csh rehash command, and can be invoked at any time. They
2590 like the csh rehash command, and can be invoked at any time. They
2587 build a table of aliases to everything in the user's $PATH
2591 build a table of aliases to everything in the user's $PATH
2588 (@rehash uses everything, @rehashx is slower but only adds
2592 (@rehash uses everything, @rehashx is slower but only adds
2589 executable files). With this, the pysh.py-based shell profile can
2593 executable files). With this, the pysh.py-based shell profile can
2590 now simply call rehash upon startup, and full access to all
2594 now simply call rehash upon startup, and full access to all
2591 programs in the user's path is obtained.
2595 programs in the user's path is obtained.
2592
2596
2593 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2597 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2594 functionality is now fully in place. I removed the old dynamic
2598 functionality is now fully in place. I removed the old dynamic
2595 code generation based approach, in favor of a much lighter one
2599 code generation based approach, in favor of a much lighter one
2596 based on a simple dict. The advantage is that this allows me to
2600 based on a simple dict. The advantage is that this allows me to
2597 now have thousands of aliases with negligible cost (unthinkable
2601 now have thousands of aliases with negligible cost (unthinkable
2598 with the old system).
2602 with the old system).
2599
2603
2600 2004-06-19 Fernando Perez <fperez@colorado.edu>
2604 2004-06-19 Fernando Perez <fperez@colorado.edu>
2601
2605
2602 * IPython/iplib.py (__init__): extended MagicCompleter class to
2606 * IPython/iplib.py (__init__): extended MagicCompleter class to
2603 also complete (last in priority) on user aliases.
2607 also complete (last in priority) on user aliases.
2604
2608
2605 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2609 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2606 call to eval.
2610 call to eval.
2607 (ItplNS.__init__): Added a new class which functions like Itpl,
2611 (ItplNS.__init__): Added a new class which functions like Itpl,
2608 but allows configuring the namespace for the evaluation to occur
2612 but allows configuring the namespace for the evaluation to occur
2609 in.
2613 in.
2610
2614
2611 2004-06-18 Fernando Perez <fperez@colorado.edu>
2615 2004-06-18 Fernando Perez <fperez@colorado.edu>
2612
2616
2613 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2617 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2614 better message when 'exit' or 'quit' are typed (a common newbie
2618 better message when 'exit' or 'quit' are typed (a common newbie
2615 confusion).
2619 confusion).
2616
2620
2617 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2621 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2618 check for Windows users.
2622 check for Windows users.
2619
2623
2620 * IPython/iplib.py (InteractiveShell.user_setup): removed
2624 * IPython/iplib.py (InteractiveShell.user_setup): removed
2621 disabling of colors for Windows. I'll test at runtime and issue a
2625 disabling of colors for Windows. I'll test at runtime and issue a
2622 warning if Gary's readline isn't found, as to nudge users to
2626 warning if Gary's readline isn't found, as to nudge users to
2623 download it.
2627 download it.
2624
2628
2625 2004-06-16 Fernando Perez <fperez@colorado.edu>
2629 2004-06-16 Fernando Perez <fperez@colorado.edu>
2626
2630
2627 * IPython/genutils.py (Stream.__init__): changed to print errors
2631 * IPython/genutils.py (Stream.__init__): changed to print errors
2628 to sys.stderr. I had a circular dependency here. Now it's
2632 to sys.stderr. I had a circular dependency here. Now it's
2629 possible to run ipython as IDLE's shell (consider this pre-alpha,
2633 possible to run ipython as IDLE's shell (consider this pre-alpha,
2630 since true stdout things end up in the starting terminal instead
2634 since true stdout things end up in the starting terminal instead
2631 of IDLE's out).
2635 of IDLE's out).
2632
2636
2633 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2637 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2634 users who haven't # updated their prompt_in2 definitions. Remove
2638 users who haven't # updated their prompt_in2 definitions. Remove
2635 eventually.
2639 eventually.
2636 (multiple_replace): added credit to original ASPN recipe.
2640 (multiple_replace): added credit to original ASPN recipe.
2637
2641
2638 2004-06-15 Fernando Perez <fperez@colorado.edu>
2642 2004-06-15 Fernando Perez <fperez@colorado.edu>
2639
2643
2640 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2644 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2641 list of auto-defined aliases.
2645 list of auto-defined aliases.
2642
2646
2643 2004-06-13 Fernando Perez <fperez@colorado.edu>
2647 2004-06-13 Fernando Perez <fperez@colorado.edu>
2644
2648
2645 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2649 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2646 install was really requested (so setup.py can be used for other
2650 install was really requested (so setup.py can be used for other
2647 things under Windows).
2651 things under Windows).
2648
2652
2649 2004-06-10 Fernando Perez <fperez@colorado.edu>
2653 2004-06-10 Fernando Perez <fperez@colorado.edu>
2650
2654
2651 * IPython/Logger.py (Logger.create_log): Manually remove any old
2655 * IPython/Logger.py (Logger.create_log): Manually remove any old
2652 backup, since os.remove may fail under Windows. Fixes bug
2656 backup, since os.remove may fail under Windows. Fixes bug
2653 reported by Thorsten.
2657 reported by Thorsten.
2654
2658
2655 2004-06-09 Fernando Perez <fperez@colorado.edu>
2659 2004-06-09 Fernando Perez <fperez@colorado.edu>
2656
2660
2657 * examples/example-embed.py: fixed all references to %n (replaced
2661 * examples/example-embed.py: fixed all references to %n (replaced
2658 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2662 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2659 for all examples and the manual as well.
2663 for all examples and the manual as well.
2660
2664
2661 2004-06-08 Fernando Perez <fperez@colorado.edu>
2665 2004-06-08 Fernando Perez <fperez@colorado.edu>
2662
2666
2663 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2667 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2664 alignment and color management. All 3 prompt subsystems now
2668 alignment and color management. All 3 prompt subsystems now
2665 inherit from BasePrompt.
2669 inherit from BasePrompt.
2666
2670
2667 * tools/release: updates for windows installer build and tag rpms
2671 * tools/release: updates for windows installer build and tag rpms
2668 with python version (since paths are fixed).
2672 with python version (since paths are fixed).
2669
2673
2670 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2674 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2671 which will become eventually obsolete. Also fixed the default
2675 which will become eventually obsolete. Also fixed the default
2672 prompt_in2 to use \D, so at least new users start with the correct
2676 prompt_in2 to use \D, so at least new users start with the correct
2673 defaults.
2677 defaults.
2674 WARNING: Users with existing ipythonrc files will need to apply
2678 WARNING: Users with existing ipythonrc files will need to apply
2675 this fix manually!
2679 this fix manually!
2676
2680
2677 * setup.py: make windows installer (.exe). This is finally the
2681 * setup.py: make windows installer (.exe). This is finally the
2678 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2682 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2679 which I hadn't included because it required Python 2.3 (or recent
2683 which I hadn't included because it required Python 2.3 (or recent
2680 distutils).
2684 distutils).
2681
2685
2682 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2686 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2683 usage of new '\D' escape.
2687 usage of new '\D' escape.
2684
2688
2685 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2689 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2686 lacks os.getuid())
2690 lacks os.getuid())
2687 (CachedOutput.set_colors): Added the ability to turn coloring
2691 (CachedOutput.set_colors): Added the ability to turn coloring
2688 on/off with @colors even for manually defined prompt colors. It
2692 on/off with @colors even for manually defined prompt colors. It
2689 uses a nasty global, but it works safely and via the generic color
2693 uses a nasty global, but it works safely and via the generic color
2690 handling mechanism.
2694 handling mechanism.
2691 (Prompt2.__init__): Introduced new escape '\D' for continuation
2695 (Prompt2.__init__): Introduced new escape '\D' for continuation
2692 prompts. It represents the counter ('\#') as dots.
2696 prompts. It represents the counter ('\#') as dots.
2693 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2697 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2694 need to update their ipythonrc files and replace '%n' with '\D' in
2698 need to update their ipythonrc files and replace '%n' with '\D' in
2695 their prompt_in2 settings everywhere. Sorry, but there's
2699 their prompt_in2 settings everywhere. Sorry, but there's
2696 otherwise no clean way to get all prompts to properly align. The
2700 otherwise no clean way to get all prompts to properly align. The
2697 ipythonrc shipped with IPython has been updated.
2701 ipythonrc shipped with IPython has been updated.
2698
2702
2699 2004-06-07 Fernando Perez <fperez@colorado.edu>
2703 2004-06-07 Fernando Perez <fperez@colorado.edu>
2700
2704
2701 * setup.py (isfile): Pass local_icons option to latex2html, so the
2705 * setup.py (isfile): Pass local_icons option to latex2html, so the
2702 resulting HTML file is self-contained. Thanks to
2706 resulting HTML file is self-contained. Thanks to
2703 dryice-AT-liu.com.cn for the tip.
2707 dryice-AT-liu.com.cn for the tip.
2704
2708
2705 * pysh.py: I created a new profile 'shell', which implements a
2709 * pysh.py: I created a new profile 'shell', which implements a
2706 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2710 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2707 system shell, nor will it become one anytime soon. It's mainly
2711 system shell, nor will it become one anytime soon. It's mainly
2708 meant to illustrate the use of the new flexible bash-like prompts.
2712 meant to illustrate the use of the new flexible bash-like prompts.
2709 I guess it could be used by hardy souls for true shell management,
2713 I guess it could be used by hardy souls for true shell management,
2710 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2714 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2711 profile. This uses the InterpreterExec extension provided by
2715 profile. This uses the InterpreterExec extension provided by
2712 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2716 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2713
2717
2714 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2718 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2715 auto-align itself with the length of the previous input prompt
2719 auto-align itself with the length of the previous input prompt
2716 (taking into account the invisible color escapes).
2720 (taking into account the invisible color escapes).
2717 (CachedOutput.__init__): Large restructuring of this class. Now
2721 (CachedOutput.__init__): Large restructuring of this class. Now
2718 all three prompts (primary1, primary2, output) are proper objects,
2722 all three prompts (primary1, primary2, output) are proper objects,
2719 managed by the 'parent' CachedOutput class. The code is still a
2723 managed by the 'parent' CachedOutput class. The code is still a
2720 bit hackish (all prompts share state via a pointer to the cache),
2724 bit hackish (all prompts share state via a pointer to the cache),
2721 but it's overall far cleaner than before.
2725 but it's overall far cleaner than before.
2722
2726
2723 * IPython/genutils.py (getoutputerror): modified to add verbose,
2727 * IPython/genutils.py (getoutputerror): modified to add verbose,
2724 debug and header options. This makes the interface of all getout*
2728 debug and header options. This makes the interface of all getout*
2725 functions uniform.
2729 functions uniform.
2726 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2730 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2727
2731
2728 * IPython/Magic.py (Magic.default_option): added a function to
2732 * IPython/Magic.py (Magic.default_option): added a function to
2729 allow registering default options for any magic command. This
2733 allow registering default options for any magic command. This
2730 makes it easy to have profiles which customize the magics globally
2734 makes it easy to have profiles which customize the magics globally
2731 for a certain use. The values set through this function are
2735 for a certain use. The values set through this function are
2732 picked up by the parse_options() method, which all magics should
2736 picked up by the parse_options() method, which all magics should
2733 use to parse their options.
2737 use to parse their options.
2734
2738
2735 * IPython/genutils.py (warn): modified the warnings framework to
2739 * IPython/genutils.py (warn): modified the warnings framework to
2736 use the Term I/O class. I'm trying to slowly unify all of
2740 use the Term I/O class. I'm trying to slowly unify all of
2737 IPython's I/O operations to pass through Term.
2741 IPython's I/O operations to pass through Term.
2738
2742
2739 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2743 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2740 the secondary prompt to correctly match the length of the primary
2744 the secondary prompt to correctly match the length of the primary
2741 one for any prompt. Now multi-line code will properly line up
2745 one for any prompt. Now multi-line code will properly line up
2742 even for path dependent prompts, such as the new ones available
2746 even for path dependent prompts, such as the new ones available
2743 via the prompt_specials.
2747 via the prompt_specials.
2744
2748
2745 2004-06-06 Fernando Perez <fperez@colorado.edu>
2749 2004-06-06 Fernando Perez <fperez@colorado.edu>
2746
2750
2747 * IPython/Prompts.py (prompt_specials): Added the ability to have
2751 * IPython/Prompts.py (prompt_specials): Added the ability to have
2748 bash-like special sequences in the prompts, which get
2752 bash-like special sequences in the prompts, which get
2749 automatically expanded. Things like hostname, current working
2753 automatically expanded. Things like hostname, current working
2750 directory and username are implemented already, but it's easy to
2754 directory and username are implemented already, but it's easy to
2751 add more in the future. Thanks to a patch by W.J. van der Laan
2755 add more in the future. Thanks to a patch by W.J. van der Laan
2752 <gnufnork-AT-hetdigitalegat.nl>
2756 <gnufnork-AT-hetdigitalegat.nl>
2753 (prompt_specials): Added color support for prompt strings, so
2757 (prompt_specials): Added color support for prompt strings, so
2754 users can define arbitrary color setups for their prompts.
2758 users can define arbitrary color setups for their prompts.
2755
2759
2756 2004-06-05 Fernando Perez <fperez@colorado.edu>
2760 2004-06-05 Fernando Perez <fperez@colorado.edu>
2757
2761
2758 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2762 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2759 code to load Gary Bishop's readline and configure it
2763 code to load Gary Bishop's readline and configure it
2760 automatically. Thanks to Gary for help on this.
2764 automatically. Thanks to Gary for help on this.
2761
2765
2762 2004-06-01 Fernando Perez <fperez@colorado.edu>
2766 2004-06-01 Fernando Perez <fperez@colorado.edu>
2763
2767
2764 * IPython/Logger.py (Logger.create_log): fix bug for logging
2768 * IPython/Logger.py (Logger.create_log): fix bug for logging
2765 with no filename (previous fix was incomplete).
2769 with no filename (previous fix was incomplete).
2766
2770
2767 2004-05-25 Fernando Perez <fperez@colorado.edu>
2771 2004-05-25 Fernando Perez <fperez@colorado.edu>
2768
2772
2769 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2773 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2770 parens would get passed to the shell.
2774 parens would get passed to the shell.
2771
2775
2772 2004-05-20 Fernando Perez <fperez@colorado.edu>
2776 2004-05-20 Fernando Perez <fperez@colorado.edu>
2773
2777
2774 * IPython/Magic.py (Magic.magic_prun): changed default profile
2778 * IPython/Magic.py (Magic.magic_prun): changed default profile
2775 sort order to 'time' (the more common profiling need).
2779 sort order to 'time' (the more common profiling need).
2776
2780
2777 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2781 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2778 so that source code shown is guaranteed in sync with the file on
2782 so that source code shown is guaranteed in sync with the file on
2779 disk (also changed in psource). Similar fix to the one for
2783 disk (also changed in psource). Similar fix to the one for
2780 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2784 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2781 <yann.ledu-AT-noos.fr>.
2785 <yann.ledu-AT-noos.fr>.
2782
2786
2783 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2787 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2784 with a single option would not be correctly parsed. Closes
2788 with a single option would not be correctly parsed. Closes
2785 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2789 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2786 introduced in 0.6.0 (on 2004-05-06).
2790 introduced in 0.6.0 (on 2004-05-06).
2787
2791
2788 2004-05-13 *** Released version 0.6.0
2792 2004-05-13 *** Released version 0.6.0
2789
2793
2790 2004-05-13 Fernando Perez <fperez@colorado.edu>
2794 2004-05-13 Fernando Perez <fperez@colorado.edu>
2791
2795
2792 * debian/: Added debian/ directory to CVS, so that debian support
2796 * debian/: Added debian/ directory to CVS, so that debian support
2793 is publicly accessible. The debian package is maintained by Jack
2797 is publicly accessible. The debian package is maintained by Jack
2794 Moffit <jack-AT-xiph.org>.
2798 Moffit <jack-AT-xiph.org>.
2795
2799
2796 * Documentation: included the notes about an ipython-based system
2800 * Documentation: included the notes about an ipython-based system
2797 shell (the hypothetical 'pysh') into the new_design.pdf document,
2801 shell (the hypothetical 'pysh') into the new_design.pdf document,
2798 so that these ideas get distributed to users along with the
2802 so that these ideas get distributed to users along with the
2799 official documentation.
2803 official documentation.
2800
2804
2801 2004-05-10 Fernando Perez <fperez@colorado.edu>
2805 2004-05-10 Fernando Perez <fperez@colorado.edu>
2802
2806
2803 * IPython/Logger.py (Logger.create_log): fix recently introduced
2807 * IPython/Logger.py (Logger.create_log): fix recently introduced
2804 bug (misindented line) where logstart would fail when not given an
2808 bug (misindented line) where logstart would fail when not given an
2805 explicit filename.
2809 explicit filename.
2806
2810
2807 2004-05-09 Fernando Perez <fperez@colorado.edu>
2811 2004-05-09 Fernando Perez <fperez@colorado.edu>
2808
2812
2809 * IPython/Magic.py (Magic.parse_options): skip system call when
2813 * IPython/Magic.py (Magic.parse_options): skip system call when
2810 there are no options to look for. Faster, cleaner for the common
2814 there are no options to look for. Faster, cleaner for the common
2811 case.
2815 case.
2812
2816
2813 * Documentation: many updates to the manual: describing Windows
2817 * Documentation: many updates to the manual: describing Windows
2814 support better, Gnuplot updates, credits, misc small stuff. Also
2818 support better, Gnuplot updates, credits, misc small stuff. Also
2815 updated the new_design doc a bit.
2819 updated the new_design doc a bit.
2816
2820
2817 2004-05-06 *** Released version 0.6.0.rc1
2821 2004-05-06 *** Released version 0.6.0.rc1
2818
2822
2819 2004-05-06 Fernando Perez <fperez@colorado.edu>
2823 2004-05-06 Fernando Perez <fperez@colorado.edu>
2820
2824
2821 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2825 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2822 operations to use the vastly more efficient list/''.join() method.
2826 operations to use the vastly more efficient list/''.join() method.
2823 (FormattedTB.text): Fix
2827 (FormattedTB.text): Fix
2824 http://www.scipy.net/roundup/ipython/issue12 - exception source
2828 http://www.scipy.net/roundup/ipython/issue12 - exception source
2825 extract not updated after reload. Thanks to Mike Salib
2829 extract not updated after reload. Thanks to Mike Salib
2826 <msalib-AT-mit.edu> for pinning the source of the problem.
2830 <msalib-AT-mit.edu> for pinning the source of the problem.
2827 Fortunately, the solution works inside ipython and doesn't require
2831 Fortunately, the solution works inside ipython and doesn't require
2828 any changes to python proper.
2832 any changes to python proper.
2829
2833
2830 * IPython/Magic.py (Magic.parse_options): Improved to process the
2834 * IPython/Magic.py (Magic.parse_options): Improved to process the
2831 argument list as a true shell would (by actually using the
2835 argument list as a true shell would (by actually using the
2832 underlying system shell). This way, all @magics automatically get
2836 underlying system shell). This way, all @magics automatically get
2833 shell expansion for variables. Thanks to a comment by Alex
2837 shell expansion for variables. Thanks to a comment by Alex
2834 Schmolck.
2838 Schmolck.
2835
2839
2836 2004-04-04 Fernando Perez <fperez@colorado.edu>
2840 2004-04-04 Fernando Perez <fperez@colorado.edu>
2837
2841
2838 * IPython/iplib.py (InteractiveShell.interact): Added a special
2842 * IPython/iplib.py (InteractiveShell.interact): Added a special
2839 trap for a debugger quit exception, which is basically impossible
2843 trap for a debugger quit exception, which is basically impossible
2840 to handle by normal mechanisms, given what pdb does to the stack.
2844 to handle by normal mechanisms, given what pdb does to the stack.
2841 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2845 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2842
2846
2843 2004-04-03 Fernando Perez <fperez@colorado.edu>
2847 2004-04-03 Fernando Perez <fperez@colorado.edu>
2844
2848
2845 * IPython/genutils.py (Term): Standardized the names of the Term
2849 * IPython/genutils.py (Term): Standardized the names of the Term
2846 class streams to cin/cout/cerr, following C++ naming conventions
2850 class streams to cin/cout/cerr, following C++ naming conventions
2847 (I can't use in/out/err because 'in' is not a valid attribute
2851 (I can't use in/out/err because 'in' is not a valid attribute
2848 name).
2852 name).
2849
2853
2850 * IPython/iplib.py (InteractiveShell.interact): don't increment
2854 * IPython/iplib.py (InteractiveShell.interact): don't increment
2851 the prompt if there's no user input. By Daniel 'Dang' Griffith
2855 the prompt if there's no user input. By Daniel 'Dang' Griffith
2852 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2856 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2853 Francois Pinard.
2857 Francois Pinard.
2854
2858
2855 2004-04-02 Fernando Perez <fperez@colorado.edu>
2859 2004-04-02 Fernando Perez <fperez@colorado.edu>
2856
2860
2857 * IPython/genutils.py (Stream.__init__): Modified to survive at
2861 * IPython/genutils.py (Stream.__init__): Modified to survive at
2858 least importing in contexts where stdin/out/err aren't true file
2862 least importing in contexts where stdin/out/err aren't true file
2859 objects, such as PyCrust (they lack fileno() and mode). However,
2863 objects, such as PyCrust (they lack fileno() and mode). However,
2860 the recovery facilities which rely on these things existing will
2864 the recovery facilities which rely on these things existing will
2861 not work.
2865 not work.
2862
2866
2863 2004-04-01 Fernando Perez <fperez@colorado.edu>
2867 2004-04-01 Fernando Perez <fperez@colorado.edu>
2864
2868
2865 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2869 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2866 use the new getoutputerror() function, so it properly
2870 use the new getoutputerror() function, so it properly
2867 distinguishes stdout/err.
2871 distinguishes stdout/err.
2868
2872
2869 * IPython/genutils.py (getoutputerror): added a function to
2873 * IPython/genutils.py (getoutputerror): added a function to
2870 capture separately the standard output and error of a command.
2874 capture separately the standard output and error of a command.
2871 After a comment from dang on the mailing lists. This code is
2875 After a comment from dang on the mailing lists. This code is
2872 basically a modified version of commands.getstatusoutput(), from
2876 basically a modified version of commands.getstatusoutput(), from
2873 the standard library.
2877 the standard library.
2874
2878
2875 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2879 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2876 '!!' as a special syntax (shorthand) to access @sx.
2880 '!!' as a special syntax (shorthand) to access @sx.
2877
2881
2878 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2882 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2879 command and return its output as a list split on '\n'.
2883 command and return its output as a list split on '\n'.
2880
2884
2881 2004-03-31 Fernando Perez <fperez@colorado.edu>
2885 2004-03-31 Fernando Perez <fperez@colorado.edu>
2882
2886
2883 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2887 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2884 method to dictionaries used as FakeModule instances if they lack
2888 method to dictionaries used as FakeModule instances if they lack
2885 it. At least pydoc in python2.3 breaks for runtime-defined
2889 it. At least pydoc in python2.3 breaks for runtime-defined
2886 functions without this hack. At some point I need to _really_
2890 functions without this hack. At some point I need to _really_
2887 understand what FakeModule is doing, because it's a gross hack.
2891 understand what FakeModule is doing, because it's a gross hack.
2888 But it solves Arnd's problem for now...
2892 But it solves Arnd's problem for now...
2889
2893
2890 2004-02-27 Fernando Perez <fperez@colorado.edu>
2894 2004-02-27 Fernando Perez <fperez@colorado.edu>
2891
2895
2892 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2896 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2893 mode would behave erratically. Also increased the number of
2897 mode would behave erratically. Also increased the number of
2894 possible logs in rotate mod to 999. Thanks to Rod Holland
2898 possible logs in rotate mod to 999. Thanks to Rod Holland
2895 <rhh@StructureLABS.com> for the report and fixes.
2899 <rhh@StructureLABS.com> for the report and fixes.
2896
2900
2897 2004-02-26 Fernando Perez <fperez@colorado.edu>
2901 2004-02-26 Fernando Perez <fperez@colorado.edu>
2898
2902
2899 * IPython/genutils.py (page): Check that the curses module really
2903 * IPython/genutils.py (page): Check that the curses module really
2900 has the initscr attribute before trying to use it. For some
2904 has the initscr attribute before trying to use it. For some
2901 reason, the Solaris curses module is missing this. I think this
2905 reason, the Solaris curses module is missing this. I think this
2902 should be considered a Solaris python bug, but I'm not sure.
2906 should be considered a Solaris python bug, but I'm not sure.
2903
2907
2904 2004-01-17 Fernando Perez <fperez@colorado.edu>
2908 2004-01-17 Fernando Perez <fperez@colorado.edu>
2905
2909
2906 * IPython/genutils.py (Stream.__init__): Changes to try to make
2910 * IPython/genutils.py (Stream.__init__): Changes to try to make
2907 ipython robust against stdin/out/err being closed by the user.
2911 ipython robust against stdin/out/err being closed by the user.
2908 This is 'user error' (and blocks a normal python session, at least
2912 This is 'user error' (and blocks a normal python session, at least
2909 the stdout case). However, Ipython should be able to survive such
2913 the stdout case). However, Ipython should be able to survive such
2910 instances of abuse as gracefully as possible. To simplify the
2914 instances of abuse as gracefully as possible. To simplify the
2911 coding and maintain compatibility with Gary Bishop's Term
2915 coding and maintain compatibility with Gary Bishop's Term
2912 contributions, I've made use of classmethods for this. I think
2916 contributions, I've made use of classmethods for this. I think
2913 this introduces a dependency on python 2.2.
2917 this introduces a dependency on python 2.2.
2914
2918
2915 2004-01-13 Fernando Perez <fperez@colorado.edu>
2919 2004-01-13 Fernando Perez <fperez@colorado.edu>
2916
2920
2917 * IPython/numutils.py (exp_safe): simplified the code a bit and
2921 * IPython/numutils.py (exp_safe): simplified the code a bit and
2918 removed the need for importing the kinds module altogether.
2922 removed the need for importing the kinds module altogether.
2919
2923
2920 2004-01-06 Fernando Perez <fperez@colorado.edu>
2924 2004-01-06 Fernando Perez <fperez@colorado.edu>
2921
2925
2922 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2926 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2923 a magic function instead, after some community feedback. No
2927 a magic function instead, after some community feedback. No
2924 special syntax will exist for it, but its name is deliberately
2928 special syntax will exist for it, but its name is deliberately
2925 very short.
2929 very short.
2926
2930
2927 2003-12-20 Fernando Perez <fperez@colorado.edu>
2931 2003-12-20 Fernando Perez <fperez@colorado.edu>
2928
2932
2929 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2933 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2930 new functionality, to automagically assign the result of a shell
2934 new functionality, to automagically assign the result of a shell
2931 command to a variable. I'll solicit some community feedback on
2935 command to a variable. I'll solicit some community feedback on
2932 this before making it permanent.
2936 this before making it permanent.
2933
2937
2934 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2938 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2935 requested about callables for which inspect couldn't obtain a
2939 requested about callables for which inspect couldn't obtain a
2936 proper argspec. Thanks to a crash report sent by Etienne
2940 proper argspec. Thanks to a crash report sent by Etienne
2937 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2941 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2938
2942
2939 2003-12-09 Fernando Perez <fperez@colorado.edu>
2943 2003-12-09 Fernando Perez <fperez@colorado.edu>
2940
2944
2941 * IPython/genutils.py (page): patch for the pager to work across
2945 * IPython/genutils.py (page): patch for the pager to work across
2942 various versions of Windows. By Gary Bishop.
2946 various versions of Windows. By Gary Bishop.
2943
2947
2944 2003-12-04 Fernando Perez <fperez@colorado.edu>
2948 2003-12-04 Fernando Perez <fperez@colorado.edu>
2945
2949
2946 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2950 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2947 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2951 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2948 While I tested this and it looks ok, there may still be corner
2952 While I tested this and it looks ok, there may still be corner
2949 cases I've missed.
2953 cases I've missed.
2950
2954
2951 2003-12-01 Fernando Perez <fperez@colorado.edu>
2955 2003-12-01 Fernando Perez <fperez@colorado.edu>
2952
2956
2953 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2957 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2954 where a line like 'p,q=1,2' would fail because the automagic
2958 where a line like 'p,q=1,2' would fail because the automagic
2955 system would be triggered for @p.
2959 system would be triggered for @p.
2956
2960
2957 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2961 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2958 cleanups, code unmodified.
2962 cleanups, code unmodified.
2959
2963
2960 * IPython/genutils.py (Term): added a class for IPython to handle
2964 * IPython/genutils.py (Term): added a class for IPython to handle
2961 output. In most cases it will just be a proxy for stdout/err, but
2965 output. In most cases it will just be a proxy for stdout/err, but
2962 having this allows modifications to be made for some platforms,
2966 having this allows modifications to be made for some platforms,
2963 such as handling color escapes under Windows. All of this code
2967 such as handling color escapes under Windows. All of this code
2964 was contributed by Gary Bishop, with minor modifications by me.
2968 was contributed by Gary Bishop, with minor modifications by me.
2965 The actual changes affect many files.
2969 The actual changes affect many files.
2966
2970
2967 2003-11-30 Fernando Perez <fperez@colorado.edu>
2971 2003-11-30 Fernando Perez <fperez@colorado.edu>
2968
2972
2969 * IPython/iplib.py (file_matches): new completion code, courtesy
2973 * IPython/iplib.py (file_matches): new completion code, courtesy
2970 of Jeff Collins. This enables filename completion again under
2974 of Jeff Collins. This enables filename completion again under
2971 python 2.3, which disabled it at the C level.
2975 python 2.3, which disabled it at the C level.
2972
2976
2973 2003-11-11 Fernando Perez <fperez@colorado.edu>
2977 2003-11-11 Fernando Perez <fperez@colorado.edu>
2974
2978
2975 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2979 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2976 for Numeric.array(map(...)), but often convenient.
2980 for Numeric.array(map(...)), but often convenient.
2977
2981
2978 2003-11-05 Fernando Perez <fperez@colorado.edu>
2982 2003-11-05 Fernando Perez <fperez@colorado.edu>
2979
2983
2980 * IPython/numutils.py (frange): Changed a call from int() to
2984 * IPython/numutils.py (frange): Changed a call from int() to
2981 int(round()) to prevent a problem reported with arange() in the
2985 int(round()) to prevent a problem reported with arange() in the
2982 numpy list.
2986 numpy list.
2983
2987
2984 2003-10-06 Fernando Perez <fperez@colorado.edu>
2988 2003-10-06 Fernando Perez <fperez@colorado.edu>
2985
2989
2986 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2990 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2987 prevent crashes if sys lacks an argv attribute (it happens with
2991 prevent crashes if sys lacks an argv attribute (it happens with
2988 embedded interpreters which build a bare-bones sys module).
2992 embedded interpreters which build a bare-bones sys module).
2989 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2993 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2990
2994
2991 2003-09-24 Fernando Perez <fperez@colorado.edu>
2995 2003-09-24 Fernando Perez <fperez@colorado.edu>
2992
2996
2993 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2997 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2994 to protect against poorly written user objects where __getattr__
2998 to protect against poorly written user objects where __getattr__
2995 raises exceptions other than AttributeError. Thanks to a bug
2999 raises exceptions other than AttributeError. Thanks to a bug
2996 report by Oliver Sander <osander-AT-gmx.de>.
3000 report by Oliver Sander <osander-AT-gmx.de>.
2997
3001
2998 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3002 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2999 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3003 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3000
3004
3001 2003-09-09 Fernando Perez <fperez@colorado.edu>
3005 2003-09-09 Fernando Perez <fperez@colorado.edu>
3002
3006
3003 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3007 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3004 unpacking a list whith a callable as first element would
3008 unpacking a list whith a callable as first element would
3005 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3009 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3006 Collins.
3010 Collins.
3007
3011
3008 2003-08-25 *** Released version 0.5.0
3012 2003-08-25 *** Released version 0.5.0
3009
3013
3010 2003-08-22 Fernando Perez <fperez@colorado.edu>
3014 2003-08-22 Fernando Perez <fperez@colorado.edu>
3011
3015
3012 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3016 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3013 improperly defined user exceptions. Thanks to feedback from Mark
3017 improperly defined user exceptions. Thanks to feedback from Mark
3014 Russell <mrussell-AT-verio.net>.
3018 Russell <mrussell-AT-verio.net>.
3015
3019
3016 2003-08-20 Fernando Perez <fperez@colorado.edu>
3020 2003-08-20 Fernando Perez <fperez@colorado.edu>
3017
3021
3018 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3022 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3019 printing so that it would print multi-line string forms starting
3023 printing so that it would print multi-line string forms starting
3020 with a new line. This way the formatting is better respected for
3024 with a new line. This way the formatting is better respected for
3021 objects which work hard to make nice string forms.
3025 objects which work hard to make nice string forms.
3022
3026
3023 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3027 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3024 autocall would overtake data access for objects with both
3028 autocall would overtake data access for objects with both
3025 __getitem__ and __call__.
3029 __getitem__ and __call__.
3026
3030
3027 2003-08-19 *** Released version 0.5.0-rc1
3031 2003-08-19 *** Released version 0.5.0-rc1
3028
3032
3029 2003-08-19 Fernando Perez <fperez@colorado.edu>
3033 2003-08-19 Fernando Perez <fperez@colorado.edu>
3030
3034
3031 * IPython/deep_reload.py (load_tail): single tiny change here
3035 * IPython/deep_reload.py (load_tail): single tiny change here
3032 seems to fix the long-standing bug of dreload() failing to work
3036 seems to fix the long-standing bug of dreload() failing to work
3033 for dotted names. But this module is pretty tricky, so I may have
3037 for dotted names. But this module is pretty tricky, so I may have
3034 missed some subtlety. Needs more testing!.
3038 missed some subtlety. Needs more testing!.
3035
3039
3036 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3040 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3037 exceptions which have badly implemented __str__ methods.
3041 exceptions which have badly implemented __str__ methods.
3038 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3042 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3039 which I've been getting reports about from Python 2.3 users. I
3043 which I've been getting reports about from Python 2.3 users. I
3040 wish I had a simple test case to reproduce the problem, so I could
3044 wish I had a simple test case to reproduce the problem, so I could
3041 either write a cleaner workaround or file a bug report if
3045 either write a cleaner workaround or file a bug report if
3042 necessary.
3046 necessary.
3043
3047
3044 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3048 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3045 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3049 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3046 a bug report by Tjabo Kloppenburg.
3050 a bug report by Tjabo Kloppenburg.
3047
3051
3048 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3052 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3049 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3053 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3050 seems rather unstable. Thanks to a bug report by Tjabo
3054 seems rather unstable. Thanks to a bug report by Tjabo
3051 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3055 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3052
3056
3053 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3057 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3054 this out soon because of the critical fixes in the inner loop for
3058 this out soon because of the critical fixes in the inner loop for
3055 generators.
3059 generators.
3056
3060
3057 * IPython/Magic.py (Magic.getargspec): removed. This (and
3061 * IPython/Magic.py (Magic.getargspec): removed. This (and
3058 _get_def) have been obsoleted by OInspect for a long time, I
3062 _get_def) have been obsoleted by OInspect for a long time, I
3059 hadn't noticed that they were dead code.
3063 hadn't noticed that they were dead code.
3060 (Magic._ofind): restored _ofind functionality for a few literals
3064 (Magic._ofind): restored _ofind functionality for a few literals
3061 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3065 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3062 for things like "hello".capitalize?, since that would require a
3066 for things like "hello".capitalize?, since that would require a
3063 potentially dangerous eval() again.
3067 potentially dangerous eval() again.
3064
3068
3065 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3069 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3066 logic a bit more to clean up the escapes handling and minimize the
3070 logic a bit more to clean up the escapes handling and minimize the
3067 use of _ofind to only necessary cases. The interactive 'feel' of
3071 use of _ofind to only necessary cases. The interactive 'feel' of
3068 IPython should have improved quite a bit with the changes in
3072 IPython should have improved quite a bit with the changes in
3069 _prefilter and _ofind (besides being far safer than before).
3073 _prefilter and _ofind (besides being far safer than before).
3070
3074
3071 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3075 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3072 obscure, never reported). Edit would fail to find the object to
3076 obscure, never reported). Edit would fail to find the object to
3073 edit under some circumstances.
3077 edit under some circumstances.
3074 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3078 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3075 which were causing double-calling of generators. Those eval calls
3079 which were causing double-calling of generators. Those eval calls
3076 were _very_ dangerous, since code with side effects could be
3080 were _very_ dangerous, since code with side effects could be
3077 triggered. As they say, 'eval is evil'... These were the
3081 triggered. As they say, 'eval is evil'... These were the
3078 nastiest evals in IPython. Besides, _ofind is now far simpler,
3082 nastiest evals in IPython. Besides, _ofind is now far simpler,
3079 and it should also be quite a bit faster. Its use of inspect is
3083 and it should also be quite a bit faster. Its use of inspect is
3080 also safer, so perhaps some of the inspect-related crashes I've
3084 also safer, so perhaps some of the inspect-related crashes I've
3081 seen lately with Python 2.3 might be taken care of. That will
3085 seen lately with Python 2.3 might be taken care of. That will
3082 need more testing.
3086 need more testing.
3083
3087
3084 2003-08-17 Fernando Perez <fperez@colorado.edu>
3088 2003-08-17 Fernando Perez <fperez@colorado.edu>
3085
3089
3086 * IPython/iplib.py (InteractiveShell._prefilter): significant
3090 * IPython/iplib.py (InteractiveShell._prefilter): significant
3087 simplifications to the logic for handling user escapes. Faster
3091 simplifications to the logic for handling user escapes. Faster
3088 and simpler code.
3092 and simpler code.
3089
3093
3090 2003-08-14 Fernando Perez <fperez@colorado.edu>
3094 2003-08-14 Fernando Perez <fperez@colorado.edu>
3091
3095
3092 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3096 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3093 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3097 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3094 but it should be quite a bit faster. And the recursive version
3098 but it should be quite a bit faster. And the recursive version
3095 generated O(log N) intermediate storage for all rank>1 arrays,
3099 generated O(log N) intermediate storage for all rank>1 arrays,
3096 even if they were contiguous.
3100 even if they were contiguous.
3097 (l1norm): Added this function.
3101 (l1norm): Added this function.
3098 (norm): Added this function for arbitrary norms (including
3102 (norm): Added this function for arbitrary norms (including
3099 l-infinity). l1 and l2 are still special cases for convenience
3103 l-infinity). l1 and l2 are still special cases for convenience
3100 and speed.
3104 and speed.
3101
3105
3102 2003-08-03 Fernando Perez <fperez@colorado.edu>
3106 2003-08-03 Fernando Perez <fperez@colorado.edu>
3103
3107
3104 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3108 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3105 exceptions, which now raise PendingDeprecationWarnings in Python
3109 exceptions, which now raise PendingDeprecationWarnings in Python
3106 2.3. There were some in Magic and some in Gnuplot2.
3110 2.3. There were some in Magic and some in Gnuplot2.
3107
3111
3108 2003-06-30 Fernando Perez <fperez@colorado.edu>
3112 2003-06-30 Fernando Perez <fperez@colorado.edu>
3109
3113
3110 * IPython/genutils.py (page): modified to call curses only for
3114 * IPython/genutils.py (page): modified to call curses only for
3111 terminals where TERM=='xterm'. After problems under many other
3115 terminals where TERM=='xterm'. After problems under many other
3112 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3116 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3113
3117
3114 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3118 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3115 would be triggered when readline was absent. This was just an old
3119 would be triggered when readline was absent. This was just an old
3116 debugging statement I'd forgotten to take out.
3120 debugging statement I'd forgotten to take out.
3117
3121
3118 2003-06-20 Fernando Perez <fperez@colorado.edu>
3122 2003-06-20 Fernando Perez <fperez@colorado.edu>
3119
3123
3120 * IPython/genutils.py (clock): modified to return only user time
3124 * IPython/genutils.py (clock): modified to return only user time
3121 (not counting system time), after a discussion on scipy. While
3125 (not counting system time), after a discussion on scipy. While
3122 system time may be a useful quantity occasionally, it may much
3126 system time may be a useful quantity occasionally, it may much
3123 more easily be skewed by occasional swapping or other similar
3127 more easily be skewed by occasional swapping or other similar
3124 activity.
3128 activity.
3125
3129
3126 2003-06-05 Fernando Perez <fperez@colorado.edu>
3130 2003-06-05 Fernando Perez <fperez@colorado.edu>
3127
3131
3128 * IPython/numutils.py (identity): new function, for building
3132 * IPython/numutils.py (identity): new function, for building
3129 arbitrary rank Kronecker deltas (mostly backwards compatible with
3133 arbitrary rank Kronecker deltas (mostly backwards compatible with
3130 Numeric.identity)
3134 Numeric.identity)
3131
3135
3132 2003-06-03 Fernando Perez <fperez@colorado.edu>
3136 2003-06-03 Fernando Perez <fperez@colorado.edu>
3133
3137
3134 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3138 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3135 arguments passed to magics with spaces, to allow trailing '\' to
3139 arguments passed to magics with spaces, to allow trailing '\' to
3136 work normally (mainly for Windows users).
3140 work normally (mainly for Windows users).
3137
3141
3138 2003-05-29 Fernando Perez <fperez@colorado.edu>
3142 2003-05-29 Fernando Perez <fperez@colorado.edu>
3139
3143
3140 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3144 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3141 instead of pydoc.help. This fixes a bizarre behavior where
3145 instead of pydoc.help. This fixes a bizarre behavior where
3142 printing '%s' % locals() would trigger the help system. Now
3146 printing '%s' % locals() would trigger the help system. Now
3143 ipython behaves like normal python does.
3147 ipython behaves like normal python does.
3144
3148
3145 Note that if one does 'from pydoc import help', the bizarre
3149 Note that if one does 'from pydoc import help', the bizarre
3146 behavior returns, but this will also happen in normal python, so
3150 behavior returns, but this will also happen in normal python, so
3147 it's not an ipython bug anymore (it has to do with how pydoc.help
3151 it's not an ipython bug anymore (it has to do with how pydoc.help
3148 is implemented).
3152 is implemented).
3149
3153
3150 2003-05-22 Fernando Perez <fperez@colorado.edu>
3154 2003-05-22 Fernando Perez <fperez@colorado.edu>
3151
3155
3152 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3156 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3153 return [] instead of None when nothing matches, also match to end
3157 return [] instead of None when nothing matches, also match to end
3154 of line. Patch by Gary Bishop.
3158 of line. Patch by Gary Bishop.
3155
3159
3156 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3160 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3157 protection as before, for files passed on the command line. This
3161 protection as before, for files passed on the command line. This
3158 prevents the CrashHandler from kicking in if user files call into
3162 prevents the CrashHandler from kicking in if user files call into
3159 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3163 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3160 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3164 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3161
3165
3162 2003-05-20 *** Released version 0.4.0
3166 2003-05-20 *** Released version 0.4.0
3163
3167
3164 2003-05-20 Fernando Perez <fperez@colorado.edu>
3168 2003-05-20 Fernando Perez <fperez@colorado.edu>
3165
3169
3166 * setup.py: added support for manpages. It's a bit hackish b/c of
3170 * setup.py: added support for manpages. It's a bit hackish b/c of
3167 a bug in the way the bdist_rpm distutils target handles gzipped
3171 a bug in the way the bdist_rpm distutils target handles gzipped
3168 manpages, but it works. After a patch by Jack.
3172 manpages, but it works. After a patch by Jack.
3169
3173
3170 2003-05-19 Fernando Perez <fperez@colorado.edu>
3174 2003-05-19 Fernando Perez <fperez@colorado.edu>
3171
3175
3172 * IPython/numutils.py: added a mockup of the kinds module, since
3176 * IPython/numutils.py: added a mockup of the kinds module, since
3173 it was recently removed from Numeric. This way, numutils will
3177 it was recently removed from Numeric. This way, numutils will
3174 work for all users even if they are missing kinds.
3178 work for all users even if they are missing kinds.
3175
3179
3176 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3180 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3177 failure, which can occur with SWIG-wrapped extensions. After a
3181 failure, which can occur with SWIG-wrapped extensions. After a
3178 crash report from Prabhu.
3182 crash report from Prabhu.
3179
3183
3180 2003-05-16 Fernando Perez <fperez@colorado.edu>
3184 2003-05-16 Fernando Perez <fperez@colorado.edu>
3181
3185
3182 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3186 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3183 protect ipython from user code which may call directly
3187 protect ipython from user code which may call directly
3184 sys.excepthook (this looks like an ipython crash to the user, even
3188 sys.excepthook (this looks like an ipython crash to the user, even
3185 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3189 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3186 This is especially important to help users of WxWindows, but may
3190 This is especially important to help users of WxWindows, but may
3187 also be useful in other cases.
3191 also be useful in other cases.
3188
3192
3189 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3193 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3190 an optional tb_offset to be specified, and to preserve exception
3194 an optional tb_offset to be specified, and to preserve exception
3191 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3195 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3192
3196
3193 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3197 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3194
3198
3195 2003-05-15 Fernando Perez <fperez@colorado.edu>
3199 2003-05-15 Fernando Perez <fperez@colorado.edu>
3196
3200
3197 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3201 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3198 installing for a new user under Windows.
3202 installing for a new user under Windows.
3199
3203
3200 2003-05-12 Fernando Perez <fperez@colorado.edu>
3204 2003-05-12 Fernando Perez <fperez@colorado.edu>
3201
3205
3202 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3206 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3203 handler for Emacs comint-based lines. Currently it doesn't do
3207 handler for Emacs comint-based lines. Currently it doesn't do
3204 much (but importantly, it doesn't update the history cache). In
3208 much (but importantly, it doesn't update the history cache). In
3205 the future it may be expanded if Alex needs more functionality
3209 the future it may be expanded if Alex needs more functionality
3206 there.
3210 there.
3207
3211
3208 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3212 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3209 info to crash reports.
3213 info to crash reports.
3210
3214
3211 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3215 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3212 just like Python's -c. Also fixed crash with invalid -color
3216 just like Python's -c. Also fixed crash with invalid -color
3213 option value at startup. Thanks to Will French
3217 option value at startup. Thanks to Will French
3214 <wfrench-AT-bestweb.net> for the bug report.
3218 <wfrench-AT-bestweb.net> for the bug report.
3215
3219
3216 2003-05-09 Fernando Perez <fperez@colorado.edu>
3220 2003-05-09 Fernando Perez <fperez@colorado.edu>
3217
3221
3218 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3222 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3219 to EvalDict (it's a mapping, after all) and simplified its code
3223 to EvalDict (it's a mapping, after all) and simplified its code
3220 quite a bit, after a nice discussion on c.l.py where Gustavo
3224 quite a bit, after a nice discussion on c.l.py where Gustavo
3221 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3225 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3222
3226
3223 2003-04-30 Fernando Perez <fperez@colorado.edu>
3227 2003-04-30 Fernando Perez <fperez@colorado.edu>
3224
3228
3225 * IPython/genutils.py (timings_out): modified it to reduce its
3229 * IPython/genutils.py (timings_out): modified it to reduce its
3226 overhead in the common reps==1 case.
3230 overhead in the common reps==1 case.
3227
3231
3228 2003-04-29 Fernando Perez <fperez@colorado.edu>
3232 2003-04-29 Fernando Perez <fperez@colorado.edu>
3229
3233
3230 * IPython/genutils.py (timings_out): Modified to use the resource
3234 * IPython/genutils.py (timings_out): Modified to use the resource
3231 module, which avoids the wraparound problems of time.clock().
3235 module, which avoids the wraparound problems of time.clock().
3232
3236
3233 2003-04-17 *** Released version 0.2.15pre4
3237 2003-04-17 *** Released version 0.2.15pre4
3234
3238
3235 2003-04-17 Fernando Perez <fperez@colorado.edu>
3239 2003-04-17 Fernando Perez <fperez@colorado.edu>
3236
3240
3237 * setup.py (scriptfiles): Split windows-specific stuff over to a
3241 * setup.py (scriptfiles): Split windows-specific stuff over to a
3238 separate file, in an attempt to have a Windows GUI installer.
3242 separate file, in an attempt to have a Windows GUI installer.
3239 That didn't work, but part of the groundwork is done.
3243 That didn't work, but part of the groundwork is done.
3240
3244
3241 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3245 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3242 indent/unindent with 4 spaces. Particularly useful in combination
3246 indent/unindent with 4 spaces. Particularly useful in combination
3243 with the new auto-indent option.
3247 with the new auto-indent option.
3244
3248
3245 2003-04-16 Fernando Perez <fperez@colorado.edu>
3249 2003-04-16 Fernando Perez <fperez@colorado.edu>
3246
3250
3247 * IPython/Magic.py: various replacements of self.rc for
3251 * IPython/Magic.py: various replacements of self.rc for
3248 self.shell.rc. A lot more remains to be done to fully disentangle
3252 self.shell.rc. A lot more remains to be done to fully disentangle
3249 this class from the main Shell class.
3253 this class from the main Shell class.
3250
3254
3251 * IPython/GnuplotRuntime.py: added checks for mouse support so
3255 * IPython/GnuplotRuntime.py: added checks for mouse support so
3252 that we don't try to enable it if the current gnuplot doesn't
3256 that we don't try to enable it if the current gnuplot doesn't
3253 really support it. Also added checks so that we don't try to
3257 really support it. Also added checks so that we don't try to
3254 enable persist under Windows (where Gnuplot doesn't recognize the
3258 enable persist under Windows (where Gnuplot doesn't recognize the
3255 option).
3259 option).
3256
3260
3257 * IPython/iplib.py (InteractiveShell.interact): Added optional
3261 * IPython/iplib.py (InteractiveShell.interact): Added optional
3258 auto-indenting code, after a patch by King C. Shu
3262 auto-indenting code, after a patch by King C. Shu
3259 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3263 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3260 get along well with pasting indented code. If I ever figure out
3264 get along well with pasting indented code. If I ever figure out
3261 how to make that part go well, it will become on by default.
3265 how to make that part go well, it will become on by default.
3262
3266
3263 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3267 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3264 crash ipython if there was an unmatched '%' in the user's prompt
3268 crash ipython if there was an unmatched '%' in the user's prompt
3265 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3269 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3266
3270
3267 * IPython/iplib.py (InteractiveShell.interact): removed the
3271 * IPython/iplib.py (InteractiveShell.interact): removed the
3268 ability to ask the user whether he wants to crash or not at the
3272 ability to ask the user whether he wants to crash or not at the
3269 'last line' exception handler. Calling functions at that point
3273 'last line' exception handler. Calling functions at that point
3270 changes the stack, and the error reports would have incorrect
3274 changes the stack, and the error reports would have incorrect
3271 tracebacks.
3275 tracebacks.
3272
3276
3273 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3277 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3274 pass through a peger a pretty-printed form of any object. After a
3278 pass through a peger a pretty-printed form of any object. After a
3275 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3279 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3276
3280
3277 2003-04-14 Fernando Perez <fperez@colorado.edu>
3281 2003-04-14 Fernando Perez <fperez@colorado.edu>
3278
3282
3279 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3283 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3280 all files in ~ would be modified at first install (instead of
3284 all files in ~ would be modified at first install (instead of
3281 ~/.ipython). This could be potentially disastrous, as the
3285 ~/.ipython). This could be potentially disastrous, as the
3282 modification (make line-endings native) could damage binary files.
3286 modification (make line-endings native) could damage binary files.
3283
3287
3284 2003-04-10 Fernando Perez <fperez@colorado.edu>
3288 2003-04-10 Fernando Perez <fperez@colorado.edu>
3285
3289
3286 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3290 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3287 handle only lines which are invalid python. This now means that
3291 handle only lines which are invalid python. This now means that
3288 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3292 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3289 for the bug report.
3293 for the bug report.
3290
3294
3291 2003-04-01 Fernando Perez <fperez@colorado.edu>
3295 2003-04-01 Fernando Perez <fperez@colorado.edu>
3292
3296
3293 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3297 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3294 where failing to set sys.last_traceback would crash pdb.pm().
3298 where failing to set sys.last_traceback would crash pdb.pm().
3295 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3299 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3296 report.
3300 report.
3297
3301
3298 2003-03-25 Fernando Perez <fperez@colorado.edu>
3302 2003-03-25 Fernando Perez <fperez@colorado.edu>
3299
3303
3300 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3304 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3301 before printing it (it had a lot of spurious blank lines at the
3305 before printing it (it had a lot of spurious blank lines at the
3302 end).
3306 end).
3303
3307
3304 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3308 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3305 output would be sent 21 times! Obviously people don't use this
3309 output would be sent 21 times! Obviously people don't use this
3306 too often, or I would have heard about it.
3310 too often, or I would have heard about it.
3307
3311
3308 2003-03-24 Fernando Perez <fperez@colorado.edu>
3312 2003-03-24 Fernando Perez <fperez@colorado.edu>
3309
3313
3310 * setup.py (scriptfiles): renamed the data_files parameter from
3314 * setup.py (scriptfiles): renamed the data_files parameter from
3311 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3315 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3312 for the patch.
3316 for the patch.
3313
3317
3314 2003-03-20 Fernando Perez <fperez@colorado.edu>
3318 2003-03-20 Fernando Perez <fperez@colorado.edu>
3315
3319
3316 * IPython/genutils.py (error): added error() and fatal()
3320 * IPython/genutils.py (error): added error() and fatal()
3317 functions.
3321 functions.
3318
3322
3319 2003-03-18 *** Released version 0.2.15pre3
3323 2003-03-18 *** Released version 0.2.15pre3
3320
3324
3321 2003-03-18 Fernando Perez <fperez@colorado.edu>
3325 2003-03-18 Fernando Perez <fperez@colorado.edu>
3322
3326
3323 * setupext/install_data_ext.py
3327 * setupext/install_data_ext.py
3324 (install_data_ext.initialize_options): Class contributed by Jack
3328 (install_data_ext.initialize_options): Class contributed by Jack
3325 Moffit for fixing the old distutils hack. He is sending this to
3329 Moffit for fixing the old distutils hack. He is sending this to
3326 the distutils folks so in the future we may not need it as a
3330 the distutils folks so in the future we may not need it as a
3327 private fix.
3331 private fix.
3328
3332
3329 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3333 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3330 changes for Debian packaging. See his patch for full details.
3334 changes for Debian packaging. See his patch for full details.
3331 The old distutils hack of making the ipythonrc* files carry a
3335 The old distutils hack of making the ipythonrc* files carry a
3332 bogus .py extension is gone, at last. Examples were moved to a
3336 bogus .py extension is gone, at last. Examples were moved to a
3333 separate subdir under doc/, and the separate executable scripts
3337 separate subdir under doc/, and the separate executable scripts
3334 now live in their own directory. Overall a great cleanup. The
3338 now live in their own directory. Overall a great cleanup. The
3335 manual was updated to use the new files, and setup.py has been
3339 manual was updated to use the new files, and setup.py has been
3336 fixed for this setup.
3340 fixed for this setup.
3337
3341
3338 * IPython/PyColorize.py (Parser.usage): made non-executable and
3342 * IPython/PyColorize.py (Parser.usage): made non-executable and
3339 created a pycolor wrapper around it to be included as a script.
3343 created a pycolor wrapper around it to be included as a script.
3340
3344
3341 2003-03-12 *** Released version 0.2.15pre2
3345 2003-03-12 *** Released version 0.2.15pre2
3342
3346
3343 2003-03-12 Fernando Perez <fperez@colorado.edu>
3347 2003-03-12 Fernando Perez <fperez@colorado.edu>
3344
3348
3345 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3349 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3346 long-standing problem with garbage characters in some terminals.
3350 long-standing problem with garbage characters in some terminals.
3347 The issue was really that the \001 and \002 escapes must _only_ be
3351 The issue was really that the \001 and \002 escapes must _only_ be
3348 passed to input prompts (which call readline), but _never_ to
3352 passed to input prompts (which call readline), but _never_ to
3349 normal text to be printed on screen. I changed ColorANSI to have
3353 normal text to be printed on screen. I changed ColorANSI to have
3350 two classes: TermColors and InputTermColors, each with the
3354 two classes: TermColors and InputTermColors, each with the
3351 appropriate escapes for input prompts or normal text. The code in
3355 appropriate escapes for input prompts or normal text. The code in
3352 Prompts.py got slightly more complicated, but this very old and
3356 Prompts.py got slightly more complicated, but this very old and
3353 annoying bug is finally fixed.
3357 annoying bug is finally fixed.
3354
3358
3355 All the credit for nailing down the real origin of this problem
3359 All the credit for nailing down the real origin of this problem
3356 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3360 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3357 *Many* thanks to him for spending quite a bit of effort on this.
3361 *Many* thanks to him for spending quite a bit of effort on this.
3358
3362
3359 2003-03-05 *** Released version 0.2.15pre1
3363 2003-03-05 *** Released version 0.2.15pre1
3360
3364
3361 2003-03-03 Fernando Perez <fperez@colorado.edu>
3365 2003-03-03 Fernando Perez <fperez@colorado.edu>
3362
3366
3363 * IPython/FakeModule.py: Moved the former _FakeModule to a
3367 * IPython/FakeModule.py: Moved the former _FakeModule to a
3364 separate file, because it's also needed by Magic (to fix a similar
3368 separate file, because it's also needed by Magic (to fix a similar
3365 pickle-related issue in @run).
3369 pickle-related issue in @run).
3366
3370
3367 2003-03-02 Fernando Perez <fperez@colorado.edu>
3371 2003-03-02 Fernando Perez <fperez@colorado.edu>
3368
3372
3369 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3373 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3370 the autocall option at runtime.
3374 the autocall option at runtime.
3371 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3375 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3372 across Magic.py to start separating Magic from InteractiveShell.
3376 across Magic.py to start separating Magic from InteractiveShell.
3373 (Magic._ofind): Fixed to return proper namespace for dotted
3377 (Magic._ofind): Fixed to return proper namespace for dotted
3374 names. Before, a dotted name would always return 'not currently
3378 names. Before, a dotted name would always return 'not currently
3375 defined', because it would find the 'parent'. s.x would be found,
3379 defined', because it would find the 'parent'. s.x would be found,
3376 but since 'x' isn't defined by itself, it would get confused.
3380 but since 'x' isn't defined by itself, it would get confused.
3377 (Magic.magic_run): Fixed pickling problems reported by Ralf
3381 (Magic.magic_run): Fixed pickling problems reported by Ralf
3378 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3382 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3379 that I'd used when Mike Heeter reported similar issues at the
3383 that I'd used when Mike Heeter reported similar issues at the
3380 top-level, but now for @run. It boils down to injecting the
3384 top-level, but now for @run. It boils down to injecting the
3381 namespace where code is being executed with something that looks
3385 namespace where code is being executed with something that looks
3382 enough like a module to fool pickle.dump(). Since a pickle stores
3386 enough like a module to fool pickle.dump(). Since a pickle stores
3383 a named reference to the importing module, we need this for
3387 a named reference to the importing module, we need this for
3384 pickles to save something sensible.
3388 pickles to save something sensible.
3385
3389
3386 * IPython/ipmaker.py (make_IPython): added an autocall option.
3390 * IPython/ipmaker.py (make_IPython): added an autocall option.
3387
3391
3388 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3392 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3389 the auto-eval code. Now autocalling is an option, and the code is
3393 the auto-eval code. Now autocalling is an option, and the code is
3390 also vastly safer. There is no more eval() involved at all.
3394 also vastly safer. There is no more eval() involved at all.
3391
3395
3392 2003-03-01 Fernando Perez <fperez@colorado.edu>
3396 2003-03-01 Fernando Perez <fperez@colorado.edu>
3393
3397
3394 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3398 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3395 dict with named keys instead of a tuple.
3399 dict with named keys instead of a tuple.
3396
3400
3397 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3401 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3398
3402
3399 * setup.py (make_shortcut): Fixed message about directories
3403 * setup.py (make_shortcut): Fixed message about directories
3400 created during Windows installation (the directories were ok, just
3404 created during Windows installation (the directories were ok, just
3401 the printed message was misleading). Thanks to Chris Liechti
3405 the printed message was misleading). Thanks to Chris Liechti
3402 <cliechti-AT-gmx.net> for the heads up.
3406 <cliechti-AT-gmx.net> for the heads up.
3403
3407
3404 2003-02-21 Fernando Perez <fperez@colorado.edu>
3408 2003-02-21 Fernando Perez <fperez@colorado.edu>
3405
3409
3406 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3410 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3407 of ValueError exception when checking for auto-execution. This
3411 of ValueError exception when checking for auto-execution. This
3408 one is raised by things like Numeric arrays arr.flat when the
3412 one is raised by things like Numeric arrays arr.flat when the
3409 array is non-contiguous.
3413 array is non-contiguous.
3410
3414
3411 2003-01-31 Fernando Perez <fperez@colorado.edu>
3415 2003-01-31 Fernando Perez <fperez@colorado.edu>
3412
3416
3413 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3417 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3414 not return any value at all (even though the command would get
3418 not return any value at all (even though the command would get
3415 executed).
3419 executed).
3416 (xsys): Flush stdout right after printing the command to ensure
3420 (xsys): Flush stdout right after printing the command to ensure
3417 proper ordering of commands and command output in the total
3421 proper ordering of commands and command output in the total
3418 output.
3422 output.
3419 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3423 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3420 system/getoutput as defaults. The old ones are kept for
3424 system/getoutput as defaults. The old ones are kept for
3421 compatibility reasons, so no code which uses this library needs
3425 compatibility reasons, so no code which uses this library needs
3422 changing.
3426 changing.
3423
3427
3424 2003-01-27 *** Released version 0.2.14
3428 2003-01-27 *** Released version 0.2.14
3425
3429
3426 2003-01-25 Fernando Perez <fperez@colorado.edu>
3430 2003-01-25 Fernando Perez <fperez@colorado.edu>
3427
3431
3428 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3432 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3429 functions defined in previous edit sessions could not be re-edited
3433 functions defined in previous edit sessions could not be re-edited
3430 (because the temp files were immediately removed). Now temp files
3434 (because the temp files were immediately removed). Now temp files
3431 are removed only at IPython's exit.
3435 are removed only at IPython's exit.
3432 (Magic.magic_run): Improved @run to perform shell-like expansions
3436 (Magic.magic_run): Improved @run to perform shell-like expansions
3433 on its arguments (~users and $VARS). With this, @run becomes more
3437 on its arguments (~users and $VARS). With this, @run becomes more
3434 like a normal command-line.
3438 like a normal command-line.
3435
3439
3436 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3440 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3437 bugs related to embedding and cleaned up that code. A fairly
3441 bugs related to embedding and cleaned up that code. A fairly
3438 important one was the impossibility to access the global namespace
3442 important one was the impossibility to access the global namespace
3439 through the embedded IPython (only local variables were visible).
3443 through the embedded IPython (only local variables were visible).
3440
3444
3441 2003-01-14 Fernando Perez <fperez@colorado.edu>
3445 2003-01-14 Fernando Perez <fperez@colorado.edu>
3442
3446
3443 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3447 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3444 auto-calling to be a bit more conservative. Now it doesn't get
3448 auto-calling to be a bit more conservative. Now it doesn't get
3445 triggered if any of '!=()<>' are in the rest of the input line, to
3449 triggered if any of '!=()<>' are in the rest of the input line, to
3446 allow comparing callables. Thanks to Alex for the heads up.
3450 allow comparing callables. Thanks to Alex for the heads up.
3447
3451
3448 2003-01-07 Fernando Perez <fperez@colorado.edu>
3452 2003-01-07 Fernando Perez <fperez@colorado.edu>
3449
3453
3450 * IPython/genutils.py (page): fixed estimation of the number of
3454 * IPython/genutils.py (page): fixed estimation of the number of
3451 lines in a string to be paged to simply count newlines. This
3455 lines in a string to be paged to simply count newlines. This
3452 prevents over-guessing due to embedded escape sequences. A better
3456 prevents over-guessing due to embedded escape sequences. A better
3453 long-term solution would involve stripping out the control chars
3457 long-term solution would involve stripping out the control chars
3454 for the count, but it's potentially so expensive I just don't
3458 for the count, but it's potentially so expensive I just don't
3455 think it's worth doing.
3459 think it's worth doing.
3456
3460
3457 2002-12-19 *** Released version 0.2.14pre50
3461 2002-12-19 *** Released version 0.2.14pre50
3458
3462
3459 2002-12-19 Fernando Perez <fperez@colorado.edu>
3463 2002-12-19 Fernando Perez <fperez@colorado.edu>
3460
3464
3461 * tools/release (version): Changed release scripts to inform
3465 * tools/release (version): Changed release scripts to inform
3462 Andrea and build a NEWS file with a list of recent changes.
3466 Andrea and build a NEWS file with a list of recent changes.
3463
3467
3464 * IPython/ColorANSI.py (__all__): changed terminal detection
3468 * IPython/ColorANSI.py (__all__): changed terminal detection
3465 code. Seems to work better for xterms without breaking
3469 code. Seems to work better for xterms without breaking
3466 konsole. Will need more testing to determine if WinXP and Mac OSX
3470 konsole. Will need more testing to determine if WinXP and Mac OSX
3467 also work ok.
3471 also work ok.
3468
3472
3469 2002-12-18 *** Released version 0.2.14pre49
3473 2002-12-18 *** Released version 0.2.14pre49
3470
3474
3471 2002-12-18 Fernando Perez <fperez@colorado.edu>
3475 2002-12-18 Fernando Perez <fperez@colorado.edu>
3472
3476
3473 * Docs: added new info about Mac OSX, from Andrea.
3477 * Docs: added new info about Mac OSX, from Andrea.
3474
3478
3475 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3479 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3476 allow direct plotting of python strings whose format is the same
3480 allow direct plotting of python strings whose format is the same
3477 of gnuplot data files.
3481 of gnuplot data files.
3478
3482
3479 2002-12-16 Fernando Perez <fperez@colorado.edu>
3483 2002-12-16 Fernando Perez <fperez@colorado.edu>
3480
3484
3481 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3485 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3482 value of exit question to be acknowledged.
3486 value of exit question to be acknowledged.
3483
3487
3484 2002-12-03 Fernando Perez <fperez@colorado.edu>
3488 2002-12-03 Fernando Perez <fperez@colorado.edu>
3485
3489
3486 * IPython/ipmaker.py: removed generators, which had been added
3490 * IPython/ipmaker.py: removed generators, which had been added
3487 by mistake in an earlier debugging run. This was causing trouble
3491 by mistake in an earlier debugging run. This was causing trouble
3488 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3492 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3489 for pointing this out.
3493 for pointing this out.
3490
3494
3491 2002-11-17 Fernando Perez <fperez@colorado.edu>
3495 2002-11-17 Fernando Perez <fperez@colorado.edu>
3492
3496
3493 * Manual: updated the Gnuplot section.
3497 * Manual: updated the Gnuplot section.
3494
3498
3495 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3499 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3496 a much better split of what goes in Runtime and what goes in
3500 a much better split of what goes in Runtime and what goes in
3497 Interactive.
3501 Interactive.
3498
3502
3499 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3503 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3500 being imported from iplib.
3504 being imported from iplib.
3501
3505
3502 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3506 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3503 for command-passing. Now the global Gnuplot instance is called
3507 for command-passing. Now the global Gnuplot instance is called
3504 'gp' instead of 'g', which was really a far too fragile and
3508 'gp' instead of 'g', which was really a far too fragile and
3505 common name.
3509 common name.
3506
3510
3507 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3511 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3508 bounding boxes generated by Gnuplot for square plots.
3512 bounding boxes generated by Gnuplot for square plots.
3509
3513
3510 * IPython/genutils.py (popkey): new function added. I should
3514 * IPython/genutils.py (popkey): new function added. I should
3511 suggest this on c.l.py as a dict method, it seems useful.
3515 suggest this on c.l.py as a dict method, it seems useful.
3512
3516
3513 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3517 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3514 to transparently handle PostScript generation. MUCH better than
3518 to transparently handle PostScript generation. MUCH better than
3515 the previous plot_eps/replot_eps (which I removed now). The code
3519 the previous plot_eps/replot_eps (which I removed now). The code
3516 is also fairly clean and well documented now (including
3520 is also fairly clean and well documented now (including
3517 docstrings).
3521 docstrings).
3518
3522
3519 2002-11-13 Fernando Perez <fperez@colorado.edu>
3523 2002-11-13 Fernando Perez <fperez@colorado.edu>
3520
3524
3521 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3525 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3522 (inconsistent with options).
3526 (inconsistent with options).
3523
3527
3524 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3528 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3525 manually disabled, I don't know why. Fixed it.
3529 manually disabled, I don't know why. Fixed it.
3526 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3530 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3527 eps output.
3531 eps output.
3528
3532
3529 2002-11-12 Fernando Perez <fperez@colorado.edu>
3533 2002-11-12 Fernando Perez <fperez@colorado.edu>
3530
3534
3531 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3535 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3532 don't propagate up to caller. Fixes crash reported by François
3536 don't propagate up to caller. Fixes crash reported by François
3533 Pinard.
3537 Pinard.
3534
3538
3535 2002-11-09 Fernando Perez <fperez@colorado.edu>
3539 2002-11-09 Fernando Perez <fperez@colorado.edu>
3536
3540
3537 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3541 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3538 history file for new users.
3542 history file for new users.
3539 (make_IPython): fixed bug where initial install would leave the
3543 (make_IPython): fixed bug where initial install would leave the
3540 user running in the .ipython dir.
3544 user running in the .ipython dir.
3541 (make_IPython): fixed bug where config dir .ipython would be
3545 (make_IPython): fixed bug where config dir .ipython would be
3542 created regardless of the given -ipythondir option. Thanks to Cory
3546 created regardless of the given -ipythondir option. Thanks to Cory
3543 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3547 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3544
3548
3545 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3549 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3546 type confirmations. Will need to use it in all of IPython's code
3550 type confirmations. Will need to use it in all of IPython's code
3547 consistently.
3551 consistently.
3548
3552
3549 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3553 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3550 context to print 31 lines instead of the default 5. This will make
3554 context to print 31 lines instead of the default 5. This will make
3551 the crash reports extremely detailed in case the problem is in
3555 the crash reports extremely detailed in case the problem is in
3552 libraries I don't have access to.
3556 libraries I don't have access to.
3553
3557
3554 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3558 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3555 line of defense' code to still crash, but giving users fair
3559 line of defense' code to still crash, but giving users fair
3556 warning. I don't want internal errors to go unreported: if there's
3560 warning. I don't want internal errors to go unreported: if there's
3557 an internal problem, IPython should crash and generate a full
3561 an internal problem, IPython should crash and generate a full
3558 report.
3562 report.
3559
3563
3560 2002-11-08 Fernando Perez <fperez@colorado.edu>
3564 2002-11-08 Fernando Perez <fperez@colorado.edu>
3561
3565
3562 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3566 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3563 otherwise uncaught exceptions which can appear if people set
3567 otherwise uncaught exceptions which can appear if people set
3564 sys.stdout to something badly broken. Thanks to a crash report
3568 sys.stdout to something badly broken. Thanks to a crash report
3565 from henni-AT-mail.brainbot.com.
3569 from henni-AT-mail.brainbot.com.
3566
3570
3567 2002-11-04 Fernando Perez <fperez@colorado.edu>
3571 2002-11-04 Fernando Perez <fperez@colorado.edu>
3568
3572
3569 * IPython/iplib.py (InteractiveShell.interact): added
3573 * IPython/iplib.py (InteractiveShell.interact): added
3570 __IPYTHON__active to the builtins. It's a flag which goes on when
3574 __IPYTHON__active to the builtins. It's a flag which goes on when
3571 the interaction starts and goes off again when it stops. This
3575 the interaction starts and goes off again when it stops. This
3572 allows embedding code to detect being inside IPython. Before this
3576 allows embedding code to detect being inside IPython. Before this
3573 was done via __IPYTHON__, but that only shows that an IPython
3577 was done via __IPYTHON__, but that only shows that an IPython
3574 instance has been created.
3578 instance has been created.
3575
3579
3576 * IPython/Magic.py (Magic.magic_env): I realized that in a
3580 * IPython/Magic.py (Magic.magic_env): I realized that in a
3577 UserDict, instance.data holds the data as a normal dict. So I
3581 UserDict, instance.data holds the data as a normal dict. So I
3578 modified @env to return os.environ.data instead of rebuilding a
3582 modified @env to return os.environ.data instead of rebuilding a
3579 dict by hand.
3583 dict by hand.
3580
3584
3581 2002-11-02 Fernando Perez <fperez@colorado.edu>
3585 2002-11-02 Fernando Perez <fperez@colorado.edu>
3582
3586
3583 * IPython/genutils.py (warn): changed so that level 1 prints no
3587 * IPython/genutils.py (warn): changed so that level 1 prints no
3584 header. Level 2 is now the default (with 'WARNING' header, as
3588 header. Level 2 is now the default (with 'WARNING' header, as
3585 before). I think I tracked all places where changes were needed in
3589 before). I think I tracked all places where changes were needed in
3586 IPython, but outside code using the old level numbering may have
3590 IPython, but outside code using the old level numbering may have
3587 broken.
3591 broken.
3588
3592
3589 * IPython/iplib.py (InteractiveShell.runcode): added this to
3593 * IPython/iplib.py (InteractiveShell.runcode): added this to
3590 handle the tracebacks in SystemExit traps correctly. The previous
3594 handle the tracebacks in SystemExit traps correctly. The previous
3591 code (through interact) was printing more of the stack than
3595 code (through interact) was printing more of the stack than
3592 necessary, showing IPython internal code to the user.
3596 necessary, showing IPython internal code to the user.
3593
3597
3594 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3598 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3595 default. Now that the default at the confirmation prompt is yes,
3599 default. Now that the default at the confirmation prompt is yes,
3596 it's not so intrusive. François' argument that ipython sessions
3600 it's not so intrusive. François' argument that ipython sessions
3597 tend to be complex enough not to lose them from an accidental C-d,
3601 tend to be complex enough not to lose them from an accidental C-d,
3598 is a valid one.
3602 is a valid one.
3599
3603
3600 * IPython/iplib.py (InteractiveShell.interact): added a
3604 * IPython/iplib.py (InteractiveShell.interact): added a
3601 showtraceback() call to the SystemExit trap, and modified the exit
3605 showtraceback() call to the SystemExit trap, and modified the exit
3602 confirmation to have yes as the default.
3606 confirmation to have yes as the default.
3603
3607
3604 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3608 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3605 this file. It's been gone from the code for a long time, this was
3609 this file. It's been gone from the code for a long time, this was
3606 simply leftover junk.
3610 simply leftover junk.
3607
3611
3608 2002-11-01 Fernando Perez <fperez@colorado.edu>
3612 2002-11-01 Fernando Perez <fperez@colorado.edu>
3609
3613
3610 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3614 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3611 added. If set, IPython now traps EOF and asks for
3615 added. If set, IPython now traps EOF and asks for
3612 confirmation. After a request by François Pinard.
3616 confirmation. After a request by François Pinard.
3613
3617
3614 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3618 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3615 of @abort, and with a new (better) mechanism for handling the
3619 of @abort, and with a new (better) mechanism for handling the
3616 exceptions.
3620 exceptions.
3617
3621
3618 2002-10-27 Fernando Perez <fperez@colorado.edu>
3622 2002-10-27 Fernando Perez <fperez@colorado.edu>
3619
3623
3620 * IPython/usage.py (__doc__): updated the --help information and
3624 * IPython/usage.py (__doc__): updated the --help information and
3621 the ipythonrc file to indicate that -log generates
3625 the ipythonrc file to indicate that -log generates
3622 ./ipython.log. Also fixed the corresponding info in @logstart.
3626 ./ipython.log. Also fixed the corresponding info in @logstart.
3623 This and several other fixes in the manuals thanks to reports by
3627 This and several other fixes in the manuals thanks to reports by
3624 François Pinard <pinard-AT-iro.umontreal.ca>.
3628 François Pinard <pinard-AT-iro.umontreal.ca>.
3625
3629
3626 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3630 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3627 refer to @logstart (instead of @log, which doesn't exist).
3631 refer to @logstart (instead of @log, which doesn't exist).
3628
3632
3629 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3633 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3630 AttributeError crash. Thanks to Christopher Armstrong
3634 AttributeError crash. Thanks to Christopher Armstrong
3631 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3635 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3632 introduced recently (in 0.2.14pre37) with the fix to the eval
3636 introduced recently (in 0.2.14pre37) with the fix to the eval
3633 problem mentioned below.
3637 problem mentioned below.
3634
3638
3635 2002-10-17 Fernando Perez <fperez@colorado.edu>
3639 2002-10-17 Fernando Perez <fperez@colorado.edu>
3636
3640
3637 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3641 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3638 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3642 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3639
3643
3640 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3644 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3641 this function to fix a problem reported by Alex Schmolck. He saw
3645 this function to fix a problem reported by Alex Schmolck. He saw
3642 it with list comprehensions and generators, which were getting
3646 it with list comprehensions and generators, which were getting
3643 called twice. The real problem was an 'eval' call in testing for
3647 called twice. The real problem was an 'eval' call in testing for
3644 automagic which was evaluating the input line silently.
3648 automagic which was evaluating the input line silently.
3645
3649
3646 This is a potentially very nasty bug, if the input has side
3650 This is a potentially very nasty bug, if the input has side
3647 effects which must not be repeated. The code is much cleaner now,
3651 effects which must not be repeated. The code is much cleaner now,
3648 without any blanket 'except' left and with a regexp test for
3652 without any blanket 'except' left and with a regexp test for
3649 actual function names.
3653 actual function names.
3650
3654
3651 But an eval remains, which I'm not fully comfortable with. I just
3655 But an eval remains, which I'm not fully comfortable with. I just
3652 don't know how to find out if an expression could be a callable in
3656 don't know how to find out if an expression could be a callable in
3653 the user's namespace without doing an eval on the string. However
3657 the user's namespace without doing an eval on the string. However
3654 that string is now much more strictly checked so that no code
3658 that string is now much more strictly checked so that no code
3655 slips by, so the eval should only happen for things that can
3659 slips by, so the eval should only happen for things that can
3656 really be only function/method names.
3660 really be only function/method names.
3657
3661
3658 2002-10-15 Fernando Perez <fperez@colorado.edu>
3662 2002-10-15 Fernando Perez <fperez@colorado.edu>
3659
3663
3660 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3664 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3661 OSX information to main manual, removed README_Mac_OSX file from
3665 OSX information to main manual, removed README_Mac_OSX file from
3662 distribution. Also updated credits for recent additions.
3666 distribution. Also updated credits for recent additions.
3663
3667
3664 2002-10-10 Fernando Perez <fperez@colorado.edu>
3668 2002-10-10 Fernando Perez <fperez@colorado.edu>
3665
3669
3666 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3670 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3667 terminal-related issues. Many thanks to Andrea Riciputi
3671 terminal-related issues. Many thanks to Andrea Riciputi
3668 <andrea.riciputi-AT-libero.it> for writing it.
3672 <andrea.riciputi-AT-libero.it> for writing it.
3669
3673
3670 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3674 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3671 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3675 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3672
3676
3673 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3677 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3674 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3678 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3675 <syver-en-AT-online.no> who both submitted patches for this problem.
3679 <syver-en-AT-online.no> who both submitted patches for this problem.
3676
3680
3677 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3681 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3678 global embedding to make sure that things don't overwrite user
3682 global embedding to make sure that things don't overwrite user
3679 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3683 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3680
3684
3681 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3685 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3682 compatibility. Thanks to Hayden Callow
3686 compatibility. Thanks to Hayden Callow
3683 <h.callow-AT-elec.canterbury.ac.nz>
3687 <h.callow-AT-elec.canterbury.ac.nz>
3684
3688
3685 2002-10-04 Fernando Perez <fperez@colorado.edu>
3689 2002-10-04 Fernando Perez <fperez@colorado.edu>
3686
3690
3687 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3691 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3688 Gnuplot.File objects.
3692 Gnuplot.File objects.
3689
3693
3690 2002-07-23 Fernando Perez <fperez@colorado.edu>
3694 2002-07-23 Fernando Perez <fperez@colorado.edu>
3691
3695
3692 * IPython/genutils.py (timing): Added timings() and timing() for
3696 * IPython/genutils.py (timing): Added timings() and timing() for
3693 quick access to the most commonly needed data, the execution
3697 quick access to the most commonly needed data, the execution
3694 times. Old timing() renamed to timings_out().
3698 times. Old timing() renamed to timings_out().
3695
3699
3696 2002-07-18 Fernando Perez <fperez@colorado.edu>
3700 2002-07-18 Fernando Perez <fperez@colorado.edu>
3697
3701
3698 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3702 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3699 bug with nested instances disrupting the parent's tab completion.
3703 bug with nested instances disrupting the parent's tab completion.
3700
3704
3701 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3705 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3702 all_completions code to begin the emacs integration.
3706 all_completions code to begin the emacs integration.
3703
3707
3704 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3708 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3705 argument to allow titling individual arrays when plotting.
3709 argument to allow titling individual arrays when plotting.
3706
3710
3707 2002-07-15 Fernando Perez <fperez@colorado.edu>
3711 2002-07-15 Fernando Perez <fperez@colorado.edu>
3708
3712
3709 * setup.py (make_shortcut): changed to retrieve the value of
3713 * setup.py (make_shortcut): changed to retrieve the value of
3710 'Program Files' directory from the registry (this value changes in
3714 'Program Files' directory from the registry (this value changes in
3711 non-english versions of Windows). Thanks to Thomas Fanslau
3715 non-english versions of Windows). Thanks to Thomas Fanslau
3712 <tfanslau-AT-gmx.de> for the report.
3716 <tfanslau-AT-gmx.de> for the report.
3713
3717
3714 2002-07-10 Fernando Perez <fperez@colorado.edu>
3718 2002-07-10 Fernando Perez <fperez@colorado.edu>
3715
3719
3716 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3720 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3717 a bug in pdb, which crashes if a line with only whitespace is
3721 a bug in pdb, which crashes if a line with only whitespace is
3718 entered. Bug report submitted to sourceforge.
3722 entered. Bug report submitted to sourceforge.
3719
3723
3720 2002-07-09 Fernando Perez <fperez@colorado.edu>
3724 2002-07-09 Fernando Perez <fperez@colorado.edu>
3721
3725
3722 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3726 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3723 reporting exceptions (it's a bug in inspect.py, I just set a
3727 reporting exceptions (it's a bug in inspect.py, I just set a
3724 workaround).
3728 workaround).
3725
3729
3726 2002-07-08 Fernando Perez <fperez@colorado.edu>
3730 2002-07-08 Fernando Perez <fperez@colorado.edu>
3727
3731
3728 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3732 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3729 __IPYTHON__ in __builtins__ to show up in user_ns.
3733 __IPYTHON__ in __builtins__ to show up in user_ns.
3730
3734
3731 2002-07-03 Fernando Perez <fperez@colorado.edu>
3735 2002-07-03 Fernando Perez <fperez@colorado.edu>
3732
3736
3733 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3737 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3734 name from @gp_set_instance to @gp_set_default.
3738 name from @gp_set_instance to @gp_set_default.
3735
3739
3736 * IPython/ipmaker.py (make_IPython): default editor value set to
3740 * IPython/ipmaker.py (make_IPython): default editor value set to
3737 '0' (a string), to match the rc file. Otherwise will crash when
3741 '0' (a string), to match the rc file. Otherwise will crash when
3738 .strip() is called on it.
3742 .strip() is called on it.
3739
3743
3740
3744
3741 2002-06-28 Fernando Perez <fperez@colorado.edu>
3745 2002-06-28 Fernando Perez <fperez@colorado.edu>
3742
3746
3743 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3747 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3744 of files in current directory when a file is executed via
3748 of files in current directory when a file is executed via
3745 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3749 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3746
3750
3747 * setup.py (manfiles): fix for rpm builds, submitted by RA
3751 * setup.py (manfiles): fix for rpm builds, submitted by RA
3748 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3752 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3749
3753
3750 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3754 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3751 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3755 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3752 string!). A. Schmolck caught this one.
3756 string!). A. Schmolck caught this one.
3753
3757
3754 2002-06-27 Fernando Perez <fperez@colorado.edu>
3758 2002-06-27 Fernando Perez <fperez@colorado.edu>
3755
3759
3756 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3760 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3757 defined files at the cmd line. __name__ wasn't being set to
3761 defined files at the cmd line. __name__ wasn't being set to
3758 __main__.
3762 __main__.
3759
3763
3760 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3764 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3761 regular lists and tuples besides Numeric arrays.
3765 regular lists and tuples besides Numeric arrays.
3762
3766
3763 * IPython/Prompts.py (CachedOutput.__call__): Added output
3767 * IPython/Prompts.py (CachedOutput.__call__): Added output
3764 supression for input ending with ';'. Similar to Mathematica and
3768 supression for input ending with ';'. Similar to Mathematica and
3765 Matlab. The _* vars and Out[] list are still updated, just like
3769 Matlab. The _* vars and Out[] list are still updated, just like
3766 Mathematica behaves.
3770 Mathematica behaves.
3767
3771
3768 2002-06-25 Fernando Perez <fperez@colorado.edu>
3772 2002-06-25 Fernando Perez <fperez@colorado.edu>
3769
3773
3770 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3774 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3771 .ini extensions for profiels under Windows.
3775 .ini extensions for profiels under Windows.
3772
3776
3773 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3777 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3774 string form. Fix contributed by Alexander Schmolck
3778 string form. Fix contributed by Alexander Schmolck
3775 <a.schmolck-AT-gmx.net>
3779 <a.schmolck-AT-gmx.net>
3776
3780
3777 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3781 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3778 pre-configured Gnuplot instance.
3782 pre-configured Gnuplot instance.
3779
3783
3780 2002-06-21 Fernando Perez <fperez@colorado.edu>
3784 2002-06-21 Fernando Perez <fperez@colorado.edu>
3781
3785
3782 * IPython/numutils.py (exp_safe): new function, works around the
3786 * IPython/numutils.py (exp_safe): new function, works around the
3783 underflow problems in Numeric.
3787 underflow problems in Numeric.
3784 (log2): New fn. Safe log in base 2: returns exact integer answer
3788 (log2): New fn. Safe log in base 2: returns exact integer answer
3785 for exact integer powers of 2.
3789 for exact integer powers of 2.
3786
3790
3787 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3791 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3788 properly.
3792 properly.
3789
3793
3790 2002-06-20 Fernando Perez <fperez@colorado.edu>
3794 2002-06-20 Fernando Perez <fperez@colorado.edu>
3791
3795
3792 * IPython/genutils.py (timing): new function like
3796 * IPython/genutils.py (timing): new function like
3793 Mathematica's. Similar to time_test, but returns more info.
3797 Mathematica's. Similar to time_test, but returns more info.
3794
3798
3795 2002-06-18 Fernando Perez <fperez@colorado.edu>
3799 2002-06-18 Fernando Perez <fperez@colorado.edu>
3796
3800
3797 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3801 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3798 according to Mike Heeter's suggestions.
3802 according to Mike Heeter's suggestions.
3799
3803
3800 2002-06-16 Fernando Perez <fperez@colorado.edu>
3804 2002-06-16 Fernando Perez <fperez@colorado.edu>
3801
3805
3802 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3806 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3803 system. GnuplotMagic is gone as a user-directory option. New files
3807 system. GnuplotMagic is gone as a user-directory option. New files
3804 make it easier to use all the gnuplot stuff both from external
3808 make it easier to use all the gnuplot stuff both from external
3805 programs as well as from IPython. Had to rewrite part of
3809 programs as well as from IPython. Had to rewrite part of
3806 hardcopy() b/c of a strange bug: often the ps files simply don't
3810 hardcopy() b/c of a strange bug: often the ps files simply don't
3807 get created, and require a repeat of the command (often several
3811 get created, and require a repeat of the command (often several
3808 times).
3812 times).
3809
3813
3810 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3814 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3811 resolve output channel at call time, so that if sys.stderr has
3815 resolve output channel at call time, so that if sys.stderr has
3812 been redirected by user this gets honored.
3816 been redirected by user this gets honored.
3813
3817
3814 2002-06-13 Fernando Perez <fperez@colorado.edu>
3818 2002-06-13 Fernando Perez <fperez@colorado.edu>
3815
3819
3816 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3820 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3817 IPShell. Kept a copy with the old names to avoid breaking people's
3821 IPShell. Kept a copy with the old names to avoid breaking people's
3818 embedded code.
3822 embedded code.
3819
3823
3820 * IPython/ipython: simplified it to the bare minimum after
3824 * IPython/ipython: simplified it to the bare minimum after
3821 Holger's suggestions. Added info about how to use it in
3825 Holger's suggestions. Added info about how to use it in
3822 PYTHONSTARTUP.
3826 PYTHONSTARTUP.
3823
3827
3824 * IPython/Shell.py (IPythonShell): changed the options passing
3828 * IPython/Shell.py (IPythonShell): changed the options passing
3825 from a string with funky %s replacements to a straight list. Maybe
3829 from a string with funky %s replacements to a straight list. Maybe
3826 a bit more typing, but it follows sys.argv conventions, so there's
3830 a bit more typing, but it follows sys.argv conventions, so there's
3827 less special-casing to remember.
3831 less special-casing to remember.
3828
3832
3829 2002-06-12 Fernando Perez <fperez@colorado.edu>
3833 2002-06-12 Fernando Perez <fperez@colorado.edu>
3830
3834
3831 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3835 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3832 command. Thanks to a suggestion by Mike Heeter.
3836 command. Thanks to a suggestion by Mike Heeter.
3833 (Magic.magic_pfile): added behavior to look at filenames if given
3837 (Magic.magic_pfile): added behavior to look at filenames if given
3834 arg is not a defined object.
3838 arg is not a defined object.
3835 (Magic.magic_save): New @save function to save code snippets. Also
3839 (Magic.magic_save): New @save function to save code snippets. Also
3836 a Mike Heeter idea.
3840 a Mike Heeter idea.
3837
3841
3838 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3842 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3839 plot() and replot(). Much more convenient now, especially for
3843 plot() and replot(). Much more convenient now, especially for
3840 interactive use.
3844 interactive use.
3841
3845
3842 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3846 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3843 filenames.
3847 filenames.
3844
3848
3845 2002-06-02 Fernando Perez <fperez@colorado.edu>
3849 2002-06-02 Fernando Perez <fperez@colorado.edu>
3846
3850
3847 * IPython/Struct.py (Struct.__init__): modified to admit
3851 * IPython/Struct.py (Struct.__init__): modified to admit
3848 initialization via another struct.
3852 initialization via another struct.
3849
3853
3850 * IPython/genutils.py (SystemExec.__init__): New stateful
3854 * IPython/genutils.py (SystemExec.__init__): New stateful
3851 interface to xsys and bq. Useful for writing system scripts.
3855 interface to xsys and bq. Useful for writing system scripts.
3852
3856
3853 2002-05-30 Fernando Perez <fperez@colorado.edu>
3857 2002-05-30 Fernando Perez <fperez@colorado.edu>
3854
3858
3855 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3859 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3856 documents. This will make the user download smaller (it's getting
3860 documents. This will make the user download smaller (it's getting
3857 too big).
3861 too big).
3858
3862
3859 2002-05-29 Fernando Perez <fperez@colorado.edu>
3863 2002-05-29 Fernando Perez <fperez@colorado.edu>
3860
3864
3861 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3865 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3862 fix problems with shelve and pickle. Seems to work, but I don't
3866 fix problems with shelve and pickle. Seems to work, but I don't
3863 know if corner cases break it. Thanks to Mike Heeter
3867 know if corner cases break it. Thanks to Mike Heeter
3864 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3868 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3865
3869
3866 2002-05-24 Fernando Perez <fperez@colorado.edu>
3870 2002-05-24 Fernando Perez <fperez@colorado.edu>
3867
3871
3868 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3872 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3869 macros having broken.
3873 macros having broken.
3870
3874
3871 2002-05-21 Fernando Perez <fperez@colorado.edu>
3875 2002-05-21 Fernando Perez <fperez@colorado.edu>
3872
3876
3873 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3877 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3874 introduced logging bug: all history before logging started was
3878 introduced logging bug: all history before logging started was
3875 being written one character per line! This came from the redesign
3879 being written one character per line! This came from the redesign
3876 of the input history as a special list which slices to strings,
3880 of the input history as a special list which slices to strings,
3877 not to lists.
3881 not to lists.
3878
3882
3879 2002-05-20 Fernando Perez <fperez@colorado.edu>
3883 2002-05-20 Fernando Perez <fperez@colorado.edu>
3880
3884
3881 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3885 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3882 be an attribute of all classes in this module. The design of these
3886 be an attribute of all classes in this module. The design of these
3883 classes needs some serious overhauling.
3887 classes needs some serious overhauling.
3884
3888
3885 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3889 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3886 which was ignoring '_' in option names.
3890 which was ignoring '_' in option names.
3887
3891
3888 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3892 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3889 'Verbose_novars' to 'Context' and made it the new default. It's a
3893 'Verbose_novars' to 'Context' and made it the new default. It's a
3890 bit more readable and also safer than verbose.
3894 bit more readable and also safer than verbose.
3891
3895
3892 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3896 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3893 triple-quoted strings.
3897 triple-quoted strings.
3894
3898
3895 * IPython/OInspect.py (__all__): new module exposing the object
3899 * IPython/OInspect.py (__all__): new module exposing the object
3896 introspection facilities. Now the corresponding magics are dummy
3900 introspection facilities. Now the corresponding magics are dummy
3897 wrappers around this. Having this module will make it much easier
3901 wrappers around this. Having this module will make it much easier
3898 to put these functions into our modified pdb.
3902 to put these functions into our modified pdb.
3899 This new object inspector system uses the new colorizing module,
3903 This new object inspector system uses the new colorizing module,
3900 so source code and other things are nicely syntax highlighted.
3904 so source code and other things are nicely syntax highlighted.
3901
3905
3902 2002-05-18 Fernando Perez <fperez@colorado.edu>
3906 2002-05-18 Fernando Perez <fperez@colorado.edu>
3903
3907
3904 * IPython/ColorANSI.py: Split the coloring tools into a separate
3908 * IPython/ColorANSI.py: Split the coloring tools into a separate
3905 module so I can use them in other code easier (they were part of
3909 module so I can use them in other code easier (they were part of
3906 ultraTB).
3910 ultraTB).
3907
3911
3908 2002-05-17 Fernando Perez <fperez@colorado.edu>
3912 2002-05-17 Fernando Perez <fperez@colorado.edu>
3909
3913
3910 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3914 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3911 fixed it to set the global 'g' also to the called instance, as
3915 fixed it to set the global 'g' also to the called instance, as
3912 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3916 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3913 user's 'g' variables).
3917 user's 'g' variables).
3914
3918
3915 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3919 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3916 global variables (aliases to _ih,_oh) so that users which expect
3920 global variables (aliases to _ih,_oh) so that users which expect
3917 In[5] or Out[7] to work aren't unpleasantly surprised.
3921 In[5] or Out[7] to work aren't unpleasantly surprised.
3918 (InputList.__getslice__): new class to allow executing slices of
3922 (InputList.__getslice__): new class to allow executing slices of
3919 input history directly. Very simple class, complements the use of
3923 input history directly. Very simple class, complements the use of
3920 macros.
3924 macros.
3921
3925
3922 2002-05-16 Fernando Perez <fperez@colorado.edu>
3926 2002-05-16 Fernando Perez <fperez@colorado.edu>
3923
3927
3924 * setup.py (docdirbase): make doc directory be just doc/IPython
3928 * setup.py (docdirbase): make doc directory be just doc/IPython
3925 without version numbers, it will reduce clutter for users.
3929 without version numbers, it will reduce clutter for users.
3926
3930
3927 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3931 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3928 execfile call to prevent possible memory leak. See for details:
3932 execfile call to prevent possible memory leak. See for details:
3929 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3933 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3930
3934
3931 2002-05-15 Fernando Perez <fperez@colorado.edu>
3935 2002-05-15 Fernando Perez <fperez@colorado.edu>
3932
3936
3933 * IPython/Magic.py (Magic.magic_psource): made the object
3937 * IPython/Magic.py (Magic.magic_psource): made the object
3934 introspection names be more standard: pdoc, pdef, pfile and
3938 introspection names be more standard: pdoc, pdef, pfile and
3935 psource. They all print/page their output, and it makes
3939 psource. They all print/page their output, and it makes
3936 remembering them easier. Kept old names for compatibility as
3940 remembering them easier. Kept old names for compatibility as
3937 aliases.
3941 aliases.
3938
3942
3939 2002-05-14 Fernando Perez <fperez@colorado.edu>
3943 2002-05-14 Fernando Perez <fperez@colorado.edu>
3940
3944
3941 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3945 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3942 what the mouse problem was. The trick is to use gnuplot with temp
3946 what the mouse problem was. The trick is to use gnuplot with temp
3943 files and NOT with pipes (for data communication), because having
3947 files and NOT with pipes (for data communication), because having
3944 both pipes and the mouse on is bad news.
3948 both pipes and the mouse on is bad news.
3945
3949
3946 2002-05-13 Fernando Perez <fperez@colorado.edu>
3950 2002-05-13 Fernando Perez <fperez@colorado.edu>
3947
3951
3948 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3952 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3949 bug. Information would be reported about builtins even when
3953 bug. Information would be reported about builtins even when
3950 user-defined functions overrode them.
3954 user-defined functions overrode them.
3951
3955
3952 2002-05-11 Fernando Perez <fperez@colorado.edu>
3956 2002-05-11 Fernando Perez <fperez@colorado.edu>
3953
3957
3954 * IPython/__init__.py (__all__): removed FlexCompleter from
3958 * IPython/__init__.py (__all__): removed FlexCompleter from
3955 __all__ so that things don't fail in platforms without readline.
3959 __all__ so that things don't fail in platforms without readline.
3956
3960
3957 2002-05-10 Fernando Perez <fperez@colorado.edu>
3961 2002-05-10 Fernando Perez <fperez@colorado.edu>
3958
3962
3959 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3963 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3960 it requires Numeric, effectively making Numeric a dependency for
3964 it requires Numeric, effectively making Numeric a dependency for
3961 IPython.
3965 IPython.
3962
3966
3963 * Released 0.2.13
3967 * Released 0.2.13
3964
3968
3965 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3969 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3966 profiler interface. Now all the major options from the profiler
3970 profiler interface. Now all the major options from the profiler
3967 module are directly supported in IPython, both for single
3971 module are directly supported in IPython, both for single
3968 expressions (@prun) and for full programs (@run -p).
3972 expressions (@prun) and for full programs (@run -p).
3969
3973
3970 2002-05-09 Fernando Perez <fperez@colorado.edu>
3974 2002-05-09 Fernando Perez <fperez@colorado.edu>
3971
3975
3972 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3976 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3973 magic properly formatted for screen.
3977 magic properly formatted for screen.
3974
3978
3975 * setup.py (make_shortcut): Changed things to put pdf version in
3979 * setup.py (make_shortcut): Changed things to put pdf version in
3976 doc/ instead of doc/manual (had to change lyxport a bit).
3980 doc/ instead of doc/manual (had to change lyxport a bit).
3977
3981
3978 * IPython/Magic.py (Profile.string_stats): made profile runs go
3982 * IPython/Magic.py (Profile.string_stats): made profile runs go
3979 through pager (they are long and a pager allows searching, saving,
3983 through pager (they are long and a pager allows searching, saving,
3980 etc.)
3984 etc.)
3981
3985
3982 2002-05-08 Fernando Perez <fperez@colorado.edu>
3986 2002-05-08 Fernando Perez <fperez@colorado.edu>
3983
3987
3984 * Released 0.2.12
3988 * Released 0.2.12
3985
3989
3986 2002-05-06 Fernando Perez <fperez@colorado.edu>
3990 2002-05-06 Fernando Perez <fperez@colorado.edu>
3987
3991
3988 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3992 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3989 introduced); 'hist n1 n2' was broken.
3993 introduced); 'hist n1 n2' was broken.
3990 (Magic.magic_pdb): added optional on/off arguments to @pdb
3994 (Magic.magic_pdb): added optional on/off arguments to @pdb
3991 (Magic.magic_run): added option -i to @run, which executes code in
3995 (Magic.magic_run): added option -i to @run, which executes code in
3992 the IPython namespace instead of a clean one. Also added @irun as
3996 the IPython namespace instead of a clean one. Also added @irun as
3993 an alias to @run -i.
3997 an alias to @run -i.
3994
3998
3995 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3999 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3996 fixed (it didn't really do anything, the namespaces were wrong).
4000 fixed (it didn't really do anything, the namespaces were wrong).
3997
4001
3998 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4002 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3999
4003
4000 * IPython/__init__.py (__all__): Fixed package namespace, now
4004 * IPython/__init__.py (__all__): Fixed package namespace, now
4001 'import IPython' does give access to IPython.<all> as
4005 'import IPython' does give access to IPython.<all> as
4002 expected. Also renamed __release__ to Release.
4006 expected. Also renamed __release__ to Release.
4003
4007
4004 * IPython/Debugger.py (__license__): created new Pdb class which
4008 * IPython/Debugger.py (__license__): created new Pdb class which
4005 functions like a drop-in for the normal pdb.Pdb but does NOT
4009 functions like a drop-in for the normal pdb.Pdb but does NOT
4006 import readline by default. This way it doesn't muck up IPython's
4010 import readline by default. This way it doesn't muck up IPython's
4007 readline handling, and now tab-completion finally works in the
4011 readline handling, and now tab-completion finally works in the
4008 debugger -- sort of. It completes things globally visible, but the
4012 debugger -- sort of. It completes things globally visible, but the
4009 completer doesn't track the stack as pdb walks it. That's a bit
4013 completer doesn't track the stack as pdb walks it. That's a bit
4010 tricky, and I'll have to implement it later.
4014 tricky, and I'll have to implement it later.
4011
4015
4012 2002-05-05 Fernando Perez <fperez@colorado.edu>
4016 2002-05-05 Fernando Perez <fperez@colorado.edu>
4013
4017
4014 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4018 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4015 magic docstrings when printed via ? (explicit \'s were being
4019 magic docstrings when printed via ? (explicit \'s were being
4016 printed).
4020 printed).
4017
4021
4018 * IPython/ipmaker.py (make_IPython): fixed namespace
4022 * IPython/ipmaker.py (make_IPython): fixed namespace
4019 identification bug. Now variables loaded via logs or command-line
4023 identification bug. Now variables loaded via logs or command-line
4020 files are recognized in the interactive namespace by @who.
4024 files are recognized in the interactive namespace by @who.
4021
4025
4022 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4026 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4023 log replay system stemming from the string form of Structs.
4027 log replay system stemming from the string form of Structs.
4024
4028
4025 * IPython/Magic.py (Macro.__init__): improved macros to properly
4029 * IPython/Magic.py (Macro.__init__): improved macros to properly
4026 handle magic commands in them.
4030 handle magic commands in them.
4027 (Magic.magic_logstart): usernames are now expanded so 'logstart
4031 (Magic.magic_logstart): usernames are now expanded so 'logstart
4028 ~/mylog' now works.
4032 ~/mylog' now works.
4029
4033
4030 * IPython/iplib.py (complete): fixed bug where paths starting with
4034 * IPython/iplib.py (complete): fixed bug where paths starting with
4031 '/' would be completed as magic names.
4035 '/' would be completed as magic names.
4032
4036
4033 2002-05-04 Fernando Perez <fperez@colorado.edu>
4037 2002-05-04 Fernando Perez <fperez@colorado.edu>
4034
4038
4035 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4039 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4036 allow running full programs under the profiler's control.
4040 allow running full programs under the profiler's control.
4037
4041
4038 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4042 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4039 mode to report exceptions verbosely but without formatting
4043 mode to report exceptions verbosely but without formatting
4040 variables. This addresses the issue of ipython 'freezing' (it's
4044 variables. This addresses the issue of ipython 'freezing' (it's
4041 not frozen, but caught in an expensive formatting loop) when huge
4045 not frozen, but caught in an expensive formatting loop) when huge
4042 variables are in the context of an exception.
4046 variables are in the context of an exception.
4043 (VerboseTB.text): Added '--->' markers at line where exception was
4047 (VerboseTB.text): Added '--->' markers at line where exception was
4044 triggered. Much clearer to read, especially in NoColor modes.
4048 triggered. Much clearer to read, especially in NoColor modes.
4045
4049
4046 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4050 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4047 implemented in reverse when changing to the new parse_options().
4051 implemented in reverse when changing to the new parse_options().
4048
4052
4049 2002-05-03 Fernando Perez <fperez@colorado.edu>
4053 2002-05-03 Fernando Perez <fperez@colorado.edu>
4050
4054
4051 * IPython/Magic.py (Magic.parse_options): new function so that
4055 * IPython/Magic.py (Magic.parse_options): new function so that
4052 magics can parse options easier.
4056 magics can parse options easier.
4053 (Magic.magic_prun): new function similar to profile.run(),
4057 (Magic.magic_prun): new function similar to profile.run(),
4054 suggested by Chris Hart.
4058 suggested by Chris Hart.
4055 (Magic.magic_cd): fixed behavior so that it only changes if
4059 (Magic.magic_cd): fixed behavior so that it only changes if
4056 directory actually is in history.
4060 directory actually is in history.
4057
4061
4058 * IPython/usage.py (__doc__): added information about potential
4062 * IPython/usage.py (__doc__): added information about potential
4059 slowness of Verbose exception mode when there are huge data
4063 slowness of Verbose exception mode when there are huge data
4060 structures to be formatted (thanks to Archie Paulson).
4064 structures to be formatted (thanks to Archie Paulson).
4061
4065
4062 * IPython/ipmaker.py (make_IPython): Changed default logging
4066 * IPython/ipmaker.py (make_IPython): Changed default logging
4063 (when simply called with -log) to use curr_dir/ipython.log in
4067 (when simply called with -log) to use curr_dir/ipython.log in
4064 rotate mode. Fixed crash which was occuring with -log before
4068 rotate mode. Fixed crash which was occuring with -log before
4065 (thanks to Jim Boyle).
4069 (thanks to Jim Boyle).
4066
4070
4067 2002-05-01 Fernando Perez <fperez@colorado.edu>
4071 2002-05-01 Fernando Perez <fperez@colorado.edu>
4068
4072
4069 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4073 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4070 was nasty -- though somewhat of a corner case).
4074 was nasty -- though somewhat of a corner case).
4071
4075
4072 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4076 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4073 text (was a bug).
4077 text (was a bug).
4074
4078
4075 2002-04-30 Fernando Perez <fperez@colorado.edu>
4079 2002-04-30 Fernando Perez <fperez@colorado.edu>
4076
4080
4077 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4081 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4078 a print after ^D or ^C from the user so that the In[] prompt
4082 a print after ^D or ^C from the user so that the In[] prompt
4079 doesn't over-run the gnuplot one.
4083 doesn't over-run the gnuplot one.
4080
4084
4081 2002-04-29 Fernando Perez <fperez@colorado.edu>
4085 2002-04-29 Fernando Perez <fperez@colorado.edu>
4082
4086
4083 * Released 0.2.10
4087 * Released 0.2.10
4084
4088
4085 * IPython/__release__.py (version): get date dynamically.
4089 * IPython/__release__.py (version): get date dynamically.
4086
4090
4087 * Misc. documentation updates thanks to Arnd's comments. Also ran
4091 * Misc. documentation updates thanks to Arnd's comments. Also ran
4088 a full spellcheck on the manual (hadn't been done in a while).
4092 a full spellcheck on the manual (hadn't been done in a while).
4089
4093
4090 2002-04-27 Fernando Perez <fperez@colorado.edu>
4094 2002-04-27 Fernando Perez <fperez@colorado.edu>
4091
4095
4092 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4096 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4093 starting a log in mid-session would reset the input history list.
4097 starting a log in mid-session would reset the input history list.
4094
4098
4095 2002-04-26 Fernando Perez <fperez@colorado.edu>
4099 2002-04-26 Fernando Perez <fperez@colorado.edu>
4096
4100
4097 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4101 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4098 all files were being included in an update. Now anything in
4102 all files were being included in an update. Now anything in
4099 UserConfig that matches [A-Za-z]*.py will go (this excludes
4103 UserConfig that matches [A-Za-z]*.py will go (this excludes
4100 __init__.py)
4104 __init__.py)
4101
4105
4102 2002-04-25 Fernando Perez <fperez@colorado.edu>
4106 2002-04-25 Fernando Perez <fperez@colorado.edu>
4103
4107
4104 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4108 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4105 to __builtins__ so that any form of embedded or imported code can
4109 to __builtins__ so that any form of embedded or imported code can
4106 test for being inside IPython.
4110 test for being inside IPython.
4107
4111
4108 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4112 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4109 changed to GnuplotMagic because it's now an importable module,
4113 changed to GnuplotMagic because it's now an importable module,
4110 this makes the name follow that of the standard Gnuplot module.
4114 this makes the name follow that of the standard Gnuplot module.
4111 GnuplotMagic can now be loaded at any time in mid-session.
4115 GnuplotMagic can now be loaded at any time in mid-session.
4112
4116
4113 2002-04-24 Fernando Perez <fperez@colorado.edu>
4117 2002-04-24 Fernando Perez <fperez@colorado.edu>
4114
4118
4115 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4119 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4116 the globals (IPython has its own namespace) and the
4120 the globals (IPython has its own namespace) and the
4117 PhysicalQuantity stuff is much better anyway.
4121 PhysicalQuantity stuff is much better anyway.
4118
4122
4119 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4123 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4120 embedding example to standard user directory for
4124 embedding example to standard user directory for
4121 distribution. Also put it in the manual.
4125 distribution. Also put it in the manual.
4122
4126
4123 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4127 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4124 instance as first argument (so it doesn't rely on some obscure
4128 instance as first argument (so it doesn't rely on some obscure
4125 hidden global).
4129 hidden global).
4126
4130
4127 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4131 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4128 delimiters. While it prevents ().TAB from working, it allows
4132 delimiters. While it prevents ().TAB from working, it allows
4129 completions in open (... expressions. This is by far a more common
4133 completions in open (... expressions. This is by far a more common
4130 case.
4134 case.
4131
4135
4132 2002-04-23 Fernando Perez <fperez@colorado.edu>
4136 2002-04-23 Fernando Perez <fperez@colorado.edu>
4133
4137
4134 * IPython/Extensions/InterpreterPasteInput.py: new
4138 * IPython/Extensions/InterpreterPasteInput.py: new
4135 syntax-processing module for pasting lines with >>> or ... at the
4139 syntax-processing module for pasting lines with >>> or ... at the
4136 start.
4140 start.
4137
4141
4138 * IPython/Extensions/PhysicalQ_Interactive.py
4142 * IPython/Extensions/PhysicalQ_Interactive.py
4139 (PhysicalQuantityInteractive.__int__): fixed to work with either
4143 (PhysicalQuantityInteractive.__int__): fixed to work with either
4140 Numeric or math.
4144 Numeric or math.
4141
4145
4142 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4146 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4143 provided profiles. Now we have:
4147 provided profiles. Now we have:
4144 -math -> math module as * and cmath with its own namespace.
4148 -math -> math module as * and cmath with its own namespace.
4145 -numeric -> Numeric as *, plus gnuplot & grace
4149 -numeric -> Numeric as *, plus gnuplot & grace
4146 -physics -> same as before
4150 -physics -> same as before
4147
4151
4148 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4152 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4149 user-defined magics wouldn't be found by @magic if they were
4153 user-defined magics wouldn't be found by @magic if they were
4150 defined as class methods. Also cleaned up the namespace search
4154 defined as class methods. Also cleaned up the namespace search
4151 logic and the string building (to use %s instead of many repeated
4155 logic and the string building (to use %s instead of many repeated
4152 string adds).
4156 string adds).
4153
4157
4154 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4158 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4155 of user-defined magics to operate with class methods (cleaner, in
4159 of user-defined magics to operate with class methods (cleaner, in
4156 line with the gnuplot code).
4160 line with the gnuplot code).
4157
4161
4158 2002-04-22 Fernando Perez <fperez@colorado.edu>
4162 2002-04-22 Fernando Perez <fperez@colorado.edu>
4159
4163
4160 * setup.py: updated dependency list so that manual is updated when
4164 * setup.py: updated dependency list so that manual is updated when
4161 all included files change.
4165 all included files change.
4162
4166
4163 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4167 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4164 the delimiter removal option (the fix is ugly right now).
4168 the delimiter removal option (the fix is ugly right now).
4165
4169
4166 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4170 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4167 all of the math profile (quicker loading, no conflict between
4171 all of the math profile (quicker loading, no conflict between
4168 g-9.8 and g-gnuplot).
4172 g-9.8 and g-gnuplot).
4169
4173
4170 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4174 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4171 name of post-mortem files to IPython_crash_report.txt.
4175 name of post-mortem files to IPython_crash_report.txt.
4172
4176
4173 * Cleanup/update of the docs. Added all the new readline info and
4177 * Cleanup/update of the docs. Added all the new readline info and
4174 formatted all lists as 'real lists'.
4178 formatted all lists as 'real lists'.
4175
4179
4176 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4180 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4177 tab-completion options, since the full readline parse_and_bind is
4181 tab-completion options, since the full readline parse_and_bind is
4178 now accessible.
4182 now accessible.
4179
4183
4180 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4184 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4181 handling of readline options. Now users can specify any string to
4185 handling of readline options. Now users can specify any string to
4182 be passed to parse_and_bind(), as well as the delimiters to be
4186 be passed to parse_and_bind(), as well as the delimiters to be
4183 removed.
4187 removed.
4184 (InteractiveShell.__init__): Added __name__ to the global
4188 (InteractiveShell.__init__): Added __name__ to the global
4185 namespace so that things like Itpl which rely on its existence
4189 namespace so that things like Itpl which rely on its existence
4186 don't crash.
4190 don't crash.
4187 (InteractiveShell._prefilter): Defined the default with a _ so
4191 (InteractiveShell._prefilter): Defined the default with a _ so
4188 that prefilter() is easier to override, while the default one
4192 that prefilter() is easier to override, while the default one
4189 remains available.
4193 remains available.
4190
4194
4191 2002-04-18 Fernando Perez <fperez@colorado.edu>
4195 2002-04-18 Fernando Perez <fperez@colorado.edu>
4192
4196
4193 * Added information about pdb in the docs.
4197 * Added information about pdb in the docs.
4194
4198
4195 2002-04-17 Fernando Perez <fperez@colorado.edu>
4199 2002-04-17 Fernando Perez <fperez@colorado.edu>
4196
4200
4197 * IPython/ipmaker.py (make_IPython): added rc_override option to
4201 * IPython/ipmaker.py (make_IPython): added rc_override option to
4198 allow passing config options at creation time which may override
4202 allow passing config options at creation time which may override
4199 anything set in the config files or command line. This is
4203 anything set in the config files or command line. This is
4200 particularly useful for configuring embedded instances.
4204 particularly useful for configuring embedded instances.
4201
4205
4202 2002-04-15 Fernando Perez <fperez@colorado.edu>
4206 2002-04-15 Fernando Perez <fperez@colorado.edu>
4203
4207
4204 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4208 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4205 crash embedded instances because of the input cache falling out of
4209 crash embedded instances because of the input cache falling out of
4206 sync with the output counter.
4210 sync with the output counter.
4207
4211
4208 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4212 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4209 mode which calls pdb after an uncaught exception in IPython itself.
4213 mode which calls pdb after an uncaught exception in IPython itself.
4210
4214
4211 2002-04-14 Fernando Perez <fperez@colorado.edu>
4215 2002-04-14 Fernando Perez <fperez@colorado.edu>
4212
4216
4213 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4217 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4214 readline, fix it back after each call.
4218 readline, fix it back after each call.
4215
4219
4216 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4220 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4217 method to force all access via __call__(), which guarantees that
4221 method to force all access via __call__(), which guarantees that
4218 traceback references are properly deleted.
4222 traceback references are properly deleted.
4219
4223
4220 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4224 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4221 improve printing when pprint is in use.
4225 improve printing when pprint is in use.
4222
4226
4223 2002-04-13 Fernando Perez <fperez@colorado.edu>
4227 2002-04-13 Fernando Perez <fperez@colorado.edu>
4224
4228
4225 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4229 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4226 exceptions aren't caught anymore. If the user triggers one, he
4230 exceptions aren't caught anymore. If the user triggers one, he
4227 should know why he's doing it and it should go all the way up,
4231 should know why he's doing it and it should go all the way up,
4228 just like any other exception. So now @abort will fully kill the
4232 just like any other exception. So now @abort will fully kill the
4229 embedded interpreter and the embedding code (unless that happens
4233 embedded interpreter and the embedding code (unless that happens
4230 to catch SystemExit).
4234 to catch SystemExit).
4231
4235
4232 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4236 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4233 and a debugger() method to invoke the interactive pdb debugger
4237 and a debugger() method to invoke the interactive pdb debugger
4234 after printing exception information. Also added the corresponding
4238 after printing exception information. Also added the corresponding
4235 -pdb option and @pdb magic to control this feature, and updated
4239 -pdb option and @pdb magic to control this feature, and updated
4236 the docs. After a suggestion from Christopher Hart
4240 the docs. After a suggestion from Christopher Hart
4237 (hart-AT-caltech.edu).
4241 (hart-AT-caltech.edu).
4238
4242
4239 2002-04-12 Fernando Perez <fperez@colorado.edu>
4243 2002-04-12 Fernando Perez <fperez@colorado.edu>
4240
4244
4241 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4245 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4242 the exception handlers defined by the user (not the CrashHandler)
4246 the exception handlers defined by the user (not the CrashHandler)
4243 so that user exceptions don't trigger an ipython bug report.
4247 so that user exceptions don't trigger an ipython bug report.
4244
4248
4245 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4249 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4246 configurable (it should have always been so).
4250 configurable (it should have always been so).
4247
4251
4248 2002-03-26 Fernando Perez <fperez@colorado.edu>
4252 2002-03-26 Fernando Perez <fperez@colorado.edu>
4249
4253
4250 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4254 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4251 and there to fix embedding namespace issues. This should all be
4255 and there to fix embedding namespace issues. This should all be
4252 done in a more elegant way.
4256 done in a more elegant way.
4253
4257
4254 2002-03-25 Fernando Perez <fperez@colorado.edu>
4258 2002-03-25 Fernando Perez <fperez@colorado.edu>
4255
4259
4256 * IPython/genutils.py (get_home_dir): Try to make it work under
4260 * IPython/genutils.py (get_home_dir): Try to make it work under
4257 win9x also.
4261 win9x also.
4258
4262
4259 2002-03-20 Fernando Perez <fperez@colorado.edu>
4263 2002-03-20 Fernando Perez <fperez@colorado.edu>
4260
4264
4261 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4265 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4262 sys.displayhook untouched upon __init__.
4266 sys.displayhook untouched upon __init__.
4263
4267
4264 2002-03-19 Fernando Perez <fperez@colorado.edu>
4268 2002-03-19 Fernando Perez <fperez@colorado.edu>
4265
4269
4266 * Released 0.2.9 (for embedding bug, basically).
4270 * Released 0.2.9 (for embedding bug, basically).
4267
4271
4268 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4272 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4269 exceptions so that enclosing shell's state can be restored.
4273 exceptions so that enclosing shell's state can be restored.
4270
4274
4271 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4275 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4272 naming conventions in the .ipython/ dir.
4276 naming conventions in the .ipython/ dir.
4273
4277
4274 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4278 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4275 from delimiters list so filenames with - in them get expanded.
4279 from delimiters list so filenames with - in them get expanded.
4276
4280
4277 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4281 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4278 sys.displayhook not being properly restored after an embedded call.
4282 sys.displayhook not being properly restored after an embedded call.
4279
4283
4280 2002-03-18 Fernando Perez <fperez@colorado.edu>
4284 2002-03-18 Fernando Perez <fperez@colorado.edu>
4281
4285
4282 * Released 0.2.8
4286 * Released 0.2.8
4283
4287
4284 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4288 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4285 some files weren't being included in a -upgrade.
4289 some files weren't being included in a -upgrade.
4286 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4290 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4287 on' so that the first tab completes.
4291 on' so that the first tab completes.
4288 (InteractiveShell.handle_magic): fixed bug with spaces around
4292 (InteractiveShell.handle_magic): fixed bug with spaces around
4289 quotes breaking many magic commands.
4293 quotes breaking many magic commands.
4290
4294
4291 * setup.py: added note about ignoring the syntax error messages at
4295 * setup.py: added note about ignoring the syntax error messages at
4292 installation.
4296 installation.
4293
4297
4294 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4298 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4295 streamlining the gnuplot interface, now there's only one magic @gp.
4299 streamlining the gnuplot interface, now there's only one magic @gp.
4296
4300
4297 2002-03-17 Fernando Perez <fperez@colorado.edu>
4301 2002-03-17 Fernando Perez <fperez@colorado.edu>
4298
4302
4299 * IPython/UserConfig/magic_gnuplot.py: new name for the
4303 * IPython/UserConfig/magic_gnuplot.py: new name for the
4300 example-magic_pm.py file. Much enhanced system, now with a shell
4304 example-magic_pm.py file. Much enhanced system, now with a shell
4301 for communicating directly with gnuplot, one command at a time.
4305 for communicating directly with gnuplot, one command at a time.
4302
4306
4303 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4307 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4304 setting __name__=='__main__'.
4308 setting __name__=='__main__'.
4305
4309
4306 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4310 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4307 mini-shell for accessing gnuplot from inside ipython. Should
4311 mini-shell for accessing gnuplot from inside ipython. Should
4308 extend it later for grace access too. Inspired by Arnd's
4312 extend it later for grace access too. Inspired by Arnd's
4309 suggestion.
4313 suggestion.
4310
4314
4311 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4315 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4312 calling magic functions with () in their arguments. Thanks to Arnd
4316 calling magic functions with () in their arguments. Thanks to Arnd
4313 Baecker for pointing this to me.
4317 Baecker for pointing this to me.
4314
4318
4315 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4319 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4316 infinitely for integer or complex arrays (only worked with floats).
4320 infinitely for integer or complex arrays (only worked with floats).
4317
4321
4318 2002-03-16 Fernando Perez <fperez@colorado.edu>
4322 2002-03-16 Fernando Perez <fperez@colorado.edu>
4319
4323
4320 * setup.py: Merged setup and setup_windows into a single script
4324 * setup.py: Merged setup and setup_windows into a single script
4321 which properly handles things for windows users.
4325 which properly handles things for windows users.
4322
4326
4323 2002-03-15 Fernando Perez <fperez@colorado.edu>
4327 2002-03-15 Fernando Perez <fperez@colorado.edu>
4324
4328
4325 * Big change to the manual: now the magics are all automatically
4329 * Big change to the manual: now the magics are all automatically
4326 documented. This information is generated from their docstrings
4330 documented. This information is generated from their docstrings
4327 and put in a latex file included by the manual lyx file. This way
4331 and put in a latex file included by the manual lyx file. This way
4328 we get always up to date information for the magics. The manual
4332 we get always up to date information for the magics. The manual
4329 now also has proper version information, also auto-synced.
4333 now also has proper version information, also auto-synced.
4330
4334
4331 For this to work, an undocumented --magic_docstrings option was added.
4335 For this to work, an undocumented --magic_docstrings option was added.
4332
4336
4333 2002-03-13 Fernando Perez <fperez@colorado.edu>
4337 2002-03-13 Fernando Perez <fperez@colorado.edu>
4334
4338
4335 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4339 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4336 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4340 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4337
4341
4338 2002-03-12 Fernando Perez <fperez@colorado.edu>
4342 2002-03-12 Fernando Perez <fperez@colorado.edu>
4339
4343
4340 * IPython/ultraTB.py (TermColors): changed color escapes again to
4344 * IPython/ultraTB.py (TermColors): changed color escapes again to
4341 fix the (old, reintroduced) line-wrapping bug. Basically, if
4345 fix the (old, reintroduced) line-wrapping bug. Basically, if
4342 \001..\002 aren't given in the color escapes, lines get wrapped
4346 \001..\002 aren't given in the color escapes, lines get wrapped
4343 weirdly. But giving those screws up old xterms and emacs terms. So
4347 weirdly. But giving those screws up old xterms and emacs terms. So
4344 I added some logic for emacs terms to be ok, but I can't identify old
4348 I added some logic for emacs terms to be ok, but I can't identify old
4345 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4349 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4346
4350
4347 2002-03-10 Fernando Perez <fperez@colorado.edu>
4351 2002-03-10 Fernando Perez <fperez@colorado.edu>
4348
4352
4349 * IPython/usage.py (__doc__): Various documentation cleanups and
4353 * IPython/usage.py (__doc__): Various documentation cleanups and
4350 updates, both in usage docstrings and in the manual.
4354 updates, both in usage docstrings and in the manual.
4351
4355
4352 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4356 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4353 handling of caching. Set minimum acceptabe value for having a
4357 handling of caching. Set minimum acceptabe value for having a
4354 cache at 20 values.
4358 cache at 20 values.
4355
4359
4356 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4360 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4357 install_first_time function to a method, renamed it and added an
4361 install_first_time function to a method, renamed it and added an
4358 'upgrade' mode. Now people can update their config directory with
4362 'upgrade' mode. Now people can update their config directory with
4359 a simple command line switch (-upgrade, also new).
4363 a simple command line switch (-upgrade, also new).
4360
4364
4361 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4365 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4362 @file (convenient for automagic users under Python >= 2.2).
4366 @file (convenient for automagic users under Python >= 2.2).
4363 Removed @files (it seemed more like a plural than an abbrev. of
4367 Removed @files (it seemed more like a plural than an abbrev. of
4364 'file show').
4368 'file show').
4365
4369
4366 * IPython/iplib.py (install_first_time): Fixed crash if there were
4370 * IPython/iplib.py (install_first_time): Fixed crash if there were
4367 backup files ('~') in .ipython/ install directory.
4371 backup files ('~') in .ipython/ install directory.
4368
4372
4369 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4373 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4370 system. Things look fine, but these changes are fairly
4374 system. Things look fine, but these changes are fairly
4371 intrusive. Test them for a few days.
4375 intrusive. Test them for a few days.
4372
4376
4373 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4377 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4374 the prompts system. Now all in/out prompt strings are user
4378 the prompts system. Now all in/out prompt strings are user
4375 controllable. This is particularly useful for embedding, as one
4379 controllable. This is particularly useful for embedding, as one
4376 can tag embedded instances with particular prompts.
4380 can tag embedded instances with particular prompts.
4377
4381
4378 Also removed global use of sys.ps1/2, which now allows nested
4382 Also removed global use of sys.ps1/2, which now allows nested
4379 embeddings without any problems. Added command-line options for
4383 embeddings without any problems. Added command-line options for
4380 the prompt strings.
4384 the prompt strings.
4381
4385
4382 2002-03-08 Fernando Perez <fperez@colorado.edu>
4386 2002-03-08 Fernando Perez <fperez@colorado.edu>
4383
4387
4384 * IPython/UserConfig/example-embed-short.py (ipshell): added
4388 * IPython/UserConfig/example-embed-short.py (ipshell): added
4385 example file with the bare minimum code for embedding.
4389 example file with the bare minimum code for embedding.
4386
4390
4387 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4391 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4388 functionality for the embeddable shell to be activated/deactivated
4392 functionality for the embeddable shell to be activated/deactivated
4389 either globally or at each call.
4393 either globally or at each call.
4390
4394
4391 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4395 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4392 rewriting the prompt with '--->' for auto-inputs with proper
4396 rewriting the prompt with '--->' for auto-inputs with proper
4393 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4397 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4394 this is handled by the prompts class itself, as it should.
4398 this is handled by the prompts class itself, as it should.
4395
4399
4396 2002-03-05 Fernando Perez <fperez@colorado.edu>
4400 2002-03-05 Fernando Perez <fperez@colorado.edu>
4397
4401
4398 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4402 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4399 @logstart to avoid name clashes with the math log function.
4403 @logstart to avoid name clashes with the math log function.
4400
4404
4401 * Big updates to X/Emacs section of the manual.
4405 * Big updates to X/Emacs section of the manual.
4402
4406
4403 * Removed ipython_emacs. Milan explained to me how to pass
4407 * Removed ipython_emacs. Milan explained to me how to pass
4404 arguments to ipython through Emacs. Some day I'm going to end up
4408 arguments to ipython through Emacs. Some day I'm going to end up
4405 learning some lisp...
4409 learning some lisp...
4406
4410
4407 2002-03-04 Fernando Perez <fperez@colorado.edu>
4411 2002-03-04 Fernando Perez <fperez@colorado.edu>
4408
4412
4409 * IPython/ipython_emacs: Created script to be used as the
4413 * IPython/ipython_emacs: Created script to be used as the
4410 py-python-command Emacs variable so we can pass IPython
4414 py-python-command Emacs variable so we can pass IPython
4411 parameters. I can't figure out how to tell Emacs directly to pass
4415 parameters. I can't figure out how to tell Emacs directly to pass
4412 parameters to IPython, so a dummy shell script will do it.
4416 parameters to IPython, so a dummy shell script will do it.
4413
4417
4414 Other enhancements made for things to work better under Emacs'
4418 Other enhancements made for things to work better under Emacs'
4415 various types of terminals. Many thanks to Milan Zamazal
4419 various types of terminals. Many thanks to Milan Zamazal
4416 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4420 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4417
4421
4418 2002-03-01 Fernando Perez <fperez@colorado.edu>
4422 2002-03-01 Fernando Perez <fperez@colorado.edu>
4419
4423
4420 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4424 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4421 that loading of readline is now optional. This gives better
4425 that loading of readline is now optional. This gives better
4422 control to emacs users.
4426 control to emacs users.
4423
4427
4424 * IPython/ultraTB.py (__date__): Modified color escape sequences
4428 * IPython/ultraTB.py (__date__): Modified color escape sequences
4425 and now things work fine under xterm and in Emacs' term buffers
4429 and now things work fine under xterm and in Emacs' term buffers
4426 (though not shell ones). Well, in emacs you get colors, but all
4430 (though not shell ones). Well, in emacs you get colors, but all
4427 seem to be 'light' colors (no difference between dark and light
4431 seem to be 'light' colors (no difference between dark and light
4428 ones). But the garbage chars are gone, and also in xterms. It
4432 ones). But the garbage chars are gone, and also in xterms. It
4429 seems that now I'm using 'cleaner' ansi sequences.
4433 seems that now I'm using 'cleaner' ansi sequences.
4430
4434
4431 2002-02-21 Fernando Perez <fperez@colorado.edu>
4435 2002-02-21 Fernando Perez <fperez@colorado.edu>
4432
4436
4433 * Released 0.2.7 (mainly to publish the scoping fix).
4437 * Released 0.2.7 (mainly to publish the scoping fix).
4434
4438
4435 * IPython/Logger.py (Logger.logstate): added. A corresponding
4439 * IPython/Logger.py (Logger.logstate): added. A corresponding
4436 @logstate magic was created.
4440 @logstate magic was created.
4437
4441
4438 * IPython/Magic.py: fixed nested scoping problem under Python
4442 * IPython/Magic.py: fixed nested scoping problem under Python
4439 2.1.x (automagic wasn't working).
4443 2.1.x (automagic wasn't working).
4440
4444
4441 2002-02-20 Fernando Perez <fperez@colorado.edu>
4445 2002-02-20 Fernando Perez <fperez@colorado.edu>
4442
4446
4443 * Released 0.2.6.
4447 * Released 0.2.6.
4444
4448
4445 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4449 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4446 option so that logs can come out without any headers at all.
4450 option so that logs can come out without any headers at all.
4447
4451
4448 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4452 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4449 SciPy.
4453 SciPy.
4450
4454
4451 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4455 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4452 that embedded IPython calls don't require vars() to be explicitly
4456 that embedded IPython calls don't require vars() to be explicitly
4453 passed. Now they are extracted from the caller's frame (code
4457 passed. Now they are extracted from the caller's frame (code
4454 snatched from Eric Jones' weave). Added better documentation to
4458 snatched from Eric Jones' weave). Added better documentation to
4455 the section on embedding and the example file.
4459 the section on embedding and the example file.
4456
4460
4457 * IPython/genutils.py (page): Changed so that under emacs, it just
4461 * IPython/genutils.py (page): Changed so that under emacs, it just
4458 prints the string. You can then page up and down in the emacs
4462 prints the string. You can then page up and down in the emacs
4459 buffer itself. This is how the builtin help() works.
4463 buffer itself. This is how the builtin help() works.
4460
4464
4461 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4465 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4462 macro scoping: macros need to be executed in the user's namespace
4466 macro scoping: macros need to be executed in the user's namespace
4463 to work as if they had been typed by the user.
4467 to work as if they had been typed by the user.
4464
4468
4465 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4469 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4466 execute automatically (no need to type 'exec...'). They then
4470 execute automatically (no need to type 'exec...'). They then
4467 behave like 'true macros'. The printing system was also modified
4471 behave like 'true macros'. The printing system was also modified
4468 for this to work.
4472 for this to work.
4469
4473
4470 2002-02-19 Fernando Perez <fperez@colorado.edu>
4474 2002-02-19 Fernando Perez <fperez@colorado.edu>
4471
4475
4472 * IPython/genutils.py (page_file): new function for paging files
4476 * IPython/genutils.py (page_file): new function for paging files
4473 in an OS-independent way. Also necessary for file viewing to work
4477 in an OS-independent way. Also necessary for file viewing to work
4474 well inside Emacs buffers.
4478 well inside Emacs buffers.
4475 (page): Added checks for being in an emacs buffer.
4479 (page): Added checks for being in an emacs buffer.
4476 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4480 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4477 same bug in iplib.
4481 same bug in iplib.
4478
4482
4479 2002-02-18 Fernando Perez <fperez@colorado.edu>
4483 2002-02-18 Fernando Perez <fperez@colorado.edu>
4480
4484
4481 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4485 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4482 of readline so that IPython can work inside an Emacs buffer.
4486 of readline so that IPython can work inside an Emacs buffer.
4483
4487
4484 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4488 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4485 method signatures (they weren't really bugs, but it looks cleaner
4489 method signatures (they weren't really bugs, but it looks cleaner
4486 and keeps PyChecker happy).
4490 and keeps PyChecker happy).
4487
4491
4488 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4492 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4489 for implementing various user-defined hooks. Currently only
4493 for implementing various user-defined hooks. Currently only
4490 display is done.
4494 display is done.
4491
4495
4492 * IPython/Prompts.py (CachedOutput._display): changed display
4496 * IPython/Prompts.py (CachedOutput._display): changed display
4493 functions so that they can be dynamically changed by users easily.
4497 functions so that they can be dynamically changed by users easily.
4494
4498
4495 * IPython/Extensions/numeric_formats.py (num_display): added an
4499 * IPython/Extensions/numeric_formats.py (num_display): added an
4496 extension for printing NumPy arrays in flexible manners. It
4500 extension for printing NumPy arrays in flexible manners. It
4497 doesn't do anything yet, but all the structure is in
4501 doesn't do anything yet, but all the structure is in
4498 place. Ultimately the plan is to implement output format control
4502 place. Ultimately the plan is to implement output format control
4499 like in Octave.
4503 like in Octave.
4500
4504
4501 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4505 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4502 methods are found at run-time by all the automatic machinery.
4506 methods are found at run-time by all the automatic machinery.
4503
4507
4504 2002-02-17 Fernando Perez <fperez@colorado.edu>
4508 2002-02-17 Fernando Perez <fperez@colorado.edu>
4505
4509
4506 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4510 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4507 whole file a little.
4511 whole file a little.
4508
4512
4509 * ToDo: closed this document. Now there's a new_design.lyx
4513 * ToDo: closed this document. Now there's a new_design.lyx
4510 document for all new ideas. Added making a pdf of it for the
4514 document for all new ideas. Added making a pdf of it for the
4511 end-user distro.
4515 end-user distro.
4512
4516
4513 * IPython/Logger.py (Logger.switch_log): Created this to replace
4517 * IPython/Logger.py (Logger.switch_log): Created this to replace
4514 logon() and logoff(). It also fixes a nasty crash reported by
4518 logon() and logoff(). It also fixes a nasty crash reported by
4515 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4519 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4516
4520
4517 * IPython/iplib.py (complete): got auto-completion to work with
4521 * IPython/iplib.py (complete): got auto-completion to work with
4518 automagic (I had wanted this for a long time).
4522 automagic (I had wanted this for a long time).
4519
4523
4520 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4524 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4521 to @file, since file() is now a builtin and clashes with automagic
4525 to @file, since file() is now a builtin and clashes with automagic
4522 for @file.
4526 for @file.
4523
4527
4524 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4528 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4525 of this was previously in iplib, which had grown to more than 2000
4529 of this was previously in iplib, which had grown to more than 2000
4526 lines, way too long. No new functionality, but it makes managing
4530 lines, way too long. No new functionality, but it makes managing
4527 the code a bit easier.
4531 the code a bit easier.
4528
4532
4529 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4533 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4530 information to crash reports.
4534 information to crash reports.
4531
4535
4532 2002-02-12 Fernando Perez <fperez@colorado.edu>
4536 2002-02-12 Fernando Perez <fperez@colorado.edu>
4533
4537
4534 * Released 0.2.5.
4538 * Released 0.2.5.
4535
4539
4536 2002-02-11 Fernando Perez <fperez@colorado.edu>
4540 2002-02-11 Fernando Perez <fperez@colorado.edu>
4537
4541
4538 * Wrote a relatively complete Windows installer. It puts
4542 * Wrote a relatively complete Windows installer. It puts
4539 everything in place, creates Start Menu entries and fixes the
4543 everything in place, creates Start Menu entries and fixes the
4540 color issues. Nothing fancy, but it works.
4544 color issues. Nothing fancy, but it works.
4541
4545
4542 2002-02-10 Fernando Perez <fperez@colorado.edu>
4546 2002-02-10 Fernando Perez <fperez@colorado.edu>
4543
4547
4544 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4548 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4545 os.path.expanduser() call so that we can type @run ~/myfile.py and
4549 os.path.expanduser() call so that we can type @run ~/myfile.py and
4546 have thigs work as expected.
4550 have thigs work as expected.
4547
4551
4548 * IPython/genutils.py (page): fixed exception handling so things
4552 * IPython/genutils.py (page): fixed exception handling so things
4549 work both in Unix and Windows correctly. Quitting a pager triggers
4553 work both in Unix and Windows correctly. Quitting a pager triggers
4550 an IOError/broken pipe in Unix, and in windows not finding a pager
4554 an IOError/broken pipe in Unix, and in windows not finding a pager
4551 is also an IOError, so I had to actually look at the return value
4555 is also an IOError, so I had to actually look at the return value
4552 of the exception, not just the exception itself. Should be ok now.
4556 of the exception, not just the exception itself. Should be ok now.
4553
4557
4554 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4558 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4555 modified to allow case-insensitive color scheme changes.
4559 modified to allow case-insensitive color scheme changes.
4556
4560
4557 2002-02-09 Fernando Perez <fperez@colorado.edu>
4561 2002-02-09 Fernando Perez <fperez@colorado.edu>
4558
4562
4559 * IPython/genutils.py (native_line_ends): new function to leave
4563 * IPython/genutils.py (native_line_ends): new function to leave
4560 user config files with os-native line-endings.
4564 user config files with os-native line-endings.
4561
4565
4562 * README and manual updates.
4566 * README and manual updates.
4563
4567
4564 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4568 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4565 instead of StringType to catch Unicode strings.
4569 instead of StringType to catch Unicode strings.
4566
4570
4567 * IPython/genutils.py (filefind): fixed bug for paths with
4571 * IPython/genutils.py (filefind): fixed bug for paths with
4568 embedded spaces (very common in Windows).
4572 embedded spaces (very common in Windows).
4569
4573
4570 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4574 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4571 files under Windows, so that they get automatically associated
4575 files under Windows, so that they get automatically associated
4572 with a text editor. Windows makes it a pain to handle
4576 with a text editor. Windows makes it a pain to handle
4573 extension-less files.
4577 extension-less files.
4574
4578
4575 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4579 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4576 warning about readline only occur for Posix. In Windows there's no
4580 warning about readline only occur for Posix. In Windows there's no
4577 way to get readline, so why bother with the warning.
4581 way to get readline, so why bother with the warning.
4578
4582
4579 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4583 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4580 for __str__ instead of dir(self), since dir() changed in 2.2.
4584 for __str__ instead of dir(self), since dir() changed in 2.2.
4581
4585
4582 * Ported to Windows! Tested on XP, I suspect it should work fine
4586 * Ported to Windows! Tested on XP, I suspect it should work fine
4583 on NT/2000, but I don't think it will work on 98 et al. That
4587 on NT/2000, but I don't think it will work on 98 et al. That
4584 series of Windows is such a piece of junk anyway that I won't try
4588 series of Windows is such a piece of junk anyway that I won't try
4585 porting it there. The XP port was straightforward, showed a few
4589 porting it there. The XP port was straightforward, showed a few
4586 bugs here and there (fixed all), in particular some string
4590 bugs here and there (fixed all), in particular some string
4587 handling stuff which required considering Unicode strings (which
4591 handling stuff which required considering Unicode strings (which
4588 Windows uses). This is good, but hasn't been too tested :) No
4592 Windows uses). This is good, but hasn't been too tested :) No
4589 fancy installer yet, I'll put a note in the manual so people at
4593 fancy installer yet, I'll put a note in the manual so people at
4590 least make manually a shortcut.
4594 least make manually a shortcut.
4591
4595
4592 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4596 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4593 into a single one, "colors". This now controls both prompt and
4597 into a single one, "colors". This now controls both prompt and
4594 exception color schemes, and can be changed both at startup
4598 exception color schemes, and can be changed both at startup
4595 (either via command-line switches or via ipythonrc files) and at
4599 (either via command-line switches or via ipythonrc files) and at
4596 runtime, with @colors.
4600 runtime, with @colors.
4597 (Magic.magic_run): renamed @prun to @run and removed the old
4601 (Magic.magic_run): renamed @prun to @run and removed the old
4598 @run. The two were too similar to warrant keeping both.
4602 @run. The two were too similar to warrant keeping both.
4599
4603
4600 2002-02-03 Fernando Perez <fperez@colorado.edu>
4604 2002-02-03 Fernando Perez <fperez@colorado.edu>
4601
4605
4602 * IPython/iplib.py (install_first_time): Added comment on how to
4606 * IPython/iplib.py (install_first_time): Added comment on how to
4603 configure the color options for first-time users. Put a <return>
4607 configure the color options for first-time users. Put a <return>
4604 request at the end so that small-terminal users get a chance to
4608 request at the end so that small-terminal users get a chance to
4605 read the startup info.
4609 read the startup info.
4606
4610
4607 2002-01-23 Fernando Perez <fperez@colorado.edu>
4611 2002-01-23 Fernando Perez <fperez@colorado.edu>
4608
4612
4609 * IPython/iplib.py (CachedOutput.update): Changed output memory
4613 * IPython/iplib.py (CachedOutput.update): Changed output memory
4610 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4614 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4611 input history we still use _i. Did this b/c these variable are
4615 input history we still use _i. Did this b/c these variable are
4612 very commonly used in interactive work, so the less we need to
4616 very commonly used in interactive work, so the less we need to
4613 type the better off we are.
4617 type the better off we are.
4614 (Magic.magic_prun): updated @prun to better handle the namespaces
4618 (Magic.magic_prun): updated @prun to better handle the namespaces
4615 the file will run in, including a fix for __name__ not being set
4619 the file will run in, including a fix for __name__ not being set
4616 before.
4620 before.
4617
4621
4618 2002-01-20 Fernando Perez <fperez@colorado.edu>
4622 2002-01-20 Fernando Perez <fperez@colorado.edu>
4619
4623
4620 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4624 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4621 extra garbage for Python 2.2. Need to look more carefully into
4625 extra garbage for Python 2.2. Need to look more carefully into
4622 this later.
4626 this later.
4623
4627
4624 2002-01-19 Fernando Perez <fperez@colorado.edu>
4628 2002-01-19 Fernando Perez <fperez@colorado.edu>
4625
4629
4626 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4630 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4627 display SyntaxError exceptions properly formatted when they occur
4631 display SyntaxError exceptions properly formatted when they occur
4628 (they can be triggered by imported code).
4632 (they can be triggered by imported code).
4629
4633
4630 2002-01-18 Fernando Perez <fperez@colorado.edu>
4634 2002-01-18 Fernando Perez <fperez@colorado.edu>
4631
4635
4632 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4636 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4633 SyntaxError exceptions are reported nicely formatted, instead of
4637 SyntaxError exceptions are reported nicely formatted, instead of
4634 spitting out only offset information as before.
4638 spitting out only offset information as before.
4635 (Magic.magic_prun): Added the @prun function for executing
4639 (Magic.magic_prun): Added the @prun function for executing
4636 programs with command line args inside IPython.
4640 programs with command line args inside IPython.
4637
4641
4638 2002-01-16 Fernando Perez <fperez@colorado.edu>
4642 2002-01-16 Fernando Perez <fperez@colorado.edu>
4639
4643
4640 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4644 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4641 to *not* include the last item given in a range. This brings their
4645 to *not* include the last item given in a range. This brings their
4642 behavior in line with Python's slicing:
4646 behavior in line with Python's slicing:
4643 a[n1:n2] -> a[n1]...a[n2-1]
4647 a[n1:n2] -> a[n1]...a[n2-1]
4644 It may be a bit less convenient, but I prefer to stick to Python's
4648 It may be a bit less convenient, but I prefer to stick to Python's
4645 conventions *everywhere*, so users never have to wonder.
4649 conventions *everywhere*, so users never have to wonder.
4646 (Magic.magic_macro): Added @macro function to ease the creation of
4650 (Magic.magic_macro): Added @macro function to ease the creation of
4647 macros.
4651 macros.
4648
4652
4649 2002-01-05 Fernando Perez <fperez@colorado.edu>
4653 2002-01-05 Fernando Perez <fperez@colorado.edu>
4650
4654
4651 * Released 0.2.4.
4655 * Released 0.2.4.
4652
4656
4653 * IPython/iplib.py (Magic.magic_pdef):
4657 * IPython/iplib.py (Magic.magic_pdef):
4654 (InteractiveShell.safe_execfile): report magic lines and error
4658 (InteractiveShell.safe_execfile): report magic lines and error
4655 lines without line numbers so one can easily copy/paste them for
4659 lines without line numbers so one can easily copy/paste them for
4656 re-execution.
4660 re-execution.
4657
4661
4658 * Updated manual with recent changes.
4662 * Updated manual with recent changes.
4659
4663
4660 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4664 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4661 docstring printing when class? is called. Very handy for knowing
4665 docstring printing when class? is called. Very handy for knowing
4662 how to create class instances (as long as __init__ is well
4666 how to create class instances (as long as __init__ is well
4663 documented, of course :)
4667 documented, of course :)
4664 (Magic.magic_doc): print both class and constructor docstrings.
4668 (Magic.magic_doc): print both class and constructor docstrings.
4665 (Magic.magic_pdef): give constructor info if passed a class and
4669 (Magic.magic_pdef): give constructor info if passed a class and
4666 __call__ info for callable object instances.
4670 __call__ info for callable object instances.
4667
4671
4668 2002-01-04 Fernando Perez <fperez@colorado.edu>
4672 2002-01-04 Fernando Perez <fperez@colorado.edu>
4669
4673
4670 * Made deep_reload() off by default. It doesn't always work
4674 * Made deep_reload() off by default. It doesn't always work
4671 exactly as intended, so it's probably safer to have it off. It's
4675 exactly as intended, so it's probably safer to have it off. It's
4672 still available as dreload() anyway, so nothing is lost.
4676 still available as dreload() anyway, so nothing is lost.
4673
4677
4674 2002-01-02 Fernando Perez <fperez@colorado.edu>
4678 2002-01-02 Fernando Perez <fperez@colorado.edu>
4675
4679
4676 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4680 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4677 so I wanted an updated release).
4681 so I wanted an updated release).
4678
4682
4679 2001-12-27 Fernando Perez <fperez@colorado.edu>
4683 2001-12-27 Fernando Perez <fperez@colorado.edu>
4680
4684
4681 * IPython/iplib.py (InteractiveShell.interact): Added the original
4685 * IPython/iplib.py (InteractiveShell.interact): Added the original
4682 code from 'code.py' for this module in order to change the
4686 code from 'code.py' for this module in order to change the
4683 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4687 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4684 the history cache would break when the user hit Ctrl-C, and
4688 the history cache would break when the user hit Ctrl-C, and
4685 interact() offers no way to add any hooks to it.
4689 interact() offers no way to add any hooks to it.
4686
4690
4687 2001-12-23 Fernando Perez <fperez@colorado.edu>
4691 2001-12-23 Fernando Perez <fperez@colorado.edu>
4688
4692
4689 * setup.py: added check for 'MANIFEST' before trying to remove
4693 * setup.py: added check for 'MANIFEST' before trying to remove
4690 it. Thanks to Sean Reifschneider.
4694 it. Thanks to Sean Reifschneider.
4691
4695
4692 2001-12-22 Fernando Perez <fperez@colorado.edu>
4696 2001-12-22 Fernando Perez <fperez@colorado.edu>
4693
4697
4694 * Released 0.2.2.
4698 * Released 0.2.2.
4695
4699
4696 * Finished (reasonably) writing the manual. Later will add the
4700 * Finished (reasonably) writing the manual. Later will add the
4697 python-standard navigation stylesheets, but for the time being
4701 python-standard navigation stylesheets, but for the time being
4698 it's fairly complete. Distribution will include html and pdf
4702 it's fairly complete. Distribution will include html and pdf
4699 versions.
4703 versions.
4700
4704
4701 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4705 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4702 (MayaVi author).
4706 (MayaVi author).
4703
4707
4704 2001-12-21 Fernando Perez <fperez@colorado.edu>
4708 2001-12-21 Fernando Perez <fperez@colorado.edu>
4705
4709
4706 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4710 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4707 good public release, I think (with the manual and the distutils
4711 good public release, I think (with the manual and the distutils
4708 installer). The manual can use some work, but that can go
4712 installer). The manual can use some work, but that can go
4709 slowly. Otherwise I think it's quite nice for end users. Next
4713 slowly. Otherwise I think it's quite nice for end users. Next
4710 summer, rewrite the guts of it...
4714 summer, rewrite the guts of it...
4711
4715
4712 * Changed format of ipythonrc files to use whitespace as the
4716 * Changed format of ipythonrc files to use whitespace as the
4713 separator instead of an explicit '='. Cleaner.
4717 separator instead of an explicit '='. Cleaner.
4714
4718
4715 2001-12-20 Fernando Perez <fperez@colorado.edu>
4719 2001-12-20 Fernando Perez <fperez@colorado.edu>
4716
4720
4717 * Started a manual in LyX. For now it's just a quick merge of the
4721 * Started a manual in LyX. For now it's just a quick merge of the
4718 various internal docstrings and READMEs. Later it may grow into a
4722 various internal docstrings and READMEs. Later it may grow into a
4719 nice, full-blown manual.
4723 nice, full-blown manual.
4720
4724
4721 * Set up a distutils based installer. Installation should now be
4725 * Set up a distutils based installer. Installation should now be
4722 trivially simple for end-users.
4726 trivially simple for end-users.
4723
4727
4724 2001-12-11 Fernando Perez <fperez@colorado.edu>
4728 2001-12-11 Fernando Perez <fperez@colorado.edu>
4725
4729
4726 * Released 0.2.0. First public release, announced it at
4730 * Released 0.2.0. First public release, announced it at
4727 comp.lang.python. From now on, just bugfixes...
4731 comp.lang.python. From now on, just bugfixes...
4728
4732
4729 * Went through all the files, set copyright/license notices and
4733 * Went through all the files, set copyright/license notices and
4730 cleaned up things. Ready for release.
4734 cleaned up things. Ready for release.
4731
4735
4732 2001-12-10 Fernando Perez <fperez@colorado.edu>
4736 2001-12-10 Fernando Perez <fperez@colorado.edu>
4733
4737
4734 * Changed the first-time installer not to use tarfiles. It's more
4738 * Changed the first-time installer not to use tarfiles. It's more
4735 robust now and less unix-dependent. Also makes it easier for
4739 robust now and less unix-dependent. Also makes it easier for
4736 people to later upgrade versions.
4740 people to later upgrade versions.
4737
4741
4738 * Changed @exit to @abort to reflect the fact that it's pretty
4742 * Changed @exit to @abort to reflect the fact that it's pretty
4739 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4743 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4740 becomes significant only when IPyhton is embedded: in that case,
4744 becomes significant only when IPyhton is embedded: in that case,
4741 C-D closes IPython only, but @abort kills the enclosing program
4745 C-D closes IPython only, but @abort kills the enclosing program
4742 too (unless it had called IPython inside a try catching
4746 too (unless it had called IPython inside a try catching
4743 SystemExit).
4747 SystemExit).
4744
4748
4745 * Created Shell module which exposes the actuall IPython Shell
4749 * Created Shell module which exposes the actuall IPython Shell
4746 classes, currently the normal and the embeddable one. This at
4750 classes, currently the normal and the embeddable one. This at
4747 least offers a stable interface we won't need to change when
4751 least offers a stable interface we won't need to change when
4748 (later) the internals are rewritten. That rewrite will be confined
4752 (later) the internals are rewritten. That rewrite will be confined
4749 to iplib and ipmaker, but the Shell interface should remain as is.
4753 to iplib and ipmaker, but the Shell interface should remain as is.
4750
4754
4751 * Added embed module which offers an embeddable IPShell object,
4755 * Added embed module which offers an embeddable IPShell object,
4752 useful to fire up IPython *inside* a running program. Great for
4756 useful to fire up IPython *inside* a running program. Great for
4753 debugging or dynamical data analysis.
4757 debugging or dynamical data analysis.
4754
4758
4755 2001-12-08 Fernando Perez <fperez@colorado.edu>
4759 2001-12-08 Fernando Perez <fperez@colorado.edu>
4756
4760
4757 * Fixed small bug preventing seeing info from methods of defined
4761 * Fixed small bug preventing seeing info from methods of defined
4758 objects (incorrect namespace in _ofind()).
4762 objects (incorrect namespace in _ofind()).
4759
4763
4760 * Documentation cleanup. Moved the main usage docstrings to a
4764 * Documentation cleanup. Moved the main usage docstrings to a
4761 separate file, usage.py (cleaner to maintain, and hopefully in the
4765 separate file, usage.py (cleaner to maintain, and hopefully in the
4762 future some perlpod-like way of producing interactive, man and
4766 future some perlpod-like way of producing interactive, man and
4763 html docs out of it will be found).
4767 html docs out of it will be found).
4764
4768
4765 * Added @profile to see your profile at any time.
4769 * Added @profile to see your profile at any time.
4766
4770
4767 * Added @p as an alias for 'print'. It's especially convenient if
4771 * Added @p as an alias for 'print'. It's especially convenient if
4768 using automagic ('p x' prints x).
4772 using automagic ('p x' prints x).
4769
4773
4770 * Small cleanups and fixes after a pychecker run.
4774 * Small cleanups and fixes after a pychecker run.
4771
4775
4772 * Changed the @cd command to handle @cd - and @cd -<n> for
4776 * Changed the @cd command to handle @cd - and @cd -<n> for
4773 visiting any directory in _dh.
4777 visiting any directory in _dh.
4774
4778
4775 * Introduced _dh, a history of visited directories. @dhist prints
4779 * Introduced _dh, a history of visited directories. @dhist prints
4776 it out with numbers.
4780 it out with numbers.
4777
4781
4778 2001-12-07 Fernando Perez <fperez@colorado.edu>
4782 2001-12-07 Fernando Perez <fperez@colorado.edu>
4779
4783
4780 * Released 0.1.22
4784 * Released 0.1.22
4781
4785
4782 * Made initialization a bit more robust against invalid color
4786 * Made initialization a bit more robust against invalid color
4783 options in user input (exit, not traceback-crash).
4787 options in user input (exit, not traceback-crash).
4784
4788
4785 * Changed the bug crash reporter to write the report only in the
4789 * Changed the bug crash reporter to write the report only in the
4786 user's .ipython directory. That way IPython won't litter people's
4790 user's .ipython directory. That way IPython won't litter people's
4787 hard disks with crash files all over the place. Also print on
4791 hard disks with crash files all over the place. Also print on
4788 screen the necessary mail command.
4792 screen the necessary mail command.
4789
4793
4790 * With the new ultraTB, implemented LightBG color scheme for light
4794 * With the new ultraTB, implemented LightBG color scheme for light
4791 background terminals. A lot of people like white backgrounds, so I
4795 background terminals. A lot of people like white backgrounds, so I
4792 guess we should at least give them something readable.
4796 guess we should at least give them something readable.
4793
4797
4794 2001-12-06 Fernando Perez <fperez@colorado.edu>
4798 2001-12-06 Fernando Perez <fperez@colorado.edu>
4795
4799
4796 * Modified the structure of ultraTB. Now there's a proper class
4800 * Modified the structure of ultraTB. Now there's a proper class
4797 for tables of color schemes which allow adding schemes easily and
4801 for tables of color schemes which allow adding schemes easily and
4798 switching the active scheme without creating a new instance every
4802 switching the active scheme without creating a new instance every
4799 time (which was ridiculous). The syntax for creating new schemes
4803 time (which was ridiculous). The syntax for creating new schemes
4800 is also cleaner. I think ultraTB is finally done, with a clean
4804 is also cleaner. I think ultraTB is finally done, with a clean
4801 class structure. Names are also much cleaner (now there's proper
4805 class structure. Names are also much cleaner (now there's proper
4802 color tables, no need for every variable to also have 'color' in
4806 color tables, no need for every variable to also have 'color' in
4803 its name).
4807 its name).
4804
4808
4805 * Broke down genutils into separate files. Now genutils only
4809 * Broke down genutils into separate files. Now genutils only
4806 contains utility functions, and classes have been moved to their
4810 contains utility functions, and classes have been moved to their
4807 own files (they had enough independent functionality to warrant
4811 own files (they had enough independent functionality to warrant
4808 it): ConfigLoader, OutputTrap, Struct.
4812 it): ConfigLoader, OutputTrap, Struct.
4809
4813
4810 2001-12-05 Fernando Perez <fperez@colorado.edu>
4814 2001-12-05 Fernando Perez <fperez@colorado.edu>
4811
4815
4812 * IPython turns 21! Released version 0.1.21, as a candidate for
4816 * IPython turns 21! Released version 0.1.21, as a candidate for
4813 public consumption. If all goes well, release in a few days.
4817 public consumption. If all goes well, release in a few days.
4814
4818
4815 * Fixed path bug (files in Extensions/ directory wouldn't be found
4819 * Fixed path bug (files in Extensions/ directory wouldn't be found
4816 unless IPython/ was explicitly in sys.path).
4820 unless IPython/ was explicitly in sys.path).
4817
4821
4818 * Extended the FlexCompleter class as MagicCompleter to allow
4822 * Extended the FlexCompleter class as MagicCompleter to allow
4819 completion of @-starting lines.
4823 completion of @-starting lines.
4820
4824
4821 * Created __release__.py file as a central repository for release
4825 * Created __release__.py file as a central repository for release
4822 info that other files can read from.
4826 info that other files can read from.
4823
4827
4824 * Fixed small bug in logging: when logging was turned on in
4828 * Fixed small bug in logging: when logging was turned on in
4825 mid-session, old lines with special meanings (!@?) were being
4829 mid-session, old lines with special meanings (!@?) were being
4826 logged without the prepended comment, which is necessary since
4830 logged without the prepended comment, which is necessary since
4827 they are not truly valid python syntax. This should make session
4831 they are not truly valid python syntax. This should make session
4828 restores produce less errors.
4832 restores produce less errors.
4829
4833
4830 * The namespace cleanup forced me to make a FlexCompleter class
4834 * The namespace cleanup forced me to make a FlexCompleter class
4831 which is nothing but a ripoff of rlcompleter, but with selectable
4835 which is nothing but a ripoff of rlcompleter, but with selectable
4832 namespace (rlcompleter only works in __main__.__dict__). I'll try
4836 namespace (rlcompleter only works in __main__.__dict__). I'll try
4833 to submit a note to the authors to see if this change can be
4837 to submit a note to the authors to see if this change can be
4834 incorporated in future rlcompleter releases (Dec.6: done)
4838 incorporated in future rlcompleter releases (Dec.6: done)
4835
4839
4836 * More fixes to namespace handling. It was a mess! Now all
4840 * More fixes to namespace handling. It was a mess! Now all
4837 explicit references to __main__.__dict__ are gone (except when
4841 explicit references to __main__.__dict__ are gone (except when
4838 really needed) and everything is handled through the namespace
4842 really needed) and everything is handled through the namespace
4839 dicts in the IPython instance. We seem to be getting somewhere
4843 dicts in the IPython instance. We seem to be getting somewhere
4840 with this, finally...
4844 with this, finally...
4841
4845
4842 * Small documentation updates.
4846 * Small documentation updates.
4843
4847
4844 * Created the Extensions directory under IPython (with an
4848 * Created the Extensions directory under IPython (with an
4845 __init__.py). Put the PhysicalQ stuff there. This directory should
4849 __init__.py). Put the PhysicalQ stuff there. This directory should
4846 be used for all special-purpose extensions.
4850 be used for all special-purpose extensions.
4847
4851
4848 * File renaming:
4852 * File renaming:
4849 ipythonlib --> ipmaker
4853 ipythonlib --> ipmaker
4850 ipplib --> iplib
4854 ipplib --> iplib
4851 This makes a bit more sense in terms of what these files actually do.
4855 This makes a bit more sense in terms of what these files actually do.
4852
4856
4853 * Moved all the classes and functions in ipythonlib to ipplib, so
4857 * Moved all the classes and functions in ipythonlib to ipplib, so
4854 now ipythonlib only has make_IPython(). This will ease up its
4858 now ipythonlib only has make_IPython(). This will ease up its
4855 splitting in smaller functional chunks later.
4859 splitting in smaller functional chunks later.
4856
4860
4857 * Cleaned up (done, I think) output of @whos. Better column
4861 * Cleaned up (done, I think) output of @whos. Better column
4858 formatting, and now shows str(var) for as much as it can, which is
4862 formatting, and now shows str(var) for as much as it can, which is
4859 typically what one gets with a 'print var'.
4863 typically what one gets with a 'print var'.
4860
4864
4861 2001-12-04 Fernando Perez <fperez@colorado.edu>
4865 2001-12-04 Fernando Perez <fperez@colorado.edu>
4862
4866
4863 * Fixed namespace problems. Now builtin/IPyhton/user names get
4867 * Fixed namespace problems. Now builtin/IPyhton/user names get
4864 properly reported in their namespace. Internal namespace handling
4868 properly reported in their namespace. Internal namespace handling
4865 is finally getting decent (not perfect yet, but much better than
4869 is finally getting decent (not perfect yet, but much better than
4866 the ad-hoc mess we had).
4870 the ad-hoc mess we had).
4867
4871
4868 * Removed -exit option. If people just want to run a python
4872 * Removed -exit option. If people just want to run a python
4869 script, that's what the normal interpreter is for. Less
4873 script, that's what the normal interpreter is for. Less
4870 unnecessary options, less chances for bugs.
4874 unnecessary options, less chances for bugs.
4871
4875
4872 * Added a crash handler which generates a complete post-mortem if
4876 * Added a crash handler which generates a complete post-mortem if
4873 IPython crashes. This will help a lot in tracking bugs down the
4877 IPython crashes. This will help a lot in tracking bugs down the
4874 road.
4878 road.
4875
4879
4876 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4880 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4877 which were boud to functions being reassigned would bypass the
4881 which were boud to functions being reassigned would bypass the
4878 logger, breaking the sync of _il with the prompt counter. This
4882 logger, breaking the sync of _il with the prompt counter. This
4879 would then crash IPython later when a new line was logged.
4883 would then crash IPython later when a new line was logged.
4880
4884
4881 2001-12-02 Fernando Perez <fperez@colorado.edu>
4885 2001-12-02 Fernando Perez <fperez@colorado.edu>
4882
4886
4883 * Made IPython a package. This means people don't have to clutter
4887 * Made IPython a package. This means people don't have to clutter
4884 their sys.path with yet another directory. Changed the INSTALL
4888 their sys.path with yet another directory. Changed the INSTALL
4885 file accordingly.
4889 file accordingly.
4886
4890
4887 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4891 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4888 sorts its output (so @who shows it sorted) and @whos formats the
4892 sorts its output (so @who shows it sorted) and @whos formats the
4889 table according to the width of the first column. Nicer, easier to
4893 table according to the width of the first column. Nicer, easier to
4890 read. Todo: write a generic table_format() which takes a list of
4894 read. Todo: write a generic table_format() which takes a list of
4891 lists and prints it nicely formatted, with optional row/column
4895 lists and prints it nicely formatted, with optional row/column
4892 separators and proper padding and justification.
4896 separators and proper padding and justification.
4893
4897
4894 * Released 0.1.20
4898 * Released 0.1.20
4895
4899
4896 * Fixed bug in @log which would reverse the inputcache list (a
4900 * Fixed bug in @log which would reverse the inputcache list (a
4897 copy operation was missing).
4901 copy operation was missing).
4898
4902
4899 * Code cleanup. @config was changed to use page(). Better, since
4903 * Code cleanup. @config was changed to use page(). Better, since
4900 its output is always quite long.
4904 its output is always quite long.
4901
4905
4902 * Itpl is back as a dependency. I was having too many problems
4906 * Itpl is back as a dependency. I was having too many problems
4903 getting the parametric aliases to work reliably, and it's just
4907 getting the parametric aliases to work reliably, and it's just
4904 easier to code weird string operations with it than playing %()s
4908 easier to code weird string operations with it than playing %()s
4905 games. It's only ~6k, so I don't think it's too big a deal.
4909 games. It's only ~6k, so I don't think it's too big a deal.
4906
4910
4907 * Found (and fixed) a very nasty bug with history. !lines weren't
4911 * Found (and fixed) a very nasty bug with history. !lines weren't
4908 getting cached, and the out of sync caches would crash
4912 getting cached, and the out of sync caches would crash
4909 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4913 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4910 division of labor a bit better. Bug fixed, cleaner structure.
4914 division of labor a bit better. Bug fixed, cleaner structure.
4911
4915
4912 2001-12-01 Fernando Perez <fperez@colorado.edu>
4916 2001-12-01 Fernando Perez <fperez@colorado.edu>
4913
4917
4914 * Released 0.1.19
4918 * Released 0.1.19
4915
4919
4916 * Added option -n to @hist to prevent line number printing. Much
4920 * Added option -n to @hist to prevent line number printing. Much
4917 easier to copy/paste code this way.
4921 easier to copy/paste code this way.
4918
4922
4919 * Created global _il to hold the input list. Allows easy
4923 * Created global _il to hold the input list. Allows easy
4920 re-execution of blocks of code by slicing it (inspired by Janko's
4924 re-execution of blocks of code by slicing it (inspired by Janko's
4921 comment on 'macros').
4925 comment on 'macros').
4922
4926
4923 * Small fixes and doc updates.
4927 * Small fixes and doc updates.
4924
4928
4925 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4929 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4926 much too fragile with automagic. Handles properly multi-line
4930 much too fragile with automagic. Handles properly multi-line
4927 statements and takes parameters.
4931 statements and takes parameters.
4928
4932
4929 2001-11-30 Fernando Perez <fperez@colorado.edu>
4933 2001-11-30 Fernando Perez <fperez@colorado.edu>
4930
4934
4931 * Version 0.1.18 released.
4935 * Version 0.1.18 released.
4932
4936
4933 * Fixed nasty namespace bug in initial module imports.
4937 * Fixed nasty namespace bug in initial module imports.
4934
4938
4935 * Added copyright/license notes to all code files (except
4939 * Added copyright/license notes to all code files (except
4936 DPyGetOpt). For the time being, LGPL. That could change.
4940 DPyGetOpt). For the time being, LGPL. That could change.
4937
4941
4938 * Rewrote a much nicer README, updated INSTALL, cleaned up
4942 * Rewrote a much nicer README, updated INSTALL, cleaned up
4939 ipythonrc-* samples.
4943 ipythonrc-* samples.
4940
4944
4941 * Overall code/documentation cleanup. Basically ready for
4945 * Overall code/documentation cleanup. Basically ready for
4942 release. Only remaining thing: licence decision (LGPL?).
4946 release. Only remaining thing: licence decision (LGPL?).
4943
4947
4944 * Converted load_config to a class, ConfigLoader. Now recursion
4948 * Converted load_config to a class, ConfigLoader. Now recursion
4945 control is better organized. Doesn't include the same file twice.
4949 control is better organized. Doesn't include the same file twice.
4946
4950
4947 2001-11-29 Fernando Perez <fperez@colorado.edu>
4951 2001-11-29 Fernando Perez <fperez@colorado.edu>
4948
4952
4949 * Got input history working. Changed output history variables from
4953 * Got input history working. Changed output history variables from
4950 _p to _o so that _i is for input and _o for output. Just cleaner
4954 _p to _o so that _i is for input and _o for output. Just cleaner
4951 convention.
4955 convention.
4952
4956
4953 * Implemented parametric aliases. This pretty much allows the
4957 * Implemented parametric aliases. This pretty much allows the
4954 alias system to offer full-blown shell convenience, I think.
4958 alias system to offer full-blown shell convenience, I think.
4955
4959
4956 * Version 0.1.17 released, 0.1.18 opened.
4960 * Version 0.1.17 released, 0.1.18 opened.
4957
4961
4958 * dot_ipython/ipythonrc (alias): added documentation.
4962 * dot_ipython/ipythonrc (alias): added documentation.
4959 (xcolor): Fixed small bug (xcolors -> xcolor)
4963 (xcolor): Fixed small bug (xcolors -> xcolor)
4960
4964
4961 * Changed the alias system. Now alias is a magic command to define
4965 * Changed the alias system. Now alias is a magic command to define
4962 aliases just like the shell. Rationale: the builtin magics should
4966 aliases just like the shell. Rationale: the builtin magics should
4963 be there for things deeply connected to IPython's
4967 be there for things deeply connected to IPython's
4964 architecture. And this is a much lighter system for what I think
4968 architecture. And this is a much lighter system for what I think
4965 is the really important feature: allowing users to define quickly
4969 is the really important feature: allowing users to define quickly
4966 magics that will do shell things for them, so they can customize
4970 magics that will do shell things for them, so they can customize
4967 IPython easily to match their work habits. If someone is really
4971 IPython easily to match their work habits. If someone is really
4968 desperate to have another name for a builtin alias, they can
4972 desperate to have another name for a builtin alias, they can
4969 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4973 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4970 works.
4974 works.
4971
4975
4972 2001-11-28 Fernando Perez <fperez@colorado.edu>
4976 2001-11-28 Fernando Perez <fperez@colorado.edu>
4973
4977
4974 * Changed @file so that it opens the source file at the proper
4978 * Changed @file so that it opens the source file at the proper
4975 line. Since it uses less, if your EDITOR environment is
4979 line. Since it uses less, if your EDITOR environment is
4976 configured, typing v will immediately open your editor of choice
4980 configured, typing v will immediately open your editor of choice
4977 right at the line where the object is defined. Not as quick as
4981 right at the line where the object is defined. Not as quick as
4978 having a direct @edit command, but for all intents and purposes it
4982 having a direct @edit command, but for all intents and purposes it
4979 works. And I don't have to worry about writing @edit to deal with
4983 works. And I don't have to worry about writing @edit to deal with
4980 all the editors, less does that.
4984 all the editors, less does that.
4981
4985
4982 * Version 0.1.16 released, 0.1.17 opened.
4986 * Version 0.1.16 released, 0.1.17 opened.
4983
4987
4984 * Fixed some nasty bugs in the page/page_dumb combo that could
4988 * Fixed some nasty bugs in the page/page_dumb combo that could
4985 crash IPython.
4989 crash IPython.
4986
4990
4987 2001-11-27 Fernando Perez <fperez@colorado.edu>
4991 2001-11-27 Fernando Perez <fperez@colorado.edu>
4988
4992
4989 * Version 0.1.15 released, 0.1.16 opened.
4993 * Version 0.1.15 released, 0.1.16 opened.
4990
4994
4991 * Finally got ? and ?? to work for undefined things: now it's
4995 * Finally got ? and ?? to work for undefined things: now it's
4992 possible to type {}.get? and get information about the get method
4996 possible to type {}.get? and get information about the get method
4993 of dicts, or os.path? even if only os is defined (so technically
4997 of dicts, or os.path? even if only os is defined (so technically
4994 os.path isn't). Works at any level. For example, after import os,
4998 os.path isn't). Works at any level. For example, after import os,
4995 os?, os.path?, os.path.abspath? all work. This is great, took some
4999 os?, os.path?, os.path.abspath? all work. This is great, took some
4996 work in _ofind.
5000 work in _ofind.
4997
5001
4998 * Fixed more bugs with logging. The sanest way to do it was to add
5002 * Fixed more bugs with logging. The sanest way to do it was to add
4999 to @log a 'mode' parameter. Killed two in one shot (this mode
5003 to @log a 'mode' parameter. Killed two in one shot (this mode
5000 option was a request of Janko's). I think it's finally clean
5004 option was a request of Janko's). I think it's finally clean
5001 (famous last words).
5005 (famous last words).
5002
5006
5003 * Added a page_dumb() pager which does a decent job of paging on
5007 * Added a page_dumb() pager which does a decent job of paging on
5004 screen, if better things (like less) aren't available. One less
5008 screen, if better things (like less) aren't available. One less
5005 unix dependency (someday maybe somebody will port this to
5009 unix dependency (someday maybe somebody will port this to
5006 windows).
5010 windows).
5007
5011
5008 * Fixed problem in magic_log: would lock of logging out if log
5012 * Fixed problem in magic_log: would lock of logging out if log
5009 creation failed (because it would still think it had succeeded).
5013 creation failed (because it would still think it had succeeded).
5010
5014
5011 * Improved the page() function using curses to auto-detect screen
5015 * Improved the page() function using curses to auto-detect screen
5012 size. Now it can make a much better decision on whether to print
5016 size. Now it can make a much better decision on whether to print
5013 or page a string. Option screen_length was modified: a value 0
5017 or page a string. Option screen_length was modified: a value 0
5014 means auto-detect, and that's the default now.
5018 means auto-detect, and that's the default now.
5015
5019
5016 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5020 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5017 go out. I'll test it for a few days, then talk to Janko about
5021 go out. I'll test it for a few days, then talk to Janko about
5018 licences and announce it.
5022 licences and announce it.
5019
5023
5020 * Fixed the length of the auto-generated ---> prompt which appears
5024 * Fixed the length of the auto-generated ---> prompt which appears
5021 for auto-parens and auto-quotes. Getting this right isn't trivial,
5025 for auto-parens and auto-quotes. Getting this right isn't trivial,
5022 with all the color escapes, different prompt types and optional
5026 with all the color escapes, different prompt types and optional
5023 separators. But it seems to be working in all the combinations.
5027 separators. But it seems to be working in all the combinations.
5024
5028
5025 2001-11-26 Fernando Perez <fperez@colorado.edu>
5029 2001-11-26 Fernando Perez <fperez@colorado.edu>
5026
5030
5027 * Wrote a regexp filter to get option types from the option names
5031 * Wrote a regexp filter to get option types from the option names
5028 string. This eliminates the need to manually keep two duplicate
5032 string. This eliminates the need to manually keep two duplicate
5029 lists.
5033 lists.
5030
5034
5031 * Removed the unneeded check_option_names. Now options are handled
5035 * Removed the unneeded check_option_names. Now options are handled
5032 in a much saner manner and it's easy to visually check that things
5036 in a much saner manner and it's easy to visually check that things
5033 are ok.
5037 are ok.
5034
5038
5035 * Updated version numbers on all files I modified to carry a
5039 * Updated version numbers on all files I modified to carry a
5036 notice so Janko and Nathan have clear version markers.
5040 notice so Janko and Nathan have clear version markers.
5037
5041
5038 * Updated docstring for ultraTB with my changes. I should send
5042 * Updated docstring for ultraTB with my changes. I should send
5039 this to Nathan.
5043 this to Nathan.
5040
5044
5041 * Lots of small fixes. Ran everything through pychecker again.
5045 * Lots of small fixes. Ran everything through pychecker again.
5042
5046
5043 * Made loading of deep_reload an cmd line option. If it's not too
5047 * Made loading of deep_reload an cmd line option. If it's not too
5044 kosher, now people can just disable it. With -nodeep_reload it's
5048 kosher, now people can just disable it. With -nodeep_reload it's
5045 still available as dreload(), it just won't overwrite reload().
5049 still available as dreload(), it just won't overwrite reload().
5046
5050
5047 * Moved many options to the no| form (-opt and -noopt
5051 * Moved many options to the no| form (-opt and -noopt
5048 accepted). Cleaner.
5052 accepted). Cleaner.
5049
5053
5050 * Changed magic_log so that if called with no parameters, it uses
5054 * Changed magic_log so that if called with no parameters, it uses
5051 'rotate' mode. That way auto-generated logs aren't automatically
5055 'rotate' mode. That way auto-generated logs aren't automatically
5052 over-written. For normal logs, now a backup is made if it exists
5056 over-written. For normal logs, now a backup is made if it exists
5053 (only 1 level of backups). A new 'backup' mode was added to the
5057 (only 1 level of backups). A new 'backup' mode was added to the
5054 Logger class to support this. This was a request by Janko.
5058 Logger class to support this. This was a request by Janko.
5055
5059
5056 * Added @logoff/@logon to stop/restart an active log.
5060 * Added @logoff/@logon to stop/restart an active log.
5057
5061
5058 * Fixed a lot of bugs in log saving/replay. It was pretty
5062 * Fixed a lot of bugs in log saving/replay. It was pretty
5059 broken. Now special lines (!@,/) appear properly in the command
5063 broken. Now special lines (!@,/) appear properly in the command
5060 history after a log replay.
5064 history after a log replay.
5061
5065
5062 * Tried and failed to implement full session saving via pickle. My
5066 * Tried and failed to implement full session saving via pickle. My
5063 idea was to pickle __main__.__dict__, but modules can't be
5067 idea was to pickle __main__.__dict__, but modules can't be
5064 pickled. This would be a better alternative to replaying logs, but
5068 pickled. This would be a better alternative to replaying logs, but
5065 seems quite tricky to get to work. Changed -session to be called
5069 seems quite tricky to get to work. Changed -session to be called
5066 -logplay, which more accurately reflects what it does. And if we
5070 -logplay, which more accurately reflects what it does. And if we
5067 ever get real session saving working, -session is now available.
5071 ever get real session saving working, -session is now available.
5068
5072
5069 * Implemented color schemes for prompts also. As for tracebacks,
5073 * Implemented color schemes for prompts also. As for tracebacks,
5070 currently only NoColor and Linux are supported. But now the
5074 currently only NoColor and Linux are supported. But now the
5071 infrastructure is in place, based on a generic ColorScheme
5075 infrastructure is in place, based on a generic ColorScheme
5072 class. So writing and activating new schemes both for the prompts
5076 class. So writing and activating new schemes both for the prompts
5073 and the tracebacks should be straightforward.
5077 and the tracebacks should be straightforward.
5074
5078
5075 * Version 0.1.13 released, 0.1.14 opened.
5079 * Version 0.1.13 released, 0.1.14 opened.
5076
5080
5077 * Changed handling of options for output cache. Now counter is
5081 * Changed handling of options for output cache. Now counter is
5078 hardwired starting at 1 and one specifies the maximum number of
5082 hardwired starting at 1 and one specifies the maximum number of
5079 entries *in the outcache* (not the max prompt counter). This is
5083 entries *in the outcache* (not the max prompt counter). This is
5080 much better, since many statements won't increase the cache
5084 much better, since many statements won't increase the cache
5081 count. It also eliminated some confusing options, now there's only
5085 count. It also eliminated some confusing options, now there's only
5082 one: cache_size.
5086 one: cache_size.
5083
5087
5084 * Added 'alias' magic function and magic_alias option in the
5088 * Added 'alias' magic function and magic_alias option in the
5085 ipythonrc file. Now the user can easily define whatever names he
5089 ipythonrc file. Now the user can easily define whatever names he
5086 wants for the magic functions without having to play weird
5090 wants for the magic functions without having to play weird
5087 namespace games. This gives IPython a real shell-like feel.
5091 namespace games. This gives IPython a real shell-like feel.
5088
5092
5089 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5093 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5090 @ or not).
5094 @ or not).
5091
5095
5092 This was one of the last remaining 'visible' bugs (that I know
5096 This was one of the last remaining 'visible' bugs (that I know
5093 of). I think if I can clean up the session loading so it works
5097 of). I think if I can clean up the session loading so it works
5094 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5098 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5095 about licensing).
5099 about licensing).
5096
5100
5097 2001-11-25 Fernando Perez <fperez@colorado.edu>
5101 2001-11-25 Fernando Perez <fperez@colorado.edu>
5098
5102
5099 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5103 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5100 there's a cleaner distinction between what ? and ?? show.
5104 there's a cleaner distinction between what ? and ?? show.
5101
5105
5102 * Added screen_length option. Now the user can define his own
5106 * Added screen_length option. Now the user can define his own
5103 screen size for page() operations.
5107 screen size for page() operations.
5104
5108
5105 * Implemented magic shell-like functions with automatic code
5109 * Implemented magic shell-like functions with automatic code
5106 generation. Now adding another function is just a matter of adding
5110 generation. Now adding another function is just a matter of adding
5107 an entry to a dict, and the function is dynamically generated at
5111 an entry to a dict, and the function is dynamically generated at
5108 run-time. Python has some really cool features!
5112 run-time. Python has some really cool features!
5109
5113
5110 * Renamed many options to cleanup conventions a little. Now all
5114 * Renamed many options to cleanup conventions a little. Now all
5111 are lowercase, and only underscores where needed. Also in the code
5115 are lowercase, and only underscores where needed. Also in the code
5112 option name tables are clearer.
5116 option name tables are clearer.
5113
5117
5114 * Changed prompts a little. Now input is 'In [n]:' instead of
5118 * Changed prompts a little. Now input is 'In [n]:' instead of
5115 'In[n]:='. This allows it the numbers to be aligned with the
5119 'In[n]:='. This allows it the numbers to be aligned with the
5116 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5120 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5117 Python (it was a Mathematica thing). The '...' continuation prompt
5121 Python (it was a Mathematica thing). The '...' continuation prompt
5118 was also changed a little to align better.
5122 was also changed a little to align better.
5119
5123
5120 * Fixed bug when flushing output cache. Not all _p<n> variables
5124 * Fixed bug when flushing output cache. Not all _p<n> variables
5121 exist, so their deletion needs to be wrapped in a try:
5125 exist, so their deletion needs to be wrapped in a try:
5122
5126
5123 * Figured out how to properly use inspect.formatargspec() (it
5127 * Figured out how to properly use inspect.formatargspec() (it
5124 requires the args preceded by *). So I removed all the code from
5128 requires the args preceded by *). So I removed all the code from
5125 _get_pdef in Magic, which was just replicating that.
5129 _get_pdef in Magic, which was just replicating that.
5126
5130
5127 * Added test to prefilter to allow redefining magic function names
5131 * Added test to prefilter to allow redefining magic function names
5128 as variables. This is ok, since the @ form is always available,
5132 as variables. This is ok, since the @ form is always available,
5129 but whe should allow the user to define a variable called 'ls' if
5133 but whe should allow the user to define a variable called 'ls' if
5130 he needs it.
5134 he needs it.
5131
5135
5132 * Moved the ToDo information from README into a separate ToDo.
5136 * Moved the ToDo information from README into a separate ToDo.
5133
5137
5134 * General code cleanup and small bugfixes. I think it's close to a
5138 * General code cleanup and small bugfixes. I think it's close to a
5135 state where it can be released, obviously with a big 'beta'
5139 state where it can be released, obviously with a big 'beta'
5136 warning on it.
5140 warning on it.
5137
5141
5138 * Got the magic function split to work. Now all magics are defined
5142 * Got the magic function split to work. Now all magics are defined
5139 in a separate class. It just organizes things a bit, and now
5143 in a separate class. It just organizes things a bit, and now
5140 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5144 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5141 was too long).
5145 was too long).
5142
5146
5143 * Changed @clear to @reset to avoid potential confusions with
5147 * Changed @clear to @reset to avoid potential confusions with
5144 the shell command clear. Also renamed @cl to @clear, which does
5148 the shell command clear. Also renamed @cl to @clear, which does
5145 exactly what people expect it to from their shell experience.
5149 exactly what people expect it to from their shell experience.
5146
5150
5147 Added a check to the @reset command (since it's so
5151 Added a check to the @reset command (since it's so
5148 destructive, it's probably a good idea to ask for confirmation).
5152 destructive, it's probably a good idea to ask for confirmation).
5149 But now reset only works for full namespace resetting. Since the
5153 But now reset only works for full namespace resetting. Since the
5150 del keyword is already there for deleting a few specific
5154 del keyword is already there for deleting a few specific
5151 variables, I don't see the point of having a redundant magic
5155 variables, I don't see the point of having a redundant magic
5152 function for the same task.
5156 function for the same task.
5153
5157
5154 2001-11-24 Fernando Perez <fperez@colorado.edu>
5158 2001-11-24 Fernando Perez <fperez@colorado.edu>
5155
5159
5156 * Updated the builtin docs (esp. the ? ones).
5160 * Updated the builtin docs (esp. the ? ones).
5157
5161
5158 * Ran all the code through pychecker. Not terribly impressed with
5162 * Ran all the code through pychecker. Not terribly impressed with
5159 it: lots of spurious warnings and didn't really find anything of
5163 it: lots of spurious warnings and didn't really find anything of
5160 substance (just a few modules being imported and not used).
5164 substance (just a few modules being imported and not used).
5161
5165
5162 * Implemented the new ultraTB functionality into IPython. New
5166 * Implemented the new ultraTB functionality into IPython. New
5163 option: xcolors. This chooses color scheme. xmode now only selects
5167 option: xcolors. This chooses color scheme. xmode now only selects
5164 between Plain and Verbose. Better orthogonality.
5168 between Plain and Verbose. Better orthogonality.
5165
5169
5166 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5170 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5167 mode and color scheme for the exception handlers. Now it's
5171 mode and color scheme for the exception handlers. Now it's
5168 possible to have the verbose traceback with no coloring.
5172 possible to have the verbose traceback with no coloring.
5169
5173
5170 2001-11-23 Fernando Perez <fperez@colorado.edu>
5174 2001-11-23 Fernando Perez <fperez@colorado.edu>
5171
5175
5172 * Version 0.1.12 released, 0.1.13 opened.
5176 * Version 0.1.12 released, 0.1.13 opened.
5173
5177
5174 * Removed option to set auto-quote and auto-paren escapes by
5178 * Removed option to set auto-quote and auto-paren escapes by
5175 user. The chances of breaking valid syntax are just too high. If
5179 user. The chances of breaking valid syntax are just too high. If
5176 someone *really* wants, they can always dig into the code.
5180 someone *really* wants, they can always dig into the code.
5177
5181
5178 * Made prompt separators configurable.
5182 * Made prompt separators configurable.
5179
5183
5180 2001-11-22 Fernando Perez <fperez@colorado.edu>
5184 2001-11-22 Fernando Perez <fperez@colorado.edu>
5181
5185
5182 * Small bugfixes in many places.
5186 * Small bugfixes in many places.
5183
5187
5184 * Removed the MyCompleter class from ipplib. It seemed redundant
5188 * Removed the MyCompleter class from ipplib. It seemed redundant
5185 with the C-p,C-n history search functionality. Less code to
5189 with the C-p,C-n history search functionality. Less code to
5186 maintain.
5190 maintain.
5187
5191
5188 * Moved all the original ipython.py code into ipythonlib.py. Right
5192 * Moved all the original ipython.py code into ipythonlib.py. Right
5189 now it's just one big dump into a function called make_IPython, so
5193 now it's just one big dump into a function called make_IPython, so
5190 no real modularity has been gained. But at least it makes the
5194 no real modularity has been gained. But at least it makes the
5191 wrapper script tiny, and since ipythonlib is a module, it gets
5195 wrapper script tiny, and since ipythonlib is a module, it gets
5192 compiled and startup is much faster.
5196 compiled and startup is much faster.
5193
5197
5194 This is a reasobably 'deep' change, so we should test it for a
5198 This is a reasobably 'deep' change, so we should test it for a
5195 while without messing too much more with the code.
5199 while without messing too much more with the code.
5196
5200
5197 2001-11-21 Fernando Perez <fperez@colorado.edu>
5201 2001-11-21 Fernando Perez <fperez@colorado.edu>
5198
5202
5199 * Version 0.1.11 released, 0.1.12 opened for further work.
5203 * Version 0.1.11 released, 0.1.12 opened for further work.
5200
5204
5201 * Removed dependency on Itpl. It was only needed in one place. It
5205 * Removed dependency on Itpl. It was only needed in one place. It
5202 would be nice if this became part of python, though. It makes life
5206 would be nice if this became part of python, though. It makes life
5203 *a lot* easier in some cases.
5207 *a lot* easier in some cases.
5204
5208
5205 * Simplified the prefilter code a bit. Now all handlers are
5209 * Simplified the prefilter code a bit. Now all handlers are
5206 expected to explicitly return a value (at least a blank string).
5210 expected to explicitly return a value (at least a blank string).
5207
5211
5208 * Heavy edits in ipplib. Removed the help system altogether. Now
5212 * Heavy edits in ipplib. Removed the help system altogether. Now
5209 obj?/?? is used for inspecting objects, a magic @doc prints
5213 obj?/?? is used for inspecting objects, a magic @doc prints
5210 docstrings, and full-blown Python help is accessed via the 'help'
5214 docstrings, and full-blown Python help is accessed via the 'help'
5211 keyword. This cleans up a lot of code (less to maintain) and does
5215 keyword. This cleans up a lot of code (less to maintain) and does
5212 the job. Since 'help' is now a standard Python component, might as
5216 the job. Since 'help' is now a standard Python component, might as
5213 well use it and remove duplicate functionality.
5217 well use it and remove duplicate functionality.
5214
5218
5215 Also removed the option to use ipplib as a standalone program. By
5219 Also removed the option to use ipplib as a standalone program. By
5216 now it's too dependent on other parts of IPython to function alone.
5220 now it's too dependent on other parts of IPython to function alone.
5217
5221
5218 * Fixed bug in genutils.pager. It would crash if the pager was
5222 * Fixed bug in genutils.pager. It would crash if the pager was
5219 exited immediately after opening (broken pipe).
5223 exited immediately after opening (broken pipe).
5220
5224
5221 * Trimmed down the VerboseTB reporting a little. The header is
5225 * Trimmed down the VerboseTB reporting a little. The header is
5222 much shorter now and the repeated exception arguments at the end
5226 much shorter now and the repeated exception arguments at the end
5223 have been removed. For interactive use the old header seemed a bit
5227 have been removed. For interactive use the old header seemed a bit
5224 excessive.
5228 excessive.
5225
5229
5226 * Fixed small bug in output of @whos for variables with multi-word
5230 * Fixed small bug in output of @whos for variables with multi-word
5227 types (only first word was displayed).
5231 types (only first word was displayed).
5228
5232
5229 2001-11-17 Fernando Perez <fperez@colorado.edu>
5233 2001-11-17 Fernando Perez <fperez@colorado.edu>
5230
5234
5231 * Version 0.1.10 released, 0.1.11 opened for further work.
5235 * Version 0.1.10 released, 0.1.11 opened for further work.
5232
5236
5233 * Modified dirs and friends. dirs now *returns* the stack (not
5237 * Modified dirs and friends. dirs now *returns* the stack (not
5234 prints), so one can manipulate it as a variable. Convenient to
5238 prints), so one can manipulate it as a variable. Convenient to
5235 travel along many directories.
5239 travel along many directories.
5236
5240
5237 * Fixed bug in magic_pdef: would only work with functions with
5241 * Fixed bug in magic_pdef: would only work with functions with
5238 arguments with default values.
5242 arguments with default values.
5239
5243
5240 2001-11-14 Fernando Perez <fperez@colorado.edu>
5244 2001-11-14 Fernando Perez <fperez@colorado.edu>
5241
5245
5242 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5246 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5243 example with IPython. Various other minor fixes and cleanups.
5247 example with IPython. Various other minor fixes and cleanups.
5244
5248
5245 * Version 0.1.9 released, 0.1.10 opened for further work.
5249 * Version 0.1.9 released, 0.1.10 opened for further work.
5246
5250
5247 * Added sys.path to the list of directories searched in the
5251 * Added sys.path to the list of directories searched in the
5248 execfile= option. It used to be the current directory and the
5252 execfile= option. It used to be the current directory and the
5249 user's IPYTHONDIR only.
5253 user's IPYTHONDIR only.
5250
5254
5251 2001-11-13 Fernando Perez <fperez@colorado.edu>
5255 2001-11-13 Fernando Perez <fperez@colorado.edu>
5252
5256
5253 * Reinstated the raw_input/prefilter separation that Janko had
5257 * Reinstated the raw_input/prefilter separation that Janko had
5254 initially. This gives a more convenient setup for extending the
5258 initially. This gives a more convenient setup for extending the
5255 pre-processor from the outside: raw_input always gets a string,
5259 pre-processor from the outside: raw_input always gets a string,
5256 and prefilter has to process it. We can then redefine prefilter
5260 and prefilter has to process it. We can then redefine prefilter
5257 from the outside and implement extensions for special
5261 from the outside and implement extensions for special
5258 purposes.
5262 purposes.
5259
5263
5260 Today I got one for inputting PhysicalQuantity objects
5264 Today I got one for inputting PhysicalQuantity objects
5261 (from Scientific) without needing any function calls at
5265 (from Scientific) without needing any function calls at
5262 all. Extremely convenient, and it's all done as a user-level
5266 all. Extremely convenient, and it's all done as a user-level
5263 extension (no IPython code was touched). Now instead of:
5267 extension (no IPython code was touched). Now instead of:
5264 a = PhysicalQuantity(4.2,'m/s**2')
5268 a = PhysicalQuantity(4.2,'m/s**2')
5265 one can simply say
5269 one can simply say
5266 a = 4.2 m/s**2
5270 a = 4.2 m/s**2
5267 or even
5271 or even
5268 a = 4.2 m/s^2
5272 a = 4.2 m/s^2
5269
5273
5270 I use this, but it's also a proof of concept: IPython really is
5274 I use this, but it's also a proof of concept: IPython really is
5271 fully user-extensible, even at the level of the parsing of the
5275 fully user-extensible, even at the level of the parsing of the
5272 command line. It's not trivial, but it's perfectly doable.
5276 command line. It's not trivial, but it's perfectly doable.
5273
5277
5274 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5278 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5275 the problem of modules being loaded in the inverse order in which
5279 the problem of modules being loaded in the inverse order in which
5276 they were defined in
5280 they were defined in
5277
5281
5278 * Version 0.1.8 released, 0.1.9 opened for further work.
5282 * Version 0.1.8 released, 0.1.9 opened for further work.
5279
5283
5280 * Added magics pdef, source and file. They respectively show the
5284 * Added magics pdef, source and file. They respectively show the
5281 definition line ('prototype' in C), source code and full python
5285 definition line ('prototype' in C), source code and full python
5282 file for any callable object. The object inspector oinfo uses
5286 file for any callable object. The object inspector oinfo uses
5283 these to show the same information.
5287 these to show the same information.
5284
5288
5285 * Version 0.1.7 released, 0.1.8 opened for further work.
5289 * Version 0.1.7 released, 0.1.8 opened for further work.
5286
5290
5287 * Separated all the magic functions into a class called Magic. The
5291 * Separated all the magic functions into a class called Magic. The
5288 InteractiveShell class was becoming too big for Xemacs to handle
5292 InteractiveShell class was becoming too big for Xemacs to handle
5289 (de-indenting a line would lock it up for 10 seconds while it
5293 (de-indenting a line would lock it up for 10 seconds while it
5290 backtracked on the whole class!)
5294 backtracked on the whole class!)
5291
5295
5292 FIXME: didn't work. It can be done, but right now namespaces are
5296 FIXME: didn't work. It can be done, but right now namespaces are
5293 all messed up. Do it later (reverted it for now, so at least
5297 all messed up. Do it later (reverted it for now, so at least
5294 everything works as before).
5298 everything works as before).
5295
5299
5296 * Got the object introspection system (magic_oinfo) working! I
5300 * Got the object introspection system (magic_oinfo) working! I
5297 think this is pretty much ready for release to Janko, so he can
5301 think this is pretty much ready for release to Janko, so he can
5298 test it for a while and then announce it. Pretty much 100% of what
5302 test it for a while and then announce it. Pretty much 100% of what
5299 I wanted for the 'phase 1' release is ready. Happy, tired.
5303 I wanted for the 'phase 1' release is ready. Happy, tired.
5300
5304
5301 2001-11-12 Fernando Perez <fperez@colorado.edu>
5305 2001-11-12 Fernando Perez <fperez@colorado.edu>
5302
5306
5303 * Version 0.1.6 released, 0.1.7 opened for further work.
5307 * Version 0.1.6 released, 0.1.7 opened for further work.
5304
5308
5305 * Fixed bug in printing: it used to test for truth before
5309 * Fixed bug in printing: it used to test for truth before
5306 printing, so 0 wouldn't print. Now checks for None.
5310 printing, so 0 wouldn't print. Now checks for None.
5307
5311
5308 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5312 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5309 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5313 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5310 reaches by hand into the outputcache. Think of a better way to do
5314 reaches by hand into the outputcache. Think of a better way to do
5311 this later.
5315 this later.
5312
5316
5313 * Various small fixes thanks to Nathan's comments.
5317 * Various small fixes thanks to Nathan's comments.
5314
5318
5315 * Changed magic_pprint to magic_Pprint. This way it doesn't
5319 * Changed magic_pprint to magic_Pprint. This way it doesn't
5316 collide with pprint() and the name is consistent with the command
5320 collide with pprint() and the name is consistent with the command
5317 line option.
5321 line option.
5318
5322
5319 * Changed prompt counter behavior to be fully like
5323 * Changed prompt counter behavior to be fully like
5320 Mathematica's. That is, even input that doesn't return a result
5324 Mathematica's. That is, even input that doesn't return a result
5321 raises the prompt counter. The old behavior was kind of confusing
5325 raises the prompt counter. The old behavior was kind of confusing
5322 (getting the same prompt number several times if the operation
5326 (getting the same prompt number several times if the operation
5323 didn't return a result).
5327 didn't return a result).
5324
5328
5325 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5329 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5326
5330
5327 * Fixed -Classic mode (wasn't working anymore).
5331 * Fixed -Classic mode (wasn't working anymore).
5328
5332
5329 * Added colored prompts using Nathan's new code. Colors are
5333 * Added colored prompts using Nathan's new code. Colors are
5330 currently hardwired, they can be user-configurable. For
5334 currently hardwired, they can be user-configurable. For
5331 developers, they can be chosen in file ipythonlib.py, at the
5335 developers, they can be chosen in file ipythonlib.py, at the
5332 beginning of the CachedOutput class def.
5336 beginning of the CachedOutput class def.
5333
5337
5334 2001-11-11 Fernando Perez <fperez@colorado.edu>
5338 2001-11-11 Fernando Perez <fperez@colorado.edu>
5335
5339
5336 * Version 0.1.5 released, 0.1.6 opened for further work.
5340 * Version 0.1.5 released, 0.1.6 opened for further work.
5337
5341
5338 * Changed magic_env to *return* the environment as a dict (not to
5342 * Changed magic_env to *return* the environment as a dict (not to
5339 print it). This way it prints, but it can also be processed.
5343 print it). This way it prints, but it can also be processed.
5340
5344
5341 * Added Verbose exception reporting to interactive
5345 * Added Verbose exception reporting to interactive
5342 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5346 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5343 traceback. Had to make some changes to the ultraTB file. This is
5347 traceback. Had to make some changes to the ultraTB file. This is
5344 probably the last 'big' thing in my mental todo list. This ties
5348 probably the last 'big' thing in my mental todo list. This ties
5345 in with the next entry:
5349 in with the next entry:
5346
5350
5347 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5351 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5348 has to specify is Plain, Color or Verbose for all exception
5352 has to specify is Plain, Color or Verbose for all exception
5349 handling.
5353 handling.
5350
5354
5351 * Removed ShellServices option. All this can really be done via
5355 * Removed ShellServices option. All this can really be done via
5352 the magic system. It's easier to extend, cleaner and has automatic
5356 the magic system. It's easier to extend, cleaner and has automatic
5353 namespace protection and documentation.
5357 namespace protection and documentation.
5354
5358
5355 2001-11-09 Fernando Perez <fperez@colorado.edu>
5359 2001-11-09 Fernando Perez <fperez@colorado.edu>
5356
5360
5357 * Fixed bug in output cache flushing (missing parameter to
5361 * Fixed bug in output cache flushing (missing parameter to
5358 __init__). Other small bugs fixed (found using pychecker).
5362 __init__). Other small bugs fixed (found using pychecker).
5359
5363
5360 * Version 0.1.4 opened for bugfixing.
5364 * Version 0.1.4 opened for bugfixing.
5361
5365
5362 2001-11-07 Fernando Perez <fperez@colorado.edu>
5366 2001-11-07 Fernando Perez <fperez@colorado.edu>
5363
5367
5364 * Version 0.1.3 released, mainly because of the raw_input bug.
5368 * Version 0.1.3 released, mainly because of the raw_input bug.
5365
5369
5366 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5370 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5367 and when testing for whether things were callable, a call could
5371 and when testing for whether things were callable, a call could
5368 actually be made to certain functions. They would get called again
5372 actually be made to certain functions. They would get called again
5369 once 'really' executed, with a resulting double call. A disaster
5373 once 'really' executed, with a resulting double call. A disaster
5370 in many cases (list.reverse() would never work!).
5374 in many cases (list.reverse() would never work!).
5371
5375
5372 * Removed prefilter() function, moved its code to raw_input (which
5376 * Removed prefilter() function, moved its code to raw_input (which
5373 after all was just a near-empty caller for prefilter). This saves
5377 after all was just a near-empty caller for prefilter). This saves
5374 a function call on every prompt, and simplifies the class a tiny bit.
5378 a function call on every prompt, and simplifies the class a tiny bit.
5375
5379
5376 * Fix _ip to __ip name in magic example file.
5380 * Fix _ip to __ip name in magic example file.
5377
5381
5378 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5382 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5379 work with non-gnu versions of tar.
5383 work with non-gnu versions of tar.
5380
5384
5381 2001-11-06 Fernando Perez <fperez@colorado.edu>
5385 2001-11-06 Fernando Perez <fperez@colorado.edu>
5382
5386
5383 * Version 0.1.2. Just to keep track of the recent changes.
5387 * Version 0.1.2. Just to keep track of the recent changes.
5384
5388
5385 * Fixed nasty bug in output prompt routine. It used to check 'if
5389 * Fixed nasty bug in output prompt routine. It used to check 'if
5386 arg != None...'. Problem is, this fails if arg implements a
5390 arg != None...'. Problem is, this fails if arg implements a
5387 special comparison (__cmp__) which disallows comparing to
5391 special comparison (__cmp__) which disallows comparing to
5388 None. Found it when trying to use the PhysicalQuantity module from
5392 None. Found it when trying to use the PhysicalQuantity module from
5389 ScientificPython.
5393 ScientificPython.
5390
5394
5391 2001-11-05 Fernando Perez <fperez@colorado.edu>
5395 2001-11-05 Fernando Perez <fperez@colorado.edu>
5392
5396
5393 * Also added dirs. Now the pushd/popd/dirs family functions
5397 * Also added dirs. Now the pushd/popd/dirs family functions
5394 basically like the shell, with the added convenience of going home
5398 basically like the shell, with the added convenience of going home
5395 when called with no args.
5399 when called with no args.
5396
5400
5397 * pushd/popd slightly modified to mimic shell behavior more
5401 * pushd/popd slightly modified to mimic shell behavior more
5398 closely.
5402 closely.
5399
5403
5400 * Added env,pushd,popd from ShellServices as magic functions. I
5404 * Added env,pushd,popd from ShellServices as magic functions. I
5401 think the cleanest will be to port all desired functions from
5405 think the cleanest will be to port all desired functions from
5402 ShellServices as magics and remove ShellServices altogether. This
5406 ShellServices as magics and remove ShellServices altogether. This
5403 will provide a single, clean way of adding functionality
5407 will provide a single, clean way of adding functionality
5404 (shell-type or otherwise) to IP.
5408 (shell-type or otherwise) to IP.
5405
5409
5406 2001-11-04 Fernando Perez <fperez@colorado.edu>
5410 2001-11-04 Fernando Perez <fperez@colorado.edu>
5407
5411
5408 * Added .ipython/ directory to sys.path. This way users can keep
5412 * Added .ipython/ directory to sys.path. This way users can keep
5409 customizations there and access them via import.
5413 customizations there and access them via import.
5410
5414
5411 2001-11-03 Fernando Perez <fperez@colorado.edu>
5415 2001-11-03 Fernando Perez <fperez@colorado.edu>
5412
5416
5413 * Opened version 0.1.1 for new changes.
5417 * Opened version 0.1.1 for new changes.
5414
5418
5415 * Changed version number to 0.1.0: first 'public' release, sent to
5419 * Changed version number to 0.1.0: first 'public' release, sent to
5416 Nathan and Janko.
5420 Nathan and Janko.
5417
5421
5418 * Lots of small fixes and tweaks.
5422 * Lots of small fixes and tweaks.
5419
5423
5420 * Minor changes to whos format. Now strings are shown, snipped if
5424 * Minor changes to whos format. Now strings are shown, snipped if
5421 too long.
5425 too long.
5422
5426
5423 * Changed ShellServices to work on __main__ so they show up in @who
5427 * Changed ShellServices to work on __main__ so they show up in @who
5424
5428
5425 * Help also works with ? at the end of a line:
5429 * Help also works with ? at the end of a line:
5426 ?sin and sin?
5430 ?sin and sin?
5427 both produce the same effect. This is nice, as often I use the
5431 both produce the same effect. This is nice, as often I use the
5428 tab-complete to find the name of a method, but I used to then have
5432 tab-complete to find the name of a method, but I used to then have
5429 to go to the beginning of the line to put a ? if I wanted more
5433 to go to the beginning of the line to put a ? if I wanted more
5430 info. Now I can just add the ? and hit return. Convenient.
5434 info. Now I can just add the ? and hit return. Convenient.
5431
5435
5432 2001-11-02 Fernando Perez <fperez@colorado.edu>
5436 2001-11-02 Fernando Perez <fperez@colorado.edu>
5433
5437
5434 * Python version check (>=2.1) added.
5438 * Python version check (>=2.1) added.
5435
5439
5436 * Added LazyPython documentation. At this point the docs are quite
5440 * Added LazyPython documentation. At this point the docs are quite
5437 a mess. A cleanup is in order.
5441 a mess. A cleanup is in order.
5438
5442
5439 * Auto-installer created. For some bizarre reason, the zipfiles
5443 * Auto-installer created. For some bizarre reason, the zipfiles
5440 module isn't working on my system. So I made a tar version
5444 module isn't working on my system. So I made a tar version
5441 (hopefully the command line options in various systems won't kill
5445 (hopefully the command line options in various systems won't kill
5442 me).
5446 me).
5443
5447
5444 * Fixes to Struct in genutils. Now all dictionary-like methods are
5448 * Fixes to Struct in genutils. Now all dictionary-like methods are
5445 protected (reasonably).
5449 protected (reasonably).
5446
5450
5447 * Added pager function to genutils and changed ? to print usage
5451 * Added pager function to genutils and changed ? to print usage
5448 note through it (it was too long).
5452 note through it (it was too long).
5449
5453
5450 * Added the LazyPython functionality. Works great! I changed the
5454 * Added the LazyPython functionality. Works great! I changed the
5451 auto-quote escape to ';', it's on home row and next to '. But
5455 auto-quote escape to ';', it's on home row and next to '. But
5452 both auto-quote and auto-paren (still /) escapes are command-line
5456 both auto-quote and auto-paren (still /) escapes are command-line
5453 parameters.
5457 parameters.
5454
5458
5455
5459
5456 2001-11-01 Fernando Perez <fperez@colorado.edu>
5460 2001-11-01 Fernando Perez <fperez@colorado.edu>
5457
5461
5458 * Version changed to 0.0.7. Fairly large change: configuration now
5462 * Version changed to 0.0.7. Fairly large change: configuration now
5459 is all stored in a directory, by default .ipython. There, all
5463 is all stored in a directory, by default .ipython. There, all
5460 config files have normal looking names (not .names)
5464 config files have normal looking names (not .names)
5461
5465
5462 * Version 0.0.6 Released first to Lucas and Archie as a test
5466 * Version 0.0.6 Released first to Lucas and Archie as a test
5463 run. Since it's the first 'semi-public' release, change version to
5467 run. Since it's the first 'semi-public' release, change version to
5464 > 0.0.6 for any changes now.
5468 > 0.0.6 for any changes now.
5465
5469
5466 * Stuff I had put in the ipplib.py changelog:
5470 * Stuff I had put in the ipplib.py changelog:
5467
5471
5468 Changes to InteractiveShell:
5472 Changes to InteractiveShell:
5469
5473
5470 - Made the usage message a parameter.
5474 - Made the usage message a parameter.
5471
5475
5472 - Require the name of the shell variable to be given. It's a bit
5476 - Require the name of the shell variable to be given. It's a bit
5473 of a hack, but allows the name 'shell' not to be hardwire in the
5477 of a hack, but allows the name 'shell' not to be hardwire in the
5474 magic (@) handler, which is problematic b/c it requires
5478 magic (@) handler, which is problematic b/c it requires
5475 polluting the global namespace with 'shell'. This in turn is
5479 polluting the global namespace with 'shell'. This in turn is
5476 fragile: if a user redefines a variable called shell, things
5480 fragile: if a user redefines a variable called shell, things
5477 break.
5481 break.
5478
5482
5479 - magic @: all functions available through @ need to be defined
5483 - magic @: all functions available through @ need to be defined
5480 as magic_<name>, even though they can be called simply as
5484 as magic_<name>, even though they can be called simply as
5481 @<name>. This allows the special command @magic to gather
5485 @<name>. This allows the special command @magic to gather
5482 information automatically about all existing magic functions,
5486 information automatically about all existing magic functions,
5483 even if they are run-time user extensions, by parsing the shell
5487 even if they are run-time user extensions, by parsing the shell
5484 instance __dict__ looking for special magic_ names.
5488 instance __dict__ looking for special magic_ names.
5485
5489
5486 - mainloop: added *two* local namespace parameters. This allows
5490 - mainloop: added *two* local namespace parameters. This allows
5487 the class to differentiate between parameters which were there
5491 the class to differentiate between parameters which were there
5488 before and after command line initialization was processed. This
5492 before and after command line initialization was processed. This
5489 way, later @who can show things loaded at startup by the
5493 way, later @who can show things loaded at startup by the
5490 user. This trick was necessary to make session saving/reloading
5494 user. This trick was necessary to make session saving/reloading
5491 really work: ideally after saving/exiting/reloading a session,
5495 really work: ideally after saving/exiting/reloading a session,
5492 *everythin* should look the same, including the output of @who. I
5496 *everythin* should look the same, including the output of @who. I
5493 was only able to make this work with this double namespace
5497 was only able to make this work with this double namespace
5494 trick.
5498 trick.
5495
5499
5496 - added a header to the logfile which allows (almost) full
5500 - added a header to the logfile which allows (almost) full
5497 session restoring.
5501 session restoring.
5498
5502
5499 - prepend lines beginning with @ or !, with a and log
5503 - prepend lines beginning with @ or !, with a and log
5500 them. Why? !lines: may be useful to know what you did @lines:
5504 them. Why? !lines: may be useful to know what you did @lines:
5501 they may affect session state. So when restoring a session, at
5505 they may affect session state. So when restoring a session, at
5502 least inform the user of their presence. I couldn't quite get
5506 least inform the user of their presence. I couldn't quite get
5503 them to properly re-execute, but at least the user is warned.
5507 them to properly re-execute, but at least the user is warned.
5504
5508
5505 * Started ChangeLog.
5509 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now