##// END OF EJS Templates
Always show full traceback when newstyle config fails
vivainio -
Show More
@@ -1,770 +1,763 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 2684 2007-08-28 20:05:40Z vivainio $"""
9 $Id: ipmaker.py 2704 2007-09-01 14:32:05Z vivainio $"""
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 try:
23 try:
24 credits._Printer__data = """
24 credits._Printer__data = """
25 Python: %s
25 Python: %s
26
26
27 IPython: Fernando Perez, Janko Hauser, Nathan Gray, and many users.
27 IPython: Fernando Perez, Janko Hauser, Nathan Gray, and many users.
28 See http://ipython.scipy.org for more information.""" \
28 See http://ipython.scipy.org for more information.""" \
29 % credits._Printer__data
29 % credits._Printer__data
30
30
31 copyright._Printer__data += """
31 copyright._Printer__data += """
32
32
33 Copyright (c) 2001-2004 Fernando Perez, Janko Hauser, Nathan Gray.
33 Copyright (c) 2001-2004 Fernando Perez, Janko Hauser, Nathan Gray.
34 All Rights Reserved."""
34 All Rights Reserved."""
35 except NameError:
35 except NameError:
36 # Can happen if ipython was started with 'python -S', so that site.py is
36 # Can happen if ipython was started with 'python -S', so that site.py is
37 # not loaded
37 # not loaded
38 pass
38 pass
39
39
40 #****************************************************************************
40 #****************************************************************************
41 # Required modules
41 # Required modules
42
42
43 # From the standard library
43 # From the standard library
44 import __main__
44 import __main__
45 import __builtin__
45 import __builtin__
46 import os
46 import os
47 import re
47 import re
48 import sys
48 import sys
49 import types
49 import types
50 from pprint import pprint,pformat
50 from pprint import pprint,pformat
51
51
52 # Our own
52 # Our own
53 from IPython import DPyGetOpt
53 from IPython import DPyGetOpt
54 from IPython.ipstruct import Struct
54 from IPython.ipstruct import Struct
55 from IPython.OutputTrap import OutputTrap
55 from IPython.OutputTrap import OutputTrap
56 from IPython.ConfigLoader import ConfigLoader
56 from IPython.ConfigLoader import ConfigLoader
57 from IPython.iplib import InteractiveShell
57 from IPython.iplib import InteractiveShell
58 from IPython.usage import cmd_line_usage,interactive_usage
58 from IPython.usage import cmd_line_usage,interactive_usage
59 from IPython.genutils import *
59 from IPython.genutils import *
60
60
61 #-----------------------------------------------------------------------------
61 #-----------------------------------------------------------------------------
62 def make_IPython(argv=None,user_ns=None,user_global_ns=None,debug=1,
62 def make_IPython(argv=None,user_ns=None,user_global_ns=None,debug=1,
63 rc_override=None,shell_class=InteractiveShell,
63 rc_override=None,shell_class=InteractiveShell,
64 embedded=False,**kw):
64 embedded=False,**kw):
65 """This is a dump of IPython into a single function.
65 """This is a dump of IPython into a single function.
66
66
67 Later it will have to be broken up in a sensible manner.
67 Later it will have to be broken up in a sensible manner.
68
68
69 Arguments:
69 Arguments:
70
70
71 - argv: a list similar to sys.argv[1:]. It should NOT contain the desired
71 - argv: a list similar to sys.argv[1:]. It should NOT contain the desired
72 script name, b/c DPyGetOpt strips the first argument only for the real
72 script name, b/c DPyGetOpt strips the first argument only for the real
73 sys.argv.
73 sys.argv.
74
74
75 - user_ns: a dict to be used as the user's namespace."""
75 - user_ns: a dict to be used as the user's namespace."""
76
76
77 #----------------------------------------------------------------------
77 #----------------------------------------------------------------------
78 # Defaults and initialization
78 # Defaults and initialization
79
79
80 # For developer debugging, deactivates crash handler and uses pdb.
80 # For developer debugging, deactivates crash handler and uses pdb.
81 DEVDEBUG = False
81 DEVDEBUG = False
82
82
83 if argv is None:
83 if argv is None:
84 argv = sys.argv
84 argv = sys.argv
85
85
86 # __IP is the main global that lives throughout and represents the whole
86 # __IP is the main global that lives throughout and represents the whole
87 # application. If the user redefines it, all bets are off as to what
87 # application. If the user redefines it, all bets are off as to what
88 # happens.
88 # happens.
89
89
90 # __IP is the name of he global which the caller will have accessible as
90 # __IP is the name of he global which the caller will have accessible as
91 # __IP.name. We set its name via the first parameter passed to
91 # __IP.name. We set its name via the first parameter passed to
92 # InteractiveShell:
92 # InteractiveShell:
93
93
94 IP = shell_class('__IP',user_ns=user_ns,user_global_ns=user_global_ns,
94 IP = shell_class('__IP',user_ns=user_ns,user_global_ns=user_global_ns,
95 embedded=embedded,**kw)
95 embedded=embedded,**kw)
96
96
97 # Put 'help' in the user namespace
97 # Put 'help' in the user namespace
98 from site import _Helper
98 from site import _Helper
99 IP.user_config_ns = {}
99 IP.user_config_ns = {}
100 IP.user_ns['help'] = _Helper()
100 IP.user_ns['help'] = _Helper()
101
101
102
102
103 if DEVDEBUG:
103 if DEVDEBUG:
104 # For developer debugging only (global flag)
104 # For developer debugging only (global flag)
105 from IPython import ultraTB
105 from IPython import ultraTB
106 sys.excepthook = ultraTB.VerboseTB(call_pdb=1)
106 sys.excepthook = ultraTB.VerboseTB(call_pdb=1)
107
107
108 IP.BANNER_PARTS = ['Python %s\n'
108 IP.BANNER_PARTS = ['Python %s\n'
109 'Type "copyright", "credits" or "license" '
109 'Type "copyright", "credits" or "license" '
110 'for more information.\n'
110 'for more information.\n'
111 % (sys.version.split('\n')[0],),
111 % (sys.version.split('\n')[0],),
112 "IPython %s -- An enhanced Interactive Python."
112 "IPython %s -- An enhanced Interactive Python."
113 % (__version__,),
113 % (__version__,),
114 """\
114 """\
115 ? or %quickref -> Introduction to IPython's features, or quick reference.
115 ? or %quickref -> Introduction to IPython's features, or quick reference.
116 %magic -> Information about IPython's 'magic' % functions.
116 %magic -> Information about IPython's 'magic' % functions.
117 help -> Python's own help system.
117 help -> Python's own help system.
118 object? -> Details about 'object'. ?object also works, ?? prints more.
118 object? -> Details about 'object'. ?object also works, ?? prints more.
119 """ ]
119 """ ]
120
120
121 IP.usage = interactive_usage
121 IP.usage = interactive_usage
122
122
123 # Platform-dependent suffix and directory names. We use _ipython instead
123 # Platform-dependent suffix and directory names. We use _ipython instead
124 # of .ipython under win32 b/c there's software that breaks with .named
124 # of .ipython under win32 b/c there's software that breaks with .named
125 # directories on that platform.
125 # directories on that platform.
126 if os.name == 'posix':
126 if os.name == 'posix':
127 rc_suffix = ''
127 rc_suffix = ''
128 ipdir_def = '.ipython'
128 ipdir_def = '.ipython'
129 else:
129 else:
130 rc_suffix = '.ini'
130 rc_suffix = '.ini'
131 ipdir_def = '_ipython'
131 ipdir_def = '_ipython'
132
132
133 # default directory for configuration
133 # default directory for configuration
134 ipythondir_def = os.path.abspath(os.environ.get('IPYTHONDIR',
134 ipythondir_def = os.path.abspath(os.environ.get('IPYTHONDIR',
135 os.path.join(IP.home_dir,ipdir_def)))
135 os.path.join(IP.home_dir,ipdir_def)))
136
136
137 sys.path.insert(0, '') # add . to sys.path. Fix from Prabhu Ramachandran
137 sys.path.insert(0, '') # add . to sys.path. Fix from Prabhu Ramachandran
138
138
139 # we need the directory where IPython itself is installed
139 # we need the directory where IPython itself is installed
140 import IPython
140 import IPython
141 IPython_dir = os.path.dirname(IPython.__file__)
141 IPython_dir = os.path.dirname(IPython.__file__)
142 del IPython
142 del IPython
143
143
144 #-------------------------------------------------------------------------
144 #-------------------------------------------------------------------------
145 # Command line handling
145 # Command line handling
146
146
147 # Valid command line options (uses DPyGetOpt syntax, like Perl's
147 # Valid command line options (uses DPyGetOpt syntax, like Perl's
148 # GetOpt::Long)
148 # GetOpt::Long)
149
149
150 # Any key not listed here gets deleted even if in the file (like session
150 # Any key not listed here gets deleted even if in the file (like session
151 # or profile). That's deliberate, to maintain the rc namespace clean.
151 # or profile). That's deliberate, to maintain the rc namespace clean.
152
152
153 # Each set of options appears twice: under _conv only the names are
153 # Each set of options appears twice: under _conv only the names are
154 # listed, indicating which type they must be converted to when reading the
154 # listed, indicating which type they must be converted to when reading the
155 # ipythonrc file. And under DPyGetOpt they are listed with the regular
155 # ipythonrc file. And under DPyGetOpt they are listed with the regular
156 # DPyGetOpt syntax (=s,=i,:f,etc).
156 # DPyGetOpt syntax (=s,=i,:f,etc).
157
157
158 # Make sure there's a space before each end of line (they get auto-joined!)
158 # Make sure there's a space before each end of line (they get auto-joined!)
159 cmdline_opts = ('autocall=i autoindent! automagic! banner! cache_size|cs=i '
159 cmdline_opts = ('autocall=i autoindent! automagic! banner! cache_size|cs=i '
160 'c=s classic|cl color_info! colors=s confirm_exit! '
160 'c=s classic|cl color_info! colors=s confirm_exit! '
161 'debug! deep_reload! editor=s log|l messages! nosep '
161 'debug! deep_reload! editor=s log|l messages! nosep '
162 'object_info_string_level=i pdb! '
162 'object_info_string_level=i pdb! '
163 'pprint! prompt_in1|pi1=s prompt_in2|pi2=s prompt_out|po=s '
163 'pprint! prompt_in1|pi1=s prompt_in2|pi2=s prompt_out|po=s '
164 'pylab_import_all! '
164 'pylab_import_all! '
165 'quick screen_length|sl=i prompts_pad_left=i '
165 'quick screen_length|sl=i prompts_pad_left=i '
166 'logfile|lf=s logplay|lp=s profile|p=s '
166 'logfile|lf=s logplay|lp=s profile|p=s '
167 'readline! readline_merge_completions! '
167 'readline! readline_merge_completions! '
168 'readline_omit__names! '
168 'readline_omit__names! '
169 'rcfile=s separate_in|si=s separate_out|so=s '
169 'rcfile=s separate_in|si=s separate_out|so=s '
170 'separate_out2|so2=s xmode=s wildcards_case_sensitive! '
170 'separate_out2|so2=s xmode=s wildcards_case_sensitive! '
171 'magic_docstrings system_verbose! '
171 'magic_docstrings system_verbose! '
172 'multi_line_specials! '
172 'multi_line_specials! '
173 'term_title! wxversion=s '
173 'term_title! wxversion=s '
174 'autoedit_syntax!')
174 'autoedit_syntax!')
175
175
176 # Options that can *only* appear at the cmd line (not in rcfiles).
176 # Options that can *only* appear at the cmd line (not in rcfiles).
177
177
178 # The "ignore" option is a kludge so that Emacs buffers don't crash, since
178 # The "ignore" option is a kludge so that Emacs buffers don't crash, since
179 # the 'C-c !' command in emacs automatically appends a -i option at the end.
179 # the 'C-c !' command in emacs automatically appends a -i option at the end.
180 cmdline_only = ('help interact|i ipythondir=s Version upgrade '
180 cmdline_only = ('help interact|i ipythondir=s Version upgrade '
181 'gthread! qthread! q4thread! wthread! pylab! tk!')
181 'gthread! qthread! q4thread! wthread! pylab! tk!')
182
182
183 # Build the actual name list to be used by DPyGetOpt
183 # Build the actual name list to be used by DPyGetOpt
184 opts_names = qw(cmdline_opts) + qw(cmdline_only)
184 opts_names = qw(cmdline_opts) + qw(cmdline_only)
185
185
186 # Set sensible command line defaults.
186 # Set sensible command line defaults.
187 # This should have everything from cmdline_opts and cmdline_only
187 # This should have everything from cmdline_opts and cmdline_only
188 opts_def = Struct(autocall = 1,
188 opts_def = Struct(autocall = 1,
189 autoedit_syntax = 0,
189 autoedit_syntax = 0,
190 autoindent = 0,
190 autoindent = 0,
191 automagic = 1,
191 automagic = 1,
192 banner = 1,
192 banner = 1,
193 cache_size = 1000,
193 cache_size = 1000,
194 c = '',
194 c = '',
195 classic = 0,
195 classic = 0,
196 colors = 'NoColor',
196 colors = 'NoColor',
197 color_info = 0,
197 color_info = 0,
198 confirm_exit = 1,
198 confirm_exit = 1,
199 debug = 0,
199 debug = 0,
200 deep_reload = 0,
200 deep_reload = 0,
201 editor = '0',
201 editor = '0',
202 help = 0,
202 help = 0,
203 interact = 0,
203 interact = 0,
204 ipythondir = ipythondir_def,
204 ipythondir = ipythondir_def,
205 log = 0,
205 log = 0,
206 logfile = '',
206 logfile = '',
207 logplay = '',
207 logplay = '',
208 multi_line_specials = 1,
208 multi_line_specials = 1,
209 messages = 1,
209 messages = 1,
210 object_info_string_level = 0,
210 object_info_string_level = 0,
211 nosep = 0,
211 nosep = 0,
212 pdb = 0,
212 pdb = 0,
213 pprint = 0,
213 pprint = 0,
214 profile = '',
214 profile = '',
215 prompt_in1 = 'In [\\#]: ',
215 prompt_in1 = 'In [\\#]: ',
216 prompt_in2 = ' .\\D.: ',
216 prompt_in2 = ' .\\D.: ',
217 prompt_out = 'Out[\\#]: ',
217 prompt_out = 'Out[\\#]: ',
218 prompts_pad_left = 1,
218 prompts_pad_left = 1,
219 pylab_import_all = 1,
219 pylab_import_all = 1,
220 quiet = 0,
220 quiet = 0,
221 quick = 0,
221 quick = 0,
222 readline = 1,
222 readline = 1,
223 readline_merge_completions = 1,
223 readline_merge_completions = 1,
224 readline_omit__names = 0,
224 readline_omit__names = 0,
225 rcfile = 'ipythonrc' + rc_suffix,
225 rcfile = 'ipythonrc' + rc_suffix,
226 screen_length = 0,
226 screen_length = 0,
227 separate_in = '\n',
227 separate_in = '\n',
228 separate_out = '\n',
228 separate_out = '\n',
229 separate_out2 = '',
229 separate_out2 = '',
230 system_header = 'IPython system call: ',
230 system_header = 'IPython system call: ',
231 system_verbose = 0,
231 system_verbose = 0,
232 gthread = 0,
232 gthread = 0,
233 qthread = 0,
233 qthread = 0,
234 q4thread = 0,
234 q4thread = 0,
235 wthread = 0,
235 wthread = 0,
236 pylab = 0,
236 pylab = 0,
237 term_title = 1,
237 term_title = 1,
238 tk = 0,
238 tk = 0,
239 upgrade = 0,
239 upgrade = 0,
240 Version = 0,
240 Version = 0,
241 xmode = 'Verbose',
241 xmode = 'Verbose',
242 wildcards_case_sensitive = 1,
242 wildcards_case_sensitive = 1,
243 wxversion = '0',
243 wxversion = '0',
244 magic_docstrings = 0, # undocumented, for doc generation
244 magic_docstrings = 0, # undocumented, for doc generation
245 )
245 )
246
246
247 # Things that will *only* appear in rcfiles (not at the command line).
247 # Things that will *only* appear in rcfiles (not at the command line).
248 # Make sure there's a space before each end of line (they get auto-joined!)
248 # Make sure there's a space before each end of line (they get auto-joined!)
249 rcfile_opts = { qwflat: 'include import_mod import_all execfile ',
249 rcfile_opts = { qwflat: 'include import_mod import_all execfile ',
250 qw_lol: 'import_some ',
250 qw_lol: 'import_some ',
251 # for things with embedded whitespace:
251 # for things with embedded whitespace:
252 list_strings:'execute alias readline_parse_and_bind ',
252 list_strings:'execute alias readline_parse_and_bind ',
253 # Regular strings need no conversion:
253 # Regular strings need no conversion:
254 None:'readline_remove_delims ',
254 None:'readline_remove_delims ',
255 }
255 }
256 # Default values for these
256 # Default values for these
257 rc_def = Struct(include = [],
257 rc_def = Struct(include = [],
258 import_mod = [],
258 import_mod = [],
259 import_all = [],
259 import_all = [],
260 import_some = [[]],
260 import_some = [[]],
261 execute = [],
261 execute = [],
262 execfile = [],
262 execfile = [],
263 alias = [],
263 alias = [],
264 readline_parse_and_bind = [],
264 readline_parse_and_bind = [],
265 readline_remove_delims = '',
265 readline_remove_delims = '',
266 )
266 )
267
267
268 # Build the type conversion dictionary from the above tables:
268 # Build the type conversion dictionary from the above tables:
269 typeconv = rcfile_opts.copy()
269 typeconv = rcfile_opts.copy()
270 typeconv.update(optstr2types(cmdline_opts))
270 typeconv.update(optstr2types(cmdline_opts))
271
271
272 # FIXME: the None key appears in both, put that back together by hand. Ugly!
272 # FIXME: the None key appears in both, put that back together by hand. Ugly!
273 typeconv[None] += ' ' + rcfile_opts[None]
273 typeconv[None] += ' ' + rcfile_opts[None]
274
274
275 # Remove quotes at ends of all strings (used to protect spaces)
275 # Remove quotes at ends of all strings (used to protect spaces)
276 typeconv[unquote_ends] = typeconv[None]
276 typeconv[unquote_ends] = typeconv[None]
277 del typeconv[None]
277 del typeconv[None]
278
278
279 # Build the list we'll use to make all config decisions with defaults:
279 # Build the list we'll use to make all config decisions with defaults:
280 opts_all = opts_def.copy()
280 opts_all = opts_def.copy()
281 opts_all.update(rc_def)
281 opts_all.update(rc_def)
282
282
283 # Build conflict resolver for recursive loading of config files:
283 # Build conflict resolver for recursive loading of config files:
284 # - preserve means the outermost file maintains the value, it is not
284 # - preserve means the outermost file maintains the value, it is not
285 # overwritten if an included file has the same key.
285 # overwritten if an included file has the same key.
286 # - add_flip applies + to the two values, so it better make sense to add
286 # - add_flip applies + to the two values, so it better make sense to add
287 # those types of keys. But it flips them first so that things loaded
287 # those types of keys. But it flips them first so that things loaded
288 # deeper in the inclusion chain have lower precedence.
288 # deeper in the inclusion chain have lower precedence.
289 conflict = {'preserve': ' '.join([ typeconv[int],
289 conflict = {'preserve': ' '.join([ typeconv[int],
290 typeconv[unquote_ends] ]),
290 typeconv[unquote_ends] ]),
291 'add_flip': ' '.join([ typeconv[qwflat],
291 'add_flip': ' '.join([ typeconv[qwflat],
292 typeconv[qw_lol],
292 typeconv[qw_lol],
293 typeconv[list_strings] ])
293 typeconv[list_strings] ])
294 }
294 }
295
295
296 # Now actually process the command line
296 # Now actually process the command line
297 getopt = DPyGetOpt.DPyGetOpt()
297 getopt = DPyGetOpt.DPyGetOpt()
298 getopt.setIgnoreCase(0)
298 getopt.setIgnoreCase(0)
299
299
300 getopt.parseConfiguration(opts_names)
300 getopt.parseConfiguration(opts_names)
301
301
302 try:
302 try:
303 getopt.processArguments(argv)
303 getopt.processArguments(argv)
304 except:
304 except:
305 print cmd_line_usage
305 print cmd_line_usage
306 warn('\nError in Arguments: ' + `sys.exc_value`)
306 warn('\nError in Arguments: ' + `sys.exc_value`)
307 sys.exit(1)
307 sys.exit(1)
308
308
309 # convert the options dict to a struct for much lighter syntax later
309 # convert the options dict to a struct for much lighter syntax later
310 opts = Struct(getopt.optionValues)
310 opts = Struct(getopt.optionValues)
311 args = getopt.freeValues
311 args = getopt.freeValues
312
312
313 # this is the struct (which has default values at this point) with which
313 # this is the struct (which has default values at this point) with which
314 # we make all decisions:
314 # we make all decisions:
315 opts_all.update(opts)
315 opts_all.update(opts)
316
316
317 # Options that force an immediate exit
317 # Options that force an immediate exit
318 if opts_all.help:
318 if opts_all.help:
319 page(cmd_line_usage)
319 page(cmd_line_usage)
320 sys.exit()
320 sys.exit()
321
321
322 if opts_all.Version:
322 if opts_all.Version:
323 print __version__
323 print __version__
324 sys.exit()
324 sys.exit()
325
325
326 if opts_all.magic_docstrings:
326 if opts_all.magic_docstrings:
327 IP.magic_magic('-latex')
327 IP.magic_magic('-latex')
328 sys.exit()
328 sys.exit()
329
329
330 # add personal ipythondir to sys.path so that users can put things in
330 # add personal ipythondir to sys.path so that users can put things in
331 # there for customization
331 # there for customization
332 sys.path.append(os.path.abspath(opts_all.ipythondir))
332 sys.path.append(os.path.abspath(opts_all.ipythondir))
333
333
334 # Create user config directory if it doesn't exist. This must be done
334 # Create user config directory if it doesn't exist. This must be done
335 # *after* getting the cmd line options.
335 # *after* getting the cmd line options.
336 if not os.path.isdir(opts_all.ipythondir):
336 if not os.path.isdir(opts_all.ipythondir):
337 IP.user_setup(opts_all.ipythondir,rc_suffix,'install')
337 IP.user_setup(opts_all.ipythondir,rc_suffix,'install')
338
338
339 # upgrade user config files while preserving a copy of the originals
339 # upgrade user config files while preserving a copy of the originals
340 if opts_all.upgrade:
340 if opts_all.upgrade:
341 IP.user_setup(opts_all.ipythondir,rc_suffix,'upgrade')
341 IP.user_setup(opts_all.ipythondir,rc_suffix,'upgrade')
342
342
343 # check mutually exclusive options in the *original* command line
343 # check mutually exclusive options in the *original* command line
344 mutex_opts(opts,[qw('log logfile'),qw('rcfile profile'),
344 mutex_opts(opts,[qw('log logfile'),qw('rcfile profile'),
345 qw('classic profile'),qw('classic rcfile')])
345 qw('classic profile'),qw('classic rcfile')])
346
346
347 #---------------------------------------------------------------------------
347 #---------------------------------------------------------------------------
348 # Log replay
348 # Log replay
349
349
350 # if -logplay, we need to 'become' the other session. That basically means
350 # if -logplay, we need to 'become' the other session. That basically means
351 # replacing the current command line environment with that of the old
351 # replacing the current command line environment with that of the old
352 # session and moving on.
352 # session and moving on.
353
353
354 # this is needed so that later we know we're in session reload mode, as
354 # this is needed so that later we know we're in session reload mode, as
355 # opts_all will get overwritten:
355 # opts_all will get overwritten:
356 load_logplay = 0
356 load_logplay = 0
357
357
358 if opts_all.logplay:
358 if opts_all.logplay:
359 load_logplay = opts_all.logplay
359 load_logplay = opts_all.logplay
360 opts_debug_save = opts_all.debug
360 opts_debug_save = opts_all.debug
361 try:
361 try:
362 logplay = open(opts_all.logplay)
362 logplay = open(opts_all.logplay)
363 except IOError:
363 except IOError:
364 if opts_all.debug: IP.InteractiveTB()
364 if opts_all.debug: IP.InteractiveTB()
365 warn('Could not open logplay file '+`opts_all.logplay`)
365 warn('Could not open logplay file '+`opts_all.logplay`)
366 # restore state as if nothing had happened and move on, but make
366 # restore state as if nothing had happened and move on, but make
367 # sure that later we don't try to actually load the session file
367 # sure that later we don't try to actually load the session file
368 logplay = None
368 logplay = None
369 load_logplay = 0
369 load_logplay = 0
370 del opts_all.logplay
370 del opts_all.logplay
371 else:
371 else:
372 try:
372 try:
373 logplay.readline()
373 logplay.readline()
374 logplay.readline();
374 logplay.readline();
375 # this reloads that session's command line
375 # this reloads that session's command line
376 cmd = logplay.readline()[6:]
376 cmd = logplay.readline()[6:]
377 exec cmd
377 exec cmd
378 # restore the true debug flag given so that the process of
378 # restore the true debug flag given so that the process of
379 # session loading itself can be monitored.
379 # session loading itself can be monitored.
380 opts.debug = opts_debug_save
380 opts.debug = opts_debug_save
381 # save the logplay flag so later we don't overwrite the log
381 # save the logplay flag so later we don't overwrite the log
382 opts.logplay = load_logplay
382 opts.logplay = load_logplay
383 # now we must update our own structure with defaults
383 # now we must update our own structure with defaults
384 opts_all.update(opts)
384 opts_all.update(opts)
385 # now load args
385 # now load args
386 cmd = logplay.readline()[6:]
386 cmd = logplay.readline()[6:]
387 exec cmd
387 exec cmd
388 logplay.close()
388 logplay.close()
389 except:
389 except:
390 logplay.close()
390 logplay.close()
391 if opts_all.debug: IP.InteractiveTB()
391 if opts_all.debug: IP.InteractiveTB()
392 warn("Logplay file lacking full configuration information.\n"
392 warn("Logplay file lacking full configuration information.\n"
393 "I'll try to read it, but some things may not work.")
393 "I'll try to read it, but some things may not work.")
394
394
395 #-------------------------------------------------------------------------
395 #-------------------------------------------------------------------------
396 # set up output traps: catch all output from files, being run, modules
396 # set up output traps: catch all output from files, being run, modules
397 # loaded, etc. Then give it to the user in a clean form at the end.
397 # loaded, etc. Then give it to the user in a clean form at the end.
398
398
399 msg_out = 'Output messages. '
399 msg_out = 'Output messages. '
400 msg_err = 'Error messages. '
400 msg_err = 'Error messages. '
401 msg_sep = '\n'
401 msg_sep = '\n'
402 msg = Struct(config = OutputTrap('Configuration Loader',msg_out,
402 msg = Struct(config = OutputTrap('Configuration Loader',msg_out,
403 msg_err,msg_sep,debug,
403 msg_err,msg_sep,debug,
404 quiet_out=1),
404 quiet_out=1),
405 user_exec = OutputTrap('User File Execution',msg_out,
405 user_exec = OutputTrap('User File Execution',msg_out,
406 msg_err,msg_sep,debug),
406 msg_err,msg_sep,debug),
407 logplay = OutputTrap('Log Loader',msg_out,
407 logplay = OutputTrap('Log Loader',msg_out,
408 msg_err,msg_sep,debug),
408 msg_err,msg_sep,debug),
409 summary = ''
409 summary = ''
410 )
410 )
411
411
412 #-------------------------------------------------------------------------
412 #-------------------------------------------------------------------------
413 # Process user ipythonrc-type configuration files
413 # Process user ipythonrc-type configuration files
414
414
415 # turn on output trapping and log to msg.config
415 # turn on output trapping and log to msg.config
416 # remember that with debug on, trapping is actually disabled
416 # remember that with debug on, trapping is actually disabled
417 msg.config.trap_all()
417 msg.config.trap_all()
418
418
419 # look for rcfile in current or default directory
419 # look for rcfile in current or default directory
420 try:
420 try:
421 opts_all.rcfile = filefind(opts_all.rcfile,opts_all.ipythondir)
421 opts_all.rcfile = filefind(opts_all.rcfile,opts_all.ipythondir)
422 except IOError:
422 except IOError:
423 if opts_all.debug: IP.InteractiveTB()
423 if opts_all.debug: IP.InteractiveTB()
424 warn('Configuration file %s not found. Ignoring request.'
424 warn('Configuration file %s not found. Ignoring request.'
425 % (opts_all.rcfile) )
425 % (opts_all.rcfile) )
426
426
427 # 'profiles' are a shorthand notation for config filenames
427 # 'profiles' are a shorthand notation for config filenames
428 profile_handled_by_legacy = False
428 profile_handled_by_legacy = False
429 if opts_all.profile:
429 if opts_all.profile:
430
430
431 try:
431 try:
432 opts_all.rcfile = filefind('ipythonrc-' + opts_all.profile
432 opts_all.rcfile = filefind('ipythonrc-' + opts_all.profile
433 + rc_suffix,
433 + rc_suffix,
434 opts_all.ipythondir)
434 opts_all.ipythondir)
435 profile_handled_by_legacy = True
435 profile_handled_by_legacy = True
436 except IOError:
436 except IOError:
437 if opts_all.debug: IP.InteractiveTB()
437 if opts_all.debug: IP.InteractiveTB()
438 opts.profile = '' # remove profile from options if invalid
438 opts.profile = '' # remove profile from options if invalid
439 # We won't warn anymore, primary method is ipy_profile_PROFNAME
439 # We won't warn anymore, primary method is ipy_profile_PROFNAME
440 # which does trigger a warning.
440 # which does trigger a warning.
441
441
442 # load the config file
442 # load the config file
443 rcfiledata = None
443 rcfiledata = None
444 if opts_all.quick:
444 if opts_all.quick:
445 print 'Launching IPython in quick mode. No config file read.'
445 print 'Launching IPython in quick mode. No config file read.'
446 elif opts_all.rcfile:
446 elif opts_all.rcfile:
447 try:
447 try:
448 cfg_loader = ConfigLoader(conflict)
448 cfg_loader = ConfigLoader(conflict)
449 rcfiledata = cfg_loader.load(opts_all.rcfile,typeconv,
449 rcfiledata = cfg_loader.load(opts_all.rcfile,typeconv,
450 'include',opts_all.ipythondir,
450 'include',opts_all.ipythondir,
451 purge = 1,
451 purge = 1,
452 unique = conflict['preserve'])
452 unique = conflict['preserve'])
453 except:
453 except:
454 IP.InteractiveTB()
454 IP.InteractiveTB()
455 warn('Problems loading configuration file '+
455 warn('Problems loading configuration file '+
456 `opts_all.rcfile`+
456 `opts_all.rcfile`+
457 '\nStarting with default -bare bones- configuration.')
457 '\nStarting with default -bare bones- configuration.')
458 else:
458 else:
459 warn('No valid configuration file found in either currrent directory\n'+
459 warn('No valid configuration file found in either currrent directory\n'+
460 'or in the IPython config. directory: '+`opts_all.ipythondir`+
460 'or in the IPython config. directory: '+`opts_all.ipythondir`+
461 '\nProceeding with internal defaults.')
461 '\nProceeding with internal defaults.')
462
462
463 #------------------------------------------------------------------------
463 #------------------------------------------------------------------------
464 # Set exception handlers in mode requested by user.
464 # Set exception handlers in mode requested by user.
465 otrap = OutputTrap(trap_out=1) # trap messages from magic_xmode
465 otrap = OutputTrap(trap_out=1) # trap messages from magic_xmode
466 IP.magic_xmode(opts_all.xmode)
466 IP.magic_xmode(opts_all.xmode)
467 otrap.release_out()
467 otrap.release_out()
468
468
469 #------------------------------------------------------------------------
469 #------------------------------------------------------------------------
470 # Execute user config
470 # Execute user config
471
471
472 # Create a valid config structure with the right precedence order:
472 # Create a valid config structure with the right precedence order:
473 # defaults < rcfile < command line. This needs to be in the instance, so
473 # defaults < rcfile < command line. This needs to be in the instance, so
474 # that method calls below that rely on it find it.
474 # that method calls below that rely on it find it.
475 IP.rc = rc_def.copy()
475 IP.rc = rc_def.copy()
476
476
477 # Work with a local alias inside this routine to avoid unnecessary
477 # Work with a local alias inside this routine to avoid unnecessary
478 # attribute lookups.
478 # attribute lookups.
479 IP_rc = IP.rc
479 IP_rc = IP.rc
480
480
481 IP_rc.update(opts_def)
481 IP_rc.update(opts_def)
482 if rcfiledata:
482 if rcfiledata:
483 # now we can update
483 # now we can update
484 IP_rc.update(rcfiledata)
484 IP_rc.update(rcfiledata)
485 IP_rc.update(opts)
485 IP_rc.update(opts)
486 IP_rc.update(rc_override)
486 IP_rc.update(rc_override)
487
487
488 # Store the original cmd line for reference:
488 # Store the original cmd line for reference:
489 IP_rc.opts = opts
489 IP_rc.opts = opts
490 IP_rc.args = args
490 IP_rc.args = args
491
491
492 # create a *runtime* Struct like rc for holding parameters which may be
492 # create a *runtime* Struct like rc for holding parameters which may be
493 # created and/or modified by runtime user extensions.
493 # created and/or modified by runtime user extensions.
494 IP.runtime_rc = Struct()
494 IP.runtime_rc = Struct()
495
495
496 # from this point on, all config should be handled through IP_rc,
496 # from this point on, all config should be handled through IP_rc,
497 # opts* shouldn't be used anymore.
497 # opts* shouldn't be used anymore.
498
498
499
499
500 # update IP_rc with some special things that need manual
500 # update IP_rc with some special things that need manual
501 # tweaks. Basically options which affect other options. I guess this
501 # tweaks. Basically options which affect other options. I guess this
502 # should just be written so that options are fully orthogonal and we
502 # should just be written so that options are fully orthogonal and we
503 # wouldn't worry about this stuff!
503 # wouldn't worry about this stuff!
504
504
505 if IP_rc.classic:
505 if IP_rc.classic:
506 IP_rc.quick = 1
506 IP_rc.quick = 1
507 IP_rc.cache_size = 0
507 IP_rc.cache_size = 0
508 IP_rc.pprint = 0
508 IP_rc.pprint = 0
509 IP_rc.prompt_in1 = '>>> '
509 IP_rc.prompt_in1 = '>>> '
510 IP_rc.prompt_in2 = '... '
510 IP_rc.prompt_in2 = '... '
511 IP_rc.prompt_out = ''
511 IP_rc.prompt_out = ''
512 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
512 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
513 IP_rc.colors = 'NoColor'
513 IP_rc.colors = 'NoColor'
514 IP_rc.xmode = 'Plain'
514 IP_rc.xmode = 'Plain'
515
515
516 IP.pre_config_initialization()
516 IP.pre_config_initialization()
517 # configure readline
517 # configure readline
518 # Define the history file for saving commands in between sessions
518 # Define the history file for saving commands in between sessions
519 if IP_rc.profile:
519 if IP_rc.profile:
520 histfname = 'history-%s' % IP_rc.profile
520 histfname = 'history-%s' % IP_rc.profile
521 else:
521 else:
522 histfname = 'history'
522 histfname = 'history'
523 IP.histfile = os.path.join(opts_all.ipythondir,histfname)
523 IP.histfile = os.path.join(opts_all.ipythondir,histfname)
524
524
525 # update exception handlers with rc file status
525 # update exception handlers with rc file status
526 otrap.trap_out() # I don't want these messages ever.
526 otrap.trap_out() # I don't want these messages ever.
527 IP.magic_xmode(IP_rc.xmode)
527 IP.magic_xmode(IP_rc.xmode)
528 otrap.release_out()
528 otrap.release_out()
529
529
530 # activate logging if requested and not reloading a log
530 # activate logging if requested and not reloading a log
531 if IP_rc.logplay:
531 if IP_rc.logplay:
532 IP.magic_logstart(IP_rc.logplay + ' append')
532 IP.magic_logstart(IP_rc.logplay + ' append')
533 elif IP_rc.logfile:
533 elif IP_rc.logfile:
534 IP.magic_logstart(IP_rc.logfile)
534 IP.magic_logstart(IP_rc.logfile)
535 elif IP_rc.log:
535 elif IP_rc.log:
536 IP.magic_logstart()
536 IP.magic_logstart()
537
537
538 # find user editor so that it we don't have to look it up constantly
538 # find user editor so that it we don't have to look it up constantly
539 if IP_rc.editor.strip()=='0':
539 if IP_rc.editor.strip()=='0':
540 try:
540 try:
541 ed = os.environ['EDITOR']
541 ed = os.environ['EDITOR']
542 except KeyError:
542 except KeyError:
543 if os.name == 'posix':
543 if os.name == 'posix':
544 ed = 'vi' # the only one guaranteed to be there!
544 ed = 'vi' # the only one guaranteed to be there!
545 else:
545 else:
546 ed = 'notepad' # same in Windows!
546 ed = 'notepad' # same in Windows!
547 IP_rc.editor = ed
547 IP_rc.editor = ed
548
548
549 # Keep track of whether this is an embedded instance or not (useful for
549 # Keep track of whether this is an embedded instance or not (useful for
550 # post-mortems).
550 # post-mortems).
551 IP_rc.embedded = IP.embedded
551 IP_rc.embedded = IP.embedded
552
552
553 # Recursive reload
553 # Recursive reload
554 try:
554 try:
555 from IPython import deep_reload
555 from IPython import deep_reload
556 if IP_rc.deep_reload:
556 if IP_rc.deep_reload:
557 __builtin__.reload = deep_reload.reload
557 __builtin__.reload = deep_reload.reload
558 else:
558 else:
559 __builtin__.dreload = deep_reload.reload
559 __builtin__.dreload = deep_reload.reload
560 del deep_reload
560 del deep_reload
561 except ImportError:
561 except ImportError:
562 pass
562 pass
563
563
564 # Save the current state of our namespace so that the interactive shell
564 # Save the current state of our namespace so that the interactive shell
565 # can later know which variables have been created by us from config files
565 # can later know which variables have been created by us from config files
566 # and loading. This way, loading a file (in any way) is treated just like
566 # and loading. This way, loading a file (in any way) is treated just like
567 # defining things on the command line, and %who works as expected.
567 # defining things on the command line, and %who works as expected.
568
568
569 # DON'T do anything that affects the namespace beyond this point!
569 # DON'T do anything that affects the namespace beyond this point!
570 IP.internal_ns.update(__main__.__dict__)
570 IP.internal_ns.update(__main__.__dict__)
571
571
572 #IP.internal_ns.update(locals()) # so our stuff doesn't show up in %who
572 #IP.internal_ns.update(locals()) # so our stuff doesn't show up in %who
573
573
574 # Now run through the different sections of the users's config
574 # Now run through the different sections of the users's config
575 if IP_rc.debug:
575 if IP_rc.debug:
576 print 'Trying to execute the following configuration structure:'
576 print 'Trying to execute the following configuration structure:'
577 print '(Things listed first are deeper in the inclusion tree and get'
577 print '(Things listed first are deeper in the inclusion tree and get'
578 print 'loaded first).\n'
578 print 'loaded first).\n'
579 pprint(IP_rc.__dict__)
579 pprint(IP_rc.__dict__)
580
580
581 for mod in IP_rc.import_mod:
581 for mod in IP_rc.import_mod:
582 try:
582 try:
583 exec 'import '+mod in IP.user_ns
583 exec 'import '+mod in IP.user_ns
584 except :
584 except :
585 IP.InteractiveTB()
585 IP.InteractiveTB()
586 import_fail_info(mod)
586 import_fail_info(mod)
587
587
588 for mod_fn in IP_rc.import_some:
588 for mod_fn in IP_rc.import_some:
589 if not mod_fn == []:
589 if not mod_fn == []:
590 mod,fn = mod_fn[0],','.join(mod_fn[1:])
590 mod,fn = mod_fn[0],','.join(mod_fn[1:])
591 try:
591 try:
592 exec 'from '+mod+' import '+fn in IP.user_ns
592 exec 'from '+mod+' import '+fn in IP.user_ns
593 except :
593 except :
594 IP.InteractiveTB()
594 IP.InteractiveTB()
595 import_fail_info(mod,fn)
595 import_fail_info(mod,fn)
596
596
597 for mod in IP_rc.import_all:
597 for mod in IP_rc.import_all:
598 try:
598 try:
599 exec 'from '+mod+' import *' in IP.user_ns
599 exec 'from '+mod+' import *' in IP.user_ns
600 except :
600 except :
601 IP.InteractiveTB()
601 IP.InteractiveTB()
602 import_fail_info(mod)
602 import_fail_info(mod)
603
603
604 for code in IP_rc.execute:
604 for code in IP_rc.execute:
605 try:
605 try:
606 exec code in IP.user_ns
606 exec code in IP.user_ns
607 except:
607 except:
608 IP.InteractiveTB()
608 IP.InteractiveTB()
609 warn('Failure executing code: ' + `code`)
609 warn('Failure executing code: ' + `code`)
610
610
611 # Execute the files the user wants in ipythonrc
611 # Execute the files the user wants in ipythonrc
612 for file in IP_rc.execfile:
612 for file in IP_rc.execfile:
613 try:
613 try:
614 file = filefind(file,sys.path+[IPython_dir])
614 file = filefind(file,sys.path+[IPython_dir])
615 except IOError:
615 except IOError:
616 warn(itpl('File $file not found. Skipping it.'))
616 warn(itpl('File $file not found. Skipping it.'))
617 else:
617 else:
618 IP.safe_execfile(os.path.expanduser(file),IP.user_ns)
618 IP.safe_execfile(os.path.expanduser(file),IP.user_ns)
619
619
620 # finally, try importing ipy_*_conf for final configuration
620 # finally, try importing ipy_*_conf for final configuration
621 try:
621 try:
622 import ipy_system_conf
622 import ipy_system_conf
623 except ImportError:
623 except ImportError:
624 if opts_all.debug: IP.InteractiveTB()
624 if opts_all.debug: IP.InteractiveTB()
625 warn("Could not import 'ipy_system_conf'")
625 warn("Could not import 'ipy_system_conf'")
626 except:
626 except:
627 IP.InteractiveTB()
627 IP.InteractiveTB()
628 import_fail_info('ipy_system_conf')
628 import_fail_info('ipy_system_conf')
629
629
630 # only import prof module if ipythonrc-PROF was not found
630 # only import prof module if ipythonrc-PROF was not found
631 if opts_all.profile and not profile_handled_by_legacy:
631 if opts_all.profile and not profile_handled_by_legacy:
632 profmodname = 'ipy_profile_' + opts_all.profile
632 profmodname = 'ipy_profile_' + opts_all.profile
633 try:
633 try:
634 __import__(profmodname)
634 __import__(profmodname)
635 except ImportError:
636 # only warn if ipythonrc-PROFNAME didn't exist
637 if opts.profile =='':
638 warn("Could not start with profile '%s'!\n"
639 "('%s/%s.py' does not exist? run '%%upgrade')" %
640 (opts_all.profile, opts_all.ipythondir, profmodname) )
641 except:
635 except:
642 print "Error importing",profmodname,"- perhaps you should run %upgrade?"
643 IP.InteractiveTB()
636 IP.InteractiveTB()
637 print "Error importing",profmodname,"- perhaps you should run %upgrade?"
644 import_fail_info(profmodname)
638 import_fail_info(profmodname)
645 else:
639 else:
646 import ipy_profile_none
640 import ipy_profile_none
647 try:
641 try:
648 import ipy_user_conf
642 import ipy_user_conf
649 except ImportError:
643
650 if opts_all.debug: IP.InteractiveTB()
651 warn("Could not import user config!\n "
652 "('%s/ipy_user_conf.py' does not exist? Please run '%%upgrade')\n"
653 % opts_all.ipythondir)
654 except:
644 except:
655 print "Error importing ipy_user_conf - perhaps you should run %upgrade?"
645 conf = opts_all.ipythondir + "/ipy_user_conf.py"
656 IP.InteractiveTB()
646 IP.InteractiveTB()
647 if not os.path.isfile(conf):
648 warn(conf + ' does not exist, please run %upgrade!')
649
657 import_fail_info("ipy_user_conf")
650 import_fail_info("ipy_user_conf")
658
651
659 # finally, push the argv to options again to ensure highest priority
652 # finally, push the argv to options again to ensure highest priority
660 IP_rc.update(opts)
653 IP_rc.update(opts)
661
654
662 # release stdout and stderr and save config log into a global summary
655 # release stdout and stderr and save config log into a global summary
663 msg.config.release_all()
656 msg.config.release_all()
664 if IP_rc.messages:
657 if IP_rc.messages:
665 msg.summary += msg.config.summary_all()
658 msg.summary += msg.config.summary_all()
666
659
667 #------------------------------------------------------------------------
660 #------------------------------------------------------------------------
668 # Setup interactive session
661 # Setup interactive session
669
662
670 # Now we should be fully configured. We can then execute files or load
663 # Now we should be fully configured. We can then execute files or load
671 # things only needed for interactive use. Then we'll open the shell.
664 # things only needed for interactive use. Then we'll open the shell.
672
665
673 # Take a snapshot of the user namespace before opening the shell. That way
666 # Take a snapshot of the user namespace before opening the shell. That way
674 # we'll be able to identify which things were interactively defined and
667 # we'll be able to identify which things were interactively defined and
675 # which were defined through config files.
668 # which were defined through config files.
676 IP.user_config_ns.update(IP.user_ns)
669 IP.user_config_ns.update(IP.user_ns)
677
670
678 # Force reading a file as if it were a session log. Slower but safer.
671 # Force reading a file as if it were a session log. Slower but safer.
679 if load_logplay:
672 if load_logplay:
680 print 'Replaying log...'
673 print 'Replaying log...'
681 try:
674 try:
682 if IP_rc.debug:
675 if IP_rc.debug:
683 logplay_quiet = 0
676 logplay_quiet = 0
684 else:
677 else:
685 logplay_quiet = 1
678 logplay_quiet = 1
686
679
687 msg.logplay.trap_all()
680 msg.logplay.trap_all()
688 IP.safe_execfile(load_logplay,IP.user_ns,
681 IP.safe_execfile(load_logplay,IP.user_ns,
689 islog = 1, quiet = logplay_quiet)
682 islog = 1, quiet = logplay_quiet)
690 msg.logplay.release_all()
683 msg.logplay.release_all()
691 if IP_rc.messages:
684 if IP_rc.messages:
692 msg.summary += msg.logplay.summary_all()
685 msg.summary += msg.logplay.summary_all()
693 except:
686 except:
694 warn('Problems replaying logfile %s.' % load_logplay)
687 warn('Problems replaying logfile %s.' % load_logplay)
695 IP.InteractiveTB()
688 IP.InteractiveTB()
696
689
697 # Load remaining files in command line
690 # Load remaining files in command line
698 msg.user_exec.trap_all()
691 msg.user_exec.trap_all()
699
692
700 # Do NOT execute files named in the command line as scripts to be loaded
693 # Do NOT execute files named in the command line as scripts to be loaded
701 # by embedded instances. Doing so has the potential for an infinite
694 # by embedded instances. Doing so has the potential for an infinite
702 # recursion if there are exceptions thrown in the process.
695 # recursion if there are exceptions thrown in the process.
703
696
704 # XXX FIXME: the execution of user files should be moved out to after
697 # XXX FIXME: the execution of user files should be moved out to after
705 # ipython is fully initialized, just as if they were run via %run at the
698 # ipython is fully initialized, just as if they were run via %run at the
706 # ipython prompt. This would also give them the benefit of ipython's
699 # ipython prompt. This would also give them the benefit of ipython's
707 # nice tracebacks.
700 # nice tracebacks.
708
701
709 if (not embedded and IP_rc.args and
702 if (not embedded and IP_rc.args and
710 not IP_rc.args[0].lower().endswith('.ipy')):
703 not IP_rc.args[0].lower().endswith('.ipy')):
711 name_save = IP.user_ns['__name__']
704 name_save = IP.user_ns['__name__']
712 IP.user_ns['__name__'] = '__main__'
705 IP.user_ns['__name__'] = '__main__'
713 # Set our own excepthook in case the user code tries to call it
706 # Set our own excepthook in case the user code tries to call it
714 # directly. This prevents triggering the IPython crash handler.
707 # directly. This prevents triggering the IPython crash handler.
715 old_excepthook,sys.excepthook = sys.excepthook, IP.excepthook
708 old_excepthook,sys.excepthook = sys.excepthook, IP.excepthook
716
709
717 save_argv = sys.argv[1:] # save it for later restoring
710 save_argv = sys.argv[1:] # save it for later restoring
718
711
719 sys.argv = args
712 sys.argv = args
720
713
721 try:
714 try:
722 IP.safe_execfile(args[0], IP.user_ns)
715 IP.safe_execfile(args[0], IP.user_ns)
723 finally:
716 finally:
724 # Reset our crash handler in place
717 # Reset our crash handler in place
725 sys.excepthook = old_excepthook
718 sys.excepthook = old_excepthook
726 sys.argv[:] = save_argv
719 sys.argv[:] = save_argv
727 IP.user_ns['__name__'] = name_save
720 IP.user_ns['__name__'] = name_save
728
721
729 msg.user_exec.release_all()
722 msg.user_exec.release_all()
730
723
731 if IP_rc.messages:
724 if IP_rc.messages:
732 msg.summary += msg.user_exec.summary_all()
725 msg.summary += msg.user_exec.summary_all()
733
726
734 # since we can't specify a null string on the cmd line, 0 is the equivalent:
727 # since we can't specify a null string on the cmd line, 0 is the equivalent:
735 if IP_rc.nosep:
728 if IP_rc.nosep:
736 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
729 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
737 if IP_rc.separate_in == '0': IP_rc.separate_in = ''
730 if IP_rc.separate_in == '0': IP_rc.separate_in = ''
738 if IP_rc.separate_out == '0': IP_rc.separate_out = ''
731 if IP_rc.separate_out == '0': IP_rc.separate_out = ''
739 if IP_rc.separate_out2 == '0': IP_rc.separate_out2 = ''
732 if IP_rc.separate_out2 == '0': IP_rc.separate_out2 = ''
740 IP_rc.separate_in = IP_rc.separate_in.replace('\\n','\n')
733 IP_rc.separate_in = IP_rc.separate_in.replace('\\n','\n')
741 IP_rc.separate_out = IP_rc.separate_out.replace('\\n','\n')
734 IP_rc.separate_out = IP_rc.separate_out.replace('\\n','\n')
742 IP_rc.separate_out2 = IP_rc.separate_out2.replace('\\n','\n')
735 IP_rc.separate_out2 = IP_rc.separate_out2.replace('\\n','\n')
743
736
744 # Determine how many lines at the bottom of the screen are needed for
737 # Determine how many lines at the bottom of the screen are needed for
745 # showing prompts, so we can know wheter long strings are to be printed or
738 # showing prompts, so we can know wheter long strings are to be printed or
746 # paged:
739 # paged:
747 num_lines_bot = IP_rc.separate_in.count('\n')+1
740 num_lines_bot = IP_rc.separate_in.count('\n')+1
748 IP_rc.screen_length = IP_rc.screen_length - num_lines_bot
741 IP_rc.screen_length = IP_rc.screen_length - num_lines_bot
749
742
750 # configure startup banner
743 # configure startup banner
751 if IP_rc.c: # regular python doesn't print the banner with -c
744 if IP_rc.c: # regular python doesn't print the banner with -c
752 IP_rc.banner = 0
745 IP_rc.banner = 0
753 if IP_rc.banner:
746 if IP_rc.banner:
754 BANN_P = IP.BANNER_PARTS
747 BANN_P = IP.BANNER_PARTS
755 else:
748 else:
756 BANN_P = []
749 BANN_P = []
757
750
758 if IP_rc.profile: BANN_P.append('IPython profile: %s\n' % IP_rc.profile)
751 if IP_rc.profile: BANN_P.append('IPython profile: %s\n' % IP_rc.profile)
759
752
760 # add message log (possibly empty)
753 # add message log (possibly empty)
761 if msg.summary: BANN_P.append(msg.summary)
754 if msg.summary: BANN_P.append(msg.summary)
762 # Final banner is a string
755 # Final banner is a string
763 IP.BANNER = '\n'.join(BANN_P)
756 IP.BANNER = '\n'.join(BANN_P)
764
757
765 # Finalize the IPython instance. This assumes the rc structure is fully
758 # Finalize the IPython instance. This assumes the rc structure is fully
766 # in place.
759 # in place.
767 IP.post_config_initialization()
760 IP.post_config_initialization()
768
761
769 return IP
762 return IP
770 #************************ end of file <ipmaker.py> **************************
763 #************************ end of file <ipmaker.py> **************************
@@ -1,7064 +1,7068 b''
1 2007-09-01 Ville Vainio <vivainio@gmail.com>
2
3 * ipmaker.py: Always show full traceback when newstyle config fails
4
1 2007-08-27 Ville Vainio <vivainio@gmail.com>
5 2007-08-27 Ville Vainio <vivainio@gmail.com>
2
6
3 * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180
7 * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180
4
8
5 2007-08-26 Ville Vainio <vivainio@gmail.com>
9 2007-08-26 Ville Vainio <vivainio@gmail.com>
6
10
7 * ipmaker.py: Command line args have the highest priority again
11 * ipmaker.py: Command line args have the highest priority again
8
12
9 * iplib.py, ipmaker.py: -i command line argument now behaves as in
13 * iplib.py, ipmaker.py: -i command line argument now behaves as in
10 normal python, i.e. leaves the IPython session running after -c
14 normal python, i.e. leaves the IPython session running after -c
11 command or running a batch file from command line.
15 command or running a batch file from command line.
12
16
13 2007-08-22 Ville Vainio <vivainio@gmail.com>
17 2007-08-22 Ville Vainio <vivainio@gmail.com>
14
18
15 * iplib.py: no extra empty (last) line in raw hist w/ multiline
19 * iplib.py: no extra empty (last) line in raw hist w/ multiline
16 statements
20 statements
17
21
18 * logger.py: Fix bug where blank lines in history were not
22 * logger.py: Fix bug where blank lines in history were not
19 added until AFTER adding the current line; translated and raw
23 added until AFTER adding the current line; translated and raw
20 history should finally be in sync with prompt now.
24 history should finally be in sync with prompt now.
21
25
22 * ipy_completers.py: quick_completer now makes it easy to create
26 * ipy_completers.py: quick_completer now makes it easy to create
23 trivial custom completers
27 trivial custom completers
24
28
25 * clearcmd.py: shadow history compression & erasing, fixed input hist
29 * clearcmd.py: shadow history compression & erasing, fixed input hist
26 clearing.
30 clearing.
27
31
28 * envpersist.py, history.py: %env (sh profile only), %hist completers
32 * envpersist.py, history.py: %env (sh profile only), %hist completers
29
33
30 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
34 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
31 term title now include the drive letter, and always use / instead of
35 term title now include the drive letter, and always use / instead of
32 os.sep (as per recommended approach for win32 ipython in general).
36 os.sep (as per recommended approach for win32 ipython in general).
33
37
34 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
38 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
35 plain python scripts from ipykit command line by running
39 plain python scripts from ipykit command line by running
36 "py myscript.py", even w/o installed python.
40 "py myscript.py", even w/o installed python.
37
41
38 2007-08-21 Ville Vainio <vivainio@gmail.com>
42 2007-08-21 Ville Vainio <vivainio@gmail.com>
39
43
40 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
44 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
41 (for backwards compatibility)
45 (for backwards compatibility)
42
46
43 * history.py: switch back to %hist -t from %hist -r as default.
47 * history.py: switch back to %hist -t from %hist -r as default.
44 At least until raw history is fixed for good.
48 At least until raw history is fixed for good.
45
49
46 2007-08-20 Ville Vainio <vivainio@gmail.com>
50 2007-08-20 Ville Vainio <vivainio@gmail.com>
47
51
48 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
52 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
49 locate alias redeclarations etc. Also, avoid handling
53 locate alias redeclarations etc. Also, avoid handling
50 _ip.IP.alias_table directly, prefer using _ip.defalias.
54 _ip.IP.alias_table directly, prefer using _ip.defalias.
51
55
52
56
53 2007-08-15 Ville Vainio <vivainio@gmail.com>
57 2007-08-15 Ville Vainio <vivainio@gmail.com>
54
58
55 * prefilter.py: ! is now always served first
59 * prefilter.py: ! is now always served first
56
60
57 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
61 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
58
62
59 * IPython/iplib.py (safe_execfile): fix the SystemExit
63 * IPython/iplib.py (safe_execfile): fix the SystemExit
60 auto-suppression code to work in Python2.4 (the internal structure
64 auto-suppression code to work in Python2.4 (the internal structure
61 of that exception changed and I'd only tested the code with 2.5).
65 of that exception changed and I'd only tested the code with 2.5).
62 Bug reported by a SciPy attendee.
66 Bug reported by a SciPy attendee.
63
67
64 2007-08-13 Ville Vainio <vivainio@gmail.com>
68 2007-08-13 Ville Vainio <vivainio@gmail.com>
65
69
66 * prefilter.py: reverted !c:/bin/foo fix, made % in
70 * prefilter.py: reverted !c:/bin/foo fix, made % in
67 multiline specials work again
71 multiline specials work again
68
72
69 2007-08-13 Ville Vainio <vivainio@gmail.com>
73 2007-08-13 Ville Vainio <vivainio@gmail.com>
70
74
71 * prefilter.py: Take more care to special-case !, so that
75 * prefilter.py: Take more care to special-case !, so that
72 !c:/bin/foo.exe works.
76 !c:/bin/foo.exe works.
73
77
74 * setup.py: if we are building eggs, strip all docs and
78 * setup.py: if we are building eggs, strip all docs and
75 examples (it doesn't make sense to bytecompile examples,
79 examples (it doesn't make sense to bytecompile examples,
76 and docs would be in an awkward place anyway).
80 and docs would be in an awkward place anyway).
77
81
78 * Ryan Krauss' patch fixes start menu shortcuts when IPython
82 * Ryan Krauss' patch fixes start menu shortcuts when IPython
79 is installed into a directory that has spaces in the name.
83 is installed into a directory that has spaces in the name.
80
84
81 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
85 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
82
86
83 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
87 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
84 doctest profile and %doctest_mode, so they actually generate the
88 doctest profile and %doctest_mode, so they actually generate the
85 blank lines needed by doctest to separate individual tests.
89 blank lines needed by doctest to separate individual tests.
86
90
87 * IPython/iplib.py (safe_execfile): modify so that running code
91 * IPython/iplib.py (safe_execfile): modify so that running code
88 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
92 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
89 doesn't get a printed traceback. Any other value in sys.exit(),
93 doesn't get a printed traceback. Any other value in sys.exit(),
90 including the empty call, still generates a traceback. This
94 including the empty call, still generates a traceback. This
91 enables use of %run without having to pass '-e' for codes that
95 enables use of %run without having to pass '-e' for codes that
92 correctly set the exit status flag.
96 correctly set the exit status flag.
93
97
94 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
98 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
95
99
96 * IPython/iplib.py (InteractiveShell.post_config_initialization):
100 * IPython/iplib.py (InteractiveShell.post_config_initialization):
97 fix problems with doctests failing when run inside IPython due to
101 fix problems with doctests failing when run inside IPython due to
98 IPython's modifications of sys.displayhook.
102 IPython's modifications of sys.displayhook.
99
103
100 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
104 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
101
105
102 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
106 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
103 a string with names.
107 a string with names.
104
108
105 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
109 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
106
110
107 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
111 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
108 magic to toggle on/off the doctest pasting support without having
112 magic to toggle on/off the doctest pasting support without having
109 to leave a session to switch to a separate profile.
113 to leave a session to switch to a separate profile.
110
114
111 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
115 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
112
116
113 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
117 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
114 introduce a blank line between inputs, to conform to doctest
118 introduce a blank line between inputs, to conform to doctest
115 requirements.
119 requirements.
116
120
117 * IPython/OInspect.py (Inspector.pinfo): fix another part where
121 * IPython/OInspect.py (Inspector.pinfo): fix another part where
118 auto-generated docstrings for new-style classes were showing up.
122 auto-generated docstrings for new-style classes were showing up.
119
123
120 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
124 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
121
125
122 * api_changes: Add new file to track backward-incompatible
126 * api_changes: Add new file to track backward-incompatible
123 user-visible changes.
127 user-visible changes.
124
128
125 2007-08-06 Ville Vainio <vivainio@gmail.com>
129 2007-08-06 Ville Vainio <vivainio@gmail.com>
126
130
127 * ipmaker.py: fix bug where user_config_ns didn't exist at all
131 * ipmaker.py: fix bug where user_config_ns didn't exist at all
128 before all the config files were handled.
132 before all the config files were handled.
129
133
130 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
134 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
131
135
132 * IPython/irunner.py (RunnerFactory): Add new factory class for
136 * IPython/irunner.py (RunnerFactory): Add new factory class for
133 creating reusable runners based on filenames.
137 creating reusable runners based on filenames.
134
138
135 * IPython/Extensions/ipy_profile_doctest.py: New profile for
139 * IPython/Extensions/ipy_profile_doctest.py: New profile for
136 doctest support. It sets prompts/exceptions as similar to
140 doctest support. It sets prompts/exceptions as similar to
137 standard Python as possible, so that ipython sessions in this
141 standard Python as possible, so that ipython sessions in this
138 profile can be easily pasted as doctests with minimal
142 profile can be easily pasted as doctests with minimal
139 modifications. It also enables pasting of doctests from external
143 modifications. It also enables pasting of doctests from external
140 sources (even if they have leading whitespace), so that you can
144 sources (even if they have leading whitespace), so that you can
141 rerun doctests from existing sources.
145 rerun doctests from existing sources.
142
146
143 * IPython/iplib.py (_prefilter): fix a buglet where after entering
147 * IPython/iplib.py (_prefilter): fix a buglet where after entering
144 some whitespace, the prompt would become a continuation prompt
148 some whitespace, the prompt would become a continuation prompt
145 with no way of exiting it other than Ctrl-C. This fix brings us
149 with no way of exiting it other than Ctrl-C. This fix brings us
146 into conformity with how the default python prompt works.
150 into conformity with how the default python prompt works.
147
151
148 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
152 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
149 Add support for pasting not only lines that start with '>>>', but
153 Add support for pasting not only lines that start with '>>>', but
150 also with ' >>>'. That is, arbitrary whitespace can now precede
154 also with ' >>>'. That is, arbitrary whitespace can now precede
151 the prompts. This makes the system useful for pasting doctests
155 the prompts. This makes the system useful for pasting doctests
152 from docstrings back into a normal session.
156 from docstrings back into a normal session.
153
157
154 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
158 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
155
159
156 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
160 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
157 r1357, which had killed multiple invocations of an embedded
161 r1357, which had killed multiple invocations of an embedded
158 ipython (this means that example-embed has been broken for over 1
162 ipython (this means that example-embed has been broken for over 1
159 year!!!). Rather than possibly breaking the batch stuff for which
163 year!!!). Rather than possibly breaking the batch stuff for which
160 the code in iplib.py/interact was introduced, I worked around the
164 the code in iplib.py/interact was introduced, I worked around the
161 problem in the embedding class in Shell.py. We really need a
165 problem in the embedding class in Shell.py. We really need a
162 bloody test suite for this code, I'm sick of finding stuff that
166 bloody test suite for this code, I'm sick of finding stuff that
163 used to work breaking left and right every time I use an old
167 used to work breaking left and right every time I use an old
164 feature I hadn't touched in a few months.
168 feature I hadn't touched in a few months.
165 (kill_embedded): Add a new magic that only shows up in embedded
169 (kill_embedded): Add a new magic that only shows up in embedded
166 mode, to allow users to permanently deactivate an embedded instance.
170 mode, to allow users to permanently deactivate an embedded instance.
167
171
168 2007-08-01 Ville Vainio <vivainio@gmail.com>
172 2007-08-01 Ville Vainio <vivainio@gmail.com>
169
173
170 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
174 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
171 history gets out of sync on runlines (e.g. when running macros).
175 history gets out of sync on runlines (e.g. when running macros).
172
176
173 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
177 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
174
178
175 * IPython/Magic.py (magic_colors): fix win32-related error message
179 * IPython/Magic.py (magic_colors): fix win32-related error message
176 that could appear under *nix when readline was missing. Patch by
180 that could appear under *nix when readline was missing. Patch by
177 Scott Jackson, closes #175.
181 Scott Jackson, closes #175.
178
182
179 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
183 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
180
184
181 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
185 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
182 completer that it traits-aware, so that traits objects don't show
186 completer that it traits-aware, so that traits objects don't show
183 all of their internal attributes all the time.
187 all of their internal attributes all the time.
184
188
185 * IPython/genutils.py (dir2): moved this code from inside
189 * IPython/genutils.py (dir2): moved this code from inside
186 completer.py to expose it publicly, so I could use it in the
190 completer.py to expose it publicly, so I could use it in the
187 wildcards bugfix.
191 wildcards bugfix.
188
192
189 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
193 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
190 Stefan with Traits.
194 Stefan with Traits.
191
195
192 * IPython/completer.py (Completer.attr_matches): change internal
196 * IPython/completer.py (Completer.attr_matches): change internal
193 var name from 'object' to 'obj', since 'object' is now a builtin
197 var name from 'object' to 'obj', since 'object' is now a builtin
194 and this can lead to weird bugs if reusing this code elsewhere.
198 and this can lead to weird bugs if reusing this code elsewhere.
195
199
196 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
200 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
197
201
198 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
202 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
199 'foo?' and update the code to prevent printing of default
203 'foo?' and update the code to prevent printing of default
200 docstrings that started appearing after I added support for
204 docstrings that started appearing after I added support for
201 new-style classes. The approach I'm using isn't ideal (I just
205 new-style classes. The approach I'm using isn't ideal (I just
202 special-case those strings) but I'm not sure how to more robustly
206 special-case those strings) but I'm not sure how to more robustly
203 differentiate between truly user-written strings and Python's
207 differentiate between truly user-written strings and Python's
204 automatic ones.
208 automatic ones.
205
209
206 2007-07-09 Ville Vainio <vivainio@gmail.com>
210 2007-07-09 Ville Vainio <vivainio@gmail.com>
207
211
208 * completer.py: Applied Matthew Neeley's patch:
212 * completer.py: Applied Matthew Neeley's patch:
209 Dynamic attributes from trait_names and _getAttributeNames are added
213 Dynamic attributes from trait_names and _getAttributeNames are added
210 to the list of tab completions, but when this happens, the attribute
214 to the list of tab completions, but when this happens, the attribute
211 list is turned into a set, so the attributes are unordered when
215 list is turned into a set, so the attributes are unordered when
212 printed, which makes it hard to find the right completion. This patch
216 printed, which makes it hard to find the right completion. This patch
213 turns this set back into a list and sort it.
217 turns this set back into a list and sort it.
214
218
215 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
219 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
216
220
217 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
221 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
218 classes in various inspector functions.
222 classes in various inspector functions.
219
223
220 2007-06-28 Ville Vainio <vivainio@gmail.com>
224 2007-06-28 Ville Vainio <vivainio@gmail.com>
221
225
222 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
226 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
223 Implement "shadow" namespace, and callable aliases that reside there.
227 Implement "shadow" namespace, and callable aliases that reside there.
224 Use them by:
228 Use them by:
225
229
226 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
230 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
227
231
228 foo hello world
232 foo hello world
229 (gets translated to:)
233 (gets translated to:)
230 _sh.foo(r"""hello world""")
234 _sh.foo(r"""hello world""")
231
235
232 In practice, this kind of alias can take the role of a magic function
236 In practice, this kind of alias can take the role of a magic function
233
237
234 * New generic inspect_object, called on obj? and obj??
238 * New generic inspect_object, called on obj? and obj??
235
239
236 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
240 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
237
241
238 * IPython/ultraTB.py (findsource): fix a problem with
242 * IPython/ultraTB.py (findsource): fix a problem with
239 inspect.getfile that can cause crashes during traceback construction.
243 inspect.getfile that can cause crashes during traceback construction.
240
244
241 2007-06-14 Ville Vainio <vivainio@gmail.com>
245 2007-06-14 Ville Vainio <vivainio@gmail.com>
242
246
243 * iplib.py (handle_auto): Try to use ascii for printing "--->"
247 * iplib.py (handle_auto): Try to use ascii for printing "--->"
244 autocall rewrite indication, becausesometimes unicode fails to print
248 autocall rewrite indication, becausesometimes unicode fails to print
245 properly (and you get ' - - - '). Use plain uncoloured ---> for
249 properly (and you get ' - - - '). Use plain uncoloured ---> for
246 unicode.
250 unicode.
247
251
248 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
252 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
249
253
250 . pickleshare 'hash' commands (hget, hset, hcompress,
254 . pickleshare 'hash' commands (hget, hset, hcompress,
251 hdict) for efficient shadow history storage.
255 hdict) for efficient shadow history storage.
252
256
253 2007-06-13 Ville Vainio <vivainio@gmail.com>
257 2007-06-13 Ville Vainio <vivainio@gmail.com>
254
258
255 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
259 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
256 Added kw arg 'interactive', tell whether vars should be visible
260 Added kw arg 'interactive', tell whether vars should be visible
257 with %whos.
261 with %whos.
258
262
259 2007-06-11 Ville Vainio <vivainio@gmail.com>
263 2007-06-11 Ville Vainio <vivainio@gmail.com>
260
264
261 * pspersistence.py, Magic.py, iplib.py: directory history now saved
265 * pspersistence.py, Magic.py, iplib.py: directory history now saved
262 to db
266 to db
263
267
264 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
268 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
265 Also, it exits IPython immediately after evaluating the command (just like
269 Also, it exits IPython immediately after evaluating the command (just like
266 std python)
270 std python)
267
271
268 2007-06-05 Walter Doerwald <walter@livinglogic.de>
272 2007-06-05 Walter Doerwald <walter@livinglogic.de>
269
273
270 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
274 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
271 Python string and captures the output. (Idea and original patch by
275 Python string and captures the output. (Idea and original patch by
272 StοΏ½fan van der Walt)
276 StοΏ½fan van der Walt)
273
277
274 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
278 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
275
279
276 * IPython/ultraTB.py (VerboseTB.text): update printing of
280 * IPython/ultraTB.py (VerboseTB.text): update printing of
277 exception types for Python 2.5 (now all exceptions in the stdlib
281 exception types for Python 2.5 (now all exceptions in the stdlib
278 are new-style classes).
282 are new-style classes).
279
283
280 2007-05-31 Walter Doerwald <walter@livinglogic.de>
284 2007-05-31 Walter Doerwald <walter@livinglogic.de>
281
285
282 * IPython/Extensions/igrid.py: Add new commands refresh and
286 * IPython/Extensions/igrid.py: Add new commands refresh and
283 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
287 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
284 the iterator once (refresh) or after every x seconds (refresh_timer).
288 the iterator once (refresh) or after every x seconds (refresh_timer).
285 Add a working implementation of "searchexpression", where the text
289 Add a working implementation of "searchexpression", where the text
286 entered is not the text to search for, but an expression that must
290 entered is not the text to search for, but an expression that must
287 be true. Added display of shortcuts to the menu. Added commands "pickinput"
291 be true. Added display of shortcuts to the menu. Added commands "pickinput"
288 and "pickinputattr" that put the object or attribute under the cursor
292 and "pickinputattr" that put the object or attribute under the cursor
289 in the input line. Split the statusbar to be able to display the currently
293 in the input line. Split the statusbar to be able to display the currently
290 active refresh interval. (Patch by Nik Tautenhahn)
294 active refresh interval. (Patch by Nik Tautenhahn)
291
295
292 2007-05-29 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
296 2007-05-29 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
293
297
294 * fixing set_term_title to use ctypes as default
298 * fixing set_term_title to use ctypes as default
295
299
296 * fixing set_term_title fallback to work when curent dir
300 * fixing set_term_title fallback to work when curent dir
297 is on a windows network share
301 is on a windows network share
298
302
299 2007-05-28 Ville Vainio <vivainio@gmail.com>
303 2007-05-28 Ville Vainio <vivainio@gmail.com>
300
304
301 * %cpaste: strip + with > from left (diffs).
305 * %cpaste: strip + with > from left (diffs).
302
306
303 * iplib.py: Fix crash when readline not installed
307 * iplib.py: Fix crash when readline not installed
304
308
305 2007-05-26 Ville Vainio <vivainio@gmail.com>
309 2007-05-26 Ville Vainio <vivainio@gmail.com>
306
310
307 * generics.py: intruduce easy to extend result_display generic
311 * generics.py: intruduce easy to extend result_display generic
308 function (using simplegeneric.py).
312 function (using simplegeneric.py).
309
313
310 * Fixed the append functionality of %set.
314 * Fixed the append functionality of %set.
311
315
312 2007-05-25 Ville Vainio <vivainio@gmail.com>
316 2007-05-25 Ville Vainio <vivainio@gmail.com>
313
317
314 * New magic: %rep (fetch / run old commands from history)
318 * New magic: %rep (fetch / run old commands from history)
315
319
316 * New extension: mglob (%mglob magic), for powerful glob / find /filter
320 * New extension: mglob (%mglob magic), for powerful glob / find /filter
317 like functionality
321 like functionality
318
322
319 % maghistory.py: %hist -g PATTERM greps the history for pattern
323 % maghistory.py: %hist -g PATTERM greps the history for pattern
320
324
321 2007-05-24 Walter Doerwald <walter@livinglogic.de>
325 2007-05-24 Walter Doerwald <walter@livinglogic.de>
322
326
323 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
327 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
324 browse the IPython input history
328 browse the IPython input history
325
329
326 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
330 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
327 (mapped to "i") can be used to put the object under the curser in the input
331 (mapped to "i") can be used to put the object under the curser in the input
328 line. pickinputattr (mapped to "I") does the same for the attribute under
332 line. pickinputattr (mapped to "I") does the same for the attribute under
329 the cursor.
333 the cursor.
330
334
331 2007-05-24 Ville Vainio <vivainio@gmail.com>
335 2007-05-24 Ville Vainio <vivainio@gmail.com>
332
336
333 * Grand magic cleansing (changeset [2380]):
337 * Grand magic cleansing (changeset [2380]):
334
338
335 * Introduce ipy_legacy.py where the following magics were
339 * Introduce ipy_legacy.py where the following magics were
336 moved:
340 moved:
337
341
338 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
342 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
339
343
340 If you need them, either use default profile or "import ipy_legacy"
344 If you need them, either use default profile or "import ipy_legacy"
341 in your ipy_user_conf.py
345 in your ipy_user_conf.py
342
346
343 * Move sh and scipy profile to Extensions from UserConfig. this implies
347 * Move sh and scipy profile to Extensions from UserConfig. this implies
344 you should not edit them, but you don't need to run %upgrade when
348 you should not edit them, but you don't need to run %upgrade when
345 upgrading IPython anymore.
349 upgrading IPython anymore.
346
350
347 * %hist/%history now operates in "raw" mode by default. To get the old
351 * %hist/%history now operates in "raw" mode by default. To get the old
348 behaviour, run '%hist -n' (native mode).
352 behaviour, run '%hist -n' (native mode).
349
353
350 * split ipy_stock_completers.py to ipy_stock_completers.py and
354 * split ipy_stock_completers.py to ipy_stock_completers.py and
351 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
355 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
352 installed as default.
356 installed as default.
353
357
354 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
358 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
355 handling.
359 handling.
356
360
357 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
361 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
358 input if readline is available.
362 input if readline is available.
359
363
360 2007-05-23 Ville Vainio <vivainio@gmail.com>
364 2007-05-23 Ville Vainio <vivainio@gmail.com>
361
365
362 * macro.py: %store uses __getstate__ properly
366 * macro.py: %store uses __getstate__ properly
363
367
364 * exesetup.py: added new setup script for creating
368 * exesetup.py: added new setup script for creating
365 standalone IPython executables with py2exe (i.e.
369 standalone IPython executables with py2exe (i.e.
366 no python installation required).
370 no python installation required).
367
371
368 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
372 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
369 its place.
373 its place.
370
374
371 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
375 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
372
376
373 2007-05-21 Ville Vainio <vivainio@gmail.com>
377 2007-05-21 Ville Vainio <vivainio@gmail.com>
374
378
375 * platutil_win32.py (set_term_title): handle
379 * platutil_win32.py (set_term_title): handle
376 failure of 'title' system call properly.
380 failure of 'title' system call properly.
377
381
378 2007-05-17 Walter Doerwald <walter@livinglogic.de>
382 2007-05-17 Walter Doerwald <walter@livinglogic.de>
379
383
380 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
384 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
381 (Bug detected by Paul Mueller).
385 (Bug detected by Paul Mueller).
382
386
383 2007-05-16 Ville Vainio <vivainio@gmail.com>
387 2007-05-16 Ville Vainio <vivainio@gmail.com>
384
388
385 * ipy_profile_sci.py, ipython_win_post_install.py: Create
389 * ipy_profile_sci.py, ipython_win_post_install.py: Create
386 new "sci" profile, effectively a modern version of the old
390 new "sci" profile, effectively a modern version of the old
387 "scipy" profile (which is now slated for deprecation).
391 "scipy" profile (which is now slated for deprecation).
388
392
389 2007-05-15 Ville Vainio <vivainio@gmail.com>
393 2007-05-15 Ville Vainio <vivainio@gmail.com>
390
394
391 * pycolorize.py, pycolor.1: Paul Mueller's patches that
395 * pycolorize.py, pycolor.1: Paul Mueller's patches that
392 make pycolorize read input from stdin when run without arguments.
396 make pycolorize read input from stdin when run without arguments.
393
397
394 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
398 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
395
399
396 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
400 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
397 it in sh profile (instead of ipy_system_conf.py).
401 it in sh profile (instead of ipy_system_conf.py).
398
402
399 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
403 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
400 aliases are now lower case on windows (MyCommand.exe => mycommand).
404 aliases are now lower case on windows (MyCommand.exe => mycommand).
401
405
402 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
406 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
403 Macros are now callable objects that inherit from ipapi.IPyAutocall,
407 Macros are now callable objects that inherit from ipapi.IPyAutocall,
404 i.e. get autocalled regardless of system autocall setting.
408 i.e. get autocalled regardless of system autocall setting.
405
409
406 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
410 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
407
411
408 * IPython/rlineimpl.py: check for clear_history in readline and
412 * IPython/rlineimpl.py: check for clear_history in readline and
409 make it a dummy no-op if not available. This function isn't
413 make it a dummy no-op if not available. This function isn't
410 guaranteed to be in the API and appeared in Python 2.4, so we need
414 guaranteed to be in the API and appeared in Python 2.4, so we need
411 to check it ourselves. Also, clean up this file quite a bit.
415 to check it ourselves. Also, clean up this file quite a bit.
412
416
413 * ipython.1: update man page and full manual with information
417 * ipython.1: update man page and full manual with information
414 about threads (remove outdated warning). Closes #151.
418 about threads (remove outdated warning). Closes #151.
415
419
416 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
420 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
417
421
418 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
422 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
419 in trunk (note that this made it into the 0.8.1 release already,
423 in trunk (note that this made it into the 0.8.1 release already,
420 but the changelogs didn't get coordinated). Many thanks to Gael
424 but the changelogs didn't get coordinated). Many thanks to Gael
421 Varoquaux <gael.varoquaux-AT-normalesup.org>
425 Varoquaux <gael.varoquaux-AT-normalesup.org>
422
426
423 2007-05-09 *** Released version 0.8.1
427 2007-05-09 *** Released version 0.8.1
424
428
425 2007-05-10 Walter Doerwald <walter@livinglogic.de>
429 2007-05-10 Walter Doerwald <walter@livinglogic.de>
426
430
427 * IPython/Extensions/igrid.py: Incorporate html help into
431 * IPython/Extensions/igrid.py: Incorporate html help into
428 the module, so we don't have to search for the file.
432 the module, so we don't have to search for the file.
429
433
430 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
434 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
431
435
432 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
436 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
433
437
434 2007-04-30 Ville Vainio <vivainio@gmail.com>
438 2007-04-30 Ville Vainio <vivainio@gmail.com>
435
439
436 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
440 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
437 user has illegal (non-ascii) home directory name
441 user has illegal (non-ascii) home directory name
438
442
439 2007-04-27 Ville Vainio <vivainio@gmail.com>
443 2007-04-27 Ville Vainio <vivainio@gmail.com>
440
444
441 * platutils_win32.py: implement set_term_title for windows
445 * platutils_win32.py: implement set_term_title for windows
442
446
443 * Update version number
447 * Update version number
444
448
445 * ipy_profile_sh.py: more informative prompt (2 dir levels)
449 * ipy_profile_sh.py: more informative prompt (2 dir levels)
446
450
447 2007-04-26 Walter Doerwald <walter@livinglogic.de>
451 2007-04-26 Walter Doerwald <walter@livinglogic.de>
448
452
449 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
453 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
450 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
454 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
451 bug discovered by Ville).
455 bug discovered by Ville).
452
456
453 2007-04-26 Ville Vainio <vivainio@gmail.com>
457 2007-04-26 Ville Vainio <vivainio@gmail.com>
454
458
455 * Extensions/ipy_completers.py: Olivier's module completer now
459 * Extensions/ipy_completers.py: Olivier's module completer now
456 saves the list of root modules if it takes > 4 secs on the first run.
460 saves the list of root modules if it takes > 4 secs on the first run.
457
461
458 * Magic.py (%rehashx): %rehashx now clears the completer cache
462 * Magic.py (%rehashx): %rehashx now clears the completer cache
459
463
460
464
461 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
465 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
462
466
463 * ipython.el: fix incorrect color scheme, reported by Stefan.
467 * ipython.el: fix incorrect color scheme, reported by Stefan.
464 Closes #149.
468 Closes #149.
465
469
466 * IPython/PyColorize.py (Parser.format2): fix state-handling
470 * IPython/PyColorize.py (Parser.format2): fix state-handling
467 logic. I still don't like how that code handles state, but at
471 logic. I still don't like how that code handles state, but at
468 least now it should be correct, if inelegant. Closes #146.
472 least now it should be correct, if inelegant. Closes #146.
469
473
470 2007-04-25 Ville Vainio <vivainio@gmail.com>
474 2007-04-25 Ville Vainio <vivainio@gmail.com>
471
475
472 * Extensions/ipy_which.py: added extension for %which magic, works
476 * Extensions/ipy_which.py: added extension for %which magic, works
473 a lot like unix 'which' but also finds and expands aliases, and
477 a lot like unix 'which' but also finds and expands aliases, and
474 allows wildcards.
478 allows wildcards.
475
479
476 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
480 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
477 as opposed to returning nothing.
481 as opposed to returning nothing.
478
482
479 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
483 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
480 ipy_stock_completers on default profile, do import on sh profile.
484 ipy_stock_completers on default profile, do import on sh profile.
481
485
482 2007-04-22 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
486 2007-04-22 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
483
487
484 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
488 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
485 like ipython.py foo.py which raised a IndexError.
489 like ipython.py foo.py which raised a IndexError.
486
490
487 2007-04-21 Ville Vainio <vivainio@gmail.com>
491 2007-04-21 Ville Vainio <vivainio@gmail.com>
488
492
489 * Extensions/ipy_extutil.py: added extension to manage other ipython
493 * Extensions/ipy_extutil.py: added extension to manage other ipython
490 extensions. Now only supports 'ls' == list extensions.
494 extensions. Now only supports 'ls' == list extensions.
491
495
492 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
496 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
493
497
494 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
498 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
495 would prevent use of the exception system outside of a running
499 would prevent use of the exception system outside of a running
496 IPython instance.
500 IPython instance.
497
501
498 2007-04-20 Ville Vainio <vivainio@gmail.com>
502 2007-04-20 Ville Vainio <vivainio@gmail.com>
499
503
500 * Extensions/ipy_render.py: added extension for easy
504 * Extensions/ipy_render.py: added extension for easy
501 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
505 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
502 'Iptl' template notation,
506 'Iptl' template notation,
503
507
504 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
508 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
505 safer & faster 'import' completer.
509 safer & faster 'import' completer.
506
510
507 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
511 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
508 and _ip.defalias(name, command).
512 and _ip.defalias(name, command).
509
513
510 * Extensions/ipy_exportdb.py: New extension for exporting all the
514 * Extensions/ipy_exportdb.py: New extension for exporting all the
511 %store'd data in a portable format (normal ipapi calls like
515 %store'd data in a portable format (normal ipapi calls like
512 defmacro() etc.)
516 defmacro() etc.)
513
517
514 2007-04-19 Ville Vainio <vivainio@gmail.com>
518 2007-04-19 Ville Vainio <vivainio@gmail.com>
515
519
516 * upgrade_dir.py: skip junk files like *.pyc
520 * upgrade_dir.py: skip junk files like *.pyc
517
521
518 * Release.py: version number to 0.8.1
522 * Release.py: version number to 0.8.1
519
523
520 2007-04-18 Ville Vainio <vivainio@gmail.com>
524 2007-04-18 Ville Vainio <vivainio@gmail.com>
521
525
522 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
526 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
523 and later on win32.
527 and later on win32.
524
528
525 2007-04-16 Ville Vainio <vivainio@gmail.com>
529 2007-04-16 Ville Vainio <vivainio@gmail.com>
526
530
527 * iplib.py (showtraceback): Do not crash when running w/o readline.
531 * iplib.py (showtraceback): Do not crash when running w/o readline.
528
532
529 2007-04-12 Walter Doerwald <walter@livinglogic.de>
533 2007-04-12 Walter Doerwald <walter@livinglogic.de>
530
534
531 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
535 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
532 sorted (case sensitive with files and dirs mixed).
536 sorted (case sensitive with files and dirs mixed).
533
537
534 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
538 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
535
539
536 * IPython/Release.py (version): Open trunk for 0.8.1 development.
540 * IPython/Release.py (version): Open trunk for 0.8.1 development.
537
541
538 2007-04-10 *** Released version 0.8.0
542 2007-04-10 *** Released version 0.8.0
539
543
540 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
544 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
541
545
542 * Tag 0.8.0 for release.
546 * Tag 0.8.0 for release.
543
547
544 * IPython/iplib.py (reloadhist): add API function to cleanly
548 * IPython/iplib.py (reloadhist): add API function to cleanly
545 reload the readline history, which was growing inappropriately on
549 reload the readline history, which was growing inappropriately on
546 every %run call.
550 every %run call.
547
551
548 * win32_manual_post_install.py (run): apply last part of Nicolas
552 * win32_manual_post_install.py (run): apply last part of Nicolas
549 Pernetty's patch (I'd accidentally applied it in a different
553 Pernetty's patch (I'd accidentally applied it in a different
550 directory and this particular file didn't get patched).
554 directory and this particular file didn't get patched).
551
555
552 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
556 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
553
557
554 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
558 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
555 find the main thread id and use the proper API call. Thanks to
559 find the main thread id and use the proper API call. Thanks to
556 Stefan for the fix.
560 Stefan for the fix.
557
561
558 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
562 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
559 unit tests to reflect fixed ticket #52, and add more tests sent by
563 unit tests to reflect fixed ticket #52, and add more tests sent by
560 him.
564 him.
561
565
562 * IPython/iplib.py (raw_input): restore the readline completer
566 * IPython/iplib.py (raw_input): restore the readline completer
563 state on every input, in case third-party code messed it up.
567 state on every input, in case third-party code messed it up.
564 (_prefilter): revert recent addition of early-escape checks which
568 (_prefilter): revert recent addition of early-escape checks which
565 prevent many valid alias calls from working.
569 prevent many valid alias calls from working.
566
570
567 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
571 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
568 flag for sigint handler so we don't run a full signal() call on
572 flag for sigint handler so we don't run a full signal() call on
569 each runcode access.
573 each runcode access.
570
574
571 * IPython/Magic.py (magic_whos): small improvement to diagnostic
575 * IPython/Magic.py (magic_whos): small improvement to diagnostic
572 message.
576 message.
573
577
574 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
578 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
575
579
576 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
580 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
577 asynchronous exceptions working, i.e., Ctrl-C can actually
581 asynchronous exceptions working, i.e., Ctrl-C can actually
578 interrupt long-running code in the multithreaded shells.
582 interrupt long-running code in the multithreaded shells.
579
583
580 This is using Tomer Filiba's great ctypes-based trick:
584 This is using Tomer Filiba's great ctypes-based trick:
581 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
585 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
582 this in the past, but hadn't been able to make it work before. So
586 this in the past, but hadn't been able to make it work before. So
583 far it looks like it's actually running, but this needs more
587 far it looks like it's actually running, but this needs more
584 testing. If it really works, I'll be *very* happy, and we'll owe
588 testing. If it really works, I'll be *very* happy, and we'll owe
585 a huge thank you to Tomer. My current implementation is ugly,
589 a huge thank you to Tomer. My current implementation is ugly,
586 hackish and uses nasty globals, but I don't want to try and clean
590 hackish and uses nasty globals, but I don't want to try and clean
587 anything up until we know if it actually works.
591 anything up until we know if it actually works.
588
592
589 NOTE: this feature needs ctypes to work. ctypes is included in
593 NOTE: this feature needs ctypes to work. ctypes is included in
590 Python2.5, but 2.4 users will need to manually install it. This
594 Python2.5, but 2.4 users will need to manually install it. This
591 feature makes multi-threaded shells so much more usable that it's
595 feature makes multi-threaded shells so much more usable that it's
592 a minor price to pay (ctypes is very easy to install, already a
596 a minor price to pay (ctypes is very easy to install, already a
593 requirement for win32 and available in major linux distros).
597 requirement for win32 and available in major linux distros).
594
598
595 2007-04-04 Ville Vainio <vivainio@gmail.com>
599 2007-04-04 Ville Vainio <vivainio@gmail.com>
596
600
597 * Extensions/ipy_completers.py, ipy_stock_completers.py:
601 * Extensions/ipy_completers.py, ipy_stock_completers.py:
598 Moved implementations of 'bundled' completers to ipy_completers.py,
602 Moved implementations of 'bundled' completers to ipy_completers.py,
599 they are only enabled in ipy_stock_completers.py.
603 they are only enabled in ipy_stock_completers.py.
600
604
601 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
605 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
602
606
603 * IPython/PyColorize.py (Parser.format2): Fix identation of
607 * IPython/PyColorize.py (Parser.format2): Fix identation of
604 colorzied output and return early if color scheme is NoColor, to
608 colorzied output and return early if color scheme is NoColor, to
605 avoid unnecessary and expensive tokenization. Closes #131.
609 avoid unnecessary and expensive tokenization. Closes #131.
606
610
607 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
611 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
608
612
609 * IPython/Debugger.py: disable the use of pydb version 1.17. It
613 * IPython/Debugger.py: disable the use of pydb version 1.17. It
610 has a critical bug (a missing import that makes post-mortem not
614 has a critical bug (a missing import that makes post-mortem not
611 work at all). Unfortunately as of this time, this is the version
615 work at all). Unfortunately as of this time, this is the version
612 shipped with Ubuntu Edgy, so quite a few people have this one. I
616 shipped with Ubuntu Edgy, so quite a few people have this one. I
613 hope Edgy will update to a more recent package.
617 hope Edgy will update to a more recent package.
614
618
615 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
619 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
616
620
617 * IPython/iplib.py (_prefilter): close #52, second part of a patch
621 * IPython/iplib.py (_prefilter): close #52, second part of a patch
618 set by Stefan (only the first part had been applied before).
622 set by Stefan (only the first part had been applied before).
619
623
620 * IPython/Extensions/ipy_stock_completers.py (module_completer):
624 * IPython/Extensions/ipy_stock_completers.py (module_completer):
621 remove usage of the dangerous pkgutil.walk_packages(). See
625 remove usage of the dangerous pkgutil.walk_packages(). See
622 details in comments left in the code.
626 details in comments left in the code.
623
627
624 * IPython/Magic.py (magic_whos): add support for numpy arrays
628 * IPython/Magic.py (magic_whos): add support for numpy arrays
625 similar to what we had for Numeric.
629 similar to what we had for Numeric.
626
630
627 * IPython/completer.py (IPCompleter.complete): extend the
631 * IPython/completer.py (IPCompleter.complete): extend the
628 complete() call API to support completions by other mechanisms
632 complete() call API to support completions by other mechanisms
629 than readline. Closes #109.
633 than readline. Closes #109.
630
634
631 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
635 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
632 protect against a bug in Python's execfile(). Closes #123.
636 protect against a bug in Python's execfile(). Closes #123.
633
637
634 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
638 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
635
639
636 * IPython/iplib.py (split_user_input): ensure that when splitting
640 * IPython/iplib.py (split_user_input): ensure that when splitting
637 user input, the part that can be treated as a python name is pure
641 user input, the part that can be treated as a python name is pure
638 ascii (Python identifiers MUST be pure ascii). Part of the
642 ascii (Python identifiers MUST be pure ascii). Part of the
639 ongoing Unicode support work.
643 ongoing Unicode support work.
640
644
641 * IPython/Prompts.py (prompt_specials_color): Add \N for the
645 * IPython/Prompts.py (prompt_specials_color): Add \N for the
642 actual prompt number, without any coloring. This allows users to
646 actual prompt number, without any coloring. This allows users to
643 produce numbered prompts with their own colors. Added after a
647 produce numbered prompts with their own colors. Added after a
644 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
648 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
645
649
646 2007-03-31 Walter Doerwald <walter@livinglogic.de>
650 2007-03-31 Walter Doerwald <walter@livinglogic.de>
647
651
648 * IPython/Extensions/igrid.py: Map the return key
652 * IPython/Extensions/igrid.py: Map the return key
649 to enter() and shift-return to enterattr().
653 to enter() and shift-return to enterattr().
650
654
651 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
655 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
652
656
653 * IPython/Magic.py (magic_psearch): add unicode support by
657 * IPython/Magic.py (magic_psearch): add unicode support by
654 encoding to ascii the input, since this routine also only deals
658 encoding to ascii the input, since this routine also only deals
655 with valid Python names. Fixes a bug reported by Stefan.
659 with valid Python names. Fixes a bug reported by Stefan.
656
660
657 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
661 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
658
662
659 * IPython/Magic.py (_inspect): convert unicode input into ascii
663 * IPython/Magic.py (_inspect): convert unicode input into ascii
660 before trying to evaluate it as a Python identifier. This fixes a
664 before trying to evaluate it as a Python identifier. This fixes a
661 problem that the new unicode support had introduced when analyzing
665 problem that the new unicode support had introduced when analyzing
662 long definition lines for functions.
666 long definition lines for functions.
663
667
664 2007-03-24 Walter Doerwald <walter@livinglogic.de>
668 2007-03-24 Walter Doerwald <walter@livinglogic.de>
665
669
666 * IPython/Extensions/igrid.py: Fix picking. Using
670 * IPython/Extensions/igrid.py: Fix picking. Using
667 igrid with wxPython 2.6 and -wthread should work now.
671 igrid with wxPython 2.6 and -wthread should work now.
668 igrid.display() simply tries to create a frame without
672 igrid.display() simply tries to create a frame without
669 an application. Only if this fails an application is created.
673 an application. Only if this fails an application is created.
670
674
671 2007-03-23 Walter Doerwald <walter@livinglogic.de>
675 2007-03-23 Walter Doerwald <walter@livinglogic.de>
672
676
673 * IPython/Extensions/path.py: Updated to version 2.2.
677 * IPython/Extensions/path.py: Updated to version 2.2.
674
678
675 2007-03-23 Ville Vainio <vivainio@gmail.com>
679 2007-03-23 Ville Vainio <vivainio@gmail.com>
676
680
677 * iplib.py: recursive alias expansion now works better, so that
681 * iplib.py: recursive alias expansion now works better, so that
678 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
682 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
679 doesn't trip up the process, if 'd' has been aliased to 'ls'.
683 doesn't trip up the process, if 'd' has been aliased to 'ls'.
680
684
681 * Extensions/ipy_gnuglobal.py added, provides %global magic
685 * Extensions/ipy_gnuglobal.py added, provides %global magic
682 for users of http://www.gnu.org/software/global
686 for users of http://www.gnu.org/software/global
683
687
684 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
688 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
685 Closes #52. Patch by Stefan van der Walt.
689 Closes #52. Patch by Stefan van der Walt.
686
690
687 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
691 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
688
692
689 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
693 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
690 respect the __file__ attribute when using %run. Thanks to a bug
694 respect the __file__ attribute when using %run. Thanks to a bug
691 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
695 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
692
696
693 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
697 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
694
698
695 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
699 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
696 input. Patch sent by Stefan.
700 input. Patch sent by Stefan.
697
701
698 2007-03-20 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
702 2007-03-20 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
699 * IPython/Extensions/ipy_stock_completer.py
703 * IPython/Extensions/ipy_stock_completer.py
700 shlex_split, fix bug in shlex_split. len function
704 shlex_split, fix bug in shlex_split. len function
701 call was missing an if statement. Caused shlex_split to
705 call was missing an if statement. Caused shlex_split to
702 sometimes return "" as last element.
706 sometimes return "" as last element.
703
707
704 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
708 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
705
709
706 * IPython/completer.py
710 * IPython/completer.py
707 (IPCompleter.file_matches.single_dir_expand): fix a problem
711 (IPCompleter.file_matches.single_dir_expand): fix a problem
708 reported by Stefan, where directories containign a single subdir
712 reported by Stefan, where directories containign a single subdir
709 would be completed too early.
713 would be completed too early.
710
714
711 * IPython/Shell.py (_load_pylab): Make the execution of 'from
715 * IPython/Shell.py (_load_pylab): Make the execution of 'from
712 pylab import *' when -pylab is given be optional. A new flag,
716 pylab import *' when -pylab is given be optional. A new flag,
713 pylab_import_all controls this behavior, the default is True for
717 pylab_import_all controls this behavior, the default is True for
714 backwards compatibility.
718 backwards compatibility.
715
719
716 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
720 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
717 modified) R. Bernstein's patch for fully syntax highlighted
721 modified) R. Bernstein's patch for fully syntax highlighted
718 tracebacks. The functionality is also available under ultraTB for
722 tracebacks. The functionality is also available under ultraTB for
719 non-ipython users (someone using ultraTB but outside an ipython
723 non-ipython users (someone using ultraTB but outside an ipython
720 session). They can select the color scheme by setting the
724 session). They can select the color scheme by setting the
721 module-level global DEFAULT_SCHEME. The highlight functionality
725 module-level global DEFAULT_SCHEME. The highlight functionality
722 also works when debugging.
726 also works when debugging.
723
727
724 * IPython/genutils.py (IOStream.close): small patch by
728 * IPython/genutils.py (IOStream.close): small patch by
725 R. Bernstein for improved pydb support.
729 R. Bernstein for improved pydb support.
726
730
727 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
731 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
728 DaveS <davls@telus.net> to improve support of debugging under
732 DaveS <davls@telus.net> to improve support of debugging under
729 NTEmacs, including improved pydb behavior.
733 NTEmacs, including improved pydb behavior.
730
734
731 * IPython/Magic.py (magic_prun): Fix saving of profile info for
735 * IPython/Magic.py (magic_prun): Fix saving of profile info for
732 Python 2.5, where the stats object API changed a little. Thanks
736 Python 2.5, where the stats object API changed a little. Thanks
733 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
737 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
734
738
735 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
739 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
736 Pernetty's patch to improve support for (X)Emacs under Win32.
740 Pernetty's patch to improve support for (X)Emacs under Win32.
737
741
738 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
742 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
739
743
740 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
744 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
741 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
745 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
742 a report by Nik Tautenhahn.
746 a report by Nik Tautenhahn.
743
747
744 2007-03-16 Walter Doerwald <walter@livinglogic.de>
748 2007-03-16 Walter Doerwald <walter@livinglogic.de>
745
749
746 * setup.py: Add the igrid help files to the list of data files
750 * setup.py: Add the igrid help files to the list of data files
747 to be installed alongside igrid.
751 to be installed alongside igrid.
748 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
752 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
749 Show the input object of the igrid browser as the window tile.
753 Show the input object of the igrid browser as the window tile.
750 Show the object the cursor is on in the statusbar.
754 Show the object the cursor is on in the statusbar.
751
755
752 2007-03-15 Ville Vainio <vivainio@gmail.com>
756 2007-03-15 Ville Vainio <vivainio@gmail.com>
753
757
754 * Extensions/ipy_stock_completers.py: Fixed exception
758 * Extensions/ipy_stock_completers.py: Fixed exception
755 on mismatching quotes in %run completer. Patch by
759 on mismatching quotes in %run completer. Patch by
756 JοΏ½rgen Stenarson. Closes #127.
760 JοΏ½rgen Stenarson. Closes #127.
757
761
758 2007-03-14 Ville Vainio <vivainio@gmail.com>
762 2007-03-14 Ville Vainio <vivainio@gmail.com>
759
763
760 * Extensions/ext_rehashdir.py: Do not do auto_alias
764 * Extensions/ext_rehashdir.py: Do not do auto_alias
761 in %rehashdir, it clobbers %store'd aliases.
765 in %rehashdir, it clobbers %store'd aliases.
762
766
763 * UserConfig/ipy_profile_sh.py: envpersist.py extension
767 * UserConfig/ipy_profile_sh.py: envpersist.py extension
764 (beefed up %env) imported for sh profile.
768 (beefed up %env) imported for sh profile.
765
769
766 2007-03-10 Walter Doerwald <walter@livinglogic.de>
770 2007-03-10 Walter Doerwald <walter@livinglogic.de>
767
771
768 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
772 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
769 as the default browser.
773 as the default browser.
770 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
774 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
771 As igrid displays all attributes it ever encounters, fetch() (which has
775 As igrid displays all attributes it ever encounters, fetch() (which has
772 been renamed to _fetch()) doesn't have to recalculate the display attributes
776 been renamed to _fetch()) doesn't have to recalculate the display attributes
773 every time a new item is fetched. This should speed up scrolling.
777 every time a new item is fetched. This should speed up scrolling.
774
778
775 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
779 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
776
780
777 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
781 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
778 Schmolck's recently reported tab-completion bug (my previous one
782 Schmolck's recently reported tab-completion bug (my previous one
779 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
783 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
780
784
781 2007-03-09 Walter Doerwald <walter@livinglogic.de>
785 2007-03-09 Walter Doerwald <walter@livinglogic.de>
782
786
783 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
787 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
784 Close help window if exiting igrid.
788 Close help window if exiting igrid.
785
789
786 2007-03-02 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
790 2007-03-02 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
787
791
788 * IPython/Extensions/ipy_defaults.py: Check if readline is available
792 * IPython/Extensions/ipy_defaults.py: Check if readline is available
789 before calling functions from readline.
793 before calling functions from readline.
790
794
791 2007-03-02 Walter Doerwald <walter@livinglogic.de>
795 2007-03-02 Walter Doerwald <walter@livinglogic.de>
792
796
793 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
797 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
794 igrid is a wxPython-based display object for ipipe. If your system has
798 igrid is a wxPython-based display object for ipipe. If your system has
795 wx installed igrid will be the default display. Without wx ipipe falls
799 wx installed igrid will be the default display. Without wx ipipe falls
796 back to ibrowse (which needs curses). If no curses is installed ipipe
800 back to ibrowse (which needs curses). If no curses is installed ipipe
797 falls back to idump.
801 falls back to idump.
798
802
799 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
803 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
800
804
801 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
805 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
802 my changes from yesterday, they introduced bugs. Will reactivate
806 my changes from yesterday, they introduced bugs. Will reactivate
803 once I get a correct solution, which will be much easier thanks to
807 once I get a correct solution, which will be much easier thanks to
804 Dan Milstein's new prefilter test suite.
808 Dan Milstein's new prefilter test suite.
805
809
806 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
810 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
807
811
808 * IPython/iplib.py (split_user_input): fix input splitting so we
812 * IPython/iplib.py (split_user_input): fix input splitting so we
809 don't attempt attribute accesses on things that can't possibly be
813 don't attempt attribute accesses on things that can't possibly be
810 valid Python attributes. After a bug report by Alex Schmolck.
814 valid Python attributes. After a bug report by Alex Schmolck.
811 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
815 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
812 %magic with explicit % prefix.
816 %magic with explicit % prefix.
813
817
814 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
818 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
815
819
816 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
820 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
817 avoid a DeprecationWarning from GTK.
821 avoid a DeprecationWarning from GTK.
818
822
819 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
823 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
820
824
821 * IPython/genutils.py (clock): I modified clock() to return total
825 * IPython/genutils.py (clock): I modified clock() to return total
822 time, user+system. This is a more commonly needed metric. I also
826 time, user+system. This is a more commonly needed metric. I also
823 introduced the new clocku/clocks to get only user/system time if
827 introduced the new clocku/clocks to get only user/system time if
824 one wants those instead.
828 one wants those instead.
825
829
826 ***WARNING: API CHANGE*** clock() used to return only user time,
830 ***WARNING: API CHANGE*** clock() used to return only user time,
827 so if you want exactly the same results as before, use clocku
831 so if you want exactly the same results as before, use clocku
828 instead.
832 instead.
829
833
830 2007-02-22 Ville Vainio <vivainio@gmail.com>
834 2007-02-22 Ville Vainio <vivainio@gmail.com>
831
835
832 * IPython/Extensions/ipy_p4.py: Extension for improved
836 * IPython/Extensions/ipy_p4.py: Extension for improved
833 p4 (perforce version control system) experience.
837 p4 (perforce version control system) experience.
834 Adds %p4 magic with p4 command completion and
838 Adds %p4 magic with p4 command completion and
835 automatic -G argument (marshall output as python dict)
839 automatic -G argument (marshall output as python dict)
836
840
837 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
841 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
838
842
839 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
843 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
840 stop marks.
844 stop marks.
841 (ClearingMixin): a simple mixin to easily make a Demo class clear
845 (ClearingMixin): a simple mixin to easily make a Demo class clear
842 the screen in between blocks and have empty marquees. The
846 the screen in between blocks and have empty marquees. The
843 ClearDemo and ClearIPDemo classes that use it are included.
847 ClearDemo and ClearIPDemo classes that use it are included.
844
848
845 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
849 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
846
850
847 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
851 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
848 protect against exceptions at Python shutdown time. Patch
852 protect against exceptions at Python shutdown time. Patch
849 sumbmitted to upstream.
853 sumbmitted to upstream.
850
854
851 2007-02-14 Walter Doerwald <walter@livinglogic.de>
855 2007-02-14 Walter Doerwald <walter@livinglogic.de>
852
856
853 * IPython/Extensions/ibrowse.py: If entering the first object level
857 * IPython/Extensions/ibrowse.py: If entering the first object level
854 (i.e. the object for which the browser has been started) fails,
858 (i.e. the object for which the browser has been started) fails,
855 now the error is raised directly (aborting the browser) instead of
859 now the error is raised directly (aborting the browser) instead of
856 running into an empty levels list later.
860 running into an empty levels list later.
857
861
858 2007-02-03 Walter Doerwald <walter@livinglogic.de>
862 2007-02-03 Walter Doerwald <walter@livinglogic.de>
859
863
860 * IPython/Extensions/ipipe.py: Add an xrepr implementation
864 * IPython/Extensions/ipipe.py: Add an xrepr implementation
861 for the noitem object.
865 for the noitem object.
862
866
863 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
867 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
864
868
865 * IPython/completer.py (Completer.attr_matches): Fix small
869 * IPython/completer.py (Completer.attr_matches): Fix small
866 tab-completion bug with Enthought Traits objects with units.
870 tab-completion bug with Enthought Traits objects with units.
867 Thanks to a bug report by Tom Denniston
871 Thanks to a bug report by Tom Denniston
868 <tom.denniston-AT-alum.dartmouth.org>.
872 <tom.denniston-AT-alum.dartmouth.org>.
869
873
870 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
874 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
871
875
872 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
876 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
873 bug where only .ipy or .py would be completed. Once the first
877 bug where only .ipy or .py would be completed. Once the first
874 argument to %run has been given, all completions are valid because
878 argument to %run has been given, all completions are valid because
875 they are the arguments to the script, which may well be non-python
879 they are the arguments to the script, which may well be non-python
876 filenames.
880 filenames.
877
881
878 * IPython/irunner.py (InteractiveRunner.run_source): major updates
882 * IPython/irunner.py (InteractiveRunner.run_source): major updates
879 to irunner to allow it to correctly support real doctesting of
883 to irunner to allow it to correctly support real doctesting of
880 out-of-process ipython code.
884 out-of-process ipython code.
881
885
882 * IPython/Magic.py (magic_cd): Make the setting of the terminal
886 * IPython/Magic.py (magic_cd): Make the setting of the terminal
883 title an option (-noterm_title) because it completely breaks
887 title an option (-noterm_title) because it completely breaks
884 doctesting.
888 doctesting.
885
889
886 * IPython/demo.py: fix IPythonDemo class that was not actually working.
890 * IPython/demo.py: fix IPythonDemo class that was not actually working.
887
891
888 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
892 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
889
893
890 * IPython/irunner.py (main): fix small bug where extensions were
894 * IPython/irunner.py (main): fix small bug where extensions were
891 not being correctly recognized.
895 not being correctly recognized.
892
896
893 2007-01-23 Walter Doerwald <walter@livinglogic.de>
897 2007-01-23 Walter Doerwald <walter@livinglogic.de>
894
898
895 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
899 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
896 a string containing a single line yields the string itself as the
900 a string containing a single line yields the string itself as the
897 only item.
901 only item.
898
902
899 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
903 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
900 object if it's the same as the one on the last level (This avoids
904 object if it's the same as the one on the last level (This avoids
901 infinite recursion for one line strings).
905 infinite recursion for one line strings).
902
906
903 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
907 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
904
908
905 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
909 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
906 all output streams before printing tracebacks. This ensures that
910 all output streams before printing tracebacks. This ensures that
907 user output doesn't end up interleaved with traceback output.
911 user output doesn't end up interleaved with traceback output.
908
912
909 2007-01-10 Ville Vainio <vivainio@gmail.com>
913 2007-01-10 Ville Vainio <vivainio@gmail.com>
910
914
911 * Extensions/envpersist.py: Turbocharged %env that remembers
915 * Extensions/envpersist.py: Turbocharged %env that remembers
912 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
916 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
913 "%env VISUAL=jed".
917 "%env VISUAL=jed".
914
918
915 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
919 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
916
920
917 * IPython/iplib.py (showtraceback): ensure that we correctly call
921 * IPython/iplib.py (showtraceback): ensure that we correctly call
918 custom handlers in all cases (some with pdb were slipping through,
922 custom handlers in all cases (some with pdb were slipping through,
919 but I'm not exactly sure why).
923 but I'm not exactly sure why).
920
924
921 * IPython/Debugger.py (Tracer.__init__): added new class to
925 * IPython/Debugger.py (Tracer.__init__): added new class to
922 support set_trace-like usage of IPython's enhanced debugger.
926 support set_trace-like usage of IPython's enhanced debugger.
923
927
924 2006-12-24 Ville Vainio <vivainio@gmail.com>
928 2006-12-24 Ville Vainio <vivainio@gmail.com>
925
929
926 * ipmaker.py: more informative message when ipy_user_conf
930 * ipmaker.py: more informative message when ipy_user_conf
927 import fails (suggest running %upgrade).
931 import fails (suggest running %upgrade).
928
932
929 * tools/run_ipy_in_profiler.py: Utility to see where
933 * tools/run_ipy_in_profiler.py: Utility to see where
930 the time during IPython startup is spent.
934 the time during IPython startup is spent.
931
935
932 2006-12-20 Ville Vainio <vivainio@gmail.com>
936 2006-12-20 Ville Vainio <vivainio@gmail.com>
933
937
934 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
938 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
935
939
936 * ipapi.py: Add new ipapi method, expand_alias.
940 * ipapi.py: Add new ipapi method, expand_alias.
937
941
938 * Release.py: Bump up version to 0.7.4.svn
942 * Release.py: Bump up version to 0.7.4.svn
939
943
940 2006-12-17 Ville Vainio <vivainio@gmail.com>
944 2006-12-17 Ville Vainio <vivainio@gmail.com>
941
945
942 * Extensions/jobctrl.py: Fixed &cmd arg arg...
946 * Extensions/jobctrl.py: Fixed &cmd arg arg...
943 to work properly on posix too
947 to work properly on posix too
944
948
945 * Release.py: Update revnum (version is still just 0.7.3).
949 * Release.py: Update revnum (version is still just 0.7.3).
946
950
947 2006-12-15 Ville Vainio <vivainio@gmail.com>
951 2006-12-15 Ville Vainio <vivainio@gmail.com>
948
952
949 * scripts/ipython_win_post_install: create ipython.py in
953 * scripts/ipython_win_post_install: create ipython.py in
950 prefix + "/scripts".
954 prefix + "/scripts".
951
955
952 * Release.py: Update version to 0.7.3.
956 * Release.py: Update version to 0.7.3.
953
957
954 2006-12-14 Ville Vainio <vivainio@gmail.com>
958 2006-12-14 Ville Vainio <vivainio@gmail.com>
955
959
956 * scripts/ipython_win_post_install: Overwrite old shortcuts
960 * scripts/ipython_win_post_install: Overwrite old shortcuts
957 if they already exist
961 if they already exist
958
962
959 * Release.py: release 0.7.3rc2
963 * Release.py: release 0.7.3rc2
960
964
961 2006-12-13 Ville Vainio <vivainio@gmail.com>
965 2006-12-13 Ville Vainio <vivainio@gmail.com>
962
966
963 * Branch and update Release.py for 0.7.3rc1
967 * Branch and update Release.py for 0.7.3rc1
964
968
965 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
969 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
966
970
967 * IPython/Shell.py (IPShellWX): update for current WX naming
971 * IPython/Shell.py (IPShellWX): update for current WX naming
968 conventions, to avoid a deprecation warning with current WX
972 conventions, to avoid a deprecation warning with current WX
969 versions. Thanks to a report by Danny Shevitz.
973 versions. Thanks to a report by Danny Shevitz.
970
974
971 2006-12-12 Ville Vainio <vivainio@gmail.com>
975 2006-12-12 Ville Vainio <vivainio@gmail.com>
972
976
973 * ipmaker.py: apply david cournapeau's patch to make
977 * ipmaker.py: apply david cournapeau's patch to make
974 import_some work properly even when ipythonrc does
978 import_some work properly even when ipythonrc does
975 import_some on empty list (it was an old bug!).
979 import_some on empty list (it was an old bug!).
976
980
977 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
981 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
978 Add deprecation note to ipythonrc and a url to wiki
982 Add deprecation note to ipythonrc and a url to wiki
979 in ipy_user_conf.py
983 in ipy_user_conf.py
980
984
981
985
982 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
986 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
983 as if it was typed on IPython command prompt, i.e.
987 as if it was typed on IPython command prompt, i.e.
984 as IPython script.
988 as IPython script.
985
989
986 * example-magic.py, magic_grepl.py: remove outdated examples
990 * example-magic.py, magic_grepl.py: remove outdated examples
987
991
988 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
992 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
989
993
990 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
994 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
991 is called before any exception has occurred.
995 is called before any exception has occurred.
992
996
993 2006-12-08 Ville Vainio <vivainio@gmail.com>
997 2006-12-08 Ville Vainio <vivainio@gmail.com>
994
998
995 * Extensions/ipy_stock_completers.py: fix cd completer
999 * Extensions/ipy_stock_completers.py: fix cd completer
996 to translate /'s to \'s again.
1000 to translate /'s to \'s again.
997
1001
998 * completer.py: prevent traceback on file completions w/
1002 * completer.py: prevent traceback on file completions w/
999 backslash.
1003 backslash.
1000
1004
1001 * Release.py: Update release number to 0.7.3b3 for release
1005 * Release.py: Update release number to 0.7.3b3 for release
1002
1006
1003 2006-12-07 Ville Vainio <vivainio@gmail.com>
1007 2006-12-07 Ville Vainio <vivainio@gmail.com>
1004
1008
1005 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
1009 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
1006 while executing external code. Provides more shell-like behaviour
1010 while executing external code. Provides more shell-like behaviour
1007 and overall better response to ctrl + C / ctrl + break.
1011 and overall better response to ctrl + C / ctrl + break.
1008
1012
1009 * tools/make_tarball.py: new script to create tarball straight from svn
1013 * tools/make_tarball.py: new script to create tarball straight from svn
1010 (setup.py sdist doesn't work on win32).
1014 (setup.py sdist doesn't work on win32).
1011
1015
1012 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1016 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1013 on dirnames with spaces and use the default completer instead.
1017 on dirnames with spaces and use the default completer instead.
1014
1018
1015 * Revision.py: Change version to 0.7.3b2 for release.
1019 * Revision.py: Change version to 0.7.3b2 for release.
1016
1020
1017 2006-12-05 Ville Vainio <vivainio@gmail.com>
1021 2006-12-05 Ville Vainio <vivainio@gmail.com>
1018
1022
1019 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1023 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1020 pydb patch 4 (rm debug printing, py 2.5 checking)
1024 pydb patch 4 (rm debug printing, py 2.5 checking)
1021
1025
1022 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1026 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1023 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1027 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1024 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1028 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1025 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1029 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1026 object the cursor was on before the refresh. The command "markrange" is
1030 object the cursor was on before the refresh. The command "markrange" is
1027 mapped to "%" now.
1031 mapped to "%" now.
1028 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1032 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1029
1033
1030 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1034 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1031
1035
1032 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1036 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1033 interactive debugger on the last traceback, without having to call
1037 interactive debugger on the last traceback, without having to call
1034 %pdb and rerun your code. Made minor changes in various modules,
1038 %pdb and rerun your code. Made minor changes in various modules,
1035 should automatically recognize pydb if available.
1039 should automatically recognize pydb if available.
1036
1040
1037 2006-11-28 Ville Vainio <vivainio@gmail.com>
1041 2006-11-28 Ville Vainio <vivainio@gmail.com>
1038
1042
1039 * completer.py: If the text start with !, show file completions
1043 * completer.py: If the text start with !, show file completions
1040 properly. This helps when trying to complete command name
1044 properly. This helps when trying to complete command name
1041 for shell escapes.
1045 for shell escapes.
1042
1046
1043 2006-11-27 Ville Vainio <vivainio@gmail.com>
1047 2006-11-27 Ville Vainio <vivainio@gmail.com>
1044
1048
1045 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1049 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1046 der Walt. Clean up svn and hg completers by using a common
1050 der Walt. Clean up svn and hg completers by using a common
1047 vcs_completer.
1051 vcs_completer.
1048
1052
1049 2006-11-26 Ville Vainio <vivainio@gmail.com>
1053 2006-11-26 Ville Vainio <vivainio@gmail.com>
1050
1054
1051 * Remove ipconfig and %config; you should use _ip.options structure
1055 * Remove ipconfig and %config; you should use _ip.options structure
1052 directly instead!
1056 directly instead!
1053
1057
1054 * genutils.py: add wrap_deprecated function for deprecating callables
1058 * genutils.py: add wrap_deprecated function for deprecating callables
1055
1059
1056 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1060 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1057 _ip.system instead. ipalias is redundant.
1061 _ip.system instead. ipalias is redundant.
1058
1062
1059 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1063 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1060 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1064 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1061 explicit.
1065 explicit.
1062
1066
1063 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1067 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1064 completer. Try it by entering 'hg ' and pressing tab.
1068 completer. Try it by entering 'hg ' and pressing tab.
1065
1069
1066 * macro.py: Give Macro a useful __repr__ method
1070 * macro.py: Give Macro a useful __repr__ method
1067
1071
1068 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1072 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1069
1073
1070 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1074 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1071 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1075 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1072 we don't get a duplicate ipipe module, where registration of the xrepr
1076 we don't get a duplicate ipipe module, where registration of the xrepr
1073 implementation for Text is useless.
1077 implementation for Text is useless.
1074
1078
1075 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1079 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1076
1080
1077 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1081 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1078
1082
1079 2006-11-24 Ville Vainio <vivainio@gmail.com>
1083 2006-11-24 Ville Vainio <vivainio@gmail.com>
1080
1084
1081 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1085 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1082 try to use "cProfile" instead of the slower pure python
1086 try to use "cProfile" instead of the slower pure python
1083 "profile"
1087 "profile"
1084
1088
1085 2006-11-23 Ville Vainio <vivainio@gmail.com>
1089 2006-11-23 Ville Vainio <vivainio@gmail.com>
1086
1090
1087 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1091 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1088 Qt+IPython+Designer link in documentation.
1092 Qt+IPython+Designer link in documentation.
1089
1093
1090 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1094 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1091 correct Pdb object to %pydb.
1095 correct Pdb object to %pydb.
1092
1096
1093
1097
1094 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1098 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1095 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1099 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1096 generic xrepr(), otherwise the list implementation would kick in.
1100 generic xrepr(), otherwise the list implementation would kick in.
1097
1101
1098 2006-11-21 Ville Vainio <vivainio@gmail.com>
1102 2006-11-21 Ville Vainio <vivainio@gmail.com>
1099
1103
1100 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1104 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1101 with one from UserConfig.
1105 with one from UserConfig.
1102
1106
1103 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1107 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1104 it was missing which broke the sh profile.
1108 it was missing which broke the sh profile.
1105
1109
1106 * completer.py: file completer now uses explicit '/' instead
1110 * completer.py: file completer now uses explicit '/' instead
1107 of os.path.join, expansion of 'foo' was broken on win32
1111 of os.path.join, expansion of 'foo' was broken on win32
1108 if there was one directory with name 'foobar'.
1112 if there was one directory with name 'foobar'.
1109
1113
1110 * A bunch of patches from Kirill Smelkov:
1114 * A bunch of patches from Kirill Smelkov:
1111
1115
1112 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1116 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1113
1117
1114 * [patch 7/9] Implement %page -r (page in raw mode) -
1118 * [patch 7/9] Implement %page -r (page in raw mode) -
1115
1119
1116 * [patch 5/9] ScientificPython webpage has moved
1120 * [patch 5/9] ScientificPython webpage has moved
1117
1121
1118 * [patch 4/9] The manual mentions %ds, should be %dhist
1122 * [patch 4/9] The manual mentions %ds, should be %dhist
1119
1123
1120 * [patch 3/9] Kill old bits from %prun doc.
1124 * [patch 3/9] Kill old bits from %prun doc.
1121
1125
1122 * [patch 1/9] Fix typos here and there.
1126 * [patch 1/9] Fix typos here and there.
1123
1127
1124 2006-11-08 Ville Vainio <vivainio@gmail.com>
1128 2006-11-08 Ville Vainio <vivainio@gmail.com>
1125
1129
1126 * completer.py (attr_matches): catch all exceptions raised
1130 * completer.py (attr_matches): catch all exceptions raised
1127 by eval of expr with dots.
1131 by eval of expr with dots.
1128
1132
1129 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1133 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1130
1134
1131 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1135 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1132 input if it starts with whitespace. This allows you to paste
1136 input if it starts with whitespace. This allows you to paste
1133 indented input from any editor without manually having to type in
1137 indented input from any editor without manually having to type in
1134 the 'if 1:', which is convenient when working interactively.
1138 the 'if 1:', which is convenient when working interactively.
1135 Slightly modifed version of a patch by Bo Peng
1139 Slightly modifed version of a patch by Bo Peng
1136 <bpeng-AT-rice.edu>.
1140 <bpeng-AT-rice.edu>.
1137
1141
1138 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1142 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1139
1143
1140 * IPython/irunner.py (main): modified irunner so it automatically
1144 * IPython/irunner.py (main): modified irunner so it automatically
1141 recognizes the right runner to use based on the extension (.py for
1145 recognizes the right runner to use based on the extension (.py for
1142 python, .ipy for ipython and .sage for sage).
1146 python, .ipy for ipython and .sage for sage).
1143
1147
1144 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1148 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1145 visible in ipapi as ip.config(), to programatically control the
1149 visible in ipapi as ip.config(), to programatically control the
1146 internal rc object. There's an accompanying %config magic for
1150 internal rc object. There's an accompanying %config magic for
1147 interactive use, which has been enhanced to match the
1151 interactive use, which has been enhanced to match the
1148 funtionality in ipconfig.
1152 funtionality in ipconfig.
1149
1153
1150 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1154 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1151 so it's not just a toggle, it now takes an argument. Add support
1155 so it's not just a toggle, it now takes an argument. Add support
1152 for a customizable header when making system calls, as the new
1156 for a customizable header when making system calls, as the new
1153 system_header variable in the ipythonrc file.
1157 system_header variable in the ipythonrc file.
1154
1158
1155 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1159 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1156
1160
1157 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1161 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1158 generic functions (using Philip J. Eby's simplegeneric package).
1162 generic functions (using Philip J. Eby's simplegeneric package).
1159 This makes it possible to customize the display of third-party classes
1163 This makes it possible to customize the display of third-party classes
1160 without having to monkeypatch them. xiter() no longer supports a mode
1164 without having to monkeypatch them. xiter() no longer supports a mode
1161 argument and the XMode class has been removed. The same functionality can
1165 argument and the XMode class has been removed. The same functionality can
1162 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1166 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1163 One consequence of the switch to generic functions is that xrepr() and
1167 One consequence of the switch to generic functions is that xrepr() and
1164 xattrs() implementation must define the default value for the mode
1168 xattrs() implementation must define the default value for the mode
1165 argument themselves and xattrs() implementations must return real
1169 argument themselves and xattrs() implementations must return real
1166 descriptors.
1170 descriptors.
1167
1171
1168 * IPython/external: This new subpackage will contain all third-party
1172 * IPython/external: This new subpackage will contain all third-party
1169 packages that are bundled with IPython. (The first one is simplegeneric).
1173 packages that are bundled with IPython. (The first one is simplegeneric).
1170
1174
1171 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1175 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1172 directory which as been dropped in r1703.
1176 directory which as been dropped in r1703.
1173
1177
1174 * IPython/Extensions/ipipe.py (iless): Fixed.
1178 * IPython/Extensions/ipipe.py (iless): Fixed.
1175
1179
1176 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1180 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1177
1181
1178 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1182 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1179
1183
1180 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1184 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1181 handling in variable expansion so that shells and magics recognize
1185 handling in variable expansion so that shells and magics recognize
1182 function local scopes correctly. Bug reported by Brian.
1186 function local scopes correctly. Bug reported by Brian.
1183
1187
1184 * scripts/ipython: remove the very first entry in sys.path which
1188 * scripts/ipython: remove the very first entry in sys.path which
1185 Python auto-inserts for scripts, so that sys.path under IPython is
1189 Python auto-inserts for scripts, so that sys.path under IPython is
1186 as similar as possible to that under plain Python.
1190 as similar as possible to that under plain Python.
1187
1191
1188 * IPython/completer.py (IPCompleter.file_matches): Fix
1192 * IPython/completer.py (IPCompleter.file_matches): Fix
1189 tab-completion so that quotes are not closed unless the completion
1193 tab-completion so that quotes are not closed unless the completion
1190 is unambiguous. After a request by Stefan. Minor cleanups in
1194 is unambiguous. After a request by Stefan. Minor cleanups in
1191 ipy_stock_completers.
1195 ipy_stock_completers.
1192
1196
1193 2006-11-02 Ville Vainio <vivainio@gmail.com>
1197 2006-11-02 Ville Vainio <vivainio@gmail.com>
1194
1198
1195 * ipy_stock_completers.py: Add %run and %cd completers.
1199 * ipy_stock_completers.py: Add %run and %cd completers.
1196
1200
1197 * completer.py: Try running custom completer for both
1201 * completer.py: Try running custom completer for both
1198 "foo" and "%foo" if the command is just "foo". Ignore case
1202 "foo" and "%foo" if the command is just "foo". Ignore case
1199 when filtering possible completions.
1203 when filtering possible completions.
1200
1204
1201 * UserConfig/ipy_user_conf.py: install stock completers as default
1205 * UserConfig/ipy_user_conf.py: install stock completers as default
1202
1206
1203 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1207 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1204 simplified readline history save / restore through a wrapper
1208 simplified readline history save / restore through a wrapper
1205 function
1209 function
1206
1210
1207
1211
1208 2006-10-31 Ville Vainio <vivainio@gmail.com>
1212 2006-10-31 Ville Vainio <vivainio@gmail.com>
1209
1213
1210 * strdispatch.py, completer.py, ipy_stock_completers.py:
1214 * strdispatch.py, completer.py, ipy_stock_completers.py:
1211 Allow str_key ("command") in completer hooks. Implement
1215 Allow str_key ("command") in completer hooks. Implement
1212 trivial completer for 'import' (stdlib modules only). Rename
1216 trivial completer for 'import' (stdlib modules only). Rename
1213 ipy_linux_package_managers.py to ipy_stock_completers.py.
1217 ipy_linux_package_managers.py to ipy_stock_completers.py.
1214 SVN completer.
1218 SVN completer.
1215
1219
1216 * Extensions/ledit.py: %magic line editor for easily and
1220 * Extensions/ledit.py: %magic line editor for easily and
1217 incrementally manipulating lists of strings. The magic command
1221 incrementally manipulating lists of strings. The magic command
1218 name is %led.
1222 name is %led.
1219
1223
1220 2006-10-30 Ville Vainio <vivainio@gmail.com>
1224 2006-10-30 Ville Vainio <vivainio@gmail.com>
1221
1225
1222 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1226 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1223 Bernsteins's patches for pydb integration.
1227 Bernsteins's patches for pydb integration.
1224 http://bashdb.sourceforge.net/pydb/
1228 http://bashdb.sourceforge.net/pydb/
1225
1229
1226 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1230 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1227 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1231 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1228 custom completer hook to allow the users to implement their own
1232 custom completer hook to allow the users to implement their own
1229 completers. See ipy_linux_package_managers.py for example. The
1233 completers. See ipy_linux_package_managers.py for example. The
1230 hook name is 'complete_command'.
1234 hook name is 'complete_command'.
1231
1235
1232 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1236 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1233
1237
1234 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1238 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1235 Numeric leftovers.
1239 Numeric leftovers.
1236
1240
1237 * ipython.el (py-execute-region): apply Stefan's patch to fix
1241 * ipython.el (py-execute-region): apply Stefan's patch to fix
1238 garbled results if the python shell hasn't been previously started.
1242 garbled results if the python shell hasn't been previously started.
1239
1243
1240 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1244 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1241 pretty generic function and useful for other things.
1245 pretty generic function and useful for other things.
1242
1246
1243 * IPython/OInspect.py (getsource): Add customizable source
1247 * IPython/OInspect.py (getsource): Add customizable source
1244 extractor. After a request/patch form W. Stein (SAGE).
1248 extractor. After a request/patch form W. Stein (SAGE).
1245
1249
1246 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1250 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1247 window size to a more reasonable value from what pexpect does,
1251 window size to a more reasonable value from what pexpect does,
1248 since their choice causes wrapping bugs with long input lines.
1252 since their choice causes wrapping bugs with long input lines.
1249
1253
1250 2006-10-28 Ville Vainio <vivainio@gmail.com>
1254 2006-10-28 Ville Vainio <vivainio@gmail.com>
1251
1255
1252 * Magic.py (%run): Save and restore the readline history from
1256 * Magic.py (%run): Save and restore the readline history from
1253 file around %run commands to prevent side effects from
1257 file around %run commands to prevent side effects from
1254 %runned programs that might use readline (e.g. pydb).
1258 %runned programs that might use readline (e.g. pydb).
1255
1259
1256 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1260 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1257 invoking the pydb enhanced debugger.
1261 invoking the pydb enhanced debugger.
1258
1262
1259 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1263 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1260
1264
1261 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1265 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1262 call the base class method and propagate the return value to
1266 call the base class method and propagate the return value to
1263 ifile. This is now done by path itself.
1267 ifile. This is now done by path itself.
1264
1268
1265 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1269 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1266
1270
1267 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1271 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1268 api: set_crash_handler(), to expose the ability to change the
1272 api: set_crash_handler(), to expose the ability to change the
1269 internal crash handler.
1273 internal crash handler.
1270
1274
1271 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1275 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1272 the various parameters of the crash handler so that apps using
1276 the various parameters of the crash handler so that apps using
1273 IPython as their engine can customize crash handling. Ipmlemented
1277 IPython as their engine can customize crash handling. Ipmlemented
1274 at the request of SAGE.
1278 at the request of SAGE.
1275
1279
1276 2006-10-14 Ville Vainio <vivainio@gmail.com>
1280 2006-10-14 Ville Vainio <vivainio@gmail.com>
1277
1281
1278 * Magic.py, ipython.el: applied first "safe" part of Rocky
1282 * Magic.py, ipython.el: applied first "safe" part of Rocky
1279 Bernstein's patch set for pydb integration.
1283 Bernstein's patch set for pydb integration.
1280
1284
1281 * Magic.py (%unalias, %alias): %store'd aliases can now be
1285 * Magic.py (%unalias, %alias): %store'd aliases can now be
1282 removed with '%unalias'. %alias w/o args now shows most
1286 removed with '%unalias'. %alias w/o args now shows most
1283 interesting (stored / manually defined) aliases last
1287 interesting (stored / manually defined) aliases last
1284 where they catch the eye w/o scrolling.
1288 where they catch the eye w/o scrolling.
1285
1289
1286 * Magic.py (%rehashx), ext_rehashdir.py: files with
1290 * Magic.py (%rehashx), ext_rehashdir.py: files with
1287 'py' extension are always considered executable, even
1291 'py' extension are always considered executable, even
1288 when not in PATHEXT environment variable.
1292 when not in PATHEXT environment variable.
1289
1293
1290 2006-10-12 Ville Vainio <vivainio@gmail.com>
1294 2006-10-12 Ville Vainio <vivainio@gmail.com>
1291
1295
1292 * jobctrl.py: Add new "jobctrl" extension for spawning background
1296 * jobctrl.py: Add new "jobctrl" extension for spawning background
1293 processes with "&find /". 'import jobctrl' to try it out. Requires
1297 processes with "&find /". 'import jobctrl' to try it out. Requires
1294 'subprocess' module, standard in python 2.4+.
1298 'subprocess' module, standard in python 2.4+.
1295
1299
1296 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1300 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1297 so if foo -> bar and bar -> baz, then foo -> baz.
1301 so if foo -> bar and bar -> baz, then foo -> baz.
1298
1302
1299 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1303 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1300
1304
1301 * IPython/Magic.py (Magic.parse_options): add a new posix option
1305 * IPython/Magic.py (Magic.parse_options): add a new posix option
1302 to allow parsing of input args in magics that doesn't strip quotes
1306 to allow parsing of input args in magics that doesn't strip quotes
1303 (if posix=False). This also closes %timeit bug reported by
1307 (if posix=False). This also closes %timeit bug reported by
1304 Stefan.
1308 Stefan.
1305
1309
1306 2006-10-03 Ville Vainio <vivainio@gmail.com>
1310 2006-10-03 Ville Vainio <vivainio@gmail.com>
1307
1311
1308 * iplib.py (raw_input, interact): Return ValueError catching for
1312 * iplib.py (raw_input, interact): Return ValueError catching for
1309 raw_input. Fixes infinite loop for sys.stdin.close() or
1313 raw_input. Fixes infinite loop for sys.stdin.close() or
1310 sys.stdout.close().
1314 sys.stdout.close().
1311
1315
1312 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1316 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1313
1317
1314 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1318 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1315 to help in handling doctests. irunner is now pretty useful for
1319 to help in handling doctests. irunner is now pretty useful for
1316 running standalone scripts and simulate a full interactive session
1320 running standalone scripts and simulate a full interactive session
1317 in a format that can be then pasted as a doctest.
1321 in a format that can be then pasted as a doctest.
1318
1322
1319 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1323 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1320 on top of the default (useless) ones. This also fixes the nasty
1324 on top of the default (useless) ones. This also fixes the nasty
1321 way in which 2.5's Quitter() exits (reverted [1785]).
1325 way in which 2.5's Quitter() exits (reverted [1785]).
1322
1326
1323 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1327 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1324 2.5.
1328 2.5.
1325
1329
1326 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1330 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1327 color scheme is updated as well when color scheme is changed
1331 color scheme is updated as well when color scheme is changed
1328 interactively.
1332 interactively.
1329
1333
1330 2006-09-27 Ville Vainio <vivainio@gmail.com>
1334 2006-09-27 Ville Vainio <vivainio@gmail.com>
1331
1335
1332 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1336 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1333 infinite loop and just exit. It's a hack, but will do for a while.
1337 infinite loop and just exit. It's a hack, but will do for a while.
1334
1338
1335 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1339 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1336
1340
1337 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1341 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1338 the constructor, this makes it possible to get a list of only directories
1342 the constructor, this makes it possible to get a list of only directories
1339 or only files.
1343 or only files.
1340
1344
1341 2006-08-12 Ville Vainio <vivainio@gmail.com>
1345 2006-08-12 Ville Vainio <vivainio@gmail.com>
1342
1346
1343 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1347 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1344 they broke unittest
1348 they broke unittest
1345
1349
1346 2006-08-11 Ville Vainio <vivainio@gmail.com>
1350 2006-08-11 Ville Vainio <vivainio@gmail.com>
1347
1351
1348 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1352 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1349 by resolving issue properly, i.e. by inheriting FakeModule
1353 by resolving issue properly, i.e. by inheriting FakeModule
1350 from types.ModuleType. Pickling ipython interactive data
1354 from types.ModuleType. Pickling ipython interactive data
1351 should still work as usual (testing appreciated).
1355 should still work as usual (testing appreciated).
1352
1356
1353 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1357 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1354
1358
1355 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1359 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1356 running under python 2.3 with code from 2.4 to fix a bug with
1360 running under python 2.3 with code from 2.4 to fix a bug with
1357 help(). Reported by the Debian maintainers, Norbert Tretkowski
1361 help(). Reported by the Debian maintainers, Norbert Tretkowski
1358 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1362 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1359 <afayolle-AT-debian.org>.
1363 <afayolle-AT-debian.org>.
1360
1364
1361 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1365 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1362
1366
1363 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1367 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1364 (which was displaying "quit" twice).
1368 (which was displaying "quit" twice).
1365
1369
1366 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1370 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1367
1371
1368 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1372 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1369 the mode argument).
1373 the mode argument).
1370
1374
1371 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1375 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1372
1376
1373 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1377 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1374 not running under IPython.
1378 not running under IPython.
1375
1379
1376 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1380 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1377 and make it iterable (iterating over the attribute itself). Add two new
1381 and make it iterable (iterating over the attribute itself). Add two new
1378 magic strings for __xattrs__(): If the string starts with "-", the attribute
1382 magic strings for __xattrs__(): If the string starts with "-", the attribute
1379 will not be displayed in ibrowse's detail view (but it can still be
1383 will not be displayed in ibrowse's detail view (but it can still be
1380 iterated over). This makes it possible to add attributes that are large
1384 iterated over). This makes it possible to add attributes that are large
1381 lists or generator methods to the detail view. Replace magic attribute names
1385 lists or generator methods to the detail view. Replace magic attribute names
1382 and _attrname() and _getattr() with "descriptors": For each type of magic
1386 and _attrname() and _getattr() with "descriptors": For each type of magic
1383 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1387 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1384 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1388 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1385 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1389 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1386 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1390 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1387 are still supported.
1391 are still supported.
1388
1392
1389 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1393 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1390 fails in ibrowse.fetch(), the exception object is added as the last item
1394 fails in ibrowse.fetch(), the exception object is added as the last item
1391 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1395 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1392 a generator throws an exception midway through execution.
1396 a generator throws an exception midway through execution.
1393
1397
1394 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1398 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1395 encoding into methods.
1399 encoding into methods.
1396
1400
1397 2006-07-26 Ville Vainio <vivainio@gmail.com>
1401 2006-07-26 Ville Vainio <vivainio@gmail.com>
1398
1402
1399 * iplib.py: history now stores multiline input as single
1403 * iplib.py: history now stores multiline input as single
1400 history entries. Patch by Jorgen Cederlof.
1404 history entries. Patch by Jorgen Cederlof.
1401
1405
1402 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1406 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1403
1407
1404 * IPython/Extensions/ibrowse.py: Make cursor visible over
1408 * IPython/Extensions/ibrowse.py: Make cursor visible over
1405 non existing attributes.
1409 non existing attributes.
1406
1410
1407 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1411 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1408
1412
1409 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1413 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1410 error output of the running command doesn't mess up the screen.
1414 error output of the running command doesn't mess up the screen.
1411
1415
1412 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1416 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1413
1417
1414 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1418 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1415 argument. This sorts the items themselves.
1419 argument. This sorts the items themselves.
1416
1420
1417 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1421 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1418
1422
1419 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1423 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1420 Compile expression strings into code objects. This should speed
1424 Compile expression strings into code objects. This should speed
1421 up ifilter and friends somewhat.
1425 up ifilter and friends somewhat.
1422
1426
1423 2006-07-08 Ville Vainio <vivainio@gmail.com>
1427 2006-07-08 Ville Vainio <vivainio@gmail.com>
1424
1428
1425 * Magic.py: %cpaste now strips > from the beginning of lines
1429 * Magic.py: %cpaste now strips > from the beginning of lines
1426 to ease pasting quoted code from emails. Contributed by
1430 to ease pasting quoted code from emails. Contributed by
1427 Stefan van der Walt.
1431 Stefan van der Walt.
1428
1432
1429 2006-06-29 Ville Vainio <vivainio@gmail.com>
1433 2006-06-29 Ville Vainio <vivainio@gmail.com>
1430
1434
1431 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1435 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1432 mode, patch contributed by Darren Dale. NEEDS TESTING!
1436 mode, patch contributed by Darren Dale. NEEDS TESTING!
1433
1437
1434 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1438 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1435
1439
1436 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1440 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1437 a blue background. Fix fetching new display rows when the browser
1441 a blue background. Fix fetching new display rows when the browser
1438 scrolls more than a screenful (e.g. by using the goto command).
1442 scrolls more than a screenful (e.g. by using the goto command).
1439
1443
1440 2006-06-27 Ville Vainio <vivainio@gmail.com>
1444 2006-06-27 Ville Vainio <vivainio@gmail.com>
1441
1445
1442 * Magic.py (_inspect, _ofind) Apply David Huard's
1446 * Magic.py (_inspect, _ofind) Apply David Huard's
1443 patch for displaying the correct docstring for 'property'
1447 patch for displaying the correct docstring for 'property'
1444 attributes.
1448 attributes.
1445
1449
1446 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1450 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1447
1451
1448 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1452 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1449 commands into the methods implementing them.
1453 commands into the methods implementing them.
1450
1454
1451 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1455 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1452
1456
1453 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1457 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1454 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1458 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1455 autoindent support was authored by Jin Liu.
1459 autoindent support was authored by Jin Liu.
1456
1460
1457 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1461 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1458
1462
1459 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1463 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1460 for keymaps with a custom class that simplifies handling.
1464 for keymaps with a custom class that simplifies handling.
1461
1465
1462 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1466 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1463
1467
1464 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1468 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1465 resizing. This requires Python 2.5 to work.
1469 resizing. This requires Python 2.5 to work.
1466
1470
1467 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1471 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1468
1472
1469 * IPython/Extensions/ibrowse.py: Add two new commands to
1473 * IPython/Extensions/ibrowse.py: Add two new commands to
1470 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1474 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1471 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1475 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1472 attributes again. Remapped the help command to "?". Display
1476 attributes again. Remapped the help command to "?". Display
1473 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1477 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1474 as keys for the "home" and "end" commands. Add three new commands
1478 as keys for the "home" and "end" commands. Add three new commands
1475 to the input mode for "find" and friends: "delend" (CTRL-K)
1479 to the input mode for "find" and friends: "delend" (CTRL-K)
1476 deletes to the end of line. "incsearchup" searches upwards in the
1480 deletes to the end of line. "incsearchup" searches upwards in the
1477 command history for an input that starts with the text before the cursor.
1481 command history for an input that starts with the text before the cursor.
1478 "incsearchdown" does the same downwards. Removed a bogus mapping of
1482 "incsearchdown" does the same downwards. Removed a bogus mapping of
1479 the x key to "delete".
1483 the x key to "delete".
1480
1484
1481 2006-06-15 Ville Vainio <vivainio@gmail.com>
1485 2006-06-15 Ville Vainio <vivainio@gmail.com>
1482
1486
1483 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1487 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1484 used to create prompts dynamically, instead of the "old" way of
1488 used to create prompts dynamically, instead of the "old" way of
1485 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1489 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1486 way still works (it's invoked by the default hook), of course.
1490 way still works (it's invoked by the default hook), of course.
1487
1491
1488 * Prompts.py: added generate_output_prompt hook for altering output
1492 * Prompts.py: added generate_output_prompt hook for altering output
1489 prompt
1493 prompt
1490
1494
1491 * Release.py: Changed version string to 0.7.3.svn.
1495 * Release.py: Changed version string to 0.7.3.svn.
1492
1496
1493 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1497 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1494
1498
1495 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1499 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1496 the call to fetch() always tries to fetch enough data for at least one
1500 the call to fetch() always tries to fetch enough data for at least one
1497 full screen. This makes it possible to simply call moveto(0,0,True) in
1501 full screen. This makes it possible to simply call moveto(0,0,True) in
1498 the constructor. Fix typos and removed the obsolete goto attribute.
1502 the constructor. Fix typos and removed the obsolete goto attribute.
1499
1503
1500 2006-06-12 Ville Vainio <vivainio@gmail.com>
1504 2006-06-12 Ville Vainio <vivainio@gmail.com>
1501
1505
1502 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1506 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1503 allowing $variable interpolation within multiline statements,
1507 allowing $variable interpolation within multiline statements,
1504 though so far only with "sh" profile for a testing period.
1508 though so far only with "sh" profile for a testing period.
1505 The patch also enables splitting long commands with \ but it
1509 The patch also enables splitting long commands with \ but it
1506 doesn't work properly yet.
1510 doesn't work properly yet.
1507
1511
1508 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1512 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1509
1513
1510 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1514 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1511 input history and the position of the cursor in the input history for
1515 input history and the position of the cursor in the input history for
1512 the find, findbackwards and goto command.
1516 the find, findbackwards and goto command.
1513
1517
1514 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1518 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1515
1519
1516 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1520 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1517 implements the basic functionality of browser commands that require
1521 implements the basic functionality of browser commands that require
1518 input. Reimplement the goto, find and findbackwards commands as
1522 input. Reimplement the goto, find and findbackwards commands as
1519 subclasses of _CommandInput. Add an input history and keymaps to those
1523 subclasses of _CommandInput. Add an input history and keymaps to those
1520 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1524 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1521 execute commands.
1525 execute commands.
1522
1526
1523 2006-06-07 Ville Vainio <vivainio@gmail.com>
1527 2006-06-07 Ville Vainio <vivainio@gmail.com>
1524
1528
1525 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1529 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1526 running the batch files instead of leaving the session open.
1530 running the batch files instead of leaving the session open.
1527
1531
1528 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1532 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1529
1533
1530 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1534 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1531 the original fix was incomplete. Patch submitted by W. Maier.
1535 the original fix was incomplete. Patch submitted by W. Maier.
1532
1536
1533 2006-06-07 Ville Vainio <vivainio@gmail.com>
1537 2006-06-07 Ville Vainio <vivainio@gmail.com>
1534
1538
1535 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1539 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1536 Confirmation prompts can be supressed by 'quiet' option.
1540 Confirmation prompts can be supressed by 'quiet' option.
1537 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1541 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1538
1542
1539 2006-06-06 *** Released version 0.7.2
1543 2006-06-06 *** Released version 0.7.2
1540
1544
1541 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1545 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1542
1546
1543 * IPython/Release.py (version): Made 0.7.2 final for release.
1547 * IPython/Release.py (version): Made 0.7.2 final for release.
1544 Repo tagged and release cut.
1548 Repo tagged and release cut.
1545
1549
1546 2006-06-05 Ville Vainio <vivainio@gmail.com>
1550 2006-06-05 Ville Vainio <vivainio@gmail.com>
1547
1551
1548 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1552 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1549 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1553 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1550
1554
1551 * upgrade_dir.py: try import 'path' module a bit harder
1555 * upgrade_dir.py: try import 'path' module a bit harder
1552 (for %upgrade)
1556 (for %upgrade)
1553
1557
1554 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1558 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1555
1559
1556 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1560 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1557 instead of looping 20 times.
1561 instead of looping 20 times.
1558
1562
1559 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1563 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1560 correctly at initialization time. Bug reported by Krishna Mohan
1564 correctly at initialization time. Bug reported by Krishna Mohan
1561 Gundu <gkmohan-AT-gmail.com> on the user list.
1565 Gundu <gkmohan-AT-gmail.com> on the user list.
1562
1566
1563 * IPython/Release.py (version): Mark 0.7.2 version to start
1567 * IPython/Release.py (version): Mark 0.7.2 version to start
1564 testing for release on 06/06.
1568 testing for release on 06/06.
1565
1569
1566 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1570 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1567
1571
1568 * scripts/irunner: thin script interface so users don't have to
1572 * scripts/irunner: thin script interface so users don't have to
1569 find the module and call it as an executable, since modules rarely
1573 find the module and call it as an executable, since modules rarely
1570 live in people's PATH.
1574 live in people's PATH.
1571
1575
1572 * IPython/irunner.py (InteractiveRunner.__init__): added
1576 * IPython/irunner.py (InteractiveRunner.__init__): added
1573 delaybeforesend attribute to control delays with newer versions of
1577 delaybeforesend attribute to control delays with newer versions of
1574 pexpect. Thanks to detailed help from pexpect's author, Noah
1578 pexpect. Thanks to detailed help from pexpect's author, Noah
1575 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1579 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1576 correctly (it works in NoColor mode).
1580 correctly (it works in NoColor mode).
1577
1581
1578 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1582 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1579 SAGE list, from improper log() calls.
1583 SAGE list, from improper log() calls.
1580
1584
1581 2006-05-31 Ville Vainio <vivainio@gmail.com>
1585 2006-05-31 Ville Vainio <vivainio@gmail.com>
1582
1586
1583 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1587 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1584 with args in parens to work correctly with dirs that have spaces.
1588 with args in parens to work correctly with dirs that have spaces.
1585
1589
1586 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1590 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1587
1591
1588 * IPython/Logger.py (Logger.logstart): add option to log raw input
1592 * IPython/Logger.py (Logger.logstart): add option to log raw input
1589 instead of the processed one. A -r flag was added to the
1593 instead of the processed one. A -r flag was added to the
1590 %logstart magic used for controlling logging.
1594 %logstart magic used for controlling logging.
1591
1595
1592 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1596 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1593
1597
1594 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1598 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1595 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1599 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1596 recognize the option. After a bug report by Will Maier. This
1600 recognize the option. After a bug report by Will Maier. This
1597 closes #64 (will do it after confirmation from W. Maier).
1601 closes #64 (will do it after confirmation from W. Maier).
1598
1602
1599 * IPython/irunner.py: New module to run scripts as if manually
1603 * IPython/irunner.py: New module to run scripts as if manually
1600 typed into an interactive environment, based on pexpect. After a
1604 typed into an interactive environment, based on pexpect. After a
1601 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1605 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1602 ipython-user list. Simple unittests in the tests/ directory.
1606 ipython-user list. Simple unittests in the tests/ directory.
1603
1607
1604 * tools/release: add Will Maier, OpenBSD port maintainer, to
1608 * tools/release: add Will Maier, OpenBSD port maintainer, to
1605 recepients list. We are now officially part of the OpenBSD ports:
1609 recepients list. We are now officially part of the OpenBSD ports:
1606 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1610 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1607 work.
1611 work.
1608
1612
1609 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1613 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1610
1614
1611 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1615 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1612 so that it doesn't break tkinter apps.
1616 so that it doesn't break tkinter apps.
1613
1617
1614 * IPython/iplib.py (_prefilter): fix bug where aliases would
1618 * IPython/iplib.py (_prefilter): fix bug where aliases would
1615 shadow variables when autocall was fully off. Reported by SAGE
1619 shadow variables when autocall was fully off. Reported by SAGE
1616 author William Stein.
1620 author William Stein.
1617
1621
1618 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1622 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1619 at what detail level strings are computed when foo? is requested.
1623 at what detail level strings are computed when foo? is requested.
1620 This allows users to ask for example that the string form of an
1624 This allows users to ask for example that the string form of an
1621 object is only computed when foo?? is called, or even never, by
1625 object is only computed when foo?? is called, or even never, by
1622 setting the object_info_string_level >= 2 in the configuration
1626 setting the object_info_string_level >= 2 in the configuration
1623 file. This new option has been added and documented. After a
1627 file. This new option has been added and documented. After a
1624 request by SAGE to be able to control the printing of very large
1628 request by SAGE to be able to control the printing of very large
1625 objects more easily.
1629 objects more easily.
1626
1630
1627 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1631 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1628
1632
1629 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1633 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1630 from sys.argv, to be 100% consistent with how Python itself works
1634 from sys.argv, to be 100% consistent with how Python itself works
1631 (as seen for example with python -i file.py). After a bug report
1635 (as seen for example with python -i file.py). After a bug report
1632 by Jeffrey Collins.
1636 by Jeffrey Collins.
1633
1637
1634 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1638 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1635 nasty bug which was preventing custom namespaces with -pylab,
1639 nasty bug which was preventing custom namespaces with -pylab,
1636 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1640 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1637 compatibility (long gone from mpl).
1641 compatibility (long gone from mpl).
1638
1642
1639 * IPython/ipapi.py (make_session): name change: create->make. We
1643 * IPython/ipapi.py (make_session): name change: create->make. We
1640 use make in other places (ipmaker,...), it's shorter and easier to
1644 use make in other places (ipmaker,...), it's shorter and easier to
1641 type and say, etc. I'm trying to clean things before 0.7.2 so
1645 type and say, etc. I'm trying to clean things before 0.7.2 so
1642 that I can keep things stable wrt to ipapi in the chainsaw branch.
1646 that I can keep things stable wrt to ipapi in the chainsaw branch.
1643
1647
1644 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1648 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1645 python-mode recognizes our debugger mode. Add support for
1649 python-mode recognizes our debugger mode. Add support for
1646 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1650 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1647 <m.liu.jin-AT-gmail.com> originally written by
1651 <m.liu.jin-AT-gmail.com> originally written by
1648 doxgen-AT-newsmth.net (with minor modifications for xemacs
1652 doxgen-AT-newsmth.net (with minor modifications for xemacs
1649 compatibility)
1653 compatibility)
1650
1654
1651 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1655 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1652 tracebacks when walking the stack so that the stack tracking system
1656 tracebacks when walking the stack so that the stack tracking system
1653 in emacs' python-mode can identify the frames correctly.
1657 in emacs' python-mode can identify the frames correctly.
1654
1658
1655 * IPython/ipmaker.py (make_IPython): make the internal (and
1659 * IPython/ipmaker.py (make_IPython): make the internal (and
1656 default config) autoedit_syntax value false by default. Too many
1660 default config) autoedit_syntax value false by default. Too many
1657 users have complained to me (both on and off-list) about problems
1661 users have complained to me (both on and off-list) about problems
1658 with this option being on by default, so I'm making it default to
1662 with this option being on by default, so I'm making it default to
1659 off. It can still be enabled by anyone via the usual mechanisms.
1663 off. It can still be enabled by anyone via the usual mechanisms.
1660
1664
1661 * IPython/completer.py (Completer.attr_matches): add support for
1665 * IPython/completer.py (Completer.attr_matches): add support for
1662 PyCrust-style _getAttributeNames magic method. Patch contributed
1666 PyCrust-style _getAttributeNames magic method. Patch contributed
1663 by <mscott-AT-goldenspud.com>. Closes #50.
1667 by <mscott-AT-goldenspud.com>. Closes #50.
1664
1668
1665 * IPython/iplib.py (InteractiveShell.__init__): remove the
1669 * IPython/iplib.py (InteractiveShell.__init__): remove the
1666 deletion of exit/quit from __builtin__, which can break
1670 deletion of exit/quit from __builtin__, which can break
1667 third-party tools like the Zope debugging console. The
1671 third-party tools like the Zope debugging console. The
1668 %exit/%quit magics remain. In general, it's probably a good idea
1672 %exit/%quit magics remain. In general, it's probably a good idea
1669 not to delete anything from __builtin__, since we never know what
1673 not to delete anything from __builtin__, since we never know what
1670 that will break. In any case, python now (for 2.5) will support
1674 that will break. In any case, python now (for 2.5) will support
1671 'real' exit/quit, so this issue is moot. Closes #55.
1675 'real' exit/quit, so this issue is moot. Closes #55.
1672
1676
1673 * IPython/genutils.py (with_obj): rename the 'with' function to
1677 * IPython/genutils.py (with_obj): rename the 'with' function to
1674 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1678 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1675 becomes a language keyword. Closes #53.
1679 becomes a language keyword. Closes #53.
1676
1680
1677 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1681 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1678 __file__ attribute to this so it fools more things into thinking
1682 __file__ attribute to this so it fools more things into thinking
1679 it is a real module. Closes #59.
1683 it is a real module. Closes #59.
1680
1684
1681 * IPython/Magic.py (magic_edit): add -n option to open the editor
1685 * IPython/Magic.py (magic_edit): add -n option to open the editor
1682 at a specific line number. After a patch by Stefan van der Walt.
1686 at a specific line number. After a patch by Stefan van der Walt.
1683
1687
1684 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1688 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1685
1689
1686 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1690 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1687 reason the file could not be opened. After automatic crash
1691 reason the file could not be opened. After automatic crash
1688 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1692 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1689 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1693 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1690 (_should_recompile): Don't fire editor if using %bg, since there
1694 (_should_recompile): Don't fire editor if using %bg, since there
1691 is no file in the first place. From the same report as above.
1695 is no file in the first place. From the same report as above.
1692 (raw_input): protect against faulty third-party prefilters. After
1696 (raw_input): protect against faulty third-party prefilters. After
1693 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1697 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1694 while running under SAGE.
1698 while running under SAGE.
1695
1699
1696 2006-05-23 Ville Vainio <vivainio@gmail.com>
1700 2006-05-23 Ville Vainio <vivainio@gmail.com>
1697
1701
1698 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1702 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1699 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1703 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1700 now returns None (again), unless dummy is specifically allowed by
1704 now returns None (again), unless dummy is specifically allowed by
1701 ipapi.get(allow_dummy=True).
1705 ipapi.get(allow_dummy=True).
1702
1706
1703 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1707 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1704
1708
1705 * IPython: remove all 2.2-compatibility objects and hacks from
1709 * IPython: remove all 2.2-compatibility objects and hacks from
1706 everywhere, since we only support 2.3 at this point. Docs
1710 everywhere, since we only support 2.3 at this point. Docs
1707 updated.
1711 updated.
1708
1712
1709 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1713 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1710 Anything requiring extra validation can be turned into a Python
1714 Anything requiring extra validation can be turned into a Python
1711 property in the future. I used a property for the db one b/c
1715 property in the future. I used a property for the db one b/c
1712 there was a nasty circularity problem with the initialization
1716 there was a nasty circularity problem with the initialization
1713 order, which right now I don't have time to clean up.
1717 order, which right now I don't have time to clean up.
1714
1718
1715 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1719 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1716 another locking bug reported by Jorgen. I'm not 100% sure though,
1720 another locking bug reported by Jorgen. I'm not 100% sure though,
1717 so more testing is needed...
1721 so more testing is needed...
1718
1722
1719 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1723 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1720
1724
1721 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1725 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1722 local variables from any routine in user code (typically executed
1726 local variables from any routine in user code (typically executed
1723 with %run) directly into the interactive namespace. Very useful
1727 with %run) directly into the interactive namespace. Very useful
1724 when doing complex debugging.
1728 when doing complex debugging.
1725 (IPythonNotRunning): Changed the default None object to a dummy
1729 (IPythonNotRunning): Changed the default None object to a dummy
1726 whose attributes can be queried as well as called without
1730 whose attributes can be queried as well as called without
1727 exploding, to ease writing code which works transparently both in
1731 exploding, to ease writing code which works transparently both in
1728 and out of ipython and uses some of this API.
1732 and out of ipython and uses some of this API.
1729
1733
1730 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1734 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1731
1735
1732 * IPython/hooks.py (result_display): Fix the fact that our display
1736 * IPython/hooks.py (result_display): Fix the fact that our display
1733 hook was using str() instead of repr(), as the default python
1737 hook was using str() instead of repr(), as the default python
1734 console does. This had gone unnoticed b/c it only happened if
1738 console does. This had gone unnoticed b/c it only happened if
1735 %Pprint was off, but the inconsistency was there.
1739 %Pprint was off, but the inconsistency was there.
1736
1740
1737 2006-05-15 Ville Vainio <vivainio@gmail.com>
1741 2006-05-15 Ville Vainio <vivainio@gmail.com>
1738
1742
1739 * Oinspect.py: Only show docstring for nonexisting/binary files
1743 * Oinspect.py: Only show docstring for nonexisting/binary files
1740 when doing object??, closing ticket #62
1744 when doing object??, closing ticket #62
1741
1745
1742 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1746 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1743
1747
1744 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1748 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1745 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1749 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1746 was being released in a routine which hadn't checked if it had
1750 was being released in a routine which hadn't checked if it had
1747 been the one to acquire it.
1751 been the one to acquire it.
1748
1752
1749 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1753 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1750
1754
1751 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1755 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1752
1756
1753 2006-04-11 Ville Vainio <vivainio@gmail.com>
1757 2006-04-11 Ville Vainio <vivainio@gmail.com>
1754
1758
1755 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1759 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1756 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1760 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1757 prefilters, allowing stuff like magics and aliases in the file.
1761 prefilters, allowing stuff like magics and aliases in the file.
1758
1762
1759 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1763 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1760 added. Supported now are "%clear in" and "%clear out" (clear input and
1764 added. Supported now are "%clear in" and "%clear out" (clear input and
1761 output history, respectively). Also fixed CachedOutput.flush to
1765 output history, respectively). Also fixed CachedOutput.flush to
1762 properly flush the output cache.
1766 properly flush the output cache.
1763
1767
1764 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1768 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1765 half-success (and fail explicitly).
1769 half-success (and fail explicitly).
1766
1770
1767 2006-03-28 Ville Vainio <vivainio@gmail.com>
1771 2006-03-28 Ville Vainio <vivainio@gmail.com>
1768
1772
1769 * iplib.py: Fix quoting of aliases so that only argless ones
1773 * iplib.py: Fix quoting of aliases so that only argless ones
1770 are quoted
1774 are quoted
1771
1775
1772 2006-03-28 Ville Vainio <vivainio@gmail.com>
1776 2006-03-28 Ville Vainio <vivainio@gmail.com>
1773
1777
1774 * iplib.py: Quote aliases with spaces in the name.
1778 * iplib.py: Quote aliases with spaces in the name.
1775 "c:\program files\blah\bin" is now legal alias target.
1779 "c:\program files\blah\bin" is now legal alias target.
1776
1780
1777 * ext_rehashdir.py: Space no longer allowed as arg
1781 * ext_rehashdir.py: Space no longer allowed as arg
1778 separator, since space is legal in path names.
1782 separator, since space is legal in path names.
1779
1783
1780 2006-03-16 Ville Vainio <vivainio@gmail.com>
1784 2006-03-16 Ville Vainio <vivainio@gmail.com>
1781
1785
1782 * upgrade_dir.py: Take path.py from Extensions, correcting
1786 * upgrade_dir.py: Take path.py from Extensions, correcting
1783 %upgrade magic
1787 %upgrade magic
1784
1788
1785 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1789 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1786
1790
1787 * hooks.py: Only enclose editor binary in quotes if legal and
1791 * hooks.py: Only enclose editor binary in quotes if legal and
1788 necessary (space in the name, and is an existing file). Fixes a bug
1792 necessary (space in the name, and is an existing file). Fixes a bug
1789 reported by Zachary Pincus.
1793 reported by Zachary Pincus.
1790
1794
1791 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1795 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1792
1796
1793 * Manual: thanks to a tip on proper color handling for Emacs, by
1797 * Manual: thanks to a tip on proper color handling for Emacs, by
1794 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1798 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1795
1799
1796 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1800 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1797 by applying the provided patch. Thanks to Liu Jin
1801 by applying the provided patch. Thanks to Liu Jin
1798 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1802 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1799 XEmacs/Linux, I'm trusting the submitter that it actually helps
1803 XEmacs/Linux, I'm trusting the submitter that it actually helps
1800 under win32/GNU Emacs. Will revisit if any problems are reported.
1804 under win32/GNU Emacs. Will revisit if any problems are reported.
1801
1805
1802 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1806 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1803
1807
1804 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1808 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1805 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1809 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1806
1810
1807 2006-03-12 Ville Vainio <vivainio@gmail.com>
1811 2006-03-12 Ville Vainio <vivainio@gmail.com>
1808
1812
1809 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1813 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1810 Torsten Marek.
1814 Torsten Marek.
1811
1815
1812 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1816 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1813
1817
1814 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1818 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1815 line ranges works again.
1819 line ranges works again.
1816
1820
1817 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1821 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1818
1822
1819 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1823 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1820 and friends, after a discussion with Zach Pincus on ipython-user.
1824 and friends, after a discussion with Zach Pincus on ipython-user.
1821 I'm not 100% sure, but after thinking about it quite a bit, it may
1825 I'm not 100% sure, but after thinking about it quite a bit, it may
1822 be OK. Testing with the multithreaded shells didn't reveal any
1826 be OK. Testing with the multithreaded shells didn't reveal any
1823 problems, but let's keep an eye out.
1827 problems, but let's keep an eye out.
1824
1828
1825 In the process, I fixed a few things which were calling
1829 In the process, I fixed a few things which were calling
1826 self.InteractiveTB() directly (like safe_execfile), which is a
1830 self.InteractiveTB() directly (like safe_execfile), which is a
1827 mistake: ALL exception reporting should be done by calling
1831 mistake: ALL exception reporting should be done by calling
1828 self.showtraceback(), which handles state and tab-completion and
1832 self.showtraceback(), which handles state and tab-completion and
1829 more.
1833 more.
1830
1834
1831 2006-03-01 Ville Vainio <vivainio@gmail.com>
1835 2006-03-01 Ville Vainio <vivainio@gmail.com>
1832
1836
1833 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1837 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1834 To use, do "from ipipe import *".
1838 To use, do "from ipipe import *".
1835
1839
1836 2006-02-24 Ville Vainio <vivainio@gmail.com>
1840 2006-02-24 Ville Vainio <vivainio@gmail.com>
1837
1841
1838 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1842 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1839 "cleanly" and safely than the older upgrade mechanism.
1843 "cleanly" and safely than the older upgrade mechanism.
1840
1844
1841 2006-02-21 Ville Vainio <vivainio@gmail.com>
1845 2006-02-21 Ville Vainio <vivainio@gmail.com>
1842
1846
1843 * Magic.py: %save works again.
1847 * Magic.py: %save works again.
1844
1848
1845 2006-02-15 Ville Vainio <vivainio@gmail.com>
1849 2006-02-15 Ville Vainio <vivainio@gmail.com>
1846
1850
1847 * Magic.py: %Pprint works again
1851 * Magic.py: %Pprint works again
1848
1852
1849 * Extensions/ipy_sane_defaults.py: Provide everything provided
1853 * Extensions/ipy_sane_defaults.py: Provide everything provided
1850 in default ipythonrc, to make it possible to have a completely empty
1854 in default ipythonrc, to make it possible to have a completely empty
1851 ipythonrc (and thus completely rc-file free configuration)
1855 ipythonrc (and thus completely rc-file free configuration)
1852
1856
1853 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1857 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1854
1858
1855 * IPython/hooks.py (editor): quote the call to the editor command,
1859 * IPython/hooks.py (editor): quote the call to the editor command,
1856 to allow commands with spaces in them. Problem noted by watching
1860 to allow commands with spaces in them. Problem noted by watching
1857 Ian Oswald's video about textpad under win32 at
1861 Ian Oswald's video about textpad under win32 at
1858 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1862 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1859
1863
1860 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1864 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1861 describing magics (we haven't used @ for a loong time).
1865 describing magics (we haven't used @ for a loong time).
1862
1866
1863 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1867 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1864 contributed by marienz to close
1868 contributed by marienz to close
1865 http://www.scipy.net/roundup/ipython/issue53.
1869 http://www.scipy.net/roundup/ipython/issue53.
1866
1870
1867 2006-02-10 Ville Vainio <vivainio@gmail.com>
1871 2006-02-10 Ville Vainio <vivainio@gmail.com>
1868
1872
1869 * genutils.py: getoutput now works in win32 too
1873 * genutils.py: getoutput now works in win32 too
1870
1874
1871 * completer.py: alias and magic completion only invoked
1875 * completer.py: alias and magic completion only invoked
1872 at the first "item" in the line, to avoid "cd %store"
1876 at the first "item" in the line, to avoid "cd %store"
1873 nonsense.
1877 nonsense.
1874
1878
1875 2006-02-09 Ville Vainio <vivainio@gmail.com>
1879 2006-02-09 Ville Vainio <vivainio@gmail.com>
1876
1880
1877 * test/*: Added a unit testing framework (finally).
1881 * test/*: Added a unit testing framework (finally).
1878 '%run runtests.py' to run test_*.
1882 '%run runtests.py' to run test_*.
1879
1883
1880 * ipapi.py: Exposed runlines and set_custom_exc
1884 * ipapi.py: Exposed runlines and set_custom_exc
1881
1885
1882 2006-02-07 Ville Vainio <vivainio@gmail.com>
1886 2006-02-07 Ville Vainio <vivainio@gmail.com>
1883
1887
1884 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1888 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1885 instead use "f(1 2)" as before.
1889 instead use "f(1 2)" as before.
1886
1890
1887 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1891 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1888
1892
1889 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1893 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1890 facilities, for demos processed by the IPython input filter
1894 facilities, for demos processed by the IPython input filter
1891 (IPythonDemo), and for running a script one-line-at-a-time as a
1895 (IPythonDemo), and for running a script one-line-at-a-time as a
1892 demo, both for pure Python (LineDemo) and for IPython-processed
1896 demo, both for pure Python (LineDemo) and for IPython-processed
1893 input (IPythonLineDemo). After a request by Dave Kohel, from the
1897 input (IPythonLineDemo). After a request by Dave Kohel, from the
1894 SAGE team.
1898 SAGE team.
1895 (Demo.edit): added an edit() method to the demo objects, to edit
1899 (Demo.edit): added an edit() method to the demo objects, to edit
1896 the in-memory copy of the last executed block.
1900 the in-memory copy of the last executed block.
1897
1901
1898 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1902 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1899 processing to %edit, %macro and %save. These commands can now be
1903 processing to %edit, %macro and %save. These commands can now be
1900 invoked on the unprocessed input as it was typed by the user
1904 invoked on the unprocessed input as it was typed by the user
1901 (without any prefilters applied). After requests by the SAGE team
1905 (without any prefilters applied). After requests by the SAGE team
1902 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1906 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1903
1907
1904 2006-02-01 Ville Vainio <vivainio@gmail.com>
1908 2006-02-01 Ville Vainio <vivainio@gmail.com>
1905
1909
1906 * setup.py, eggsetup.py: easy_install ipython==dev works
1910 * setup.py, eggsetup.py: easy_install ipython==dev works
1907 correctly now (on Linux)
1911 correctly now (on Linux)
1908
1912
1909 * ipy_user_conf,ipmaker: user config changes, removed spurious
1913 * ipy_user_conf,ipmaker: user config changes, removed spurious
1910 warnings
1914 warnings
1911
1915
1912 * iplib: if rc.banner is string, use it as is.
1916 * iplib: if rc.banner is string, use it as is.
1913
1917
1914 * Magic: %pycat accepts a string argument and pages it's contents.
1918 * Magic: %pycat accepts a string argument and pages it's contents.
1915
1919
1916
1920
1917 2006-01-30 Ville Vainio <vivainio@gmail.com>
1921 2006-01-30 Ville Vainio <vivainio@gmail.com>
1918
1922
1919 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1923 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1920 Now %store and bookmarks work through PickleShare, meaning that
1924 Now %store and bookmarks work through PickleShare, meaning that
1921 concurrent access is possible and all ipython sessions see the
1925 concurrent access is possible and all ipython sessions see the
1922 same database situation all the time, instead of snapshot of
1926 same database situation all the time, instead of snapshot of
1923 the situation when the session was started. Hence, %bookmark
1927 the situation when the session was started. Hence, %bookmark
1924 results are immediately accessible from othes sessions. The database
1928 results are immediately accessible from othes sessions. The database
1925 is also available for use by user extensions. See:
1929 is also available for use by user extensions. See:
1926 http://www.python.org/pypi/pickleshare
1930 http://www.python.org/pypi/pickleshare
1927
1931
1928 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1932 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1929
1933
1930 * aliases can now be %store'd
1934 * aliases can now be %store'd
1931
1935
1932 * path.py moved to Extensions so that pickleshare does not need
1936 * path.py moved to Extensions so that pickleshare does not need
1933 IPython-specific import. Extensions added to pythonpath right
1937 IPython-specific import. Extensions added to pythonpath right
1934 at __init__.
1938 at __init__.
1935
1939
1936 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1940 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1937 called with _ip.system and the pre-transformed command string.
1941 called with _ip.system and the pre-transformed command string.
1938
1942
1939 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1943 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1940
1944
1941 * IPython/iplib.py (interact): Fix that we were not catching
1945 * IPython/iplib.py (interact): Fix that we were not catching
1942 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1946 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1943 logic here had to change, but it's fixed now.
1947 logic here had to change, but it's fixed now.
1944
1948
1945 2006-01-29 Ville Vainio <vivainio@gmail.com>
1949 2006-01-29 Ville Vainio <vivainio@gmail.com>
1946
1950
1947 * iplib.py: Try to import pyreadline on Windows.
1951 * iplib.py: Try to import pyreadline on Windows.
1948
1952
1949 2006-01-27 Ville Vainio <vivainio@gmail.com>
1953 2006-01-27 Ville Vainio <vivainio@gmail.com>
1950
1954
1951 * iplib.py: Expose ipapi as _ip in builtin namespace.
1955 * iplib.py: Expose ipapi as _ip in builtin namespace.
1952 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1956 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1953 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1957 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1954 syntax now produce _ip.* variant of the commands.
1958 syntax now produce _ip.* variant of the commands.
1955
1959
1956 * "_ip.options().autoedit_syntax = 2" automatically throws
1960 * "_ip.options().autoedit_syntax = 2" automatically throws
1957 user to editor for syntax error correction without prompting.
1961 user to editor for syntax error correction without prompting.
1958
1962
1959 2006-01-27 Ville Vainio <vivainio@gmail.com>
1963 2006-01-27 Ville Vainio <vivainio@gmail.com>
1960
1964
1961 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1965 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1962 'ipython' at argv[0]) executed through command line.
1966 'ipython' at argv[0]) executed through command line.
1963 NOTE: this DEPRECATES calling ipython with multiple scripts
1967 NOTE: this DEPRECATES calling ipython with multiple scripts
1964 ("ipython a.py b.py c.py")
1968 ("ipython a.py b.py c.py")
1965
1969
1966 * iplib.py, hooks.py: Added configurable input prefilter,
1970 * iplib.py, hooks.py: Added configurable input prefilter,
1967 named 'input_prefilter'. See ext_rescapture.py for example
1971 named 'input_prefilter'. See ext_rescapture.py for example
1968 usage.
1972 usage.
1969
1973
1970 * ext_rescapture.py, Magic.py: Better system command output capture
1974 * ext_rescapture.py, Magic.py: Better system command output capture
1971 through 'var = !ls' (deprecates user-visible %sc). Same notation
1975 through 'var = !ls' (deprecates user-visible %sc). Same notation
1972 applies for magics, 'var = %alias' assigns alias list to var.
1976 applies for magics, 'var = %alias' assigns alias list to var.
1973
1977
1974 * ipapi.py: added meta() for accessing extension-usable data store.
1978 * ipapi.py: added meta() for accessing extension-usable data store.
1975
1979
1976 * iplib.py: added InteractiveShell.getapi(). New magics should be
1980 * iplib.py: added InteractiveShell.getapi(). New magics should be
1977 written doing self.getapi() instead of using the shell directly.
1981 written doing self.getapi() instead of using the shell directly.
1978
1982
1979 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1983 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1980 %store foo >> ~/myfoo.txt to store variables to files (in clean
1984 %store foo >> ~/myfoo.txt to store variables to files (in clean
1981 textual form, not a restorable pickle).
1985 textual form, not a restorable pickle).
1982
1986
1983 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1987 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1984
1988
1985 * usage.py, Magic.py: added %quickref
1989 * usage.py, Magic.py: added %quickref
1986
1990
1987 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1991 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1988
1992
1989 * GetoptErrors when invoking magics etc. with wrong args
1993 * GetoptErrors when invoking magics etc. with wrong args
1990 are now more helpful:
1994 are now more helpful:
1991 GetoptError: option -l not recognized (allowed: "qb" )
1995 GetoptError: option -l not recognized (allowed: "qb" )
1992
1996
1993 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1997 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1994
1998
1995 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1999 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1996 computationally intensive blocks don't appear to stall the demo.
2000 computationally intensive blocks don't appear to stall the demo.
1997
2001
1998 2006-01-24 Ville Vainio <vivainio@gmail.com>
2002 2006-01-24 Ville Vainio <vivainio@gmail.com>
1999
2003
2000 * iplib.py, hooks.py: 'result_display' hook can return a non-None
2004 * iplib.py, hooks.py: 'result_display' hook can return a non-None
2001 value to manipulate resulting history entry.
2005 value to manipulate resulting history entry.
2002
2006
2003 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
2007 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
2004 to instance methods of IPApi class, to make extending an embedded
2008 to instance methods of IPApi class, to make extending an embedded
2005 IPython feasible. See ext_rehashdir.py for example usage.
2009 IPython feasible. See ext_rehashdir.py for example usage.
2006
2010
2007 * Merged 1071-1076 from branches/0.7.1
2011 * Merged 1071-1076 from branches/0.7.1
2008
2012
2009
2013
2010 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2014 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2011
2015
2012 * tools/release (daystamp): Fix build tools to use the new
2016 * tools/release (daystamp): Fix build tools to use the new
2013 eggsetup.py script to build lightweight eggs.
2017 eggsetup.py script to build lightweight eggs.
2014
2018
2015 * Applied changesets 1062 and 1064 before 0.7.1 release.
2019 * Applied changesets 1062 and 1064 before 0.7.1 release.
2016
2020
2017 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2021 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2018 see the raw input history (without conversions like %ls ->
2022 see the raw input history (without conversions like %ls ->
2019 ipmagic("ls")). After a request from W. Stein, SAGE
2023 ipmagic("ls")). After a request from W. Stein, SAGE
2020 (http://modular.ucsd.edu/sage) developer. This information is
2024 (http://modular.ucsd.edu/sage) developer. This information is
2021 stored in the input_hist_raw attribute of the IPython instance, so
2025 stored in the input_hist_raw attribute of the IPython instance, so
2022 developers can access it if needed (it's an InputList instance).
2026 developers can access it if needed (it's an InputList instance).
2023
2027
2024 * Versionstring = 0.7.2.svn
2028 * Versionstring = 0.7.2.svn
2025
2029
2026 * eggsetup.py: A separate script for constructing eggs, creates
2030 * eggsetup.py: A separate script for constructing eggs, creates
2027 proper launch scripts even on Windows (an .exe file in
2031 proper launch scripts even on Windows (an .exe file in
2028 \python24\scripts).
2032 \python24\scripts).
2029
2033
2030 * ipapi.py: launch_new_instance, launch entry point needed for the
2034 * ipapi.py: launch_new_instance, launch entry point needed for the
2031 egg.
2035 egg.
2032
2036
2033 2006-01-23 Ville Vainio <vivainio@gmail.com>
2037 2006-01-23 Ville Vainio <vivainio@gmail.com>
2034
2038
2035 * Added %cpaste magic for pasting python code
2039 * Added %cpaste magic for pasting python code
2036
2040
2037 2006-01-22 Ville Vainio <vivainio@gmail.com>
2041 2006-01-22 Ville Vainio <vivainio@gmail.com>
2038
2042
2039 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2043 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2040
2044
2041 * Versionstring = 0.7.2.svn
2045 * Versionstring = 0.7.2.svn
2042
2046
2043 * eggsetup.py: A separate script for constructing eggs, creates
2047 * eggsetup.py: A separate script for constructing eggs, creates
2044 proper launch scripts even on Windows (an .exe file in
2048 proper launch scripts even on Windows (an .exe file in
2045 \python24\scripts).
2049 \python24\scripts).
2046
2050
2047 * ipapi.py: launch_new_instance, launch entry point needed for the
2051 * ipapi.py: launch_new_instance, launch entry point needed for the
2048 egg.
2052 egg.
2049
2053
2050 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2054 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2051
2055
2052 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2056 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2053 %pfile foo would print the file for foo even if it was a binary.
2057 %pfile foo would print the file for foo even if it was a binary.
2054 Now, extensions '.so' and '.dll' are skipped.
2058 Now, extensions '.so' and '.dll' are skipped.
2055
2059
2056 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2060 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2057 bug, where macros would fail in all threaded modes. I'm not 100%
2061 bug, where macros would fail in all threaded modes. I'm not 100%
2058 sure, so I'm going to put out an rc instead of making a release
2062 sure, so I'm going to put out an rc instead of making a release
2059 today, and wait for feedback for at least a few days.
2063 today, and wait for feedback for at least a few days.
2060
2064
2061 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2065 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2062 it...) the handling of pasting external code with autoindent on.
2066 it...) the handling of pasting external code with autoindent on.
2063 To get out of a multiline input, the rule will appear for most
2067 To get out of a multiline input, the rule will appear for most
2064 users unchanged: two blank lines or change the indent level
2068 users unchanged: two blank lines or change the indent level
2065 proposed by IPython. But there is a twist now: you can
2069 proposed by IPython. But there is a twist now: you can
2066 add/subtract only *one or two spaces*. If you add/subtract three
2070 add/subtract only *one or two spaces*. If you add/subtract three
2067 or more (unless you completely delete the line), IPython will
2071 or more (unless you completely delete the line), IPython will
2068 accept that line, and you'll need to enter a second one of pure
2072 accept that line, and you'll need to enter a second one of pure
2069 whitespace. I know it sounds complicated, but I can't find a
2073 whitespace. I know it sounds complicated, but I can't find a
2070 different solution that covers all the cases, with the right
2074 different solution that covers all the cases, with the right
2071 heuristics. Hopefully in actual use, nobody will really notice
2075 heuristics. Hopefully in actual use, nobody will really notice
2072 all these strange rules and things will 'just work'.
2076 all these strange rules and things will 'just work'.
2073
2077
2074 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2078 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2075
2079
2076 * IPython/iplib.py (interact): catch exceptions which can be
2080 * IPython/iplib.py (interact): catch exceptions which can be
2077 triggered asynchronously by signal handlers. Thanks to an
2081 triggered asynchronously by signal handlers. Thanks to an
2078 automatic crash report, submitted by Colin Kingsley
2082 automatic crash report, submitted by Colin Kingsley
2079 <tercel-AT-gentoo.org>.
2083 <tercel-AT-gentoo.org>.
2080
2084
2081 2006-01-20 Ville Vainio <vivainio@gmail.com>
2085 2006-01-20 Ville Vainio <vivainio@gmail.com>
2082
2086
2083 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2087 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2084 (%rehashdir, very useful, try it out) of how to extend ipython
2088 (%rehashdir, very useful, try it out) of how to extend ipython
2085 with new magics. Also added Extensions dir to pythonpath to make
2089 with new magics. Also added Extensions dir to pythonpath to make
2086 importing extensions easy.
2090 importing extensions easy.
2087
2091
2088 * %store now complains when trying to store interactively declared
2092 * %store now complains when trying to store interactively declared
2089 classes / instances of those classes.
2093 classes / instances of those classes.
2090
2094
2091 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2095 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2092 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2096 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2093 if they exist, and ipy_user_conf.py with some defaults is created for
2097 if they exist, and ipy_user_conf.py with some defaults is created for
2094 the user.
2098 the user.
2095
2099
2096 * Startup rehashing done by the config file, not InterpreterExec.
2100 * Startup rehashing done by the config file, not InterpreterExec.
2097 This means system commands are available even without selecting the
2101 This means system commands are available even without selecting the
2098 pysh profile. It's the sensible default after all.
2102 pysh profile. It's the sensible default after all.
2099
2103
2100 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2104 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2101
2105
2102 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2106 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2103 multiline code with autoindent on working. But I am really not
2107 multiline code with autoindent on working. But I am really not
2104 sure, so this needs more testing. Will commit a debug-enabled
2108 sure, so this needs more testing. Will commit a debug-enabled
2105 version for now, while I test it some more, so that Ville and
2109 version for now, while I test it some more, so that Ville and
2106 others may also catch any problems. Also made
2110 others may also catch any problems. Also made
2107 self.indent_current_str() a method, to ensure that there's no
2111 self.indent_current_str() a method, to ensure that there's no
2108 chance of the indent space count and the corresponding string
2112 chance of the indent space count and the corresponding string
2109 falling out of sync. All code needing the string should just call
2113 falling out of sync. All code needing the string should just call
2110 the method.
2114 the method.
2111
2115
2112 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2116 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2113
2117
2114 * IPython/Magic.py (magic_edit): fix check for when users don't
2118 * IPython/Magic.py (magic_edit): fix check for when users don't
2115 save their output files, the try/except was in the wrong section.
2119 save their output files, the try/except was in the wrong section.
2116
2120
2117 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2121 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2118
2122
2119 * IPython/Magic.py (magic_run): fix __file__ global missing from
2123 * IPython/Magic.py (magic_run): fix __file__ global missing from
2120 script's namespace when executed via %run. After a report by
2124 script's namespace when executed via %run. After a report by
2121 Vivian.
2125 Vivian.
2122
2126
2123 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2127 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2124 when using python 2.4. The parent constructor changed in 2.4, and
2128 when using python 2.4. The parent constructor changed in 2.4, and
2125 we need to track it directly (we can't call it, as it messes up
2129 we need to track it directly (we can't call it, as it messes up
2126 readline and tab-completion inside our pdb would stop working).
2130 readline and tab-completion inside our pdb would stop working).
2127 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2131 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2128
2132
2129 2006-01-16 Ville Vainio <vivainio@gmail.com>
2133 2006-01-16 Ville Vainio <vivainio@gmail.com>
2130
2134
2131 * Ipython/magic.py: Reverted back to old %edit functionality
2135 * Ipython/magic.py: Reverted back to old %edit functionality
2132 that returns file contents on exit.
2136 that returns file contents on exit.
2133
2137
2134 * IPython/path.py: Added Jason Orendorff's "path" module to
2138 * IPython/path.py: Added Jason Orendorff's "path" module to
2135 IPython tree, http://www.jorendorff.com/articles/python/path/.
2139 IPython tree, http://www.jorendorff.com/articles/python/path/.
2136 You can get path objects conveniently through %sc, and !!, e.g.:
2140 You can get path objects conveniently through %sc, and !!, e.g.:
2137 sc files=ls
2141 sc files=ls
2138 for p in files.paths: # or files.p
2142 for p in files.paths: # or files.p
2139 print p,p.mtime
2143 print p,p.mtime
2140
2144
2141 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2145 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2142 now work again without considering the exclusion regexp -
2146 now work again without considering the exclusion regexp -
2143 hence, things like ',foo my/path' turn to 'foo("my/path")'
2147 hence, things like ',foo my/path' turn to 'foo("my/path")'
2144 instead of syntax error.
2148 instead of syntax error.
2145
2149
2146
2150
2147 2006-01-14 Ville Vainio <vivainio@gmail.com>
2151 2006-01-14 Ville Vainio <vivainio@gmail.com>
2148
2152
2149 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2153 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2150 ipapi decorators for python 2.4 users, options() provides access to rc
2154 ipapi decorators for python 2.4 users, options() provides access to rc
2151 data.
2155 data.
2152
2156
2153 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2157 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2154 as path separators (even on Linux ;-). Space character after
2158 as path separators (even on Linux ;-). Space character after
2155 backslash (as yielded by tab completer) is still space;
2159 backslash (as yielded by tab completer) is still space;
2156 "%cd long\ name" works as expected.
2160 "%cd long\ name" works as expected.
2157
2161
2158 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2162 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2159 as "chain of command", with priority. API stays the same,
2163 as "chain of command", with priority. API stays the same,
2160 TryNext exception raised by a hook function signals that
2164 TryNext exception raised by a hook function signals that
2161 current hook failed and next hook should try handling it, as
2165 current hook failed and next hook should try handling it, as
2162 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2166 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2163 requested configurable display hook, which is now implemented.
2167 requested configurable display hook, which is now implemented.
2164
2168
2165 2006-01-13 Ville Vainio <vivainio@gmail.com>
2169 2006-01-13 Ville Vainio <vivainio@gmail.com>
2166
2170
2167 * IPython/platutils*.py: platform specific utility functions,
2171 * IPython/platutils*.py: platform specific utility functions,
2168 so far only set_term_title is implemented (change terminal
2172 so far only set_term_title is implemented (change terminal
2169 label in windowing systems). %cd now changes the title to
2173 label in windowing systems). %cd now changes the title to
2170 current dir.
2174 current dir.
2171
2175
2172 * IPython/Release.py: Added myself to "authors" list,
2176 * IPython/Release.py: Added myself to "authors" list,
2173 had to create new files.
2177 had to create new files.
2174
2178
2175 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2179 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2176 shell escape; not a known bug but had potential to be one in the
2180 shell escape; not a known bug but had potential to be one in the
2177 future.
2181 future.
2178
2182
2179 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2183 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2180 extension API for IPython! See the module for usage example. Fix
2184 extension API for IPython! See the module for usage example. Fix
2181 OInspect for docstring-less magic functions.
2185 OInspect for docstring-less magic functions.
2182
2186
2183
2187
2184 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2188 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2185
2189
2186 * IPython/iplib.py (raw_input): temporarily deactivate all
2190 * IPython/iplib.py (raw_input): temporarily deactivate all
2187 attempts at allowing pasting of code with autoindent on. It
2191 attempts at allowing pasting of code with autoindent on. It
2188 introduced bugs (reported by Prabhu) and I can't seem to find a
2192 introduced bugs (reported by Prabhu) and I can't seem to find a
2189 robust combination which works in all cases. Will have to revisit
2193 robust combination which works in all cases. Will have to revisit
2190 later.
2194 later.
2191
2195
2192 * IPython/genutils.py: remove isspace() function. We've dropped
2196 * IPython/genutils.py: remove isspace() function. We've dropped
2193 2.2 compatibility, so it's OK to use the string method.
2197 2.2 compatibility, so it's OK to use the string method.
2194
2198
2195 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2199 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2196
2200
2197 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2201 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2198 matching what NOT to autocall on, to include all python binary
2202 matching what NOT to autocall on, to include all python binary
2199 operators (including things like 'and', 'or', 'is' and 'in').
2203 operators (including things like 'and', 'or', 'is' and 'in').
2200 Prompted by a bug report on 'foo & bar', but I realized we had
2204 Prompted by a bug report on 'foo & bar', but I realized we had
2201 many more potential bug cases with other operators. The regexp is
2205 many more potential bug cases with other operators. The regexp is
2202 self.re_exclude_auto, it's fairly commented.
2206 self.re_exclude_auto, it's fairly commented.
2203
2207
2204 2006-01-12 Ville Vainio <vivainio@gmail.com>
2208 2006-01-12 Ville Vainio <vivainio@gmail.com>
2205
2209
2206 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2210 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2207 Prettified and hardened string/backslash quoting with ipsystem(),
2211 Prettified and hardened string/backslash quoting with ipsystem(),
2208 ipalias() and ipmagic(). Now even \ characters are passed to
2212 ipalias() and ipmagic(). Now even \ characters are passed to
2209 %magics, !shell escapes and aliases exactly as they are in the
2213 %magics, !shell escapes and aliases exactly as they are in the
2210 ipython command line. Should improve backslash experience,
2214 ipython command line. Should improve backslash experience,
2211 particularly in Windows (path delimiter for some commands that
2215 particularly in Windows (path delimiter for some commands that
2212 won't understand '/'), but Unix benefits as well (regexps). %cd
2216 won't understand '/'), but Unix benefits as well (regexps). %cd
2213 magic still doesn't support backslash path delimiters, though. Also
2217 magic still doesn't support backslash path delimiters, though. Also
2214 deleted all pretense of supporting multiline command strings in
2218 deleted all pretense of supporting multiline command strings in
2215 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2219 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2216
2220
2217 * doc/build_doc_instructions.txt added. Documentation on how to
2221 * doc/build_doc_instructions.txt added. Documentation on how to
2218 use doc/update_manual.py, added yesterday. Both files contributed
2222 use doc/update_manual.py, added yesterday. Both files contributed
2219 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2223 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2220 doc/*.sh for deprecation at a later date.
2224 doc/*.sh for deprecation at a later date.
2221
2225
2222 * /ipython.py Added ipython.py to root directory for
2226 * /ipython.py Added ipython.py to root directory for
2223 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2227 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2224 ipython.py) and development convenience (no need to keep doing
2228 ipython.py) and development convenience (no need to keep doing
2225 "setup.py install" between changes).
2229 "setup.py install" between changes).
2226
2230
2227 * Made ! and !! shell escapes work (again) in multiline expressions:
2231 * Made ! and !! shell escapes work (again) in multiline expressions:
2228 if 1:
2232 if 1:
2229 !ls
2233 !ls
2230 !!ls
2234 !!ls
2231
2235
2232 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2236 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2233
2237
2234 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2238 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2235 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2239 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2236 module in case-insensitive installation. Was causing crashes
2240 module in case-insensitive installation. Was causing crashes
2237 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2241 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2238
2242
2239 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2243 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2240 <marienz-AT-gentoo.org>, closes
2244 <marienz-AT-gentoo.org>, closes
2241 http://www.scipy.net/roundup/ipython/issue51.
2245 http://www.scipy.net/roundup/ipython/issue51.
2242
2246
2243 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2247 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2244
2248
2245 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2249 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2246 problem of excessive CPU usage under *nix and keyboard lag under
2250 problem of excessive CPU usage under *nix and keyboard lag under
2247 win32.
2251 win32.
2248
2252
2249 2006-01-10 *** Released version 0.7.0
2253 2006-01-10 *** Released version 0.7.0
2250
2254
2251 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2255 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2252
2256
2253 * IPython/Release.py (revision): tag version number to 0.7.0,
2257 * IPython/Release.py (revision): tag version number to 0.7.0,
2254 ready for release.
2258 ready for release.
2255
2259
2256 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2260 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2257 it informs the user of the name of the temp. file used. This can
2261 it informs the user of the name of the temp. file used. This can
2258 help if you decide later to reuse that same file, so you know
2262 help if you decide later to reuse that same file, so you know
2259 where to copy the info from.
2263 where to copy the info from.
2260
2264
2261 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2265 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2262
2266
2263 * setup_bdist_egg.py: little script to build an egg. Added
2267 * setup_bdist_egg.py: little script to build an egg. Added
2264 support in the release tools as well.
2268 support in the release tools as well.
2265
2269
2266 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2270 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2267
2271
2268 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2272 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2269 version selection (new -wxversion command line and ipythonrc
2273 version selection (new -wxversion command line and ipythonrc
2270 parameter). Patch contributed by Arnd Baecker
2274 parameter). Patch contributed by Arnd Baecker
2271 <arnd.baecker-AT-web.de>.
2275 <arnd.baecker-AT-web.de>.
2272
2276
2273 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2277 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2274 embedded instances, for variables defined at the interactive
2278 embedded instances, for variables defined at the interactive
2275 prompt of the embedded ipython. Reported by Arnd.
2279 prompt of the embedded ipython. Reported by Arnd.
2276
2280
2277 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2281 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2278 it can be used as a (stateful) toggle, or with a direct parameter.
2282 it can be used as a (stateful) toggle, or with a direct parameter.
2279
2283
2280 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2284 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2281 could be triggered in certain cases and cause the traceback
2285 could be triggered in certain cases and cause the traceback
2282 printer not to work.
2286 printer not to work.
2283
2287
2284 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2288 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2285
2289
2286 * IPython/iplib.py (_should_recompile): Small fix, closes
2290 * IPython/iplib.py (_should_recompile): Small fix, closes
2287 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2291 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2288
2292
2289 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2293 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2290
2294
2291 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2295 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2292 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2296 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2293 Moad for help with tracking it down.
2297 Moad for help with tracking it down.
2294
2298
2295 * IPython/iplib.py (handle_auto): fix autocall handling for
2299 * IPython/iplib.py (handle_auto): fix autocall handling for
2296 objects which support BOTH __getitem__ and __call__ (so that f [x]
2300 objects which support BOTH __getitem__ and __call__ (so that f [x]
2297 is left alone, instead of becoming f([x]) automatically).
2301 is left alone, instead of becoming f([x]) automatically).
2298
2302
2299 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2303 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2300 Ville's patch.
2304 Ville's patch.
2301
2305
2302 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2306 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2303
2307
2304 * IPython/iplib.py (handle_auto): changed autocall semantics to
2308 * IPython/iplib.py (handle_auto): changed autocall semantics to
2305 include 'smart' mode, where the autocall transformation is NOT
2309 include 'smart' mode, where the autocall transformation is NOT
2306 applied if there are no arguments on the line. This allows you to
2310 applied if there are no arguments on the line. This allows you to
2307 just type 'foo' if foo is a callable to see its internal form,
2311 just type 'foo' if foo is a callable to see its internal form,
2308 instead of having it called with no arguments (typically a
2312 instead of having it called with no arguments (typically a
2309 mistake). The old 'full' autocall still exists: for that, you
2313 mistake). The old 'full' autocall still exists: for that, you
2310 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2314 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2311
2315
2312 * IPython/completer.py (Completer.attr_matches): add
2316 * IPython/completer.py (Completer.attr_matches): add
2313 tab-completion support for Enthoughts' traits. After a report by
2317 tab-completion support for Enthoughts' traits. After a report by
2314 Arnd and a patch by Prabhu.
2318 Arnd and a patch by Prabhu.
2315
2319
2316 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2320 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2317
2321
2318 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2322 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2319 Schmolck's patch to fix inspect.getinnerframes().
2323 Schmolck's patch to fix inspect.getinnerframes().
2320
2324
2321 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2325 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2322 for embedded instances, regarding handling of namespaces and items
2326 for embedded instances, regarding handling of namespaces and items
2323 added to the __builtin__ one. Multiple embedded instances and
2327 added to the __builtin__ one. Multiple embedded instances and
2324 recursive embeddings should work better now (though I'm not sure
2328 recursive embeddings should work better now (though I'm not sure
2325 I've got all the corner cases fixed, that code is a bit of a brain
2329 I've got all the corner cases fixed, that code is a bit of a brain
2326 twister).
2330 twister).
2327
2331
2328 * IPython/Magic.py (magic_edit): added support to edit in-memory
2332 * IPython/Magic.py (magic_edit): added support to edit in-memory
2329 macros (automatically creates the necessary temp files). %edit
2333 macros (automatically creates the necessary temp files). %edit
2330 also doesn't return the file contents anymore, it's just noise.
2334 also doesn't return the file contents anymore, it's just noise.
2331
2335
2332 * IPython/completer.py (Completer.attr_matches): revert change to
2336 * IPython/completer.py (Completer.attr_matches): revert change to
2333 complete only on attributes listed in __all__. I realized it
2337 complete only on attributes listed in __all__. I realized it
2334 cripples the tab-completion system as a tool for exploring the
2338 cripples the tab-completion system as a tool for exploring the
2335 internals of unknown libraries (it renders any non-__all__
2339 internals of unknown libraries (it renders any non-__all__
2336 attribute off-limits). I got bit by this when trying to see
2340 attribute off-limits). I got bit by this when trying to see
2337 something inside the dis module.
2341 something inside the dis module.
2338
2342
2339 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2343 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2340
2344
2341 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2345 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2342 namespace for users and extension writers to hold data in. This
2346 namespace for users and extension writers to hold data in. This
2343 follows the discussion in
2347 follows the discussion in
2344 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2348 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2345
2349
2346 * IPython/completer.py (IPCompleter.complete): small patch to help
2350 * IPython/completer.py (IPCompleter.complete): small patch to help
2347 tab-completion under Emacs, after a suggestion by John Barnard
2351 tab-completion under Emacs, after a suggestion by John Barnard
2348 <barnarj-AT-ccf.org>.
2352 <barnarj-AT-ccf.org>.
2349
2353
2350 * IPython/Magic.py (Magic.extract_input_slices): added support for
2354 * IPython/Magic.py (Magic.extract_input_slices): added support for
2351 the slice notation in magics to use N-M to represent numbers N...M
2355 the slice notation in magics to use N-M to represent numbers N...M
2352 (closed endpoints). This is used by %macro and %save.
2356 (closed endpoints). This is used by %macro and %save.
2353
2357
2354 * IPython/completer.py (Completer.attr_matches): for modules which
2358 * IPython/completer.py (Completer.attr_matches): for modules which
2355 define __all__, complete only on those. After a patch by Jeffrey
2359 define __all__, complete only on those. After a patch by Jeffrey
2356 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2360 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2357 speed up this routine.
2361 speed up this routine.
2358
2362
2359 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2363 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2360 don't know if this is the end of it, but the behavior now is
2364 don't know if this is the end of it, but the behavior now is
2361 certainly much more correct. Note that coupled with macros,
2365 certainly much more correct. Note that coupled with macros,
2362 slightly surprising (at first) behavior may occur: a macro will in
2366 slightly surprising (at first) behavior may occur: a macro will in
2363 general expand to multiple lines of input, so upon exiting, the
2367 general expand to multiple lines of input, so upon exiting, the
2364 in/out counters will both be bumped by the corresponding amount
2368 in/out counters will both be bumped by the corresponding amount
2365 (as if the macro's contents had been typed interactively). Typing
2369 (as if the macro's contents had been typed interactively). Typing
2366 %hist will reveal the intermediate (silently processed) lines.
2370 %hist will reveal the intermediate (silently processed) lines.
2367
2371
2368 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2372 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2369 pickle to fail (%run was overwriting __main__ and not restoring
2373 pickle to fail (%run was overwriting __main__ and not restoring
2370 it, but pickle relies on __main__ to operate).
2374 it, but pickle relies on __main__ to operate).
2371
2375
2372 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2376 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2373 using properties, but forgot to make the main InteractiveShell
2377 using properties, but forgot to make the main InteractiveShell
2374 class a new-style class. Properties fail silently, and
2378 class a new-style class. Properties fail silently, and
2375 mysteriously, with old-style class (getters work, but
2379 mysteriously, with old-style class (getters work, but
2376 setters don't do anything).
2380 setters don't do anything).
2377
2381
2378 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2382 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2379
2383
2380 * IPython/Magic.py (magic_history): fix history reporting bug (I
2384 * IPython/Magic.py (magic_history): fix history reporting bug (I
2381 know some nasties are still there, I just can't seem to find a
2385 know some nasties are still there, I just can't seem to find a
2382 reproducible test case to track them down; the input history is
2386 reproducible test case to track them down; the input history is
2383 falling out of sync...)
2387 falling out of sync...)
2384
2388
2385 * IPython/iplib.py (handle_shell_escape): fix bug where both
2389 * IPython/iplib.py (handle_shell_escape): fix bug where both
2386 aliases and system accesses where broken for indented code (such
2390 aliases and system accesses where broken for indented code (such
2387 as loops).
2391 as loops).
2388
2392
2389 * IPython/genutils.py (shell): fix small but critical bug for
2393 * IPython/genutils.py (shell): fix small but critical bug for
2390 win32 system access.
2394 win32 system access.
2391
2395
2392 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2396 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2393
2397
2394 * IPython/iplib.py (showtraceback): remove use of the
2398 * IPython/iplib.py (showtraceback): remove use of the
2395 sys.last_{type/value/traceback} structures, which are non
2399 sys.last_{type/value/traceback} structures, which are non
2396 thread-safe.
2400 thread-safe.
2397 (_prefilter): change control flow to ensure that we NEVER
2401 (_prefilter): change control flow to ensure that we NEVER
2398 introspect objects when autocall is off. This will guarantee that
2402 introspect objects when autocall is off. This will guarantee that
2399 having an input line of the form 'x.y', where access to attribute
2403 having an input line of the form 'x.y', where access to attribute
2400 'y' has side effects, doesn't trigger the side effect TWICE. It
2404 'y' has side effects, doesn't trigger the side effect TWICE. It
2401 is important to note that, with autocall on, these side effects
2405 is important to note that, with autocall on, these side effects
2402 can still happen.
2406 can still happen.
2403 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2407 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2404 trio. IPython offers these three kinds of special calls which are
2408 trio. IPython offers these three kinds of special calls which are
2405 not python code, and it's a good thing to have their call method
2409 not python code, and it's a good thing to have their call method
2406 be accessible as pure python functions (not just special syntax at
2410 be accessible as pure python functions (not just special syntax at
2407 the command line). It gives us a better internal implementation
2411 the command line). It gives us a better internal implementation
2408 structure, as well as exposing these for user scripting more
2412 structure, as well as exposing these for user scripting more
2409 cleanly.
2413 cleanly.
2410
2414
2411 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2415 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2412 file. Now that they'll be more likely to be used with the
2416 file. Now that they'll be more likely to be used with the
2413 persistance system (%store), I want to make sure their module path
2417 persistance system (%store), I want to make sure their module path
2414 doesn't change in the future, so that we don't break things for
2418 doesn't change in the future, so that we don't break things for
2415 users' persisted data.
2419 users' persisted data.
2416
2420
2417 * IPython/iplib.py (autoindent_update): move indentation
2421 * IPython/iplib.py (autoindent_update): move indentation
2418 management into the _text_ processing loop, not the keyboard
2422 management into the _text_ processing loop, not the keyboard
2419 interactive one. This is necessary to correctly process non-typed
2423 interactive one. This is necessary to correctly process non-typed
2420 multiline input (such as macros).
2424 multiline input (such as macros).
2421
2425
2422 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2426 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2423 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2427 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2424 which was producing problems in the resulting manual.
2428 which was producing problems in the resulting manual.
2425 (magic_whos): improve reporting of instances (show their class,
2429 (magic_whos): improve reporting of instances (show their class,
2426 instead of simply printing 'instance' which isn't terribly
2430 instead of simply printing 'instance' which isn't terribly
2427 informative).
2431 informative).
2428
2432
2429 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2433 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2430 (minor mods) to support network shares under win32.
2434 (minor mods) to support network shares under win32.
2431
2435
2432 * IPython/winconsole.py (get_console_size): add new winconsole
2436 * IPython/winconsole.py (get_console_size): add new winconsole
2433 module and fixes to page_dumb() to improve its behavior under
2437 module and fixes to page_dumb() to improve its behavior under
2434 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2438 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2435
2439
2436 * IPython/Magic.py (Macro): simplified Macro class to just
2440 * IPython/Magic.py (Macro): simplified Macro class to just
2437 subclass list. We've had only 2.2 compatibility for a very long
2441 subclass list. We've had only 2.2 compatibility for a very long
2438 time, yet I was still avoiding subclassing the builtin types. No
2442 time, yet I was still avoiding subclassing the builtin types. No
2439 more (I'm also starting to use properties, though I won't shift to
2443 more (I'm also starting to use properties, though I won't shift to
2440 2.3-specific features quite yet).
2444 2.3-specific features quite yet).
2441 (magic_store): added Ville's patch for lightweight variable
2445 (magic_store): added Ville's patch for lightweight variable
2442 persistence, after a request on the user list by Matt Wilkie
2446 persistence, after a request on the user list by Matt Wilkie
2443 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2447 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2444 details.
2448 details.
2445
2449
2446 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2450 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2447 changed the default logfile name from 'ipython.log' to
2451 changed the default logfile name from 'ipython.log' to
2448 'ipython_log.py'. These logs are real python files, and now that
2452 'ipython_log.py'. These logs are real python files, and now that
2449 we have much better multiline support, people are more likely to
2453 we have much better multiline support, people are more likely to
2450 want to use them as such. Might as well name them correctly.
2454 want to use them as such. Might as well name them correctly.
2451
2455
2452 * IPython/Magic.py: substantial cleanup. While we can't stop
2456 * IPython/Magic.py: substantial cleanup. While we can't stop
2453 using magics as mixins, due to the existing customizations 'out
2457 using magics as mixins, due to the existing customizations 'out
2454 there' which rely on the mixin naming conventions, at least I
2458 there' which rely on the mixin naming conventions, at least I
2455 cleaned out all cross-class name usage. So once we are OK with
2459 cleaned out all cross-class name usage. So once we are OK with
2456 breaking compatibility, the two systems can be separated.
2460 breaking compatibility, the two systems can be separated.
2457
2461
2458 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2462 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2459 anymore, and the class is a fair bit less hideous as well. New
2463 anymore, and the class is a fair bit less hideous as well. New
2460 features were also introduced: timestamping of input, and logging
2464 features were also introduced: timestamping of input, and logging
2461 of output results. These are user-visible with the -t and -o
2465 of output results. These are user-visible with the -t and -o
2462 options to %logstart. Closes
2466 options to %logstart. Closes
2463 http://www.scipy.net/roundup/ipython/issue11 and a request by
2467 http://www.scipy.net/roundup/ipython/issue11 and a request by
2464 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2468 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2465
2469
2466 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2470 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2467
2471
2468 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2472 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2469 better handle backslashes in paths. See the thread 'More Windows
2473 better handle backslashes in paths. See the thread 'More Windows
2470 questions part 2 - \/ characters revisited' on the iypthon user
2474 questions part 2 - \/ characters revisited' on the iypthon user
2471 list:
2475 list:
2472 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2476 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2473
2477
2474 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2478 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2475
2479
2476 (InteractiveShell.__init__): change threaded shells to not use the
2480 (InteractiveShell.__init__): change threaded shells to not use the
2477 ipython crash handler. This was causing more problems than not,
2481 ipython crash handler. This was causing more problems than not,
2478 as exceptions in the main thread (GUI code, typically) would
2482 as exceptions in the main thread (GUI code, typically) would
2479 always show up as a 'crash', when they really weren't.
2483 always show up as a 'crash', when they really weren't.
2480
2484
2481 The colors and exception mode commands (%colors/%xmode) have been
2485 The colors and exception mode commands (%colors/%xmode) have been
2482 synchronized to also take this into account, so users can get
2486 synchronized to also take this into account, so users can get
2483 verbose exceptions for their threaded code as well. I also added
2487 verbose exceptions for their threaded code as well. I also added
2484 support for activating pdb inside this exception handler as well,
2488 support for activating pdb inside this exception handler as well,
2485 so now GUI authors can use IPython's enhanced pdb at runtime.
2489 so now GUI authors can use IPython's enhanced pdb at runtime.
2486
2490
2487 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2491 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2488 true by default, and add it to the shipped ipythonrc file. Since
2492 true by default, and add it to the shipped ipythonrc file. Since
2489 this asks the user before proceeding, I think it's OK to make it
2493 this asks the user before proceeding, I think it's OK to make it
2490 true by default.
2494 true by default.
2491
2495
2492 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2496 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2493 of the previous special-casing of input in the eval loop. I think
2497 of the previous special-casing of input in the eval loop. I think
2494 this is cleaner, as they really are commands and shouldn't have
2498 this is cleaner, as they really are commands and shouldn't have
2495 a special role in the middle of the core code.
2499 a special role in the middle of the core code.
2496
2500
2497 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2501 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2498
2502
2499 * IPython/iplib.py (edit_syntax_error): added support for
2503 * IPython/iplib.py (edit_syntax_error): added support for
2500 automatically reopening the editor if the file had a syntax error
2504 automatically reopening the editor if the file had a syntax error
2501 in it. Thanks to scottt who provided the patch at:
2505 in it. Thanks to scottt who provided the patch at:
2502 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2506 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2503 version committed).
2507 version committed).
2504
2508
2505 * IPython/iplib.py (handle_normal): add suport for multi-line
2509 * IPython/iplib.py (handle_normal): add suport for multi-line
2506 input with emtpy lines. This fixes
2510 input with emtpy lines. This fixes
2507 http://www.scipy.net/roundup/ipython/issue43 and a similar
2511 http://www.scipy.net/roundup/ipython/issue43 and a similar
2508 discussion on the user list.
2512 discussion on the user list.
2509
2513
2510 WARNING: a behavior change is necessarily introduced to support
2514 WARNING: a behavior change is necessarily introduced to support
2511 blank lines: now a single blank line with whitespace does NOT
2515 blank lines: now a single blank line with whitespace does NOT
2512 break the input loop, which means that when autoindent is on, by
2516 break the input loop, which means that when autoindent is on, by
2513 default hitting return on the next (indented) line does NOT exit.
2517 default hitting return on the next (indented) line does NOT exit.
2514
2518
2515 Instead, to exit a multiline input you can either have:
2519 Instead, to exit a multiline input you can either have:
2516
2520
2517 - TWO whitespace lines (just hit return again), or
2521 - TWO whitespace lines (just hit return again), or
2518 - a single whitespace line of a different length than provided
2522 - a single whitespace line of a different length than provided
2519 by the autoindent (add or remove a space).
2523 by the autoindent (add or remove a space).
2520
2524
2521 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2525 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2522 module to better organize all readline-related functionality.
2526 module to better organize all readline-related functionality.
2523 I've deleted FlexCompleter and put all completion clases here.
2527 I've deleted FlexCompleter and put all completion clases here.
2524
2528
2525 * IPython/iplib.py (raw_input): improve indentation management.
2529 * IPython/iplib.py (raw_input): improve indentation management.
2526 It is now possible to paste indented code with autoindent on, and
2530 It is now possible to paste indented code with autoindent on, and
2527 the code is interpreted correctly (though it still looks bad on
2531 the code is interpreted correctly (though it still looks bad on
2528 screen, due to the line-oriented nature of ipython).
2532 screen, due to the line-oriented nature of ipython).
2529 (MagicCompleter.complete): change behavior so that a TAB key on an
2533 (MagicCompleter.complete): change behavior so that a TAB key on an
2530 otherwise empty line actually inserts a tab, instead of completing
2534 otherwise empty line actually inserts a tab, instead of completing
2531 on the entire global namespace. This makes it easier to use the
2535 on the entire global namespace. This makes it easier to use the
2532 TAB key for indentation. After a request by Hans Meine
2536 TAB key for indentation. After a request by Hans Meine
2533 <hans_meine-AT-gmx.net>
2537 <hans_meine-AT-gmx.net>
2534 (_prefilter): add support so that typing plain 'exit' or 'quit'
2538 (_prefilter): add support so that typing plain 'exit' or 'quit'
2535 does a sensible thing. Originally I tried to deviate as little as
2539 does a sensible thing. Originally I tried to deviate as little as
2536 possible from the default python behavior, but even that one may
2540 possible from the default python behavior, but even that one may
2537 change in this direction (thread on python-dev to that effect).
2541 change in this direction (thread on python-dev to that effect).
2538 Regardless, ipython should do the right thing even if CPython's
2542 Regardless, ipython should do the right thing even if CPython's
2539 '>>>' prompt doesn't.
2543 '>>>' prompt doesn't.
2540 (InteractiveShell): removed subclassing code.InteractiveConsole
2544 (InteractiveShell): removed subclassing code.InteractiveConsole
2541 class. By now we'd overridden just about all of its methods: I've
2545 class. By now we'd overridden just about all of its methods: I've
2542 copied the remaining two over, and now ipython is a standalone
2546 copied the remaining two over, and now ipython is a standalone
2543 class. This will provide a clearer picture for the chainsaw
2547 class. This will provide a clearer picture for the chainsaw
2544 branch refactoring.
2548 branch refactoring.
2545
2549
2546 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2550 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2547
2551
2548 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2552 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2549 failures for objects which break when dir() is called on them.
2553 failures for objects which break when dir() is called on them.
2550
2554
2551 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2555 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2552 distinct local and global namespaces in the completer API. This
2556 distinct local and global namespaces in the completer API. This
2553 change allows us to properly handle completion with distinct
2557 change allows us to properly handle completion with distinct
2554 scopes, including in embedded instances (this had never really
2558 scopes, including in embedded instances (this had never really
2555 worked correctly).
2559 worked correctly).
2556
2560
2557 Note: this introduces a change in the constructor for
2561 Note: this introduces a change in the constructor for
2558 MagicCompleter, as a new global_namespace parameter is now the
2562 MagicCompleter, as a new global_namespace parameter is now the
2559 second argument (the others were bumped one position).
2563 second argument (the others were bumped one position).
2560
2564
2561 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2565 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2562
2566
2563 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2567 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2564 embedded instances (which can be done now thanks to Vivian's
2568 embedded instances (which can be done now thanks to Vivian's
2565 frame-handling fixes for pdb).
2569 frame-handling fixes for pdb).
2566 (InteractiveShell.__init__): Fix namespace handling problem in
2570 (InteractiveShell.__init__): Fix namespace handling problem in
2567 embedded instances. We were overwriting __main__ unconditionally,
2571 embedded instances. We were overwriting __main__ unconditionally,
2568 and this should only be done for 'full' (non-embedded) IPython;
2572 and this should only be done for 'full' (non-embedded) IPython;
2569 embedded instances must respect the caller's __main__. Thanks to
2573 embedded instances must respect the caller's __main__. Thanks to
2570 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2574 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2571
2575
2572 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2576 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2573
2577
2574 * setup.py: added download_url to setup(). This registers the
2578 * setup.py: added download_url to setup(). This registers the
2575 download address at PyPI, which is not only useful to humans
2579 download address at PyPI, which is not only useful to humans
2576 browsing the site, but is also picked up by setuptools (the Eggs
2580 browsing the site, but is also picked up by setuptools (the Eggs
2577 machinery). Thanks to Ville and R. Kern for the info/discussion
2581 machinery). Thanks to Ville and R. Kern for the info/discussion
2578 on this.
2582 on this.
2579
2583
2580 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2584 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2581
2585
2582 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2586 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2583 This brings a lot of nice functionality to the pdb mode, which now
2587 This brings a lot of nice functionality to the pdb mode, which now
2584 has tab-completion, syntax highlighting, and better stack handling
2588 has tab-completion, syntax highlighting, and better stack handling
2585 than before. Many thanks to Vivian De Smedt
2589 than before. Many thanks to Vivian De Smedt
2586 <vivian-AT-vdesmedt.com> for the original patches.
2590 <vivian-AT-vdesmedt.com> for the original patches.
2587
2591
2588 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2592 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2589
2593
2590 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2594 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2591 sequence to consistently accept the banner argument. The
2595 sequence to consistently accept the banner argument. The
2592 inconsistency was tripping SAGE, thanks to Gary Zablackis
2596 inconsistency was tripping SAGE, thanks to Gary Zablackis
2593 <gzabl-AT-yahoo.com> for the report.
2597 <gzabl-AT-yahoo.com> for the report.
2594
2598
2595 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2599 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2596
2600
2597 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2601 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2598 Fix bug where a naked 'alias' call in the ipythonrc file would
2602 Fix bug where a naked 'alias' call in the ipythonrc file would
2599 cause a crash. Bug reported by Jorgen Stenarson.
2603 cause a crash. Bug reported by Jorgen Stenarson.
2600
2604
2601 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2605 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2602
2606
2603 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2607 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2604 startup time.
2608 startup time.
2605
2609
2606 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2610 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2607 instances had introduced a bug with globals in normal code. Now
2611 instances had introduced a bug with globals in normal code. Now
2608 it's working in all cases.
2612 it's working in all cases.
2609
2613
2610 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2614 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2611 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2615 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2612 has been introduced to set the default case sensitivity of the
2616 has been introduced to set the default case sensitivity of the
2613 searches. Users can still select either mode at runtime on a
2617 searches. Users can still select either mode at runtime on a
2614 per-search basis.
2618 per-search basis.
2615
2619
2616 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2620 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2617
2621
2618 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2622 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2619 attributes in wildcard searches for subclasses. Modified version
2623 attributes in wildcard searches for subclasses. Modified version
2620 of a patch by Jorgen.
2624 of a patch by Jorgen.
2621
2625
2622 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2626 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2623
2627
2624 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2628 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2625 embedded instances. I added a user_global_ns attribute to the
2629 embedded instances. I added a user_global_ns attribute to the
2626 InteractiveShell class to handle this.
2630 InteractiveShell class to handle this.
2627
2631
2628 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2632 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2629
2633
2630 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2634 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2631 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2635 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2632 (reported under win32, but may happen also in other platforms).
2636 (reported under win32, but may happen also in other platforms).
2633 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2637 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2634
2638
2635 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2639 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2636
2640
2637 * IPython/Magic.py (magic_psearch): new support for wildcard
2641 * IPython/Magic.py (magic_psearch): new support for wildcard
2638 patterns. Now, typing ?a*b will list all names which begin with a
2642 patterns. Now, typing ?a*b will list all names which begin with a
2639 and end in b, for example. The %psearch magic has full
2643 and end in b, for example. The %psearch magic has full
2640 docstrings. Many thanks to JΓΆrgen Stenarson
2644 docstrings. Many thanks to JΓΆrgen Stenarson
2641 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2645 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2642 implementing this functionality.
2646 implementing this functionality.
2643
2647
2644 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2648 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2645
2649
2646 * Manual: fixed long-standing annoyance of double-dashes (as in
2650 * Manual: fixed long-standing annoyance of double-dashes (as in
2647 --prefix=~, for example) being stripped in the HTML version. This
2651 --prefix=~, for example) being stripped in the HTML version. This
2648 is a latex2html bug, but a workaround was provided. Many thanks
2652 is a latex2html bug, but a workaround was provided. Many thanks
2649 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2653 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2650 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2654 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2651 rolling. This seemingly small issue had tripped a number of users
2655 rolling. This seemingly small issue had tripped a number of users
2652 when first installing, so I'm glad to see it gone.
2656 when first installing, so I'm glad to see it gone.
2653
2657
2654 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2658 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2655
2659
2656 * IPython/Extensions/numeric_formats.py: fix missing import,
2660 * IPython/Extensions/numeric_formats.py: fix missing import,
2657 reported by Stephen Walton.
2661 reported by Stephen Walton.
2658
2662
2659 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2663 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2660
2664
2661 * IPython/demo.py: finish demo module, fully documented now.
2665 * IPython/demo.py: finish demo module, fully documented now.
2662
2666
2663 * IPython/genutils.py (file_read): simple little utility to read a
2667 * IPython/genutils.py (file_read): simple little utility to read a
2664 file and ensure it's closed afterwards.
2668 file and ensure it's closed afterwards.
2665
2669
2666 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2670 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2667
2671
2668 * IPython/demo.py (Demo.__init__): added support for individually
2672 * IPython/demo.py (Demo.__init__): added support for individually
2669 tagging blocks for automatic execution.
2673 tagging blocks for automatic execution.
2670
2674
2671 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2675 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2672 syntax-highlighted python sources, requested by John.
2676 syntax-highlighted python sources, requested by John.
2673
2677
2674 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2678 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2675
2679
2676 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2680 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2677 finishing.
2681 finishing.
2678
2682
2679 * IPython/genutils.py (shlex_split): moved from Magic to here,
2683 * IPython/genutils.py (shlex_split): moved from Magic to here,
2680 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2684 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2681
2685
2682 * IPython/demo.py (Demo.__init__): added support for silent
2686 * IPython/demo.py (Demo.__init__): added support for silent
2683 blocks, improved marks as regexps, docstrings written.
2687 blocks, improved marks as regexps, docstrings written.
2684 (Demo.__init__): better docstring, added support for sys.argv.
2688 (Demo.__init__): better docstring, added support for sys.argv.
2685
2689
2686 * IPython/genutils.py (marquee): little utility used by the demo
2690 * IPython/genutils.py (marquee): little utility used by the demo
2687 code, handy in general.
2691 code, handy in general.
2688
2692
2689 * IPython/demo.py (Demo.__init__): new class for interactive
2693 * IPython/demo.py (Demo.__init__): new class for interactive
2690 demos. Not documented yet, I just wrote it in a hurry for
2694 demos. Not documented yet, I just wrote it in a hurry for
2691 scipy'05. Will docstring later.
2695 scipy'05. Will docstring later.
2692
2696
2693 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2697 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2694
2698
2695 * IPython/Shell.py (sigint_handler): Drastic simplification which
2699 * IPython/Shell.py (sigint_handler): Drastic simplification which
2696 also seems to make Ctrl-C work correctly across threads! This is
2700 also seems to make Ctrl-C work correctly across threads! This is
2697 so simple, that I can't beleive I'd missed it before. Needs more
2701 so simple, that I can't beleive I'd missed it before. Needs more
2698 testing, though.
2702 testing, though.
2699 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2703 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2700 like this before...
2704 like this before...
2701
2705
2702 * IPython/genutils.py (get_home_dir): add protection against
2706 * IPython/genutils.py (get_home_dir): add protection against
2703 non-dirs in win32 registry.
2707 non-dirs in win32 registry.
2704
2708
2705 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2709 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2706 bug where dict was mutated while iterating (pysh crash).
2710 bug where dict was mutated while iterating (pysh crash).
2707
2711
2708 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2712 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2709
2713
2710 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2714 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2711 spurious newlines added by this routine. After a report by
2715 spurious newlines added by this routine. After a report by
2712 F. Mantegazza.
2716 F. Mantegazza.
2713
2717
2714 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2718 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2715
2719
2716 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2720 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2717 calls. These were a leftover from the GTK 1.x days, and can cause
2721 calls. These were a leftover from the GTK 1.x days, and can cause
2718 problems in certain cases (after a report by John Hunter).
2722 problems in certain cases (after a report by John Hunter).
2719
2723
2720 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2724 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2721 os.getcwd() fails at init time. Thanks to patch from David Remahl
2725 os.getcwd() fails at init time. Thanks to patch from David Remahl
2722 <chmod007-AT-mac.com>.
2726 <chmod007-AT-mac.com>.
2723 (InteractiveShell.__init__): prevent certain special magics from
2727 (InteractiveShell.__init__): prevent certain special magics from
2724 being shadowed by aliases. Closes
2728 being shadowed by aliases. Closes
2725 http://www.scipy.net/roundup/ipython/issue41.
2729 http://www.scipy.net/roundup/ipython/issue41.
2726
2730
2727 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2731 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2728
2732
2729 * IPython/iplib.py (InteractiveShell.complete): Added new
2733 * IPython/iplib.py (InteractiveShell.complete): Added new
2730 top-level completion method to expose the completion mechanism
2734 top-level completion method to expose the completion mechanism
2731 beyond readline-based environments.
2735 beyond readline-based environments.
2732
2736
2733 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2737 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2734
2738
2735 * tools/ipsvnc (svnversion): fix svnversion capture.
2739 * tools/ipsvnc (svnversion): fix svnversion capture.
2736
2740
2737 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2741 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2738 attribute to self, which was missing. Before, it was set by a
2742 attribute to self, which was missing. Before, it was set by a
2739 routine which in certain cases wasn't being called, so the
2743 routine which in certain cases wasn't being called, so the
2740 instance could end up missing the attribute. This caused a crash.
2744 instance could end up missing the attribute. This caused a crash.
2741 Closes http://www.scipy.net/roundup/ipython/issue40.
2745 Closes http://www.scipy.net/roundup/ipython/issue40.
2742
2746
2743 2005-08-16 Fernando Perez <fperez@colorado.edu>
2747 2005-08-16 Fernando Perez <fperez@colorado.edu>
2744
2748
2745 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2749 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2746 contains non-string attribute. Closes
2750 contains non-string attribute. Closes
2747 http://www.scipy.net/roundup/ipython/issue38.
2751 http://www.scipy.net/roundup/ipython/issue38.
2748
2752
2749 2005-08-14 Fernando Perez <fperez@colorado.edu>
2753 2005-08-14 Fernando Perez <fperez@colorado.edu>
2750
2754
2751 * tools/ipsvnc: Minor improvements, to add changeset info.
2755 * tools/ipsvnc: Minor improvements, to add changeset info.
2752
2756
2753 2005-08-12 Fernando Perez <fperez@colorado.edu>
2757 2005-08-12 Fernando Perez <fperez@colorado.edu>
2754
2758
2755 * IPython/iplib.py (runsource): remove self.code_to_run_src
2759 * IPython/iplib.py (runsource): remove self.code_to_run_src
2756 attribute. I realized this is nothing more than
2760 attribute. I realized this is nothing more than
2757 '\n'.join(self.buffer), and having the same data in two different
2761 '\n'.join(self.buffer), and having the same data in two different
2758 places is just asking for synchronization bugs. This may impact
2762 places is just asking for synchronization bugs. This may impact
2759 people who have custom exception handlers, so I need to warn
2763 people who have custom exception handlers, so I need to warn
2760 ipython-dev about it (F. Mantegazza may use them).
2764 ipython-dev about it (F. Mantegazza may use them).
2761
2765
2762 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2766 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2763
2767
2764 * IPython/genutils.py: fix 2.2 compatibility (generators)
2768 * IPython/genutils.py: fix 2.2 compatibility (generators)
2765
2769
2766 2005-07-18 Fernando Perez <fperez@colorado.edu>
2770 2005-07-18 Fernando Perez <fperez@colorado.edu>
2767
2771
2768 * IPython/genutils.py (get_home_dir): fix to help users with
2772 * IPython/genutils.py (get_home_dir): fix to help users with
2769 invalid $HOME under win32.
2773 invalid $HOME under win32.
2770
2774
2771 2005-07-17 Fernando Perez <fperez@colorado.edu>
2775 2005-07-17 Fernando Perez <fperez@colorado.edu>
2772
2776
2773 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2777 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2774 some old hacks and clean up a bit other routines; code should be
2778 some old hacks and clean up a bit other routines; code should be
2775 simpler and a bit faster.
2779 simpler and a bit faster.
2776
2780
2777 * IPython/iplib.py (interact): removed some last-resort attempts
2781 * IPython/iplib.py (interact): removed some last-resort attempts
2778 to survive broken stdout/stderr. That code was only making it
2782 to survive broken stdout/stderr. That code was only making it
2779 harder to abstract out the i/o (necessary for gui integration),
2783 harder to abstract out the i/o (necessary for gui integration),
2780 and the crashes it could prevent were extremely rare in practice
2784 and the crashes it could prevent were extremely rare in practice
2781 (besides being fully user-induced in a pretty violent manner).
2785 (besides being fully user-induced in a pretty violent manner).
2782
2786
2783 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2787 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2784 Nothing major yet, but the code is simpler to read; this should
2788 Nothing major yet, but the code is simpler to read; this should
2785 make it easier to do more serious modifications in the future.
2789 make it easier to do more serious modifications in the future.
2786
2790
2787 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2791 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2788 which broke in .15 (thanks to a report by Ville).
2792 which broke in .15 (thanks to a report by Ville).
2789
2793
2790 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2794 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2791 be quite correct, I know next to nothing about unicode). This
2795 be quite correct, I know next to nothing about unicode). This
2792 will allow unicode strings to be used in prompts, amongst other
2796 will allow unicode strings to be used in prompts, amongst other
2793 cases. It also will prevent ipython from crashing when unicode
2797 cases. It also will prevent ipython from crashing when unicode
2794 shows up unexpectedly in many places. If ascii encoding fails, we
2798 shows up unexpectedly in many places. If ascii encoding fails, we
2795 assume utf_8. Currently the encoding is not a user-visible
2799 assume utf_8. Currently the encoding is not a user-visible
2796 setting, though it could be made so if there is demand for it.
2800 setting, though it could be made so if there is demand for it.
2797
2801
2798 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2802 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2799
2803
2800 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2804 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2801
2805
2802 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2806 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2803
2807
2804 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2808 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2805 code can work transparently for 2.2/2.3.
2809 code can work transparently for 2.2/2.3.
2806
2810
2807 2005-07-16 Fernando Perez <fperez@colorado.edu>
2811 2005-07-16 Fernando Perez <fperez@colorado.edu>
2808
2812
2809 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2813 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2810 out of the color scheme table used for coloring exception
2814 out of the color scheme table used for coloring exception
2811 tracebacks. This allows user code to add new schemes at runtime.
2815 tracebacks. This allows user code to add new schemes at runtime.
2812 This is a minimally modified version of the patch at
2816 This is a minimally modified version of the patch at
2813 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2817 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2814 for the contribution.
2818 for the contribution.
2815
2819
2816 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2820 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2817 slightly modified version of the patch in
2821 slightly modified version of the patch in
2818 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2822 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2819 to remove the previous try/except solution (which was costlier).
2823 to remove the previous try/except solution (which was costlier).
2820 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2824 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2821
2825
2822 2005-06-08 Fernando Perez <fperez@colorado.edu>
2826 2005-06-08 Fernando Perez <fperez@colorado.edu>
2823
2827
2824 * IPython/iplib.py (write/write_err): Add methods to abstract all
2828 * IPython/iplib.py (write/write_err): Add methods to abstract all
2825 I/O a bit more.
2829 I/O a bit more.
2826
2830
2827 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2831 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2828 warning, reported by Aric Hagberg, fix by JD Hunter.
2832 warning, reported by Aric Hagberg, fix by JD Hunter.
2829
2833
2830 2005-06-02 *** Released version 0.6.15
2834 2005-06-02 *** Released version 0.6.15
2831
2835
2832 2005-06-01 Fernando Perez <fperez@colorado.edu>
2836 2005-06-01 Fernando Perez <fperez@colorado.edu>
2833
2837
2834 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2838 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2835 tab-completion of filenames within open-quoted strings. Note that
2839 tab-completion of filenames within open-quoted strings. Note that
2836 this requires that in ~/.ipython/ipythonrc, users change the
2840 this requires that in ~/.ipython/ipythonrc, users change the
2837 readline delimiters configuration to read:
2841 readline delimiters configuration to read:
2838
2842
2839 readline_remove_delims -/~
2843 readline_remove_delims -/~
2840
2844
2841
2845
2842 2005-05-31 *** Released version 0.6.14
2846 2005-05-31 *** Released version 0.6.14
2843
2847
2844 2005-05-29 Fernando Perez <fperez@colorado.edu>
2848 2005-05-29 Fernando Perez <fperez@colorado.edu>
2845
2849
2846 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2850 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2847 with files not on the filesystem. Reported by Eliyahu Sandler
2851 with files not on the filesystem. Reported by Eliyahu Sandler
2848 <eli@gondolin.net>
2852 <eli@gondolin.net>
2849
2853
2850 2005-05-22 Fernando Perez <fperez@colorado.edu>
2854 2005-05-22 Fernando Perez <fperez@colorado.edu>
2851
2855
2852 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2856 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2853 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2857 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2854
2858
2855 2005-05-19 Fernando Perez <fperez@colorado.edu>
2859 2005-05-19 Fernando Perez <fperez@colorado.edu>
2856
2860
2857 * IPython/iplib.py (safe_execfile): close a file which could be
2861 * IPython/iplib.py (safe_execfile): close a file which could be
2858 left open (causing problems in win32, which locks open files).
2862 left open (causing problems in win32, which locks open files).
2859 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2863 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2860
2864
2861 2005-05-18 Fernando Perez <fperez@colorado.edu>
2865 2005-05-18 Fernando Perez <fperez@colorado.edu>
2862
2866
2863 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2867 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2864 keyword arguments correctly to safe_execfile().
2868 keyword arguments correctly to safe_execfile().
2865
2869
2866 2005-05-13 Fernando Perez <fperez@colorado.edu>
2870 2005-05-13 Fernando Perez <fperez@colorado.edu>
2867
2871
2868 * ipython.1: Added info about Qt to manpage, and threads warning
2872 * ipython.1: Added info about Qt to manpage, and threads warning
2869 to usage page (invoked with --help).
2873 to usage page (invoked with --help).
2870
2874
2871 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2875 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2872 new matcher (it goes at the end of the priority list) to do
2876 new matcher (it goes at the end of the priority list) to do
2873 tab-completion on named function arguments. Submitted by George
2877 tab-completion on named function arguments. Submitted by George
2874 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2878 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2875 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2879 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2876 for more details.
2880 for more details.
2877
2881
2878 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2882 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2879 SystemExit exceptions in the script being run. Thanks to a report
2883 SystemExit exceptions in the script being run. Thanks to a report
2880 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2884 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2881 producing very annoying behavior when running unit tests.
2885 producing very annoying behavior when running unit tests.
2882
2886
2883 2005-05-12 Fernando Perez <fperez@colorado.edu>
2887 2005-05-12 Fernando Perez <fperez@colorado.edu>
2884
2888
2885 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2889 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2886 which I'd broken (again) due to a changed regexp. In the process,
2890 which I'd broken (again) due to a changed regexp. In the process,
2887 added ';' as an escape to auto-quote the whole line without
2891 added ';' as an escape to auto-quote the whole line without
2888 splitting its arguments. Thanks to a report by Jerry McRae
2892 splitting its arguments. Thanks to a report by Jerry McRae
2889 <qrs0xyc02-AT-sneakemail.com>.
2893 <qrs0xyc02-AT-sneakemail.com>.
2890
2894
2891 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2895 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2892 possible crashes caused by a TokenError. Reported by Ed Schofield
2896 possible crashes caused by a TokenError. Reported by Ed Schofield
2893 <schofield-AT-ftw.at>.
2897 <schofield-AT-ftw.at>.
2894
2898
2895 2005-05-06 Fernando Perez <fperez@colorado.edu>
2899 2005-05-06 Fernando Perez <fperez@colorado.edu>
2896
2900
2897 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2901 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2898
2902
2899 2005-04-29 Fernando Perez <fperez@colorado.edu>
2903 2005-04-29 Fernando Perez <fperez@colorado.edu>
2900
2904
2901 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2905 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2902 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2906 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2903 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2907 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2904 which provides support for Qt interactive usage (similar to the
2908 which provides support for Qt interactive usage (similar to the
2905 existing one for WX and GTK). This had been often requested.
2909 existing one for WX and GTK). This had been often requested.
2906
2910
2907 2005-04-14 *** Released version 0.6.13
2911 2005-04-14 *** Released version 0.6.13
2908
2912
2909 2005-04-08 Fernando Perez <fperez@colorado.edu>
2913 2005-04-08 Fernando Perez <fperez@colorado.edu>
2910
2914
2911 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2915 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2912 from _ofind, which gets called on almost every input line. Now,
2916 from _ofind, which gets called on almost every input line. Now,
2913 we only try to get docstrings if they are actually going to be
2917 we only try to get docstrings if they are actually going to be
2914 used (the overhead of fetching unnecessary docstrings can be
2918 used (the overhead of fetching unnecessary docstrings can be
2915 noticeable for certain objects, such as Pyro proxies).
2919 noticeable for certain objects, such as Pyro proxies).
2916
2920
2917 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2921 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2918 for completers. For some reason I had been passing them the state
2922 for completers. For some reason I had been passing them the state
2919 variable, which completers never actually need, and was in
2923 variable, which completers never actually need, and was in
2920 conflict with the rlcompleter API. Custom completers ONLY need to
2924 conflict with the rlcompleter API. Custom completers ONLY need to
2921 take the text parameter.
2925 take the text parameter.
2922
2926
2923 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2927 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2924 work correctly in pysh. I've also moved all the logic which used
2928 work correctly in pysh. I've also moved all the logic which used
2925 to be in pysh.py here, which will prevent problems with future
2929 to be in pysh.py here, which will prevent problems with future
2926 upgrades. However, this time I must warn users to update their
2930 upgrades. However, this time I must warn users to update their
2927 pysh profile to include the line
2931 pysh profile to include the line
2928
2932
2929 import_all IPython.Extensions.InterpreterExec
2933 import_all IPython.Extensions.InterpreterExec
2930
2934
2931 because otherwise things won't work for them. They MUST also
2935 because otherwise things won't work for them. They MUST also
2932 delete pysh.py and the line
2936 delete pysh.py and the line
2933
2937
2934 execfile pysh.py
2938 execfile pysh.py
2935
2939
2936 from their ipythonrc-pysh.
2940 from their ipythonrc-pysh.
2937
2941
2938 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2942 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2939 robust in the face of objects whose dir() returns non-strings
2943 robust in the face of objects whose dir() returns non-strings
2940 (which it shouldn't, but some broken libs like ITK do). Thanks to
2944 (which it shouldn't, but some broken libs like ITK do). Thanks to
2941 a patch by John Hunter (implemented differently, though). Also
2945 a patch by John Hunter (implemented differently, though). Also
2942 minor improvements by using .extend instead of + on lists.
2946 minor improvements by using .extend instead of + on lists.
2943
2947
2944 * pysh.py:
2948 * pysh.py:
2945
2949
2946 2005-04-06 Fernando Perez <fperez@colorado.edu>
2950 2005-04-06 Fernando Perez <fperez@colorado.edu>
2947
2951
2948 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2952 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2949 by default, so that all users benefit from it. Those who don't
2953 by default, so that all users benefit from it. Those who don't
2950 want it can still turn it off.
2954 want it can still turn it off.
2951
2955
2952 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2956 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2953 config file, I'd forgotten about this, so users were getting it
2957 config file, I'd forgotten about this, so users were getting it
2954 off by default.
2958 off by default.
2955
2959
2956 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2960 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2957 consistency. Now magics can be called in multiline statements,
2961 consistency. Now magics can be called in multiline statements,
2958 and python variables can be expanded in magic calls via $var.
2962 and python variables can be expanded in magic calls via $var.
2959 This makes the magic system behave just like aliases or !system
2963 This makes the magic system behave just like aliases or !system
2960 calls.
2964 calls.
2961
2965
2962 2005-03-28 Fernando Perez <fperez@colorado.edu>
2966 2005-03-28 Fernando Perez <fperez@colorado.edu>
2963
2967
2964 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2968 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2965 expensive string additions for building command. Add support for
2969 expensive string additions for building command. Add support for
2966 trailing ';' when autocall is used.
2970 trailing ';' when autocall is used.
2967
2971
2968 2005-03-26 Fernando Perez <fperez@colorado.edu>
2972 2005-03-26 Fernando Perez <fperez@colorado.edu>
2969
2973
2970 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2974 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2971 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2975 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2972 ipython.el robust against prompts with any number of spaces
2976 ipython.el robust against prompts with any number of spaces
2973 (including 0) after the ':' character.
2977 (including 0) after the ':' character.
2974
2978
2975 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2979 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2976 continuation prompt, which misled users to think the line was
2980 continuation prompt, which misled users to think the line was
2977 already indented. Closes debian Bug#300847, reported to me by
2981 already indented. Closes debian Bug#300847, reported to me by
2978 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2982 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2979
2983
2980 2005-03-23 Fernando Perez <fperez@colorado.edu>
2984 2005-03-23 Fernando Perez <fperez@colorado.edu>
2981
2985
2982 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2986 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2983 properly aligned if they have embedded newlines.
2987 properly aligned if they have embedded newlines.
2984
2988
2985 * IPython/iplib.py (runlines): Add a public method to expose
2989 * IPython/iplib.py (runlines): Add a public method to expose
2986 IPython's code execution machinery, so that users can run strings
2990 IPython's code execution machinery, so that users can run strings
2987 as if they had been typed at the prompt interactively.
2991 as if they had been typed at the prompt interactively.
2988 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2992 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2989 methods which can call the system shell, but with python variable
2993 methods which can call the system shell, but with python variable
2990 expansion. The three such methods are: __IPYTHON__.system,
2994 expansion. The three such methods are: __IPYTHON__.system,
2991 .getoutput and .getoutputerror. These need to be documented in a
2995 .getoutput and .getoutputerror. These need to be documented in a
2992 'public API' section (to be written) of the manual.
2996 'public API' section (to be written) of the manual.
2993
2997
2994 2005-03-20 Fernando Perez <fperez@colorado.edu>
2998 2005-03-20 Fernando Perez <fperez@colorado.edu>
2995
2999
2996 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
3000 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2997 for custom exception handling. This is quite powerful, and it
3001 for custom exception handling. This is quite powerful, and it
2998 allows for user-installable exception handlers which can trap
3002 allows for user-installable exception handlers which can trap
2999 custom exceptions at runtime and treat them separately from
3003 custom exceptions at runtime and treat them separately from
3000 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
3004 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
3001 Mantegazza <mantegazza-AT-ill.fr>.
3005 Mantegazza <mantegazza-AT-ill.fr>.
3002 (InteractiveShell.set_custom_completer): public API function to
3006 (InteractiveShell.set_custom_completer): public API function to
3003 add new completers at runtime.
3007 add new completers at runtime.
3004
3008
3005 2005-03-19 Fernando Perez <fperez@colorado.edu>
3009 2005-03-19 Fernando Perez <fperez@colorado.edu>
3006
3010
3007 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
3011 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
3008 allow objects which provide their docstrings via non-standard
3012 allow objects which provide their docstrings via non-standard
3009 mechanisms (like Pyro proxies) to still be inspected by ipython's
3013 mechanisms (like Pyro proxies) to still be inspected by ipython's
3010 ? system.
3014 ? system.
3011
3015
3012 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3016 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3013 automatic capture system. I tried quite hard to make it work
3017 automatic capture system. I tried quite hard to make it work
3014 reliably, and simply failed. I tried many combinations with the
3018 reliably, and simply failed. I tried many combinations with the
3015 subprocess module, but eventually nothing worked in all needed
3019 subprocess module, but eventually nothing worked in all needed
3016 cases (not blocking stdin for the child, duplicating stdout
3020 cases (not blocking stdin for the child, duplicating stdout
3017 without blocking, etc). The new %sc/%sx still do capture to these
3021 without blocking, etc). The new %sc/%sx still do capture to these
3018 magical list/string objects which make shell use much more
3022 magical list/string objects which make shell use much more
3019 conveninent, so not all is lost.
3023 conveninent, so not all is lost.
3020
3024
3021 XXX - FIX MANUAL for the change above!
3025 XXX - FIX MANUAL for the change above!
3022
3026
3023 (runsource): I copied code.py's runsource() into ipython to modify
3027 (runsource): I copied code.py's runsource() into ipython to modify
3024 it a bit. Now the code object and source to be executed are
3028 it a bit. Now the code object and source to be executed are
3025 stored in ipython. This makes this info accessible to third-party
3029 stored in ipython. This makes this info accessible to third-party
3026 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3030 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3027 Mantegazza <mantegazza-AT-ill.fr>.
3031 Mantegazza <mantegazza-AT-ill.fr>.
3028
3032
3029 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3033 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3030 history-search via readline (like C-p/C-n). I'd wanted this for a
3034 history-search via readline (like C-p/C-n). I'd wanted this for a
3031 long time, but only recently found out how to do it. For users
3035 long time, but only recently found out how to do it. For users
3032 who already have their ipythonrc files made and want this, just
3036 who already have their ipythonrc files made and want this, just
3033 add:
3037 add:
3034
3038
3035 readline_parse_and_bind "\e[A": history-search-backward
3039 readline_parse_and_bind "\e[A": history-search-backward
3036 readline_parse_and_bind "\e[B": history-search-forward
3040 readline_parse_and_bind "\e[B": history-search-forward
3037
3041
3038 2005-03-18 Fernando Perez <fperez@colorado.edu>
3042 2005-03-18 Fernando Perez <fperez@colorado.edu>
3039
3043
3040 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3044 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3041 LSString and SList classes which allow transparent conversions
3045 LSString and SList classes which allow transparent conversions
3042 between list mode and whitespace-separated string.
3046 between list mode and whitespace-separated string.
3043 (magic_r): Fix recursion problem in %r.
3047 (magic_r): Fix recursion problem in %r.
3044
3048
3045 * IPython/genutils.py (LSString): New class to be used for
3049 * IPython/genutils.py (LSString): New class to be used for
3046 automatic storage of the results of all alias/system calls in _o
3050 automatic storage of the results of all alias/system calls in _o
3047 and _e (stdout/err). These provide a .l/.list attribute which
3051 and _e (stdout/err). These provide a .l/.list attribute which
3048 does automatic splitting on newlines. This means that for most
3052 does automatic splitting on newlines. This means that for most
3049 uses, you'll never need to do capturing of output with %sc/%sx
3053 uses, you'll never need to do capturing of output with %sc/%sx
3050 anymore, since ipython keeps this always done for you. Note that
3054 anymore, since ipython keeps this always done for you. Note that
3051 only the LAST results are stored, the _o/e variables are
3055 only the LAST results are stored, the _o/e variables are
3052 overwritten on each call. If you need to save their contents
3056 overwritten on each call. If you need to save their contents
3053 further, simply bind them to any other name.
3057 further, simply bind them to any other name.
3054
3058
3055 2005-03-17 Fernando Perez <fperez@colorado.edu>
3059 2005-03-17 Fernando Perez <fperez@colorado.edu>
3056
3060
3057 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3061 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3058 prompt namespace handling.
3062 prompt namespace handling.
3059
3063
3060 2005-03-16 Fernando Perez <fperez@colorado.edu>
3064 2005-03-16 Fernando Perez <fperez@colorado.edu>
3061
3065
3062 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3066 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3063 classic prompts to be '>>> ' (final space was missing, and it
3067 classic prompts to be '>>> ' (final space was missing, and it
3064 trips the emacs python mode).
3068 trips the emacs python mode).
3065 (BasePrompt.__str__): Added safe support for dynamic prompt
3069 (BasePrompt.__str__): Added safe support for dynamic prompt
3066 strings. Now you can set your prompt string to be '$x', and the
3070 strings. Now you can set your prompt string to be '$x', and the
3067 value of x will be printed from your interactive namespace. The
3071 value of x will be printed from your interactive namespace. The
3068 interpolation syntax includes the full Itpl support, so
3072 interpolation syntax includes the full Itpl support, so
3069 ${foo()+x+bar()} is a valid prompt string now, and the function
3073 ${foo()+x+bar()} is a valid prompt string now, and the function
3070 calls will be made at runtime.
3074 calls will be made at runtime.
3071
3075
3072 2005-03-15 Fernando Perez <fperez@colorado.edu>
3076 2005-03-15 Fernando Perez <fperez@colorado.edu>
3073
3077
3074 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3078 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3075 avoid name clashes in pylab. %hist still works, it just forwards
3079 avoid name clashes in pylab. %hist still works, it just forwards
3076 the call to %history.
3080 the call to %history.
3077
3081
3078 2005-03-02 *** Released version 0.6.12
3082 2005-03-02 *** Released version 0.6.12
3079
3083
3080 2005-03-02 Fernando Perez <fperez@colorado.edu>
3084 2005-03-02 Fernando Perez <fperez@colorado.edu>
3081
3085
3082 * IPython/iplib.py (handle_magic): log magic calls properly as
3086 * IPython/iplib.py (handle_magic): log magic calls properly as
3083 ipmagic() function calls.
3087 ipmagic() function calls.
3084
3088
3085 * IPython/Magic.py (magic_time): Improved %time to support
3089 * IPython/Magic.py (magic_time): Improved %time to support
3086 statements and provide wall-clock as well as CPU time.
3090 statements and provide wall-clock as well as CPU time.
3087
3091
3088 2005-02-27 Fernando Perez <fperez@colorado.edu>
3092 2005-02-27 Fernando Perez <fperez@colorado.edu>
3089
3093
3090 * IPython/hooks.py: New hooks module, to expose user-modifiable
3094 * IPython/hooks.py: New hooks module, to expose user-modifiable
3091 IPython functionality in a clean manner. For now only the editor
3095 IPython functionality in a clean manner. For now only the editor
3092 hook is actually written, and other thigns which I intend to turn
3096 hook is actually written, and other thigns which I intend to turn
3093 into proper hooks aren't yet there. The display and prefilter
3097 into proper hooks aren't yet there. The display and prefilter
3094 stuff, for example, should be hooks. But at least now the
3098 stuff, for example, should be hooks. But at least now the
3095 framework is in place, and the rest can be moved here with more
3099 framework is in place, and the rest can be moved here with more
3096 time later. IPython had had a .hooks variable for a long time for
3100 time later. IPython had had a .hooks variable for a long time for
3097 this purpose, but I'd never actually used it for anything.
3101 this purpose, but I'd never actually used it for anything.
3098
3102
3099 2005-02-26 Fernando Perez <fperez@colorado.edu>
3103 2005-02-26 Fernando Perez <fperez@colorado.edu>
3100
3104
3101 * IPython/ipmaker.py (make_IPython): make the default ipython
3105 * IPython/ipmaker.py (make_IPython): make the default ipython
3102 directory be called _ipython under win32, to follow more the
3106 directory be called _ipython under win32, to follow more the
3103 naming peculiarities of that platform (where buggy software like
3107 naming peculiarities of that platform (where buggy software like
3104 Visual Sourcesafe breaks with .named directories). Reported by
3108 Visual Sourcesafe breaks with .named directories). Reported by
3105 Ville Vainio.
3109 Ville Vainio.
3106
3110
3107 2005-02-23 Fernando Perez <fperez@colorado.edu>
3111 2005-02-23 Fernando Perez <fperez@colorado.edu>
3108
3112
3109 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3113 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3110 auto_aliases for win32 which were causing problems. Users can
3114 auto_aliases for win32 which were causing problems. Users can
3111 define the ones they personally like.
3115 define the ones they personally like.
3112
3116
3113 2005-02-21 Fernando Perez <fperez@colorado.edu>
3117 2005-02-21 Fernando Perez <fperez@colorado.edu>
3114
3118
3115 * IPython/Magic.py (magic_time): new magic to time execution of
3119 * IPython/Magic.py (magic_time): new magic to time execution of
3116 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3120 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3117
3121
3118 2005-02-19 Fernando Perez <fperez@colorado.edu>
3122 2005-02-19 Fernando Perez <fperez@colorado.edu>
3119
3123
3120 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3124 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3121 into keys (for prompts, for example).
3125 into keys (for prompts, for example).
3122
3126
3123 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3127 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3124 prompts in case users want them. This introduces a small behavior
3128 prompts in case users want them. This introduces a small behavior
3125 change: ipython does not automatically add a space to all prompts
3129 change: ipython does not automatically add a space to all prompts
3126 anymore. To get the old prompts with a space, users should add it
3130 anymore. To get the old prompts with a space, users should add it
3127 manually to their ipythonrc file, so for example prompt_in1 should
3131 manually to their ipythonrc file, so for example prompt_in1 should
3128 now read 'In [\#]: ' instead of 'In [\#]:'.
3132 now read 'In [\#]: ' instead of 'In [\#]:'.
3129 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3133 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3130 file) to control left-padding of secondary prompts.
3134 file) to control left-padding of secondary prompts.
3131
3135
3132 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3136 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3133 the profiler can't be imported. Fix for Debian, which removed
3137 the profiler can't be imported. Fix for Debian, which removed
3134 profile.py because of License issues. I applied a slightly
3138 profile.py because of License issues. I applied a slightly
3135 modified version of the original Debian patch at
3139 modified version of the original Debian patch at
3136 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3140 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3137
3141
3138 2005-02-17 Fernando Perez <fperez@colorado.edu>
3142 2005-02-17 Fernando Perez <fperez@colorado.edu>
3139
3143
3140 * IPython/genutils.py (native_line_ends): Fix bug which would
3144 * IPython/genutils.py (native_line_ends): Fix bug which would
3141 cause improper line-ends under win32 b/c I was not opening files
3145 cause improper line-ends under win32 b/c I was not opening files
3142 in binary mode. Bug report and fix thanks to Ville.
3146 in binary mode. Bug report and fix thanks to Ville.
3143
3147
3144 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3148 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3145 trying to catch spurious foo[1] autocalls. My fix actually broke
3149 trying to catch spurious foo[1] autocalls. My fix actually broke
3146 ',/' autoquote/call with explicit escape (bad regexp).
3150 ',/' autoquote/call with explicit escape (bad regexp).
3147
3151
3148 2005-02-15 *** Released version 0.6.11
3152 2005-02-15 *** Released version 0.6.11
3149
3153
3150 2005-02-14 Fernando Perez <fperez@colorado.edu>
3154 2005-02-14 Fernando Perez <fperez@colorado.edu>
3151
3155
3152 * IPython/background_jobs.py: New background job management
3156 * IPython/background_jobs.py: New background job management
3153 subsystem. This is implemented via a new set of classes, and
3157 subsystem. This is implemented via a new set of classes, and
3154 IPython now provides a builtin 'jobs' object for background job
3158 IPython now provides a builtin 'jobs' object for background job
3155 execution. A convenience %bg magic serves as a lightweight
3159 execution. A convenience %bg magic serves as a lightweight
3156 frontend for starting the more common type of calls. This was
3160 frontend for starting the more common type of calls. This was
3157 inspired by discussions with B. Granger and the BackgroundCommand
3161 inspired by discussions with B. Granger and the BackgroundCommand
3158 class described in the book Python Scripting for Computational
3162 class described in the book Python Scripting for Computational
3159 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3163 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3160 (although ultimately no code from this text was used, as IPython's
3164 (although ultimately no code from this text was used, as IPython's
3161 system is a separate implementation).
3165 system is a separate implementation).
3162
3166
3163 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3167 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3164 to control the completion of single/double underscore names
3168 to control the completion of single/double underscore names
3165 separately. As documented in the example ipytonrc file, the
3169 separately. As documented in the example ipytonrc file, the
3166 readline_omit__names variable can now be set to 2, to omit even
3170 readline_omit__names variable can now be set to 2, to omit even
3167 single underscore names. Thanks to a patch by Brian Wong
3171 single underscore names. Thanks to a patch by Brian Wong
3168 <BrianWong-AT-AirgoNetworks.Com>.
3172 <BrianWong-AT-AirgoNetworks.Com>.
3169 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3173 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3170 be autocalled as foo([1]) if foo were callable. A problem for
3174 be autocalled as foo([1]) if foo were callable. A problem for
3171 things which are both callable and implement __getitem__.
3175 things which are both callable and implement __getitem__.
3172 (init_readline): Fix autoindentation for win32. Thanks to a patch
3176 (init_readline): Fix autoindentation for win32. Thanks to a patch
3173 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3177 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3174
3178
3175 2005-02-12 Fernando Perez <fperez@colorado.edu>
3179 2005-02-12 Fernando Perez <fperez@colorado.edu>
3176
3180
3177 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3181 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3178 which I had written long ago to sort out user error messages which
3182 which I had written long ago to sort out user error messages which
3179 may occur during startup. This seemed like a good idea initially,
3183 may occur during startup. This seemed like a good idea initially,
3180 but it has proven a disaster in retrospect. I don't want to
3184 but it has proven a disaster in retrospect. I don't want to
3181 change much code for now, so my fix is to set the internal 'debug'
3185 change much code for now, so my fix is to set the internal 'debug'
3182 flag to true everywhere, whose only job was precisely to control
3186 flag to true everywhere, whose only job was precisely to control
3183 this subsystem. This closes issue 28 (as well as avoiding all
3187 this subsystem. This closes issue 28 (as well as avoiding all
3184 sorts of strange hangups which occur from time to time).
3188 sorts of strange hangups which occur from time to time).
3185
3189
3186 2005-02-07 Fernando Perez <fperez@colorado.edu>
3190 2005-02-07 Fernando Perez <fperez@colorado.edu>
3187
3191
3188 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3192 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3189 previous call produced a syntax error.
3193 previous call produced a syntax error.
3190
3194
3191 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3195 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3192 classes without constructor.
3196 classes without constructor.
3193
3197
3194 2005-02-06 Fernando Perez <fperez@colorado.edu>
3198 2005-02-06 Fernando Perez <fperez@colorado.edu>
3195
3199
3196 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3200 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3197 completions with the results of each matcher, so we return results
3201 completions with the results of each matcher, so we return results
3198 to the user from all namespaces. This breaks with ipython
3202 to the user from all namespaces. This breaks with ipython
3199 tradition, but I think it's a nicer behavior. Now you get all
3203 tradition, but I think it's a nicer behavior. Now you get all
3200 possible completions listed, from all possible namespaces (python,
3204 possible completions listed, from all possible namespaces (python,
3201 filesystem, magics...) After a request by John Hunter
3205 filesystem, magics...) After a request by John Hunter
3202 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3206 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3203
3207
3204 2005-02-05 Fernando Perez <fperez@colorado.edu>
3208 2005-02-05 Fernando Perez <fperez@colorado.edu>
3205
3209
3206 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3210 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3207 the call had quote characters in it (the quotes were stripped).
3211 the call had quote characters in it (the quotes were stripped).
3208
3212
3209 2005-01-31 Fernando Perez <fperez@colorado.edu>
3213 2005-01-31 Fernando Perez <fperez@colorado.edu>
3210
3214
3211 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3215 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3212 Itpl.itpl() to make the code more robust against psyco
3216 Itpl.itpl() to make the code more robust against psyco
3213 optimizations.
3217 optimizations.
3214
3218
3215 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3219 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3216 of causing an exception. Quicker, cleaner.
3220 of causing an exception. Quicker, cleaner.
3217
3221
3218 2005-01-28 Fernando Perez <fperez@colorado.edu>
3222 2005-01-28 Fernando Perez <fperez@colorado.edu>
3219
3223
3220 * scripts/ipython_win_post_install.py (install): hardcode
3224 * scripts/ipython_win_post_install.py (install): hardcode
3221 sys.prefix+'python.exe' as the executable path. It turns out that
3225 sys.prefix+'python.exe' as the executable path. It turns out that
3222 during the post-installation run, sys.executable resolves to the
3226 during the post-installation run, sys.executable resolves to the
3223 name of the binary installer! I should report this as a distutils
3227 name of the binary installer! I should report this as a distutils
3224 bug, I think. I updated the .10 release with this tiny fix, to
3228 bug, I think. I updated the .10 release with this tiny fix, to
3225 avoid annoying the lists further.
3229 avoid annoying the lists further.
3226
3230
3227 2005-01-27 *** Released version 0.6.10
3231 2005-01-27 *** Released version 0.6.10
3228
3232
3229 2005-01-27 Fernando Perez <fperez@colorado.edu>
3233 2005-01-27 Fernando Perez <fperez@colorado.edu>
3230
3234
3231 * IPython/numutils.py (norm): Added 'inf' as optional name for
3235 * IPython/numutils.py (norm): Added 'inf' as optional name for
3232 L-infinity norm, included references to mathworld.com for vector
3236 L-infinity norm, included references to mathworld.com for vector
3233 norm definitions.
3237 norm definitions.
3234 (amin/amax): added amin/amax for array min/max. Similar to what
3238 (amin/amax): added amin/amax for array min/max. Similar to what
3235 pylab ships with after the recent reorganization of names.
3239 pylab ships with after the recent reorganization of names.
3236 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3240 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3237
3241
3238 * ipython.el: committed Alex's recent fixes and improvements.
3242 * ipython.el: committed Alex's recent fixes and improvements.
3239 Tested with python-mode from CVS, and it looks excellent. Since
3243 Tested with python-mode from CVS, and it looks excellent. Since
3240 python-mode hasn't released anything in a while, I'm temporarily
3244 python-mode hasn't released anything in a while, I'm temporarily
3241 putting a copy of today's CVS (v 4.70) of python-mode in:
3245 putting a copy of today's CVS (v 4.70) of python-mode in:
3242 http://ipython.scipy.org/tmp/python-mode.el
3246 http://ipython.scipy.org/tmp/python-mode.el
3243
3247
3244 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3248 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3245 sys.executable for the executable name, instead of assuming it's
3249 sys.executable for the executable name, instead of assuming it's
3246 called 'python.exe' (the post-installer would have produced broken
3250 called 'python.exe' (the post-installer would have produced broken
3247 setups on systems with a differently named python binary).
3251 setups on systems with a differently named python binary).
3248
3252
3249 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3253 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3250 references to os.linesep, to make the code more
3254 references to os.linesep, to make the code more
3251 platform-independent. This is also part of the win32 coloring
3255 platform-independent. This is also part of the win32 coloring
3252 fixes.
3256 fixes.
3253
3257
3254 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3258 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3255 lines, which actually cause coloring bugs because the length of
3259 lines, which actually cause coloring bugs because the length of
3256 the line is very difficult to correctly compute with embedded
3260 the line is very difficult to correctly compute with embedded
3257 escapes. This was the source of all the coloring problems under
3261 escapes. This was the source of all the coloring problems under
3258 Win32. I think that _finally_, Win32 users have a properly
3262 Win32. I think that _finally_, Win32 users have a properly
3259 working ipython in all respects. This would never have happened
3263 working ipython in all respects. This would never have happened
3260 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3264 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3261
3265
3262 2005-01-26 *** Released version 0.6.9
3266 2005-01-26 *** Released version 0.6.9
3263
3267
3264 2005-01-25 Fernando Perez <fperez@colorado.edu>
3268 2005-01-25 Fernando Perez <fperez@colorado.edu>
3265
3269
3266 * setup.py: finally, we have a true Windows installer, thanks to
3270 * setup.py: finally, we have a true Windows installer, thanks to
3267 the excellent work of Viktor Ransmayr
3271 the excellent work of Viktor Ransmayr
3268 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3272 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3269 Windows users. The setup routine is quite a bit cleaner thanks to
3273 Windows users. The setup routine is quite a bit cleaner thanks to
3270 this, and the post-install script uses the proper functions to
3274 this, and the post-install script uses the proper functions to
3271 allow a clean de-installation using the standard Windows Control
3275 allow a clean de-installation using the standard Windows Control
3272 Panel.
3276 Panel.
3273
3277
3274 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3278 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3275 environment variable under all OSes (including win32) if
3279 environment variable under all OSes (including win32) if
3276 available. This will give consistency to win32 users who have set
3280 available. This will give consistency to win32 users who have set
3277 this variable for any reason. If os.environ['HOME'] fails, the
3281 this variable for any reason. If os.environ['HOME'] fails, the
3278 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3282 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3279
3283
3280 2005-01-24 Fernando Perez <fperez@colorado.edu>
3284 2005-01-24 Fernando Perez <fperez@colorado.edu>
3281
3285
3282 * IPython/numutils.py (empty_like): add empty_like(), similar to
3286 * IPython/numutils.py (empty_like): add empty_like(), similar to
3283 zeros_like() but taking advantage of the new empty() Numeric routine.
3287 zeros_like() but taking advantage of the new empty() Numeric routine.
3284
3288
3285 2005-01-23 *** Released version 0.6.8
3289 2005-01-23 *** Released version 0.6.8
3286
3290
3287 2005-01-22 Fernando Perez <fperez@colorado.edu>
3291 2005-01-22 Fernando Perez <fperez@colorado.edu>
3288
3292
3289 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3293 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3290 automatic show() calls. After discussing things with JDH, it
3294 automatic show() calls. After discussing things with JDH, it
3291 turns out there are too many corner cases where this can go wrong.
3295 turns out there are too many corner cases where this can go wrong.
3292 It's best not to try to be 'too smart', and simply have ipython
3296 It's best not to try to be 'too smart', and simply have ipython
3293 reproduce as much as possible the default behavior of a normal
3297 reproduce as much as possible the default behavior of a normal
3294 python shell.
3298 python shell.
3295
3299
3296 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3300 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3297 line-splitting regexp and _prefilter() to avoid calling getattr()
3301 line-splitting regexp and _prefilter() to avoid calling getattr()
3298 on assignments. This closes
3302 on assignments. This closes
3299 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3303 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3300 readline uses getattr(), so a simple <TAB> keypress is still
3304 readline uses getattr(), so a simple <TAB> keypress is still
3301 enough to trigger getattr() calls on an object.
3305 enough to trigger getattr() calls on an object.
3302
3306
3303 2005-01-21 Fernando Perez <fperez@colorado.edu>
3307 2005-01-21 Fernando Perez <fperez@colorado.edu>
3304
3308
3305 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3309 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3306 docstring under pylab so it doesn't mask the original.
3310 docstring under pylab so it doesn't mask the original.
3307
3311
3308 2005-01-21 *** Released version 0.6.7
3312 2005-01-21 *** Released version 0.6.7
3309
3313
3310 2005-01-21 Fernando Perez <fperez@colorado.edu>
3314 2005-01-21 Fernando Perez <fperez@colorado.edu>
3311
3315
3312 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3316 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3313 signal handling for win32 users in multithreaded mode.
3317 signal handling for win32 users in multithreaded mode.
3314
3318
3315 2005-01-17 Fernando Perez <fperez@colorado.edu>
3319 2005-01-17 Fernando Perez <fperez@colorado.edu>
3316
3320
3317 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3321 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3318 instances with no __init__. After a crash report by Norbert Nemec
3322 instances with no __init__. After a crash report by Norbert Nemec
3319 <Norbert-AT-nemec-online.de>.
3323 <Norbert-AT-nemec-online.de>.
3320
3324
3321 2005-01-14 Fernando Perez <fperez@colorado.edu>
3325 2005-01-14 Fernando Perez <fperez@colorado.edu>
3322
3326
3323 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3327 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3324 names for verbose exceptions, when multiple dotted names and the
3328 names for verbose exceptions, when multiple dotted names and the
3325 'parent' object were present on the same line.
3329 'parent' object were present on the same line.
3326
3330
3327 2005-01-11 Fernando Perez <fperez@colorado.edu>
3331 2005-01-11 Fernando Perez <fperez@colorado.edu>
3328
3332
3329 * IPython/genutils.py (flag_calls): new utility to trap and flag
3333 * IPython/genutils.py (flag_calls): new utility to trap and flag
3330 calls in functions. I need it to clean up matplotlib support.
3334 calls in functions. I need it to clean up matplotlib support.
3331 Also removed some deprecated code in genutils.
3335 Also removed some deprecated code in genutils.
3332
3336
3333 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3337 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3334 that matplotlib scripts called with %run, which don't call show()
3338 that matplotlib scripts called with %run, which don't call show()
3335 themselves, still have their plotting windows open.
3339 themselves, still have their plotting windows open.
3336
3340
3337 2005-01-05 Fernando Perez <fperez@colorado.edu>
3341 2005-01-05 Fernando Perez <fperez@colorado.edu>
3338
3342
3339 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3343 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3340 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3344 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3341
3345
3342 2004-12-19 Fernando Perez <fperez@colorado.edu>
3346 2004-12-19 Fernando Perez <fperez@colorado.edu>
3343
3347
3344 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3348 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3345 parent_runcode, which was an eyesore. The same result can be
3349 parent_runcode, which was an eyesore. The same result can be
3346 obtained with Python's regular superclass mechanisms.
3350 obtained with Python's regular superclass mechanisms.
3347
3351
3348 2004-12-17 Fernando Perez <fperez@colorado.edu>
3352 2004-12-17 Fernando Perez <fperez@colorado.edu>
3349
3353
3350 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3354 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3351 reported by Prabhu.
3355 reported by Prabhu.
3352 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3356 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3353 sys.stderr) instead of explicitly calling sys.stderr. This helps
3357 sys.stderr) instead of explicitly calling sys.stderr. This helps
3354 maintain our I/O abstractions clean, for future GUI embeddings.
3358 maintain our I/O abstractions clean, for future GUI embeddings.
3355
3359
3356 * IPython/genutils.py (info): added new utility for sys.stderr
3360 * IPython/genutils.py (info): added new utility for sys.stderr
3357 unified info message handling (thin wrapper around warn()).
3361 unified info message handling (thin wrapper around warn()).
3358
3362
3359 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3363 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3360 composite (dotted) names on verbose exceptions.
3364 composite (dotted) names on verbose exceptions.
3361 (VerboseTB.nullrepr): harden against another kind of errors which
3365 (VerboseTB.nullrepr): harden against another kind of errors which
3362 Python's inspect module can trigger, and which were crashing
3366 Python's inspect module can trigger, and which were crashing
3363 IPython. Thanks to a report by Marco Lombardi
3367 IPython. Thanks to a report by Marco Lombardi
3364 <mlombard-AT-ma010192.hq.eso.org>.
3368 <mlombard-AT-ma010192.hq.eso.org>.
3365
3369
3366 2004-12-13 *** Released version 0.6.6
3370 2004-12-13 *** Released version 0.6.6
3367
3371
3368 2004-12-12 Fernando Perez <fperez@colorado.edu>
3372 2004-12-12 Fernando Perez <fperez@colorado.edu>
3369
3373
3370 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3374 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3371 generated by pygtk upon initialization if it was built without
3375 generated by pygtk upon initialization if it was built without
3372 threads (for matplotlib users). After a crash reported by
3376 threads (for matplotlib users). After a crash reported by
3373 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3377 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3374
3378
3375 * IPython/ipmaker.py (make_IPython): fix small bug in the
3379 * IPython/ipmaker.py (make_IPython): fix small bug in the
3376 import_some parameter for multiple imports.
3380 import_some parameter for multiple imports.
3377
3381
3378 * IPython/iplib.py (ipmagic): simplified the interface of
3382 * IPython/iplib.py (ipmagic): simplified the interface of
3379 ipmagic() to take a single string argument, just as it would be
3383 ipmagic() to take a single string argument, just as it would be
3380 typed at the IPython cmd line.
3384 typed at the IPython cmd line.
3381 (ipalias): Added new ipalias() with an interface identical to
3385 (ipalias): Added new ipalias() with an interface identical to
3382 ipmagic(). This completes exposing a pure python interface to the
3386 ipmagic(). This completes exposing a pure python interface to the
3383 alias and magic system, which can be used in loops or more complex
3387 alias and magic system, which can be used in loops or more complex
3384 code where IPython's automatic line mangling is not active.
3388 code where IPython's automatic line mangling is not active.
3385
3389
3386 * IPython/genutils.py (timing): changed interface of timing to
3390 * IPython/genutils.py (timing): changed interface of timing to
3387 simply run code once, which is the most common case. timings()
3391 simply run code once, which is the most common case. timings()
3388 remains unchanged, for the cases where you want multiple runs.
3392 remains unchanged, for the cases where you want multiple runs.
3389
3393
3390 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3394 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3391 bug where Python2.2 crashes with exec'ing code which does not end
3395 bug where Python2.2 crashes with exec'ing code which does not end
3392 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3396 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3393 before.
3397 before.
3394
3398
3395 2004-12-10 Fernando Perez <fperez@colorado.edu>
3399 2004-12-10 Fernando Perez <fperez@colorado.edu>
3396
3400
3397 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3401 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3398 -t to -T, to accomodate the new -t flag in %run (the %run and
3402 -t to -T, to accomodate the new -t flag in %run (the %run and
3399 %prun options are kind of intermixed, and it's not easy to change
3403 %prun options are kind of intermixed, and it's not easy to change
3400 this with the limitations of python's getopt).
3404 this with the limitations of python's getopt).
3401
3405
3402 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3406 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3403 the execution of scripts. It's not as fine-tuned as timeit.py,
3407 the execution of scripts. It's not as fine-tuned as timeit.py,
3404 but it works from inside ipython (and under 2.2, which lacks
3408 but it works from inside ipython (and under 2.2, which lacks
3405 timeit.py). Optionally a number of runs > 1 can be given for
3409 timeit.py). Optionally a number of runs > 1 can be given for
3406 timing very short-running code.
3410 timing very short-running code.
3407
3411
3408 * IPython/genutils.py (uniq_stable): new routine which returns a
3412 * IPython/genutils.py (uniq_stable): new routine which returns a
3409 list of unique elements in any iterable, but in stable order of
3413 list of unique elements in any iterable, but in stable order of
3410 appearance. I needed this for the ultraTB fixes, and it's a handy
3414 appearance. I needed this for the ultraTB fixes, and it's a handy
3411 utility.
3415 utility.
3412
3416
3413 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3417 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3414 dotted names in Verbose exceptions. This had been broken since
3418 dotted names in Verbose exceptions. This had been broken since
3415 the very start, now x.y will properly be printed in a Verbose
3419 the very start, now x.y will properly be printed in a Verbose
3416 traceback, instead of x being shown and y appearing always as an
3420 traceback, instead of x being shown and y appearing always as an
3417 'undefined global'. Getting this to work was a bit tricky,
3421 'undefined global'. Getting this to work was a bit tricky,
3418 because by default python tokenizers are stateless. Saved by
3422 because by default python tokenizers are stateless. Saved by
3419 python's ability to easily add a bit of state to an arbitrary
3423 python's ability to easily add a bit of state to an arbitrary
3420 function (without needing to build a full-blown callable object).
3424 function (without needing to build a full-blown callable object).
3421
3425
3422 Also big cleanup of this code, which had horrendous runtime
3426 Also big cleanup of this code, which had horrendous runtime
3423 lookups of zillions of attributes for colorization. Moved all
3427 lookups of zillions of attributes for colorization. Moved all
3424 this code into a few templates, which make it cleaner and quicker.
3428 this code into a few templates, which make it cleaner and quicker.
3425
3429
3426 Printout quality was also improved for Verbose exceptions: one
3430 Printout quality was also improved for Verbose exceptions: one
3427 variable per line, and memory addresses are printed (this can be
3431 variable per line, and memory addresses are printed (this can be
3428 quite handy in nasty debugging situations, which is what Verbose
3432 quite handy in nasty debugging situations, which is what Verbose
3429 is for).
3433 is for).
3430
3434
3431 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3435 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3432 the command line as scripts to be loaded by embedded instances.
3436 the command line as scripts to be loaded by embedded instances.
3433 Doing so has the potential for an infinite recursion if there are
3437 Doing so has the potential for an infinite recursion if there are
3434 exceptions thrown in the process. This fixes a strange crash
3438 exceptions thrown in the process. This fixes a strange crash
3435 reported by Philippe MULLER <muller-AT-irit.fr>.
3439 reported by Philippe MULLER <muller-AT-irit.fr>.
3436
3440
3437 2004-12-09 Fernando Perez <fperez@colorado.edu>
3441 2004-12-09 Fernando Perez <fperez@colorado.edu>
3438
3442
3439 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3443 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3440 to reflect new names in matplotlib, which now expose the
3444 to reflect new names in matplotlib, which now expose the
3441 matlab-compatible interface via a pylab module instead of the
3445 matlab-compatible interface via a pylab module instead of the
3442 'matlab' name. The new code is backwards compatible, so users of
3446 'matlab' name. The new code is backwards compatible, so users of
3443 all matplotlib versions are OK. Patch by J. Hunter.
3447 all matplotlib versions are OK. Patch by J. Hunter.
3444
3448
3445 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3449 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3446 of __init__ docstrings for instances (class docstrings are already
3450 of __init__ docstrings for instances (class docstrings are already
3447 automatically printed). Instances with customized docstrings
3451 automatically printed). Instances with customized docstrings
3448 (indep. of the class) are also recognized and all 3 separate
3452 (indep. of the class) are also recognized and all 3 separate
3449 docstrings are printed (instance, class, constructor). After some
3453 docstrings are printed (instance, class, constructor). After some
3450 comments/suggestions by J. Hunter.
3454 comments/suggestions by J. Hunter.
3451
3455
3452 2004-12-05 Fernando Perez <fperez@colorado.edu>
3456 2004-12-05 Fernando Perez <fperez@colorado.edu>
3453
3457
3454 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3458 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3455 warnings when tab-completion fails and triggers an exception.
3459 warnings when tab-completion fails and triggers an exception.
3456
3460
3457 2004-12-03 Fernando Perez <fperez@colorado.edu>
3461 2004-12-03 Fernando Perez <fperez@colorado.edu>
3458
3462
3459 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3463 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3460 be triggered when using 'run -p'. An incorrect option flag was
3464 be triggered when using 'run -p'. An incorrect option flag was
3461 being set ('d' instead of 'D').
3465 being set ('d' instead of 'D').
3462 (manpage): fix missing escaped \- sign.
3466 (manpage): fix missing escaped \- sign.
3463
3467
3464 2004-11-30 *** Released version 0.6.5
3468 2004-11-30 *** Released version 0.6.5
3465
3469
3466 2004-11-30 Fernando Perez <fperez@colorado.edu>
3470 2004-11-30 Fernando Perez <fperez@colorado.edu>
3467
3471
3468 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3472 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3469 setting with -d option.
3473 setting with -d option.
3470
3474
3471 * setup.py (docfiles): Fix problem where the doc glob I was using
3475 * setup.py (docfiles): Fix problem where the doc glob I was using
3472 was COMPLETELY BROKEN. It was giving the right files by pure
3476 was COMPLETELY BROKEN. It was giving the right files by pure
3473 accident, but failed once I tried to include ipython.el. Note:
3477 accident, but failed once I tried to include ipython.el. Note:
3474 glob() does NOT allow you to do exclusion on multiple endings!
3478 glob() does NOT allow you to do exclusion on multiple endings!
3475
3479
3476 2004-11-29 Fernando Perez <fperez@colorado.edu>
3480 2004-11-29 Fernando Perez <fperez@colorado.edu>
3477
3481
3478 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3482 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3479 the manpage as the source. Better formatting & consistency.
3483 the manpage as the source. Better formatting & consistency.
3480
3484
3481 * IPython/Magic.py (magic_run): Added new -d option, to run
3485 * IPython/Magic.py (magic_run): Added new -d option, to run
3482 scripts under the control of the python pdb debugger. Note that
3486 scripts under the control of the python pdb debugger. Note that
3483 this required changing the %prun option -d to -D, to avoid a clash
3487 this required changing the %prun option -d to -D, to avoid a clash
3484 (since %run must pass options to %prun, and getopt is too dumb to
3488 (since %run must pass options to %prun, and getopt is too dumb to
3485 handle options with string values with embedded spaces). Thanks
3489 handle options with string values with embedded spaces). Thanks
3486 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3490 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3487 (magic_who_ls): added type matching to %who and %whos, so that one
3491 (magic_who_ls): added type matching to %who and %whos, so that one
3488 can filter their output to only include variables of certain
3492 can filter their output to only include variables of certain
3489 types. Another suggestion by Matthew.
3493 types. Another suggestion by Matthew.
3490 (magic_whos): Added memory summaries in kb and Mb for arrays.
3494 (magic_whos): Added memory summaries in kb and Mb for arrays.
3491 (magic_who): Improve formatting (break lines every 9 vars).
3495 (magic_who): Improve formatting (break lines every 9 vars).
3492
3496
3493 2004-11-28 Fernando Perez <fperez@colorado.edu>
3497 2004-11-28 Fernando Perez <fperez@colorado.edu>
3494
3498
3495 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3499 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3496 cache when empty lines were present.
3500 cache when empty lines were present.
3497
3501
3498 2004-11-24 Fernando Perez <fperez@colorado.edu>
3502 2004-11-24 Fernando Perez <fperez@colorado.edu>
3499
3503
3500 * IPython/usage.py (__doc__): document the re-activated threading
3504 * IPython/usage.py (__doc__): document the re-activated threading
3501 options for WX and GTK.
3505 options for WX and GTK.
3502
3506
3503 2004-11-23 Fernando Perez <fperez@colorado.edu>
3507 2004-11-23 Fernando Perez <fperez@colorado.edu>
3504
3508
3505 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3509 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3506 the -wthread and -gthread options, along with a new -tk one to try
3510 the -wthread and -gthread options, along with a new -tk one to try
3507 and coordinate Tk threading with wx/gtk. The tk support is very
3511 and coordinate Tk threading with wx/gtk. The tk support is very
3508 platform dependent, since it seems to require Tcl and Tk to be
3512 platform dependent, since it seems to require Tcl and Tk to be
3509 built with threads (Fedora1/2 appears NOT to have it, but in
3513 built with threads (Fedora1/2 appears NOT to have it, but in
3510 Prabhu's Debian boxes it works OK). But even with some Tk
3514 Prabhu's Debian boxes it works OK). But even with some Tk
3511 limitations, this is a great improvement.
3515 limitations, this is a great improvement.
3512
3516
3513 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3517 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3514 info in user prompts. Patch by Prabhu.
3518 info in user prompts. Patch by Prabhu.
3515
3519
3516 2004-11-18 Fernando Perez <fperez@colorado.edu>
3520 2004-11-18 Fernando Perez <fperez@colorado.edu>
3517
3521
3518 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3522 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3519 EOFErrors and bail, to avoid infinite loops if a non-terminating
3523 EOFErrors and bail, to avoid infinite loops if a non-terminating
3520 file is fed into ipython. Patch submitted in issue 19 by user,
3524 file is fed into ipython. Patch submitted in issue 19 by user,
3521 many thanks.
3525 many thanks.
3522
3526
3523 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3527 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3524 autoquote/parens in continuation prompts, which can cause lots of
3528 autoquote/parens in continuation prompts, which can cause lots of
3525 problems. Closes roundup issue 20.
3529 problems. Closes roundup issue 20.
3526
3530
3527 2004-11-17 Fernando Perez <fperez@colorado.edu>
3531 2004-11-17 Fernando Perez <fperez@colorado.edu>
3528
3532
3529 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3533 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3530 reported as debian bug #280505. I'm not sure my local changelog
3534 reported as debian bug #280505. I'm not sure my local changelog
3531 entry has the proper debian format (Jack?).
3535 entry has the proper debian format (Jack?).
3532
3536
3533 2004-11-08 *** Released version 0.6.4
3537 2004-11-08 *** Released version 0.6.4
3534
3538
3535 2004-11-08 Fernando Perez <fperez@colorado.edu>
3539 2004-11-08 Fernando Perez <fperez@colorado.edu>
3536
3540
3537 * IPython/iplib.py (init_readline): Fix exit message for Windows
3541 * IPython/iplib.py (init_readline): Fix exit message for Windows
3538 when readline is active. Thanks to a report by Eric Jones
3542 when readline is active. Thanks to a report by Eric Jones
3539 <eric-AT-enthought.com>.
3543 <eric-AT-enthought.com>.
3540
3544
3541 2004-11-07 Fernando Perez <fperez@colorado.edu>
3545 2004-11-07 Fernando Perez <fperez@colorado.edu>
3542
3546
3543 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3547 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3544 sometimes seen by win2k/cygwin users.
3548 sometimes seen by win2k/cygwin users.
3545
3549
3546 2004-11-06 Fernando Perez <fperez@colorado.edu>
3550 2004-11-06 Fernando Perez <fperez@colorado.edu>
3547
3551
3548 * IPython/iplib.py (interact): Change the handling of %Exit from
3552 * IPython/iplib.py (interact): Change the handling of %Exit from
3549 trying to propagate a SystemExit to an internal ipython flag.
3553 trying to propagate a SystemExit to an internal ipython flag.
3550 This is less elegant than using Python's exception mechanism, but
3554 This is less elegant than using Python's exception mechanism, but
3551 I can't get that to work reliably with threads, so under -pylab
3555 I can't get that to work reliably with threads, so under -pylab
3552 %Exit was hanging IPython. Cross-thread exception handling is
3556 %Exit was hanging IPython. Cross-thread exception handling is
3553 really a bitch. Thaks to a bug report by Stephen Walton
3557 really a bitch. Thaks to a bug report by Stephen Walton
3554 <stephen.walton-AT-csun.edu>.
3558 <stephen.walton-AT-csun.edu>.
3555
3559
3556 2004-11-04 Fernando Perez <fperez@colorado.edu>
3560 2004-11-04 Fernando Perez <fperez@colorado.edu>
3557
3561
3558 * IPython/iplib.py (raw_input_original): store a pointer to the
3562 * IPython/iplib.py (raw_input_original): store a pointer to the
3559 true raw_input to harden against code which can modify it
3563 true raw_input to harden against code which can modify it
3560 (wx.py.PyShell does this and would otherwise crash ipython).
3564 (wx.py.PyShell does this and would otherwise crash ipython).
3561 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3565 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3562
3566
3563 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3567 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3564 Ctrl-C problem, which does not mess up the input line.
3568 Ctrl-C problem, which does not mess up the input line.
3565
3569
3566 2004-11-03 Fernando Perez <fperez@colorado.edu>
3570 2004-11-03 Fernando Perez <fperez@colorado.edu>
3567
3571
3568 * IPython/Release.py: Changed licensing to BSD, in all files.
3572 * IPython/Release.py: Changed licensing to BSD, in all files.
3569 (name): lowercase name for tarball/RPM release.
3573 (name): lowercase name for tarball/RPM release.
3570
3574
3571 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3575 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3572 use throughout ipython.
3576 use throughout ipython.
3573
3577
3574 * IPython/Magic.py (Magic._ofind): Switch to using the new
3578 * IPython/Magic.py (Magic._ofind): Switch to using the new
3575 OInspect.getdoc() function.
3579 OInspect.getdoc() function.
3576
3580
3577 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3581 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3578 of the line currently being canceled via Ctrl-C. It's extremely
3582 of the line currently being canceled via Ctrl-C. It's extremely
3579 ugly, but I don't know how to do it better (the problem is one of
3583 ugly, but I don't know how to do it better (the problem is one of
3580 handling cross-thread exceptions).
3584 handling cross-thread exceptions).
3581
3585
3582 2004-10-28 Fernando Perez <fperez@colorado.edu>
3586 2004-10-28 Fernando Perez <fperez@colorado.edu>
3583
3587
3584 * IPython/Shell.py (signal_handler): add signal handlers to trap
3588 * IPython/Shell.py (signal_handler): add signal handlers to trap
3585 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3589 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3586 report by Francesc Alted.
3590 report by Francesc Alted.
3587
3591
3588 2004-10-21 Fernando Perez <fperez@colorado.edu>
3592 2004-10-21 Fernando Perez <fperez@colorado.edu>
3589
3593
3590 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3594 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3591 to % for pysh syntax extensions.
3595 to % for pysh syntax extensions.
3592
3596
3593 2004-10-09 Fernando Perez <fperez@colorado.edu>
3597 2004-10-09 Fernando Perez <fperez@colorado.edu>
3594
3598
3595 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3599 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3596 arrays to print a more useful summary, without calling str(arr).
3600 arrays to print a more useful summary, without calling str(arr).
3597 This avoids the problem of extremely lengthy computations which
3601 This avoids the problem of extremely lengthy computations which
3598 occur if arr is large, and appear to the user as a system lockup
3602 occur if arr is large, and appear to the user as a system lockup
3599 with 100% cpu activity. After a suggestion by Kristian Sandberg
3603 with 100% cpu activity. After a suggestion by Kristian Sandberg
3600 <Kristian.Sandberg@colorado.edu>.
3604 <Kristian.Sandberg@colorado.edu>.
3601 (Magic.__init__): fix bug in global magic escapes not being
3605 (Magic.__init__): fix bug in global magic escapes not being
3602 correctly set.
3606 correctly set.
3603
3607
3604 2004-10-08 Fernando Perez <fperez@colorado.edu>
3608 2004-10-08 Fernando Perez <fperez@colorado.edu>
3605
3609
3606 * IPython/Magic.py (__license__): change to absolute imports of
3610 * IPython/Magic.py (__license__): change to absolute imports of
3607 ipython's own internal packages, to start adapting to the absolute
3611 ipython's own internal packages, to start adapting to the absolute
3608 import requirement of PEP-328.
3612 import requirement of PEP-328.
3609
3613
3610 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3614 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3611 files, and standardize author/license marks through the Release
3615 files, and standardize author/license marks through the Release
3612 module instead of having per/file stuff (except for files with
3616 module instead of having per/file stuff (except for files with
3613 particular licenses, like the MIT/PSF-licensed codes).
3617 particular licenses, like the MIT/PSF-licensed codes).
3614
3618
3615 * IPython/Debugger.py: remove dead code for python 2.1
3619 * IPython/Debugger.py: remove dead code for python 2.1
3616
3620
3617 2004-10-04 Fernando Perez <fperez@colorado.edu>
3621 2004-10-04 Fernando Perez <fperez@colorado.edu>
3618
3622
3619 * IPython/iplib.py (ipmagic): New function for accessing magics
3623 * IPython/iplib.py (ipmagic): New function for accessing magics
3620 via a normal python function call.
3624 via a normal python function call.
3621
3625
3622 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3626 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3623 from '@' to '%', to accomodate the new @decorator syntax of python
3627 from '@' to '%', to accomodate the new @decorator syntax of python
3624 2.4.
3628 2.4.
3625
3629
3626 2004-09-29 Fernando Perez <fperez@colorado.edu>
3630 2004-09-29 Fernando Perez <fperez@colorado.edu>
3627
3631
3628 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3632 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3629 matplotlib.use to prevent running scripts which try to switch
3633 matplotlib.use to prevent running scripts which try to switch
3630 interactive backends from within ipython. This will just crash
3634 interactive backends from within ipython. This will just crash
3631 the python interpreter, so we can't allow it (but a detailed error
3635 the python interpreter, so we can't allow it (but a detailed error
3632 is given to the user).
3636 is given to the user).
3633
3637
3634 2004-09-28 Fernando Perez <fperez@colorado.edu>
3638 2004-09-28 Fernando Perez <fperez@colorado.edu>
3635
3639
3636 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3640 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3637 matplotlib-related fixes so that using @run with non-matplotlib
3641 matplotlib-related fixes so that using @run with non-matplotlib
3638 scripts doesn't pop up spurious plot windows. This requires
3642 scripts doesn't pop up spurious plot windows. This requires
3639 matplotlib >= 0.63, where I had to make some changes as well.
3643 matplotlib >= 0.63, where I had to make some changes as well.
3640
3644
3641 * IPython/ipmaker.py (make_IPython): update version requirement to
3645 * IPython/ipmaker.py (make_IPython): update version requirement to
3642 python 2.2.
3646 python 2.2.
3643
3647
3644 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3648 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3645 banner arg for embedded customization.
3649 banner arg for embedded customization.
3646
3650
3647 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3651 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3648 explicit uses of __IP as the IPython's instance name. Now things
3652 explicit uses of __IP as the IPython's instance name. Now things
3649 are properly handled via the shell.name value. The actual code
3653 are properly handled via the shell.name value. The actual code
3650 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3654 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3651 is much better than before. I'll clean things completely when the
3655 is much better than before. I'll clean things completely when the
3652 magic stuff gets a real overhaul.
3656 magic stuff gets a real overhaul.
3653
3657
3654 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3658 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3655 minor changes to debian dir.
3659 minor changes to debian dir.
3656
3660
3657 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3661 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3658 pointer to the shell itself in the interactive namespace even when
3662 pointer to the shell itself in the interactive namespace even when
3659 a user-supplied dict is provided. This is needed for embedding
3663 a user-supplied dict is provided. This is needed for embedding
3660 purposes (found by tests with Michel Sanner).
3664 purposes (found by tests with Michel Sanner).
3661
3665
3662 2004-09-27 Fernando Perez <fperez@colorado.edu>
3666 2004-09-27 Fernando Perez <fperez@colorado.edu>
3663
3667
3664 * IPython/UserConfig/ipythonrc: remove []{} from
3668 * IPython/UserConfig/ipythonrc: remove []{} from
3665 readline_remove_delims, so that things like [modname.<TAB> do
3669 readline_remove_delims, so that things like [modname.<TAB> do
3666 proper completion. This disables [].TAB, but that's a less common
3670 proper completion. This disables [].TAB, but that's a less common
3667 case than module names in list comprehensions, for example.
3671 case than module names in list comprehensions, for example.
3668 Thanks to a report by Andrea Riciputi.
3672 Thanks to a report by Andrea Riciputi.
3669
3673
3670 2004-09-09 Fernando Perez <fperez@colorado.edu>
3674 2004-09-09 Fernando Perez <fperez@colorado.edu>
3671
3675
3672 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3676 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3673 blocking problems in win32 and osx. Fix by John.
3677 blocking problems in win32 and osx. Fix by John.
3674
3678
3675 2004-09-08 Fernando Perez <fperez@colorado.edu>
3679 2004-09-08 Fernando Perez <fperez@colorado.edu>
3676
3680
3677 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3681 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3678 for Win32 and OSX. Fix by John Hunter.
3682 for Win32 and OSX. Fix by John Hunter.
3679
3683
3680 2004-08-30 *** Released version 0.6.3
3684 2004-08-30 *** Released version 0.6.3
3681
3685
3682 2004-08-30 Fernando Perez <fperez@colorado.edu>
3686 2004-08-30 Fernando Perez <fperez@colorado.edu>
3683
3687
3684 * setup.py (isfile): Add manpages to list of dependent files to be
3688 * setup.py (isfile): Add manpages to list of dependent files to be
3685 updated.
3689 updated.
3686
3690
3687 2004-08-27 Fernando Perez <fperez@colorado.edu>
3691 2004-08-27 Fernando Perez <fperez@colorado.edu>
3688
3692
3689 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3693 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3690 for now. They don't really work with standalone WX/GTK code
3694 for now. They don't really work with standalone WX/GTK code
3691 (though matplotlib IS working fine with both of those backends).
3695 (though matplotlib IS working fine with both of those backends).
3692 This will neeed much more testing. I disabled most things with
3696 This will neeed much more testing. I disabled most things with
3693 comments, so turning it back on later should be pretty easy.
3697 comments, so turning it back on later should be pretty easy.
3694
3698
3695 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3699 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3696 autocalling of expressions like r'foo', by modifying the line
3700 autocalling of expressions like r'foo', by modifying the line
3697 split regexp. Closes
3701 split regexp. Closes
3698 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3702 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3699 Riley <ipythonbugs-AT-sabi.net>.
3703 Riley <ipythonbugs-AT-sabi.net>.
3700 (InteractiveShell.mainloop): honor --nobanner with banner
3704 (InteractiveShell.mainloop): honor --nobanner with banner
3701 extensions.
3705 extensions.
3702
3706
3703 * IPython/Shell.py: Significant refactoring of all classes, so
3707 * IPython/Shell.py: Significant refactoring of all classes, so
3704 that we can really support ALL matplotlib backends and threading
3708 that we can really support ALL matplotlib backends and threading
3705 models (John spotted a bug with Tk which required this). Now we
3709 models (John spotted a bug with Tk which required this). Now we
3706 should support single-threaded, WX-threads and GTK-threads, both
3710 should support single-threaded, WX-threads and GTK-threads, both
3707 for generic code and for matplotlib.
3711 for generic code and for matplotlib.
3708
3712
3709 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3713 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3710 -pylab, to simplify things for users. Will also remove the pylab
3714 -pylab, to simplify things for users. Will also remove the pylab
3711 profile, since now all of matplotlib configuration is directly
3715 profile, since now all of matplotlib configuration is directly
3712 handled here. This also reduces startup time.
3716 handled here. This also reduces startup time.
3713
3717
3714 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3718 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3715 shell wasn't being correctly called. Also in IPShellWX.
3719 shell wasn't being correctly called. Also in IPShellWX.
3716
3720
3717 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3721 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3718 fine-tune banner.
3722 fine-tune banner.
3719
3723
3720 * IPython/numutils.py (spike): Deprecate these spike functions,
3724 * IPython/numutils.py (spike): Deprecate these spike functions,
3721 delete (long deprecated) gnuplot_exec handler.
3725 delete (long deprecated) gnuplot_exec handler.
3722
3726
3723 2004-08-26 Fernando Perez <fperez@colorado.edu>
3727 2004-08-26 Fernando Perez <fperez@colorado.edu>
3724
3728
3725 * ipython.1: Update for threading options, plus some others which
3729 * ipython.1: Update for threading options, plus some others which
3726 were missing.
3730 were missing.
3727
3731
3728 * IPython/ipmaker.py (__call__): Added -wthread option for
3732 * IPython/ipmaker.py (__call__): Added -wthread option for
3729 wxpython thread handling. Make sure threading options are only
3733 wxpython thread handling. Make sure threading options are only
3730 valid at the command line.
3734 valid at the command line.
3731
3735
3732 * scripts/ipython: moved shell selection into a factory function
3736 * scripts/ipython: moved shell selection into a factory function
3733 in Shell.py, to keep the starter script to a minimum.
3737 in Shell.py, to keep the starter script to a minimum.
3734
3738
3735 2004-08-25 Fernando Perez <fperez@colorado.edu>
3739 2004-08-25 Fernando Perez <fperez@colorado.edu>
3736
3740
3737 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3741 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3738 John. Along with some recent changes he made to matplotlib, the
3742 John. Along with some recent changes he made to matplotlib, the
3739 next versions of both systems should work very well together.
3743 next versions of both systems should work very well together.
3740
3744
3741 2004-08-24 Fernando Perez <fperez@colorado.edu>
3745 2004-08-24 Fernando Perez <fperez@colorado.edu>
3742
3746
3743 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3747 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3744 tried to switch the profiling to using hotshot, but I'm getting
3748 tried to switch the profiling to using hotshot, but I'm getting
3745 strange errors from prof.runctx() there. I may be misreading the
3749 strange errors from prof.runctx() there. I may be misreading the
3746 docs, but it looks weird. For now the profiling code will
3750 docs, but it looks weird. For now the profiling code will
3747 continue to use the standard profiler.
3751 continue to use the standard profiler.
3748
3752
3749 2004-08-23 Fernando Perez <fperez@colorado.edu>
3753 2004-08-23 Fernando Perez <fperez@colorado.edu>
3750
3754
3751 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3755 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3752 threaded shell, by John Hunter. It's not quite ready yet, but
3756 threaded shell, by John Hunter. It's not quite ready yet, but
3753 close.
3757 close.
3754
3758
3755 2004-08-22 Fernando Perez <fperez@colorado.edu>
3759 2004-08-22 Fernando Perez <fperez@colorado.edu>
3756
3760
3757 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3761 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3758 in Magic and ultraTB.
3762 in Magic and ultraTB.
3759
3763
3760 * ipython.1: document threading options in manpage.
3764 * ipython.1: document threading options in manpage.
3761
3765
3762 * scripts/ipython: Changed name of -thread option to -gthread,
3766 * scripts/ipython: Changed name of -thread option to -gthread,
3763 since this is GTK specific. I want to leave the door open for a
3767 since this is GTK specific. I want to leave the door open for a
3764 -wthread option for WX, which will most likely be necessary. This
3768 -wthread option for WX, which will most likely be necessary. This
3765 change affects usage and ipmaker as well.
3769 change affects usage and ipmaker as well.
3766
3770
3767 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3771 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3768 handle the matplotlib shell issues. Code by John Hunter
3772 handle the matplotlib shell issues. Code by John Hunter
3769 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3773 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3770 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3774 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3771 broken (and disabled for end users) for now, but it puts the
3775 broken (and disabled for end users) for now, but it puts the
3772 infrastructure in place.
3776 infrastructure in place.
3773
3777
3774 2004-08-21 Fernando Perez <fperez@colorado.edu>
3778 2004-08-21 Fernando Perez <fperez@colorado.edu>
3775
3779
3776 * ipythonrc-pylab: Add matplotlib support.
3780 * ipythonrc-pylab: Add matplotlib support.
3777
3781
3778 * matplotlib_config.py: new files for matplotlib support, part of
3782 * matplotlib_config.py: new files for matplotlib support, part of
3779 the pylab profile.
3783 the pylab profile.
3780
3784
3781 * IPython/usage.py (__doc__): documented the threading options.
3785 * IPython/usage.py (__doc__): documented the threading options.
3782
3786
3783 2004-08-20 Fernando Perez <fperez@colorado.edu>
3787 2004-08-20 Fernando Perez <fperez@colorado.edu>
3784
3788
3785 * ipython: Modified the main calling routine to handle the -thread
3789 * ipython: Modified the main calling routine to handle the -thread
3786 and -mpthread options. This needs to be done as a top-level hack,
3790 and -mpthread options. This needs to be done as a top-level hack,
3787 because it determines which class to instantiate for IPython
3791 because it determines which class to instantiate for IPython
3788 itself.
3792 itself.
3789
3793
3790 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3794 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3791 classes to support multithreaded GTK operation without blocking,
3795 classes to support multithreaded GTK operation without blocking,
3792 and matplotlib with all backends. This is a lot of still very
3796 and matplotlib with all backends. This is a lot of still very
3793 experimental code, and threads are tricky. So it may still have a
3797 experimental code, and threads are tricky. So it may still have a
3794 few rough edges... This code owes a lot to
3798 few rough edges... This code owes a lot to
3795 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3799 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3796 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3800 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3797 to John Hunter for all the matplotlib work.
3801 to John Hunter for all the matplotlib work.
3798
3802
3799 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3803 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3800 options for gtk thread and matplotlib support.
3804 options for gtk thread and matplotlib support.
3801
3805
3802 2004-08-16 Fernando Perez <fperez@colorado.edu>
3806 2004-08-16 Fernando Perez <fperez@colorado.edu>
3803
3807
3804 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3808 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3805 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3809 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3806 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3810 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3807
3811
3808 2004-08-11 Fernando Perez <fperez@colorado.edu>
3812 2004-08-11 Fernando Perez <fperez@colorado.edu>
3809
3813
3810 * setup.py (isfile): Fix build so documentation gets updated for
3814 * setup.py (isfile): Fix build so documentation gets updated for
3811 rpms (it was only done for .tgz builds).
3815 rpms (it was only done for .tgz builds).
3812
3816
3813 2004-08-10 Fernando Perez <fperez@colorado.edu>
3817 2004-08-10 Fernando Perez <fperez@colorado.edu>
3814
3818
3815 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3819 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3816
3820
3817 * iplib.py : Silence syntax error exceptions in tab-completion.
3821 * iplib.py : Silence syntax error exceptions in tab-completion.
3818
3822
3819 2004-08-05 Fernando Perez <fperez@colorado.edu>
3823 2004-08-05 Fernando Perez <fperez@colorado.edu>
3820
3824
3821 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3825 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3822 'color off' mark for continuation prompts. This was causing long
3826 'color off' mark for continuation prompts. This was causing long
3823 continuation lines to mis-wrap.
3827 continuation lines to mis-wrap.
3824
3828
3825 2004-08-01 Fernando Perez <fperez@colorado.edu>
3829 2004-08-01 Fernando Perez <fperez@colorado.edu>
3826
3830
3827 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3831 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3828 for building ipython to be a parameter. All this is necessary
3832 for building ipython to be a parameter. All this is necessary
3829 right now to have a multithreaded version, but this insane
3833 right now to have a multithreaded version, but this insane
3830 non-design will be cleaned up soon. For now, it's a hack that
3834 non-design will be cleaned up soon. For now, it's a hack that
3831 works.
3835 works.
3832
3836
3833 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3837 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3834 args in various places. No bugs so far, but it's a dangerous
3838 args in various places. No bugs so far, but it's a dangerous
3835 practice.
3839 practice.
3836
3840
3837 2004-07-31 Fernando Perez <fperez@colorado.edu>
3841 2004-07-31 Fernando Perez <fperez@colorado.edu>
3838
3842
3839 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3843 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3840 fix completion of files with dots in their names under most
3844 fix completion of files with dots in their names under most
3841 profiles (pysh was OK because the completion order is different).
3845 profiles (pysh was OK because the completion order is different).
3842
3846
3843 2004-07-27 Fernando Perez <fperez@colorado.edu>
3847 2004-07-27 Fernando Perez <fperez@colorado.edu>
3844
3848
3845 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3849 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3846 keywords manually, b/c the one in keyword.py was removed in python
3850 keywords manually, b/c the one in keyword.py was removed in python
3847 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3851 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3848 This is NOT a bug under python 2.3 and earlier.
3852 This is NOT a bug under python 2.3 and earlier.
3849
3853
3850 2004-07-26 Fernando Perez <fperez@colorado.edu>
3854 2004-07-26 Fernando Perez <fperez@colorado.edu>
3851
3855
3852 * IPython/ultraTB.py (VerboseTB.text): Add another
3856 * IPython/ultraTB.py (VerboseTB.text): Add another
3853 linecache.checkcache() call to try to prevent inspect.py from
3857 linecache.checkcache() call to try to prevent inspect.py from
3854 crashing under python 2.3. I think this fixes
3858 crashing under python 2.3. I think this fixes
3855 http://www.scipy.net/roundup/ipython/issue17.
3859 http://www.scipy.net/roundup/ipython/issue17.
3856
3860
3857 2004-07-26 *** Released version 0.6.2
3861 2004-07-26 *** Released version 0.6.2
3858
3862
3859 2004-07-26 Fernando Perez <fperez@colorado.edu>
3863 2004-07-26 Fernando Perez <fperez@colorado.edu>
3860
3864
3861 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3865 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3862 fail for any number.
3866 fail for any number.
3863 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3867 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3864 empty bookmarks.
3868 empty bookmarks.
3865
3869
3866 2004-07-26 *** Released version 0.6.1
3870 2004-07-26 *** Released version 0.6.1
3867
3871
3868 2004-07-26 Fernando Perez <fperez@colorado.edu>
3872 2004-07-26 Fernando Perez <fperez@colorado.edu>
3869
3873
3870 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3874 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3871
3875
3872 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3876 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3873 escaping '()[]{}' in filenames.
3877 escaping '()[]{}' in filenames.
3874
3878
3875 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3879 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3876 Python 2.2 users who lack a proper shlex.split.
3880 Python 2.2 users who lack a proper shlex.split.
3877
3881
3878 2004-07-19 Fernando Perez <fperez@colorado.edu>
3882 2004-07-19 Fernando Perez <fperez@colorado.edu>
3879
3883
3880 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3884 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3881 for reading readline's init file. I follow the normal chain:
3885 for reading readline's init file. I follow the normal chain:
3882 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3886 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3883 report by Mike Heeter. This closes
3887 report by Mike Heeter. This closes
3884 http://www.scipy.net/roundup/ipython/issue16.
3888 http://www.scipy.net/roundup/ipython/issue16.
3885
3889
3886 2004-07-18 Fernando Perez <fperez@colorado.edu>
3890 2004-07-18 Fernando Perez <fperez@colorado.edu>
3887
3891
3888 * IPython/iplib.py (__init__): Add better handling of '\' under
3892 * IPython/iplib.py (__init__): Add better handling of '\' under
3889 Win32 for filenames. After a patch by Ville.
3893 Win32 for filenames. After a patch by Ville.
3890
3894
3891 2004-07-17 Fernando Perez <fperez@colorado.edu>
3895 2004-07-17 Fernando Perez <fperez@colorado.edu>
3892
3896
3893 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3897 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3894 autocalling would be triggered for 'foo is bar' if foo is
3898 autocalling would be triggered for 'foo is bar' if foo is
3895 callable. I also cleaned up the autocall detection code to use a
3899 callable. I also cleaned up the autocall detection code to use a
3896 regexp, which is faster. Bug reported by Alexander Schmolck.
3900 regexp, which is faster. Bug reported by Alexander Schmolck.
3897
3901
3898 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3902 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3899 '?' in them would confuse the help system. Reported by Alex
3903 '?' in them would confuse the help system. Reported by Alex
3900 Schmolck.
3904 Schmolck.
3901
3905
3902 2004-07-16 Fernando Perez <fperez@colorado.edu>
3906 2004-07-16 Fernando Perez <fperez@colorado.edu>
3903
3907
3904 * IPython/GnuplotInteractive.py (__all__): added plot2.
3908 * IPython/GnuplotInteractive.py (__all__): added plot2.
3905
3909
3906 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3910 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3907 plotting dictionaries, lists or tuples of 1d arrays.
3911 plotting dictionaries, lists or tuples of 1d arrays.
3908
3912
3909 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3913 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3910 optimizations.
3914 optimizations.
3911
3915
3912 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3916 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3913 the information which was there from Janko's original IPP code:
3917 the information which was there from Janko's original IPP code:
3914
3918
3915 03.05.99 20:53 porto.ifm.uni-kiel.de
3919 03.05.99 20:53 porto.ifm.uni-kiel.de
3916 --Started changelog.
3920 --Started changelog.
3917 --make clear do what it say it does
3921 --make clear do what it say it does
3918 --added pretty output of lines from inputcache
3922 --added pretty output of lines from inputcache
3919 --Made Logger a mixin class, simplifies handling of switches
3923 --Made Logger a mixin class, simplifies handling of switches
3920 --Added own completer class. .string<TAB> expands to last history
3924 --Added own completer class. .string<TAB> expands to last history
3921 line which starts with string. The new expansion is also present
3925 line which starts with string. The new expansion is also present
3922 with Ctrl-r from the readline library. But this shows, who this
3926 with Ctrl-r from the readline library. But this shows, who this
3923 can be done for other cases.
3927 can be done for other cases.
3924 --Added convention that all shell functions should accept a
3928 --Added convention that all shell functions should accept a
3925 parameter_string This opens the door for different behaviour for
3929 parameter_string This opens the door for different behaviour for
3926 each function. @cd is a good example of this.
3930 each function. @cd is a good example of this.
3927
3931
3928 04.05.99 12:12 porto.ifm.uni-kiel.de
3932 04.05.99 12:12 porto.ifm.uni-kiel.de
3929 --added logfile rotation
3933 --added logfile rotation
3930 --added new mainloop method which freezes first the namespace
3934 --added new mainloop method which freezes first the namespace
3931
3935
3932 07.05.99 21:24 porto.ifm.uni-kiel.de
3936 07.05.99 21:24 porto.ifm.uni-kiel.de
3933 --added the docreader classes. Now there is a help system.
3937 --added the docreader classes. Now there is a help system.
3934 -This is only a first try. Currently it's not easy to put new
3938 -This is only a first try. Currently it's not easy to put new
3935 stuff in the indices. But this is the way to go. Info would be
3939 stuff in the indices. But this is the way to go. Info would be
3936 better, but HTML is every where and not everybody has an info
3940 better, but HTML is every where and not everybody has an info
3937 system installed and it's not so easy to change html-docs to info.
3941 system installed and it's not so easy to change html-docs to info.
3938 --added global logfile option
3942 --added global logfile option
3939 --there is now a hook for object inspection method pinfo needs to
3943 --there is now a hook for object inspection method pinfo needs to
3940 be provided for this. Can be reached by two '??'.
3944 be provided for this. Can be reached by two '??'.
3941
3945
3942 08.05.99 20:51 porto.ifm.uni-kiel.de
3946 08.05.99 20:51 porto.ifm.uni-kiel.de
3943 --added a README
3947 --added a README
3944 --bug in rc file. Something has changed so functions in the rc
3948 --bug in rc file. Something has changed so functions in the rc
3945 file need to reference the shell and not self. Not clear if it's a
3949 file need to reference the shell and not self. Not clear if it's a
3946 bug or feature.
3950 bug or feature.
3947 --changed rc file for new behavior
3951 --changed rc file for new behavior
3948
3952
3949 2004-07-15 Fernando Perez <fperez@colorado.edu>
3953 2004-07-15 Fernando Perez <fperez@colorado.edu>
3950
3954
3951 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3955 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3952 cache was falling out of sync in bizarre manners when multi-line
3956 cache was falling out of sync in bizarre manners when multi-line
3953 input was present. Minor optimizations and cleanup.
3957 input was present. Minor optimizations and cleanup.
3954
3958
3955 (Logger): Remove old Changelog info for cleanup. This is the
3959 (Logger): Remove old Changelog info for cleanup. This is the
3956 information which was there from Janko's original code:
3960 information which was there from Janko's original code:
3957
3961
3958 Changes to Logger: - made the default log filename a parameter
3962 Changes to Logger: - made the default log filename a parameter
3959
3963
3960 - put a check for lines beginning with !@? in log(). Needed
3964 - put a check for lines beginning with !@? in log(). Needed
3961 (even if the handlers properly log their lines) for mid-session
3965 (even if the handlers properly log their lines) for mid-session
3962 logging activation to work properly. Without this, lines logged
3966 logging activation to work properly. Without this, lines logged
3963 in mid session, which get read from the cache, would end up
3967 in mid session, which get read from the cache, would end up
3964 'bare' (with !@? in the open) in the log. Now they are caught
3968 'bare' (with !@? in the open) in the log. Now they are caught
3965 and prepended with a #.
3969 and prepended with a #.
3966
3970
3967 * IPython/iplib.py (InteractiveShell.init_readline): added check
3971 * IPython/iplib.py (InteractiveShell.init_readline): added check
3968 in case MagicCompleter fails to be defined, so we don't crash.
3972 in case MagicCompleter fails to be defined, so we don't crash.
3969
3973
3970 2004-07-13 Fernando Perez <fperez@colorado.edu>
3974 2004-07-13 Fernando Perez <fperez@colorado.edu>
3971
3975
3972 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3976 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3973 of EPS if the requested filename ends in '.eps'.
3977 of EPS if the requested filename ends in '.eps'.
3974
3978
3975 2004-07-04 Fernando Perez <fperez@colorado.edu>
3979 2004-07-04 Fernando Perez <fperez@colorado.edu>
3976
3980
3977 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3981 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3978 escaping of quotes when calling the shell.
3982 escaping of quotes when calling the shell.
3979
3983
3980 2004-07-02 Fernando Perez <fperez@colorado.edu>
3984 2004-07-02 Fernando Perez <fperez@colorado.edu>
3981
3985
3982 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3986 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3983 gettext not working because we were clobbering '_'. Fixes
3987 gettext not working because we were clobbering '_'. Fixes
3984 http://www.scipy.net/roundup/ipython/issue6.
3988 http://www.scipy.net/roundup/ipython/issue6.
3985
3989
3986 2004-07-01 Fernando Perez <fperez@colorado.edu>
3990 2004-07-01 Fernando Perez <fperez@colorado.edu>
3987
3991
3988 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3992 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3989 into @cd. Patch by Ville.
3993 into @cd. Patch by Ville.
3990
3994
3991 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3995 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3992 new function to store things after ipmaker runs. Patch by Ville.
3996 new function to store things after ipmaker runs. Patch by Ville.
3993 Eventually this will go away once ipmaker is removed and the class
3997 Eventually this will go away once ipmaker is removed and the class
3994 gets cleaned up, but for now it's ok. Key functionality here is
3998 gets cleaned up, but for now it's ok. Key functionality here is
3995 the addition of the persistent storage mechanism, a dict for
3999 the addition of the persistent storage mechanism, a dict for
3996 keeping data across sessions (for now just bookmarks, but more can
4000 keeping data across sessions (for now just bookmarks, but more can
3997 be implemented later).
4001 be implemented later).
3998
4002
3999 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
4003 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
4000 persistent across sections. Patch by Ville, I modified it
4004 persistent across sections. Patch by Ville, I modified it
4001 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
4005 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
4002 added a '-l' option to list all bookmarks.
4006 added a '-l' option to list all bookmarks.
4003
4007
4004 * IPython/iplib.py (InteractiveShell.atexit_operations): new
4008 * IPython/iplib.py (InteractiveShell.atexit_operations): new
4005 center for cleanup. Registered with atexit.register(). I moved
4009 center for cleanup. Registered with atexit.register(). I moved
4006 here the old exit_cleanup(). After a patch by Ville.
4010 here the old exit_cleanup(). After a patch by Ville.
4007
4011
4008 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4012 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4009 characters in the hacked shlex_split for python 2.2.
4013 characters in the hacked shlex_split for python 2.2.
4010
4014
4011 * IPython/iplib.py (file_matches): more fixes to filenames with
4015 * IPython/iplib.py (file_matches): more fixes to filenames with
4012 whitespace in them. It's not perfect, but limitations in python's
4016 whitespace in them. It's not perfect, but limitations in python's
4013 readline make it impossible to go further.
4017 readline make it impossible to go further.
4014
4018
4015 2004-06-29 Fernando Perez <fperez@colorado.edu>
4019 2004-06-29 Fernando Perez <fperez@colorado.edu>
4016
4020
4017 * IPython/iplib.py (file_matches): escape whitespace correctly in
4021 * IPython/iplib.py (file_matches): escape whitespace correctly in
4018 filename completions. Bug reported by Ville.
4022 filename completions. Bug reported by Ville.
4019
4023
4020 2004-06-28 Fernando Perez <fperez@colorado.edu>
4024 2004-06-28 Fernando Perez <fperez@colorado.edu>
4021
4025
4022 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4026 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4023 the history file will be called 'history-PROFNAME' (or just
4027 the history file will be called 'history-PROFNAME' (or just
4024 'history' if no profile is loaded). I was getting annoyed at
4028 'history' if no profile is loaded). I was getting annoyed at
4025 getting my Numerical work history clobbered by pysh sessions.
4029 getting my Numerical work history clobbered by pysh sessions.
4026
4030
4027 * IPython/iplib.py (InteractiveShell.__init__): Internal
4031 * IPython/iplib.py (InteractiveShell.__init__): Internal
4028 getoutputerror() function so that we can honor the system_verbose
4032 getoutputerror() function so that we can honor the system_verbose
4029 flag for _all_ system calls. I also added escaping of #
4033 flag for _all_ system calls. I also added escaping of #
4030 characters here to avoid confusing Itpl.
4034 characters here to avoid confusing Itpl.
4031
4035
4032 * IPython/Magic.py (shlex_split): removed call to shell in
4036 * IPython/Magic.py (shlex_split): removed call to shell in
4033 parse_options and replaced it with shlex.split(). The annoying
4037 parse_options and replaced it with shlex.split(). The annoying
4034 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4038 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4035 to backport it from 2.3, with several frail hacks (the shlex
4039 to backport it from 2.3, with several frail hacks (the shlex
4036 module is rather limited in 2.2). Thanks to a suggestion by Ville
4040 module is rather limited in 2.2). Thanks to a suggestion by Ville
4037 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4041 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4038 problem.
4042 problem.
4039
4043
4040 (Magic.magic_system_verbose): new toggle to print the actual
4044 (Magic.magic_system_verbose): new toggle to print the actual
4041 system calls made by ipython. Mainly for debugging purposes.
4045 system calls made by ipython. Mainly for debugging purposes.
4042
4046
4043 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4047 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4044 doesn't support persistence. Reported (and fix suggested) by
4048 doesn't support persistence. Reported (and fix suggested) by
4045 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4049 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4046
4050
4047 2004-06-26 Fernando Perez <fperez@colorado.edu>
4051 2004-06-26 Fernando Perez <fperez@colorado.edu>
4048
4052
4049 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4053 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4050 continue prompts.
4054 continue prompts.
4051
4055
4052 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4056 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4053 function (basically a big docstring) and a few more things here to
4057 function (basically a big docstring) and a few more things here to
4054 speedup startup. pysh.py is now very lightweight. We want because
4058 speedup startup. pysh.py is now very lightweight. We want because
4055 it gets execfile'd, while InterpreterExec gets imported, so
4059 it gets execfile'd, while InterpreterExec gets imported, so
4056 byte-compilation saves time.
4060 byte-compilation saves time.
4057
4061
4058 2004-06-25 Fernando Perez <fperez@colorado.edu>
4062 2004-06-25 Fernando Perez <fperez@colorado.edu>
4059
4063
4060 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4064 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4061 -NUM', which was recently broken.
4065 -NUM', which was recently broken.
4062
4066
4063 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4067 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4064 in multi-line input (but not !!, which doesn't make sense there).
4068 in multi-line input (but not !!, which doesn't make sense there).
4065
4069
4066 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4070 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4067 It's just too useful, and people can turn it off in the less
4071 It's just too useful, and people can turn it off in the less
4068 common cases where it's a problem.
4072 common cases where it's a problem.
4069
4073
4070 2004-06-24 Fernando Perez <fperez@colorado.edu>
4074 2004-06-24 Fernando Perez <fperez@colorado.edu>
4071
4075
4072 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4076 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4073 special syntaxes (like alias calling) is now allied in multi-line
4077 special syntaxes (like alias calling) is now allied in multi-line
4074 input. This is still _very_ experimental, but it's necessary for
4078 input. This is still _very_ experimental, but it's necessary for
4075 efficient shell usage combining python looping syntax with system
4079 efficient shell usage combining python looping syntax with system
4076 calls. For now it's restricted to aliases, I don't think it
4080 calls. For now it's restricted to aliases, I don't think it
4077 really even makes sense to have this for magics.
4081 really even makes sense to have this for magics.
4078
4082
4079 2004-06-23 Fernando Perez <fperez@colorado.edu>
4083 2004-06-23 Fernando Perez <fperez@colorado.edu>
4080
4084
4081 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4085 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4082 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4086 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4083
4087
4084 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4088 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4085 extensions under Windows (after code sent by Gary Bishop). The
4089 extensions under Windows (after code sent by Gary Bishop). The
4086 extensions considered 'executable' are stored in IPython's rc
4090 extensions considered 'executable' are stored in IPython's rc
4087 structure as win_exec_ext.
4091 structure as win_exec_ext.
4088
4092
4089 * IPython/genutils.py (shell): new function, like system() but
4093 * IPython/genutils.py (shell): new function, like system() but
4090 without return value. Very useful for interactive shell work.
4094 without return value. Very useful for interactive shell work.
4091
4095
4092 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4096 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4093 delete aliases.
4097 delete aliases.
4094
4098
4095 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4099 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4096 sure that the alias table doesn't contain python keywords.
4100 sure that the alias table doesn't contain python keywords.
4097
4101
4098 2004-06-21 Fernando Perez <fperez@colorado.edu>
4102 2004-06-21 Fernando Perez <fperez@colorado.edu>
4099
4103
4100 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4104 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4101 non-existent items are found in $PATH. Reported by Thorsten.
4105 non-existent items are found in $PATH. Reported by Thorsten.
4102
4106
4103 2004-06-20 Fernando Perez <fperez@colorado.edu>
4107 2004-06-20 Fernando Perez <fperez@colorado.edu>
4104
4108
4105 * IPython/iplib.py (complete): modified the completer so that the
4109 * IPython/iplib.py (complete): modified the completer so that the
4106 order of priorities can be easily changed at runtime.
4110 order of priorities can be easily changed at runtime.
4107
4111
4108 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4112 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4109 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4113 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4110
4114
4111 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4115 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4112 expand Python variables prepended with $ in all system calls. The
4116 expand Python variables prepended with $ in all system calls. The
4113 same was done to InteractiveShell.handle_shell_escape. Now all
4117 same was done to InteractiveShell.handle_shell_escape. Now all
4114 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4118 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4115 expansion of python variables and expressions according to the
4119 expansion of python variables and expressions according to the
4116 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4120 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4117
4121
4118 Though PEP-215 has been rejected, a similar (but simpler) one
4122 Though PEP-215 has been rejected, a similar (but simpler) one
4119 seems like it will go into Python 2.4, PEP-292 -
4123 seems like it will go into Python 2.4, PEP-292 -
4120 http://www.python.org/peps/pep-0292.html.
4124 http://www.python.org/peps/pep-0292.html.
4121
4125
4122 I'll keep the full syntax of PEP-215, since IPython has since the
4126 I'll keep the full syntax of PEP-215, since IPython has since the
4123 start used Ka-Ping Yee's reference implementation discussed there
4127 start used Ka-Ping Yee's reference implementation discussed there
4124 (Itpl), and I actually like the powerful semantics it offers.
4128 (Itpl), and I actually like the powerful semantics it offers.
4125
4129
4126 In order to access normal shell variables, the $ has to be escaped
4130 In order to access normal shell variables, the $ has to be escaped
4127 via an extra $. For example:
4131 via an extra $. For example:
4128
4132
4129 In [7]: PATH='a python variable'
4133 In [7]: PATH='a python variable'
4130
4134
4131 In [8]: !echo $PATH
4135 In [8]: !echo $PATH
4132 a python variable
4136 a python variable
4133
4137
4134 In [9]: !echo $$PATH
4138 In [9]: !echo $$PATH
4135 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4139 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4136
4140
4137 (Magic.parse_options): escape $ so the shell doesn't evaluate
4141 (Magic.parse_options): escape $ so the shell doesn't evaluate
4138 things prematurely.
4142 things prematurely.
4139
4143
4140 * IPython/iplib.py (InteractiveShell.call_alias): added the
4144 * IPython/iplib.py (InteractiveShell.call_alias): added the
4141 ability for aliases to expand python variables via $.
4145 ability for aliases to expand python variables via $.
4142
4146
4143 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4147 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4144 system, now there's a @rehash/@rehashx pair of magics. These work
4148 system, now there's a @rehash/@rehashx pair of magics. These work
4145 like the csh rehash command, and can be invoked at any time. They
4149 like the csh rehash command, and can be invoked at any time. They
4146 build a table of aliases to everything in the user's $PATH
4150 build a table of aliases to everything in the user's $PATH
4147 (@rehash uses everything, @rehashx is slower but only adds
4151 (@rehash uses everything, @rehashx is slower but only adds
4148 executable files). With this, the pysh.py-based shell profile can
4152 executable files). With this, the pysh.py-based shell profile can
4149 now simply call rehash upon startup, and full access to all
4153 now simply call rehash upon startup, and full access to all
4150 programs in the user's path is obtained.
4154 programs in the user's path is obtained.
4151
4155
4152 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4156 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4153 functionality is now fully in place. I removed the old dynamic
4157 functionality is now fully in place. I removed the old dynamic
4154 code generation based approach, in favor of a much lighter one
4158 code generation based approach, in favor of a much lighter one
4155 based on a simple dict. The advantage is that this allows me to
4159 based on a simple dict. The advantage is that this allows me to
4156 now have thousands of aliases with negligible cost (unthinkable
4160 now have thousands of aliases with negligible cost (unthinkable
4157 with the old system).
4161 with the old system).
4158
4162
4159 2004-06-19 Fernando Perez <fperez@colorado.edu>
4163 2004-06-19 Fernando Perez <fperez@colorado.edu>
4160
4164
4161 * IPython/iplib.py (__init__): extended MagicCompleter class to
4165 * IPython/iplib.py (__init__): extended MagicCompleter class to
4162 also complete (last in priority) on user aliases.
4166 also complete (last in priority) on user aliases.
4163
4167
4164 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4168 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4165 call to eval.
4169 call to eval.
4166 (ItplNS.__init__): Added a new class which functions like Itpl,
4170 (ItplNS.__init__): Added a new class which functions like Itpl,
4167 but allows configuring the namespace for the evaluation to occur
4171 but allows configuring the namespace for the evaluation to occur
4168 in.
4172 in.
4169
4173
4170 2004-06-18 Fernando Perez <fperez@colorado.edu>
4174 2004-06-18 Fernando Perez <fperez@colorado.edu>
4171
4175
4172 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4176 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4173 better message when 'exit' or 'quit' are typed (a common newbie
4177 better message when 'exit' or 'quit' are typed (a common newbie
4174 confusion).
4178 confusion).
4175
4179
4176 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4180 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4177 check for Windows users.
4181 check for Windows users.
4178
4182
4179 * IPython/iplib.py (InteractiveShell.user_setup): removed
4183 * IPython/iplib.py (InteractiveShell.user_setup): removed
4180 disabling of colors for Windows. I'll test at runtime and issue a
4184 disabling of colors for Windows. I'll test at runtime and issue a
4181 warning if Gary's readline isn't found, as to nudge users to
4185 warning if Gary's readline isn't found, as to nudge users to
4182 download it.
4186 download it.
4183
4187
4184 2004-06-16 Fernando Perez <fperez@colorado.edu>
4188 2004-06-16 Fernando Perez <fperez@colorado.edu>
4185
4189
4186 * IPython/genutils.py (Stream.__init__): changed to print errors
4190 * IPython/genutils.py (Stream.__init__): changed to print errors
4187 to sys.stderr. I had a circular dependency here. Now it's
4191 to sys.stderr. I had a circular dependency here. Now it's
4188 possible to run ipython as IDLE's shell (consider this pre-alpha,
4192 possible to run ipython as IDLE's shell (consider this pre-alpha,
4189 since true stdout things end up in the starting terminal instead
4193 since true stdout things end up in the starting terminal instead
4190 of IDLE's out).
4194 of IDLE's out).
4191
4195
4192 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4196 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4193 users who haven't # updated their prompt_in2 definitions. Remove
4197 users who haven't # updated their prompt_in2 definitions. Remove
4194 eventually.
4198 eventually.
4195 (multiple_replace): added credit to original ASPN recipe.
4199 (multiple_replace): added credit to original ASPN recipe.
4196
4200
4197 2004-06-15 Fernando Perez <fperez@colorado.edu>
4201 2004-06-15 Fernando Perez <fperez@colorado.edu>
4198
4202
4199 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4203 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4200 list of auto-defined aliases.
4204 list of auto-defined aliases.
4201
4205
4202 2004-06-13 Fernando Perez <fperez@colorado.edu>
4206 2004-06-13 Fernando Perez <fperez@colorado.edu>
4203
4207
4204 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4208 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4205 install was really requested (so setup.py can be used for other
4209 install was really requested (so setup.py can be used for other
4206 things under Windows).
4210 things under Windows).
4207
4211
4208 2004-06-10 Fernando Perez <fperez@colorado.edu>
4212 2004-06-10 Fernando Perez <fperez@colorado.edu>
4209
4213
4210 * IPython/Logger.py (Logger.create_log): Manually remove any old
4214 * IPython/Logger.py (Logger.create_log): Manually remove any old
4211 backup, since os.remove may fail under Windows. Fixes bug
4215 backup, since os.remove may fail under Windows. Fixes bug
4212 reported by Thorsten.
4216 reported by Thorsten.
4213
4217
4214 2004-06-09 Fernando Perez <fperez@colorado.edu>
4218 2004-06-09 Fernando Perez <fperez@colorado.edu>
4215
4219
4216 * examples/example-embed.py: fixed all references to %n (replaced
4220 * examples/example-embed.py: fixed all references to %n (replaced
4217 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4221 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4218 for all examples and the manual as well.
4222 for all examples and the manual as well.
4219
4223
4220 2004-06-08 Fernando Perez <fperez@colorado.edu>
4224 2004-06-08 Fernando Perez <fperez@colorado.edu>
4221
4225
4222 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4226 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4223 alignment and color management. All 3 prompt subsystems now
4227 alignment and color management. All 3 prompt subsystems now
4224 inherit from BasePrompt.
4228 inherit from BasePrompt.
4225
4229
4226 * tools/release: updates for windows installer build and tag rpms
4230 * tools/release: updates for windows installer build and tag rpms
4227 with python version (since paths are fixed).
4231 with python version (since paths are fixed).
4228
4232
4229 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4233 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4230 which will become eventually obsolete. Also fixed the default
4234 which will become eventually obsolete. Also fixed the default
4231 prompt_in2 to use \D, so at least new users start with the correct
4235 prompt_in2 to use \D, so at least new users start with the correct
4232 defaults.
4236 defaults.
4233 WARNING: Users with existing ipythonrc files will need to apply
4237 WARNING: Users with existing ipythonrc files will need to apply
4234 this fix manually!
4238 this fix manually!
4235
4239
4236 * setup.py: make windows installer (.exe). This is finally the
4240 * setup.py: make windows installer (.exe). This is finally the
4237 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4241 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4238 which I hadn't included because it required Python 2.3 (or recent
4242 which I hadn't included because it required Python 2.3 (or recent
4239 distutils).
4243 distutils).
4240
4244
4241 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4245 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4242 usage of new '\D' escape.
4246 usage of new '\D' escape.
4243
4247
4244 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4248 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4245 lacks os.getuid())
4249 lacks os.getuid())
4246 (CachedOutput.set_colors): Added the ability to turn coloring
4250 (CachedOutput.set_colors): Added the ability to turn coloring
4247 on/off with @colors even for manually defined prompt colors. It
4251 on/off with @colors even for manually defined prompt colors. It
4248 uses a nasty global, but it works safely and via the generic color
4252 uses a nasty global, but it works safely and via the generic color
4249 handling mechanism.
4253 handling mechanism.
4250 (Prompt2.__init__): Introduced new escape '\D' for continuation
4254 (Prompt2.__init__): Introduced new escape '\D' for continuation
4251 prompts. It represents the counter ('\#') as dots.
4255 prompts. It represents the counter ('\#') as dots.
4252 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4256 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4253 need to update their ipythonrc files and replace '%n' with '\D' in
4257 need to update their ipythonrc files and replace '%n' with '\D' in
4254 their prompt_in2 settings everywhere. Sorry, but there's
4258 their prompt_in2 settings everywhere. Sorry, but there's
4255 otherwise no clean way to get all prompts to properly align. The
4259 otherwise no clean way to get all prompts to properly align. The
4256 ipythonrc shipped with IPython has been updated.
4260 ipythonrc shipped with IPython has been updated.
4257
4261
4258 2004-06-07 Fernando Perez <fperez@colorado.edu>
4262 2004-06-07 Fernando Perez <fperez@colorado.edu>
4259
4263
4260 * setup.py (isfile): Pass local_icons option to latex2html, so the
4264 * setup.py (isfile): Pass local_icons option to latex2html, so the
4261 resulting HTML file is self-contained. Thanks to
4265 resulting HTML file is self-contained. Thanks to
4262 dryice-AT-liu.com.cn for the tip.
4266 dryice-AT-liu.com.cn for the tip.
4263
4267
4264 * pysh.py: I created a new profile 'shell', which implements a
4268 * pysh.py: I created a new profile 'shell', which implements a
4265 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4269 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4266 system shell, nor will it become one anytime soon. It's mainly
4270 system shell, nor will it become one anytime soon. It's mainly
4267 meant to illustrate the use of the new flexible bash-like prompts.
4271 meant to illustrate the use of the new flexible bash-like prompts.
4268 I guess it could be used by hardy souls for true shell management,
4272 I guess it could be used by hardy souls for true shell management,
4269 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4273 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4270 profile. This uses the InterpreterExec extension provided by
4274 profile. This uses the InterpreterExec extension provided by
4271 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4275 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4272
4276
4273 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4277 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4274 auto-align itself with the length of the previous input prompt
4278 auto-align itself with the length of the previous input prompt
4275 (taking into account the invisible color escapes).
4279 (taking into account the invisible color escapes).
4276 (CachedOutput.__init__): Large restructuring of this class. Now
4280 (CachedOutput.__init__): Large restructuring of this class. Now
4277 all three prompts (primary1, primary2, output) are proper objects,
4281 all three prompts (primary1, primary2, output) are proper objects,
4278 managed by the 'parent' CachedOutput class. The code is still a
4282 managed by the 'parent' CachedOutput class. The code is still a
4279 bit hackish (all prompts share state via a pointer to the cache),
4283 bit hackish (all prompts share state via a pointer to the cache),
4280 but it's overall far cleaner than before.
4284 but it's overall far cleaner than before.
4281
4285
4282 * IPython/genutils.py (getoutputerror): modified to add verbose,
4286 * IPython/genutils.py (getoutputerror): modified to add verbose,
4283 debug and header options. This makes the interface of all getout*
4287 debug and header options. This makes the interface of all getout*
4284 functions uniform.
4288 functions uniform.
4285 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4289 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4286
4290
4287 * IPython/Magic.py (Magic.default_option): added a function to
4291 * IPython/Magic.py (Magic.default_option): added a function to
4288 allow registering default options for any magic command. This
4292 allow registering default options for any magic command. This
4289 makes it easy to have profiles which customize the magics globally
4293 makes it easy to have profiles which customize the magics globally
4290 for a certain use. The values set through this function are
4294 for a certain use. The values set through this function are
4291 picked up by the parse_options() method, which all magics should
4295 picked up by the parse_options() method, which all magics should
4292 use to parse their options.
4296 use to parse their options.
4293
4297
4294 * IPython/genutils.py (warn): modified the warnings framework to
4298 * IPython/genutils.py (warn): modified the warnings framework to
4295 use the Term I/O class. I'm trying to slowly unify all of
4299 use the Term I/O class. I'm trying to slowly unify all of
4296 IPython's I/O operations to pass through Term.
4300 IPython's I/O operations to pass through Term.
4297
4301
4298 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4302 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4299 the secondary prompt to correctly match the length of the primary
4303 the secondary prompt to correctly match the length of the primary
4300 one for any prompt. Now multi-line code will properly line up
4304 one for any prompt. Now multi-line code will properly line up
4301 even for path dependent prompts, such as the new ones available
4305 even for path dependent prompts, such as the new ones available
4302 via the prompt_specials.
4306 via the prompt_specials.
4303
4307
4304 2004-06-06 Fernando Perez <fperez@colorado.edu>
4308 2004-06-06 Fernando Perez <fperez@colorado.edu>
4305
4309
4306 * IPython/Prompts.py (prompt_specials): Added the ability to have
4310 * IPython/Prompts.py (prompt_specials): Added the ability to have
4307 bash-like special sequences in the prompts, which get
4311 bash-like special sequences in the prompts, which get
4308 automatically expanded. Things like hostname, current working
4312 automatically expanded. Things like hostname, current working
4309 directory and username are implemented already, but it's easy to
4313 directory and username are implemented already, but it's easy to
4310 add more in the future. Thanks to a patch by W.J. van der Laan
4314 add more in the future. Thanks to a patch by W.J. van der Laan
4311 <gnufnork-AT-hetdigitalegat.nl>
4315 <gnufnork-AT-hetdigitalegat.nl>
4312 (prompt_specials): Added color support for prompt strings, so
4316 (prompt_specials): Added color support for prompt strings, so
4313 users can define arbitrary color setups for their prompts.
4317 users can define arbitrary color setups for their prompts.
4314
4318
4315 2004-06-05 Fernando Perez <fperez@colorado.edu>
4319 2004-06-05 Fernando Perez <fperez@colorado.edu>
4316
4320
4317 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4321 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4318 code to load Gary Bishop's readline and configure it
4322 code to load Gary Bishop's readline and configure it
4319 automatically. Thanks to Gary for help on this.
4323 automatically. Thanks to Gary for help on this.
4320
4324
4321 2004-06-01 Fernando Perez <fperez@colorado.edu>
4325 2004-06-01 Fernando Perez <fperez@colorado.edu>
4322
4326
4323 * IPython/Logger.py (Logger.create_log): fix bug for logging
4327 * IPython/Logger.py (Logger.create_log): fix bug for logging
4324 with no filename (previous fix was incomplete).
4328 with no filename (previous fix was incomplete).
4325
4329
4326 2004-05-25 Fernando Perez <fperez@colorado.edu>
4330 2004-05-25 Fernando Perez <fperez@colorado.edu>
4327
4331
4328 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4332 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4329 parens would get passed to the shell.
4333 parens would get passed to the shell.
4330
4334
4331 2004-05-20 Fernando Perez <fperez@colorado.edu>
4335 2004-05-20 Fernando Perez <fperez@colorado.edu>
4332
4336
4333 * IPython/Magic.py (Magic.magic_prun): changed default profile
4337 * IPython/Magic.py (Magic.magic_prun): changed default profile
4334 sort order to 'time' (the more common profiling need).
4338 sort order to 'time' (the more common profiling need).
4335
4339
4336 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4340 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4337 so that source code shown is guaranteed in sync with the file on
4341 so that source code shown is guaranteed in sync with the file on
4338 disk (also changed in psource). Similar fix to the one for
4342 disk (also changed in psource). Similar fix to the one for
4339 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4343 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4340 <yann.ledu-AT-noos.fr>.
4344 <yann.ledu-AT-noos.fr>.
4341
4345
4342 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4346 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4343 with a single option would not be correctly parsed. Closes
4347 with a single option would not be correctly parsed. Closes
4344 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4348 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4345 introduced in 0.6.0 (on 2004-05-06).
4349 introduced in 0.6.0 (on 2004-05-06).
4346
4350
4347 2004-05-13 *** Released version 0.6.0
4351 2004-05-13 *** Released version 0.6.0
4348
4352
4349 2004-05-13 Fernando Perez <fperez@colorado.edu>
4353 2004-05-13 Fernando Perez <fperez@colorado.edu>
4350
4354
4351 * debian/: Added debian/ directory to CVS, so that debian support
4355 * debian/: Added debian/ directory to CVS, so that debian support
4352 is publicly accessible. The debian package is maintained by Jack
4356 is publicly accessible. The debian package is maintained by Jack
4353 Moffit <jack-AT-xiph.org>.
4357 Moffit <jack-AT-xiph.org>.
4354
4358
4355 * Documentation: included the notes about an ipython-based system
4359 * Documentation: included the notes about an ipython-based system
4356 shell (the hypothetical 'pysh') into the new_design.pdf document,
4360 shell (the hypothetical 'pysh') into the new_design.pdf document,
4357 so that these ideas get distributed to users along with the
4361 so that these ideas get distributed to users along with the
4358 official documentation.
4362 official documentation.
4359
4363
4360 2004-05-10 Fernando Perez <fperez@colorado.edu>
4364 2004-05-10 Fernando Perez <fperez@colorado.edu>
4361
4365
4362 * IPython/Logger.py (Logger.create_log): fix recently introduced
4366 * IPython/Logger.py (Logger.create_log): fix recently introduced
4363 bug (misindented line) where logstart would fail when not given an
4367 bug (misindented line) where logstart would fail when not given an
4364 explicit filename.
4368 explicit filename.
4365
4369
4366 2004-05-09 Fernando Perez <fperez@colorado.edu>
4370 2004-05-09 Fernando Perez <fperez@colorado.edu>
4367
4371
4368 * IPython/Magic.py (Magic.parse_options): skip system call when
4372 * IPython/Magic.py (Magic.parse_options): skip system call when
4369 there are no options to look for. Faster, cleaner for the common
4373 there are no options to look for. Faster, cleaner for the common
4370 case.
4374 case.
4371
4375
4372 * Documentation: many updates to the manual: describing Windows
4376 * Documentation: many updates to the manual: describing Windows
4373 support better, Gnuplot updates, credits, misc small stuff. Also
4377 support better, Gnuplot updates, credits, misc small stuff. Also
4374 updated the new_design doc a bit.
4378 updated the new_design doc a bit.
4375
4379
4376 2004-05-06 *** Released version 0.6.0.rc1
4380 2004-05-06 *** Released version 0.6.0.rc1
4377
4381
4378 2004-05-06 Fernando Perez <fperez@colorado.edu>
4382 2004-05-06 Fernando Perez <fperez@colorado.edu>
4379
4383
4380 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4384 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4381 operations to use the vastly more efficient list/''.join() method.
4385 operations to use the vastly more efficient list/''.join() method.
4382 (FormattedTB.text): Fix
4386 (FormattedTB.text): Fix
4383 http://www.scipy.net/roundup/ipython/issue12 - exception source
4387 http://www.scipy.net/roundup/ipython/issue12 - exception source
4384 extract not updated after reload. Thanks to Mike Salib
4388 extract not updated after reload. Thanks to Mike Salib
4385 <msalib-AT-mit.edu> for pinning the source of the problem.
4389 <msalib-AT-mit.edu> for pinning the source of the problem.
4386 Fortunately, the solution works inside ipython and doesn't require
4390 Fortunately, the solution works inside ipython and doesn't require
4387 any changes to python proper.
4391 any changes to python proper.
4388
4392
4389 * IPython/Magic.py (Magic.parse_options): Improved to process the
4393 * IPython/Magic.py (Magic.parse_options): Improved to process the
4390 argument list as a true shell would (by actually using the
4394 argument list as a true shell would (by actually using the
4391 underlying system shell). This way, all @magics automatically get
4395 underlying system shell). This way, all @magics automatically get
4392 shell expansion for variables. Thanks to a comment by Alex
4396 shell expansion for variables. Thanks to a comment by Alex
4393 Schmolck.
4397 Schmolck.
4394
4398
4395 2004-04-04 Fernando Perez <fperez@colorado.edu>
4399 2004-04-04 Fernando Perez <fperez@colorado.edu>
4396
4400
4397 * IPython/iplib.py (InteractiveShell.interact): Added a special
4401 * IPython/iplib.py (InteractiveShell.interact): Added a special
4398 trap for a debugger quit exception, which is basically impossible
4402 trap for a debugger quit exception, which is basically impossible
4399 to handle by normal mechanisms, given what pdb does to the stack.
4403 to handle by normal mechanisms, given what pdb does to the stack.
4400 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4404 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4401
4405
4402 2004-04-03 Fernando Perez <fperez@colorado.edu>
4406 2004-04-03 Fernando Perez <fperez@colorado.edu>
4403
4407
4404 * IPython/genutils.py (Term): Standardized the names of the Term
4408 * IPython/genutils.py (Term): Standardized the names of the Term
4405 class streams to cin/cout/cerr, following C++ naming conventions
4409 class streams to cin/cout/cerr, following C++ naming conventions
4406 (I can't use in/out/err because 'in' is not a valid attribute
4410 (I can't use in/out/err because 'in' is not a valid attribute
4407 name).
4411 name).
4408
4412
4409 * IPython/iplib.py (InteractiveShell.interact): don't increment
4413 * IPython/iplib.py (InteractiveShell.interact): don't increment
4410 the prompt if there's no user input. By Daniel 'Dang' Griffith
4414 the prompt if there's no user input. By Daniel 'Dang' Griffith
4411 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4415 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4412 Francois Pinard.
4416 Francois Pinard.
4413
4417
4414 2004-04-02 Fernando Perez <fperez@colorado.edu>
4418 2004-04-02 Fernando Perez <fperez@colorado.edu>
4415
4419
4416 * IPython/genutils.py (Stream.__init__): Modified to survive at
4420 * IPython/genutils.py (Stream.__init__): Modified to survive at
4417 least importing in contexts where stdin/out/err aren't true file
4421 least importing in contexts where stdin/out/err aren't true file
4418 objects, such as PyCrust (they lack fileno() and mode). However,
4422 objects, such as PyCrust (they lack fileno() and mode). However,
4419 the recovery facilities which rely on these things existing will
4423 the recovery facilities which rely on these things existing will
4420 not work.
4424 not work.
4421
4425
4422 2004-04-01 Fernando Perez <fperez@colorado.edu>
4426 2004-04-01 Fernando Perez <fperez@colorado.edu>
4423
4427
4424 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4428 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4425 use the new getoutputerror() function, so it properly
4429 use the new getoutputerror() function, so it properly
4426 distinguishes stdout/err.
4430 distinguishes stdout/err.
4427
4431
4428 * IPython/genutils.py (getoutputerror): added a function to
4432 * IPython/genutils.py (getoutputerror): added a function to
4429 capture separately the standard output and error of a command.
4433 capture separately the standard output and error of a command.
4430 After a comment from dang on the mailing lists. This code is
4434 After a comment from dang on the mailing lists. This code is
4431 basically a modified version of commands.getstatusoutput(), from
4435 basically a modified version of commands.getstatusoutput(), from
4432 the standard library.
4436 the standard library.
4433
4437
4434 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4438 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4435 '!!' as a special syntax (shorthand) to access @sx.
4439 '!!' as a special syntax (shorthand) to access @sx.
4436
4440
4437 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4441 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4438 command and return its output as a list split on '\n'.
4442 command and return its output as a list split on '\n'.
4439
4443
4440 2004-03-31 Fernando Perez <fperez@colorado.edu>
4444 2004-03-31 Fernando Perez <fperez@colorado.edu>
4441
4445
4442 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4446 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4443 method to dictionaries used as FakeModule instances if they lack
4447 method to dictionaries used as FakeModule instances if they lack
4444 it. At least pydoc in python2.3 breaks for runtime-defined
4448 it. At least pydoc in python2.3 breaks for runtime-defined
4445 functions without this hack. At some point I need to _really_
4449 functions without this hack. At some point I need to _really_
4446 understand what FakeModule is doing, because it's a gross hack.
4450 understand what FakeModule is doing, because it's a gross hack.
4447 But it solves Arnd's problem for now...
4451 But it solves Arnd's problem for now...
4448
4452
4449 2004-02-27 Fernando Perez <fperez@colorado.edu>
4453 2004-02-27 Fernando Perez <fperez@colorado.edu>
4450
4454
4451 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4455 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4452 mode would behave erratically. Also increased the number of
4456 mode would behave erratically. Also increased the number of
4453 possible logs in rotate mod to 999. Thanks to Rod Holland
4457 possible logs in rotate mod to 999. Thanks to Rod Holland
4454 <rhh@StructureLABS.com> for the report and fixes.
4458 <rhh@StructureLABS.com> for the report and fixes.
4455
4459
4456 2004-02-26 Fernando Perez <fperez@colorado.edu>
4460 2004-02-26 Fernando Perez <fperez@colorado.edu>
4457
4461
4458 * IPython/genutils.py (page): Check that the curses module really
4462 * IPython/genutils.py (page): Check that the curses module really
4459 has the initscr attribute before trying to use it. For some
4463 has the initscr attribute before trying to use it. For some
4460 reason, the Solaris curses module is missing this. I think this
4464 reason, the Solaris curses module is missing this. I think this
4461 should be considered a Solaris python bug, but I'm not sure.
4465 should be considered a Solaris python bug, but I'm not sure.
4462
4466
4463 2004-01-17 Fernando Perez <fperez@colorado.edu>
4467 2004-01-17 Fernando Perez <fperez@colorado.edu>
4464
4468
4465 * IPython/genutils.py (Stream.__init__): Changes to try to make
4469 * IPython/genutils.py (Stream.__init__): Changes to try to make
4466 ipython robust against stdin/out/err being closed by the user.
4470 ipython robust against stdin/out/err being closed by the user.
4467 This is 'user error' (and blocks a normal python session, at least
4471 This is 'user error' (and blocks a normal python session, at least
4468 the stdout case). However, Ipython should be able to survive such
4472 the stdout case). However, Ipython should be able to survive such
4469 instances of abuse as gracefully as possible. To simplify the
4473 instances of abuse as gracefully as possible. To simplify the
4470 coding and maintain compatibility with Gary Bishop's Term
4474 coding and maintain compatibility with Gary Bishop's Term
4471 contributions, I've made use of classmethods for this. I think
4475 contributions, I've made use of classmethods for this. I think
4472 this introduces a dependency on python 2.2.
4476 this introduces a dependency on python 2.2.
4473
4477
4474 2004-01-13 Fernando Perez <fperez@colorado.edu>
4478 2004-01-13 Fernando Perez <fperez@colorado.edu>
4475
4479
4476 * IPython/numutils.py (exp_safe): simplified the code a bit and
4480 * IPython/numutils.py (exp_safe): simplified the code a bit and
4477 removed the need for importing the kinds module altogether.
4481 removed the need for importing the kinds module altogether.
4478
4482
4479 2004-01-06 Fernando Perez <fperez@colorado.edu>
4483 2004-01-06 Fernando Perez <fperez@colorado.edu>
4480
4484
4481 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4485 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4482 a magic function instead, after some community feedback. No
4486 a magic function instead, after some community feedback. No
4483 special syntax will exist for it, but its name is deliberately
4487 special syntax will exist for it, but its name is deliberately
4484 very short.
4488 very short.
4485
4489
4486 2003-12-20 Fernando Perez <fperez@colorado.edu>
4490 2003-12-20 Fernando Perez <fperez@colorado.edu>
4487
4491
4488 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4492 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4489 new functionality, to automagically assign the result of a shell
4493 new functionality, to automagically assign the result of a shell
4490 command to a variable. I'll solicit some community feedback on
4494 command to a variable. I'll solicit some community feedback on
4491 this before making it permanent.
4495 this before making it permanent.
4492
4496
4493 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4497 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4494 requested about callables for which inspect couldn't obtain a
4498 requested about callables for which inspect couldn't obtain a
4495 proper argspec. Thanks to a crash report sent by Etienne
4499 proper argspec. Thanks to a crash report sent by Etienne
4496 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4500 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4497
4501
4498 2003-12-09 Fernando Perez <fperez@colorado.edu>
4502 2003-12-09 Fernando Perez <fperez@colorado.edu>
4499
4503
4500 * IPython/genutils.py (page): patch for the pager to work across
4504 * IPython/genutils.py (page): patch for the pager to work across
4501 various versions of Windows. By Gary Bishop.
4505 various versions of Windows. By Gary Bishop.
4502
4506
4503 2003-12-04 Fernando Perez <fperez@colorado.edu>
4507 2003-12-04 Fernando Perez <fperez@colorado.edu>
4504
4508
4505 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4509 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4506 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4510 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4507 While I tested this and it looks ok, there may still be corner
4511 While I tested this and it looks ok, there may still be corner
4508 cases I've missed.
4512 cases I've missed.
4509
4513
4510 2003-12-01 Fernando Perez <fperez@colorado.edu>
4514 2003-12-01 Fernando Perez <fperez@colorado.edu>
4511
4515
4512 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4516 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4513 where a line like 'p,q=1,2' would fail because the automagic
4517 where a line like 'p,q=1,2' would fail because the automagic
4514 system would be triggered for @p.
4518 system would be triggered for @p.
4515
4519
4516 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4520 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4517 cleanups, code unmodified.
4521 cleanups, code unmodified.
4518
4522
4519 * IPython/genutils.py (Term): added a class for IPython to handle
4523 * IPython/genutils.py (Term): added a class for IPython to handle
4520 output. In most cases it will just be a proxy for stdout/err, but
4524 output. In most cases it will just be a proxy for stdout/err, but
4521 having this allows modifications to be made for some platforms,
4525 having this allows modifications to be made for some platforms,
4522 such as handling color escapes under Windows. All of this code
4526 such as handling color escapes under Windows. All of this code
4523 was contributed by Gary Bishop, with minor modifications by me.
4527 was contributed by Gary Bishop, with minor modifications by me.
4524 The actual changes affect many files.
4528 The actual changes affect many files.
4525
4529
4526 2003-11-30 Fernando Perez <fperez@colorado.edu>
4530 2003-11-30 Fernando Perez <fperez@colorado.edu>
4527
4531
4528 * IPython/iplib.py (file_matches): new completion code, courtesy
4532 * IPython/iplib.py (file_matches): new completion code, courtesy
4529 of Jeff Collins. This enables filename completion again under
4533 of Jeff Collins. This enables filename completion again under
4530 python 2.3, which disabled it at the C level.
4534 python 2.3, which disabled it at the C level.
4531
4535
4532 2003-11-11 Fernando Perez <fperez@colorado.edu>
4536 2003-11-11 Fernando Perez <fperez@colorado.edu>
4533
4537
4534 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4538 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4535 for Numeric.array(map(...)), but often convenient.
4539 for Numeric.array(map(...)), but often convenient.
4536
4540
4537 2003-11-05 Fernando Perez <fperez@colorado.edu>
4541 2003-11-05 Fernando Perez <fperez@colorado.edu>
4538
4542
4539 * IPython/numutils.py (frange): Changed a call from int() to
4543 * IPython/numutils.py (frange): Changed a call from int() to
4540 int(round()) to prevent a problem reported with arange() in the
4544 int(round()) to prevent a problem reported with arange() in the
4541 numpy list.
4545 numpy list.
4542
4546
4543 2003-10-06 Fernando Perez <fperez@colorado.edu>
4547 2003-10-06 Fernando Perez <fperez@colorado.edu>
4544
4548
4545 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4549 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4546 prevent crashes if sys lacks an argv attribute (it happens with
4550 prevent crashes if sys lacks an argv attribute (it happens with
4547 embedded interpreters which build a bare-bones sys module).
4551 embedded interpreters which build a bare-bones sys module).
4548 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4552 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4549
4553
4550 2003-09-24 Fernando Perez <fperez@colorado.edu>
4554 2003-09-24 Fernando Perez <fperez@colorado.edu>
4551
4555
4552 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4556 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4553 to protect against poorly written user objects where __getattr__
4557 to protect against poorly written user objects where __getattr__
4554 raises exceptions other than AttributeError. Thanks to a bug
4558 raises exceptions other than AttributeError. Thanks to a bug
4555 report by Oliver Sander <osander-AT-gmx.de>.
4559 report by Oliver Sander <osander-AT-gmx.de>.
4556
4560
4557 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4561 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4558 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4562 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4559
4563
4560 2003-09-09 Fernando Perez <fperez@colorado.edu>
4564 2003-09-09 Fernando Perez <fperez@colorado.edu>
4561
4565
4562 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4566 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4563 unpacking a list whith a callable as first element would
4567 unpacking a list whith a callable as first element would
4564 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4568 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4565 Collins.
4569 Collins.
4566
4570
4567 2003-08-25 *** Released version 0.5.0
4571 2003-08-25 *** Released version 0.5.0
4568
4572
4569 2003-08-22 Fernando Perez <fperez@colorado.edu>
4573 2003-08-22 Fernando Perez <fperez@colorado.edu>
4570
4574
4571 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4575 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4572 improperly defined user exceptions. Thanks to feedback from Mark
4576 improperly defined user exceptions. Thanks to feedback from Mark
4573 Russell <mrussell-AT-verio.net>.
4577 Russell <mrussell-AT-verio.net>.
4574
4578
4575 2003-08-20 Fernando Perez <fperez@colorado.edu>
4579 2003-08-20 Fernando Perez <fperez@colorado.edu>
4576
4580
4577 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4581 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4578 printing so that it would print multi-line string forms starting
4582 printing so that it would print multi-line string forms starting
4579 with a new line. This way the formatting is better respected for
4583 with a new line. This way the formatting is better respected for
4580 objects which work hard to make nice string forms.
4584 objects which work hard to make nice string forms.
4581
4585
4582 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4586 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4583 autocall would overtake data access for objects with both
4587 autocall would overtake data access for objects with both
4584 __getitem__ and __call__.
4588 __getitem__ and __call__.
4585
4589
4586 2003-08-19 *** Released version 0.5.0-rc1
4590 2003-08-19 *** Released version 0.5.0-rc1
4587
4591
4588 2003-08-19 Fernando Perez <fperez@colorado.edu>
4592 2003-08-19 Fernando Perez <fperez@colorado.edu>
4589
4593
4590 * IPython/deep_reload.py (load_tail): single tiny change here
4594 * IPython/deep_reload.py (load_tail): single tiny change here
4591 seems to fix the long-standing bug of dreload() failing to work
4595 seems to fix the long-standing bug of dreload() failing to work
4592 for dotted names. But this module is pretty tricky, so I may have
4596 for dotted names. But this module is pretty tricky, so I may have
4593 missed some subtlety. Needs more testing!.
4597 missed some subtlety. Needs more testing!.
4594
4598
4595 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4599 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4596 exceptions which have badly implemented __str__ methods.
4600 exceptions which have badly implemented __str__ methods.
4597 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4601 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4598 which I've been getting reports about from Python 2.3 users. I
4602 which I've been getting reports about from Python 2.3 users. I
4599 wish I had a simple test case to reproduce the problem, so I could
4603 wish I had a simple test case to reproduce the problem, so I could
4600 either write a cleaner workaround or file a bug report if
4604 either write a cleaner workaround or file a bug report if
4601 necessary.
4605 necessary.
4602
4606
4603 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4607 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4604 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4608 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4605 a bug report by Tjabo Kloppenburg.
4609 a bug report by Tjabo Kloppenburg.
4606
4610
4607 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4611 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4608 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4612 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4609 seems rather unstable. Thanks to a bug report by Tjabo
4613 seems rather unstable. Thanks to a bug report by Tjabo
4610 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4614 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4611
4615
4612 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4616 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4613 this out soon because of the critical fixes in the inner loop for
4617 this out soon because of the critical fixes in the inner loop for
4614 generators.
4618 generators.
4615
4619
4616 * IPython/Magic.py (Magic.getargspec): removed. This (and
4620 * IPython/Magic.py (Magic.getargspec): removed. This (and
4617 _get_def) have been obsoleted by OInspect for a long time, I
4621 _get_def) have been obsoleted by OInspect for a long time, I
4618 hadn't noticed that they were dead code.
4622 hadn't noticed that they were dead code.
4619 (Magic._ofind): restored _ofind functionality for a few literals
4623 (Magic._ofind): restored _ofind functionality for a few literals
4620 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4624 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4621 for things like "hello".capitalize?, since that would require a
4625 for things like "hello".capitalize?, since that would require a
4622 potentially dangerous eval() again.
4626 potentially dangerous eval() again.
4623
4627
4624 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4628 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4625 logic a bit more to clean up the escapes handling and minimize the
4629 logic a bit more to clean up the escapes handling and minimize the
4626 use of _ofind to only necessary cases. The interactive 'feel' of
4630 use of _ofind to only necessary cases. The interactive 'feel' of
4627 IPython should have improved quite a bit with the changes in
4631 IPython should have improved quite a bit with the changes in
4628 _prefilter and _ofind (besides being far safer than before).
4632 _prefilter and _ofind (besides being far safer than before).
4629
4633
4630 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4634 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4631 obscure, never reported). Edit would fail to find the object to
4635 obscure, never reported). Edit would fail to find the object to
4632 edit under some circumstances.
4636 edit under some circumstances.
4633 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4637 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4634 which were causing double-calling of generators. Those eval calls
4638 which were causing double-calling of generators. Those eval calls
4635 were _very_ dangerous, since code with side effects could be
4639 were _very_ dangerous, since code with side effects could be
4636 triggered. As they say, 'eval is evil'... These were the
4640 triggered. As they say, 'eval is evil'... These were the
4637 nastiest evals in IPython. Besides, _ofind is now far simpler,
4641 nastiest evals in IPython. Besides, _ofind is now far simpler,
4638 and it should also be quite a bit faster. Its use of inspect is
4642 and it should also be quite a bit faster. Its use of inspect is
4639 also safer, so perhaps some of the inspect-related crashes I've
4643 also safer, so perhaps some of the inspect-related crashes I've
4640 seen lately with Python 2.3 might be taken care of. That will
4644 seen lately with Python 2.3 might be taken care of. That will
4641 need more testing.
4645 need more testing.
4642
4646
4643 2003-08-17 Fernando Perez <fperez@colorado.edu>
4647 2003-08-17 Fernando Perez <fperez@colorado.edu>
4644
4648
4645 * IPython/iplib.py (InteractiveShell._prefilter): significant
4649 * IPython/iplib.py (InteractiveShell._prefilter): significant
4646 simplifications to the logic for handling user escapes. Faster
4650 simplifications to the logic for handling user escapes. Faster
4647 and simpler code.
4651 and simpler code.
4648
4652
4649 2003-08-14 Fernando Perez <fperez@colorado.edu>
4653 2003-08-14 Fernando Perez <fperez@colorado.edu>
4650
4654
4651 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4655 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4652 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4656 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4653 but it should be quite a bit faster. And the recursive version
4657 but it should be quite a bit faster. And the recursive version
4654 generated O(log N) intermediate storage for all rank>1 arrays,
4658 generated O(log N) intermediate storage for all rank>1 arrays,
4655 even if they were contiguous.
4659 even if they were contiguous.
4656 (l1norm): Added this function.
4660 (l1norm): Added this function.
4657 (norm): Added this function for arbitrary norms (including
4661 (norm): Added this function for arbitrary norms (including
4658 l-infinity). l1 and l2 are still special cases for convenience
4662 l-infinity). l1 and l2 are still special cases for convenience
4659 and speed.
4663 and speed.
4660
4664
4661 2003-08-03 Fernando Perez <fperez@colorado.edu>
4665 2003-08-03 Fernando Perez <fperez@colorado.edu>
4662
4666
4663 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4667 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4664 exceptions, which now raise PendingDeprecationWarnings in Python
4668 exceptions, which now raise PendingDeprecationWarnings in Python
4665 2.3. There were some in Magic and some in Gnuplot2.
4669 2.3. There were some in Magic and some in Gnuplot2.
4666
4670
4667 2003-06-30 Fernando Perez <fperez@colorado.edu>
4671 2003-06-30 Fernando Perez <fperez@colorado.edu>
4668
4672
4669 * IPython/genutils.py (page): modified to call curses only for
4673 * IPython/genutils.py (page): modified to call curses only for
4670 terminals where TERM=='xterm'. After problems under many other
4674 terminals where TERM=='xterm'. After problems under many other
4671 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4675 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4672
4676
4673 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4677 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4674 would be triggered when readline was absent. This was just an old
4678 would be triggered when readline was absent. This was just an old
4675 debugging statement I'd forgotten to take out.
4679 debugging statement I'd forgotten to take out.
4676
4680
4677 2003-06-20 Fernando Perez <fperez@colorado.edu>
4681 2003-06-20 Fernando Perez <fperez@colorado.edu>
4678
4682
4679 * IPython/genutils.py (clock): modified to return only user time
4683 * IPython/genutils.py (clock): modified to return only user time
4680 (not counting system time), after a discussion on scipy. While
4684 (not counting system time), after a discussion on scipy. While
4681 system time may be a useful quantity occasionally, it may much
4685 system time may be a useful quantity occasionally, it may much
4682 more easily be skewed by occasional swapping or other similar
4686 more easily be skewed by occasional swapping or other similar
4683 activity.
4687 activity.
4684
4688
4685 2003-06-05 Fernando Perez <fperez@colorado.edu>
4689 2003-06-05 Fernando Perez <fperez@colorado.edu>
4686
4690
4687 * IPython/numutils.py (identity): new function, for building
4691 * IPython/numutils.py (identity): new function, for building
4688 arbitrary rank Kronecker deltas (mostly backwards compatible with
4692 arbitrary rank Kronecker deltas (mostly backwards compatible with
4689 Numeric.identity)
4693 Numeric.identity)
4690
4694
4691 2003-06-03 Fernando Perez <fperez@colorado.edu>
4695 2003-06-03 Fernando Perez <fperez@colorado.edu>
4692
4696
4693 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4697 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4694 arguments passed to magics with spaces, to allow trailing '\' to
4698 arguments passed to magics with spaces, to allow trailing '\' to
4695 work normally (mainly for Windows users).
4699 work normally (mainly for Windows users).
4696
4700
4697 2003-05-29 Fernando Perez <fperez@colorado.edu>
4701 2003-05-29 Fernando Perez <fperez@colorado.edu>
4698
4702
4699 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4703 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4700 instead of pydoc.help. This fixes a bizarre behavior where
4704 instead of pydoc.help. This fixes a bizarre behavior where
4701 printing '%s' % locals() would trigger the help system. Now
4705 printing '%s' % locals() would trigger the help system. Now
4702 ipython behaves like normal python does.
4706 ipython behaves like normal python does.
4703
4707
4704 Note that if one does 'from pydoc import help', the bizarre
4708 Note that if one does 'from pydoc import help', the bizarre
4705 behavior returns, but this will also happen in normal python, so
4709 behavior returns, but this will also happen in normal python, so
4706 it's not an ipython bug anymore (it has to do with how pydoc.help
4710 it's not an ipython bug anymore (it has to do with how pydoc.help
4707 is implemented).
4711 is implemented).
4708
4712
4709 2003-05-22 Fernando Perez <fperez@colorado.edu>
4713 2003-05-22 Fernando Perez <fperez@colorado.edu>
4710
4714
4711 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4715 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4712 return [] instead of None when nothing matches, also match to end
4716 return [] instead of None when nothing matches, also match to end
4713 of line. Patch by Gary Bishop.
4717 of line. Patch by Gary Bishop.
4714
4718
4715 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4719 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4716 protection as before, for files passed on the command line. This
4720 protection as before, for files passed on the command line. This
4717 prevents the CrashHandler from kicking in if user files call into
4721 prevents the CrashHandler from kicking in if user files call into
4718 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4722 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4719 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4723 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4720
4724
4721 2003-05-20 *** Released version 0.4.0
4725 2003-05-20 *** Released version 0.4.0
4722
4726
4723 2003-05-20 Fernando Perez <fperez@colorado.edu>
4727 2003-05-20 Fernando Perez <fperez@colorado.edu>
4724
4728
4725 * setup.py: added support for manpages. It's a bit hackish b/c of
4729 * setup.py: added support for manpages. It's a bit hackish b/c of
4726 a bug in the way the bdist_rpm distutils target handles gzipped
4730 a bug in the way the bdist_rpm distutils target handles gzipped
4727 manpages, but it works. After a patch by Jack.
4731 manpages, but it works. After a patch by Jack.
4728
4732
4729 2003-05-19 Fernando Perez <fperez@colorado.edu>
4733 2003-05-19 Fernando Perez <fperez@colorado.edu>
4730
4734
4731 * IPython/numutils.py: added a mockup of the kinds module, since
4735 * IPython/numutils.py: added a mockup of the kinds module, since
4732 it was recently removed from Numeric. This way, numutils will
4736 it was recently removed from Numeric. This way, numutils will
4733 work for all users even if they are missing kinds.
4737 work for all users even if they are missing kinds.
4734
4738
4735 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4739 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4736 failure, which can occur with SWIG-wrapped extensions. After a
4740 failure, which can occur with SWIG-wrapped extensions. After a
4737 crash report from Prabhu.
4741 crash report from Prabhu.
4738
4742
4739 2003-05-16 Fernando Perez <fperez@colorado.edu>
4743 2003-05-16 Fernando Perez <fperez@colorado.edu>
4740
4744
4741 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4745 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4742 protect ipython from user code which may call directly
4746 protect ipython from user code which may call directly
4743 sys.excepthook (this looks like an ipython crash to the user, even
4747 sys.excepthook (this looks like an ipython crash to the user, even
4744 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4748 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4745 This is especially important to help users of WxWindows, but may
4749 This is especially important to help users of WxWindows, but may
4746 also be useful in other cases.
4750 also be useful in other cases.
4747
4751
4748 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4752 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4749 an optional tb_offset to be specified, and to preserve exception
4753 an optional tb_offset to be specified, and to preserve exception
4750 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4754 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4751
4755
4752 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4756 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4753
4757
4754 2003-05-15 Fernando Perez <fperez@colorado.edu>
4758 2003-05-15 Fernando Perez <fperez@colorado.edu>
4755
4759
4756 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4760 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4757 installing for a new user under Windows.
4761 installing for a new user under Windows.
4758
4762
4759 2003-05-12 Fernando Perez <fperez@colorado.edu>
4763 2003-05-12 Fernando Perez <fperez@colorado.edu>
4760
4764
4761 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4765 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4762 handler for Emacs comint-based lines. Currently it doesn't do
4766 handler for Emacs comint-based lines. Currently it doesn't do
4763 much (but importantly, it doesn't update the history cache). In
4767 much (but importantly, it doesn't update the history cache). In
4764 the future it may be expanded if Alex needs more functionality
4768 the future it may be expanded if Alex needs more functionality
4765 there.
4769 there.
4766
4770
4767 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4771 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4768 info to crash reports.
4772 info to crash reports.
4769
4773
4770 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4774 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4771 just like Python's -c. Also fixed crash with invalid -color
4775 just like Python's -c. Also fixed crash with invalid -color
4772 option value at startup. Thanks to Will French
4776 option value at startup. Thanks to Will French
4773 <wfrench-AT-bestweb.net> for the bug report.
4777 <wfrench-AT-bestweb.net> for the bug report.
4774
4778
4775 2003-05-09 Fernando Perez <fperez@colorado.edu>
4779 2003-05-09 Fernando Perez <fperez@colorado.edu>
4776
4780
4777 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4781 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4778 to EvalDict (it's a mapping, after all) and simplified its code
4782 to EvalDict (it's a mapping, after all) and simplified its code
4779 quite a bit, after a nice discussion on c.l.py where Gustavo
4783 quite a bit, after a nice discussion on c.l.py where Gustavo
4780 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4784 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4781
4785
4782 2003-04-30 Fernando Perez <fperez@colorado.edu>
4786 2003-04-30 Fernando Perez <fperez@colorado.edu>
4783
4787
4784 * IPython/genutils.py (timings_out): modified it to reduce its
4788 * IPython/genutils.py (timings_out): modified it to reduce its
4785 overhead in the common reps==1 case.
4789 overhead in the common reps==1 case.
4786
4790
4787 2003-04-29 Fernando Perez <fperez@colorado.edu>
4791 2003-04-29 Fernando Perez <fperez@colorado.edu>
4788
4792
4789 * IPython/genutils.py (timings_out): Modified to use the resource
4793 * IPython/genutils.py (timings_out): Modified to use the resource
4790 module, which avoids the wraparound problems of time.clock().
4794 module, which avoids the wraparound problems of time.clock().
4791
4795
4792 2003-04-17 *** Released version 0.2.15pre4
4796 2003-04-17 *** Released version 0.2.15pre4
4793
4797
4794 2003-04-17 Fernando Perez <fperez@colorado.edu>
4798 2003-04-17 Fernando Perez <fperez@colorado.edu>
4795
4799
4796 * setup.py (scriptfiles): Split windows-specific stuff over to a
4800 * setup.py (scriptfiles): Split windows-specific stuff over to a
4797 separate file, in an attempt to have a Windows GUI installer.
4801 separate file, in an attempt to have a Windows GUI installer.
4798 That didn't work, but part of the groundwork is done.
4802 That didn't work, but part of the groundwork is done.
4799
4803
4800 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4804 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4801 indent/unindent with 4 spaces. Particularly useful in combination
4805 indent/unindent with 4 spaces. Particularly useful in combination
4802 with the new auto-indent option.
4806 with the new auto-indent option.
4803
4807
4804 2003-04-16 Fernando Perez <fperez@colorado.edu>
4808 2003-04-16 Fernando Perez <fperez@colorado.edu>
4805
4809
4806 * IPython/Magic.py: various replacements of self.rc for
4810 * IPython/Magic.py: various replacements of self.rc for
4807 self.shell.rc. A lot more remains to be done to fully disentangle
4811 self.shell.rc. A lot more remains to be done to fully disentangle
4808 this class from the main Shell class.
4812 this class from the main Shell class.
4809
4813
4810 * IPython/GnuplotRuntime.py: added checks for mouse support so
4814 * IPython/GnuplotRuntime.py: added checks for mouse support so
4811 that we don't try to enable it if the current gnuplot doesn't
4815 that we don't try to enable it if the current gnuplot doesn't
4812 really support it. Also added checks so that we don't try to
4816 really support it. Also added checks so that we don't try to
4813 enable persist under Windows (where Gnuplot doesn't recognize the
4817 enable persist under Windows (where Gnuplot doesn't recognize the
4814 option).
4818 option).
4815
4819
4816 * IPython/iplib.py (InteractiveShell.interact): Added optional
4820 * IPython/iplib.py (InteractiveShell.interact): Added optional
4817 auto-indenting code, after a patch by King C. Shu
4821 auto-indenting code, after a patch by King C. Shu
4818 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4822 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4819 get along well with pasting indented code. If I ever figure out
4823 get along well with pasting indented code. If I ever figure out
4820 how to make that part go well, it will become on by default.
4824 how to make that part go well, it will become on by default.
4821
4825
4822 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4826 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4823 crash ipython if there was an unmatched '%' in the user's prompt
4827 crash ipython if there was an unmatched '%' in the user's prompt
4824 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4828 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4825
4829
4826 * IPython/iplib.py (InteractiveShell.interact): removed the
4830 * IPython/iplib.py (InteractiveShell.interact): removed the
4827 ability to ask the user whether he wants to crash or not at the
4831 ability to ask the user whether he wants to crash or not at the
4828 'last line' exception handler. Calling functions at that point
4832 'last line' exception handler. Calling functions at that point
4829 changes the stack, and the error reports would have incorrect
4833 changes the stack, and the error reports would have incorrect
4830 tracebacks.
4834 tracebacks.
4831
4835
4832 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4836 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4833 pass through a peger a pretty-printed form of any object. After a
4837 pass through a peger a pretty-printed form of any object. After a
4834 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4838 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4835
4839
4836 2003-04-14 Fernando Perez <fperez@colorado.edu>
4840 2003-04-14 Fernando Perez <fperez@colorado.edu>
4837
4841
4838 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4842 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4839 all files in ~ would be modified at first install (instead of
4843 all files in ~ would be modified at first install (instead of
4840 ~/.ipython). This could be potentially disastrous, as the
4844 ~/.ipython). This could be potentially disastrous, as the
4841 modification (make line-endings native) could damage binary files.
4845 modification (make line-endings native) could damage binary files.
4842
4846
4843 2003-04-10 Fernando Perez <fperez@colorado.edu>
4847 2003-04-10 Fernando Perez <fperez@colorado.edu>
4844
4848
4845 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4849 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4846 handle only lines which are invalid python. This now means that
4850 handle only lines which are invalid python. This now means that
4847 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4851 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4848 for the bug report.
4852 for the bug report.
4849
4853
4850 2003-04-01 Fernando Perez <fperez@colorado.edu>
4854 2003-04-01 Fernando Perez <fperez@colorado.edu>
4851
4855
4852 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4856 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4853 where failing to set sys.last_traceback would crash pdb.pm().
4857 where failing to set sys.last_traceback would crash pdb.pm().
4854 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4858 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4855 report.
4859 report.
4856
4860
4857 2003-03-25 Fernando Perez <fperez@colorado.edu>
4861 2003-03-25 Fernando Perez <fperez@colorado.edu>
4858
4862
4859 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4863 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4860 before printing it (it had a lot of spurious blank lines at the
4864 before printing it (it had a lot of spurious blank lines at the
4861 end).
4865 end).
4862
4866
4863 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4867 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4864 output would be sent 21 times! Obviously people don't use this
4868 output would be sent 21 times! Obviously people don't use this
4865 too often, or I would have heard about it.
4869 too often, or I would have heard about it.
4866
4870
4867 2003-03-24 Fernando Perez <fperez@colorado.edu>
4871 2003-03-24 Fernando Perez <fperez@colorado.edu>
4868
4872
4869 * setup.py (scriptfiles): renamed the data_files parameter from
4873 * setup.py (scriptfiles): renamed the data_files parameter from
4870 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4874 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4871 for the patch.
4875 for the patch.
4872
4876
4873 2003-03-20 Fernando Perez <fperez@colorado.edu>
4877 2003-03-20 Fernando Perez <fperez@colorado.edu>
4874
4878
4875 * IPython/genutils.py (error): added error() and fatal()
4879 * IPython/genutils.py (error): added error() and fatal()
4876 functions.
4880 functions.
4877
4881
4878 2003-03-18 *** Released version 0.2.15pre3
4882 2003-03-18 *** Released version 0.2.15pre3
4879
4883
4880 2003-03-18 Fernando Perez <fperez@colorado.edu>
4884 2003-03-18 Fernando Perez <fperez@colorado.edu>
4881
4885
4882 * setupext/install_data_ext.py
4886 * setupext/install_data_ext.py
4883 (install_data_ext.initialize_options): Class contributed by Jack
4887 (install_data_ext.initialize_options): Class contributed by Jack
4884 Moffit for fixing the old distutils hack. He is sending this to
4888 Moffit for fixing the old distutils hack. He is sending this to
4885 the distutils folks so in the future we may not need it as a
4889 the distutils folks so in the future we may not need it as a
4886 private fix.
4890 private fix.
4887
4891
4888 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4892 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4889 changes for Debian packaging. See his patch for full details.
4893 changes for Debian packaging. See his patch for full details.
4890 The old distutils hack of making the ipythonrc* files carry a
4894 The old distutils hack of making the ipythonrc* files carry a
4891 bogus .py extension is gone, at last. Examples were moved to a
4895 bogus .py extension is gone, at last. Examples were moved to a
4892 separate subdir under doc/, and the separate executable scripts
4896 separate subdir under doc/, and the separate executable scripts
4893 now live in their own directory. Overall a great cleanup. The
4897 now live in their own directory. Overall a great cleanup. The
4894 manual was updated to use the new files, and setup.py has been
4898 manual was updated to use the new files, and setup.py has been
4895 fixed for this setup.
4899 fixed for this setup.
4896
4900
4897 * IPython/PyColorize.py (Parser.usage): made non-executable and
4901 * IPython/PyColorize.py (Parser.usage): made non-executable and
4898 created a pycolor wrapper around it to be included as a script.
4902 created a pycolor wrapper around it to be included as a script.
4899
4903
4900 2003-03-12 *** Released version 0.2.15pre2
4904 2003-03-12 *** Released version 0.2.15pre2
4901
4905
4902 2003-03-12 Fernando Perez <fperez@colorado.edu>
4906 2003-03-12 Fernando Perez <fperez@colorado.edu>
4903
4907
4904 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4908 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4905 long-standing problem with garbage characters in some terminals.
4909 long-standing problem with garbage characters in some terminals.
4906 The issue was really that the \001 and \002 escapes must _only_ be
4910 The issue was really that the \001 and \002 escapes must _only_ be
4907 passed to input prompts (which call readline), but _never_ to
4911 passed to input prompts (which call readline), but _never_ to
4908 normal text to be printed on screen. I changed ColorANSI to have
4912 normal text to be printed on screen. I changed ColorANSI to have
4909 two classes: TermColors and InputTermColors, each with the
4913 two classes: TermColors and InputTermColors, each with the
4910 appropriate escapes for input prompts or normal text. The code in
4914 appropriate escapes for input prompts or normal text. The code in
4911 Prompts.py got slightly more complicated, but this very old and
4915 Prompts.py got slightly more complicated, but this very old and
4912 annoying bug is finally fixed.
4916 annoying bug is finally fixed.
4913
4917
4914 All the credit for nailing down the real origin of this problem
4918 All the credit for nailing down the real origin of this problem
4915 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4919 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4916 *Many* thanks to him for spending quite a bit of effort on this.
4920 *Many* thanks to him for spending quite a bit of effort on this.
4917
4921
4918 2003-03-05 *** Released version 0.2.15pre1
4922 2003-03-05 *** Released version 0.2.15pre1
4919
4923
4920 2003-03-03 Fernando Perez <fperez@colorado.edu>
4924 2003-03-03 Fernando Perez <fperez@colorado.edu>
4921
4925
4922 * IPython/FakeModule.py: Moved the former _FakeModule to a
4926 * IPython/FakeModule.py: Moved the former _FakeModule to a
4923 separate file, because it's also needed by Magic (to fix a similar
4927 separate file, because it's also needed by Magic (to fix a similar
4924 pickle-related issue in @run).
4928 pickle-related issue in @run).
4925
4929
4926 2003-03-02 Fernando Perez <fperez@colorado.edu>
4930 2003-03-02 Fernando Perez <fperez@colorado.edu>
4927
4931
4928 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4932 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4929 the autocall option at runtime.
4933 the autocall option at runtime.
4930 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4934 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4931 across Magic.py to start separating Magic from InteractiveShell.
4935 across Magic.py to start separating Magic from InteractiveShell.
4932 (Magic._ofind): Fixed to return proper namespace for dotted
4936 (Magic._ofind): Fixed to return proper namespace for dotted
4933 names. Before, a dotted name would always return 'not currently
4937 names. Before, a dotted name would always return 'not currently
4934 defined', because it would find the 'parent'. s.x would be found,
4938 defined', because it would find the 'parent'. s.x would be found,
4935 but since 'x' isn't defined by itself, it would get confused.
4939 but since 'x' isn't defined by itself, it would get confused.
4936 (Magic.magic_run): Fixed pickling problems reported by Ralf
4940 (Magic.magic_run): Fixed pickling problems reported by Ralf
4937 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4941 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4938 that I'd used when Mike Heeter reported similar issues at the
4942 that I'd used when Mike Heeter reported similar issues at the
4939 top-level, but now for @run. It boils down to injecting the
4943 top-level, but now for @run. It boils down to injecting the
4940 namespace where code is being executed with something that looks
4944 namespace where code is being executed with something that looks
4941 enough like a module to fool pickle.dump(). Since a pickle stores
4945 enough like a module to fool pickle.dump(). Since a pickle stores
4942 a named reference to the importing module, we need this for
4946 a named reference to the importing module, we need this for
4943 pickles to save something sensible.
4947 pickles to save something sensible.
4944
4948
4945 * IPython/ipmaker.py (make_IPython): added an autocall option.
4949 * IPython/ipmaker.py (make_IPython): added an autocall option.
4946
4950
4947 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4951 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4948 the auto-eval code. Now autocalling is an option, and the code is
4952 the auto-eval code. Now autocalling is an option, and the code is
4949 also vastly safer. There is no more eval() involved at all.
4953 also vastly safer. There is no more eval() involved at all.
4950
4954
4951 2003-03-01 Fernando Perez <fperez@colorado.edu>
4955 2003-03-01 Fernando Perez <fperez@colorado.edu>
4952
4956
4953 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4957 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4954 dict with named keys instead of a tuple.
4958 dict with named keys instead of a tuple.
4955
4959
4956 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4960 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4957
4961
4958 * setup.py (make_shortcut): Fixed message about directories
4962 * setup.py (make_shortcut): Fixed message about directories
4959 created during Windows installation (the directories were ok, just
4963 created during Windows installation (the directories were ok, just
4960 the printed message was misleading). Thanks to Chris Liechti
4964 the printed message was misleading). Thanks to Chris Liechti
4961 <cliechti-AT-gmx.net> for the heads up.
4965 <cliechti-AT-gmx.net> for the heads up.
4962
4966
4963 2003-02-21 Fernando Perez <fperez@colorado.edu>
4967 2003-02-21 Fernando Perez <fperez@colorado.edu>
4964
4968
4965 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4969 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4966 of ValueError exception when checking for auto-execution. This
4970 of ValueError exception when checking for auto-execution. This
4967 one is raised by things like Numeric arrays arr.flat when the
4971 one is raised by things like Numeric arrays arr.flat when the
4968 array is non-contiguous.
4972 array is non-contiguous.
4969
4973
4970 2003-01-31 Fernando Perez <fperez@colorado.edu>
4974 2003-01-31 Fernando Perez <fperez@colorado.edu>
4971
4975
4972 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4976 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4973 not return any value at all (even though the command would get
4977 not return any value at all (even though the command would get
4974 executed).
4978 executed).
4975 (xsys): Flush stdout right after printing the command to ensure
4979 (xsys): Flush stdout right after printing the command to ensure
4976 proper ordering of commands and command output in the total
4980 proper ordering of commands and command output in the total
4977 output.
4981 output.
4978 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4982 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4979 system/getoutput as defaults. The old ones are kept for
4983 system/getoutput as defaults. The old ones are kept for
4980 compatibility reasons, so no code which uses this library needs
4984 compatibility reasons, so no code which uses this library needs
4981 changing.
4985 changing.
4982
4986
4983 2003-01-27 *** Released version 0.2.14
4987 2003-01-27 *** Released version 0.2.14
4984
4988
4985 2003-01-25 Fernando Perez <fperez@colorado.edu>
4989 2003-01-25 Fernando Perez <fperez@colorado.edu>
4986
4990
4987 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4991 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4988 functions defined in previous edit sessions could not be re-edited
4992 functions defined in previous edit sessions could not be re-edited
4989 (because the temp files were immediately removed). Now temp files
4993 (because the temp files were immediately removed). Now temp files
4990 are removed only at IPython's exit.
4994 are removed only at IPython's exit.
4991 (Magic.magic_run): Improved @run to perform shell-like expansions
4995 (Magic.magic_run): Improved @run to perform shell-like expansions
4992 on its arguments (~users and $VARS). With this, @run becomes more
4996 on its arguments (~users and $VARS). With this, @run becomes more
4993 like a normal command-line.
4997 like a normal command-line.
4994
4998
4995 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4999 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4996 bugs related to embedding and cleaned up that code. A fairly
5000 bugs related to embedding and cleaned up that code. A fairly
4997 important one was the impossibility to access the global namespace
5001 important one was the impossibility to access the global namespace
4998 through the embedded IPython (only local variables were visible).
5002 through the embedded IPython (only local variables were visible).
4999
5003
5000 2003-01-14 Fernando Perez <fperez@colorado.edu>
5004 2003-01-14 Fernando Perez <fperez@colorado.edu>
5001
5005
5002 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
5006 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
5003 auto-calling to be a bit more conservative. Now it doesn't get
5007 auto-calling to be a bit more conservative. Now it doesn't get
5004 triggered if any of '!=()<>' are in the rest of the input line, to
5008 triggered if any of '!=()<>' are in the rest of the input line, to
5005 allow comparing callables. Thanks to Alex for the heads up.
5009 allow comparing callables. Thanks to Alex for the heads up.
5006
5010
5007 2003-01-07 Fernando Perez <fperez@colorado.edu>
5011 2003-01-07 Fernando Perez <fperez@colorado.edu>
5008
5012
5009 * IPython/genutils.py (page): fixed estimation of the number of
5013 * IPython/genutils.py (page): fixed estimation of the number of
5010 lines in a string to be paged to simply count newlines. This
5014 lines in a string to be paged to simply count newlines. This
5011 prevents over-guessing due to embedded escape sequences. A better
5015 prevents over-guessing due to embedded escape sequences. A better
5012 long-term solution would involve stripping out the control chars
5016 long-term solution would involve stripping out the control chars
5013 for the count, but it's potentially so expensive I just don't
5017 for the count, but it's potentially so expensive I just don't
5014 think it's worth doing.
5018 think it's worth doing.
5015
5019
5016 2002-12-19 *** Released version 0.2.14pre50
5020 2002-12-19 *** Released version 0.2.14pre50
5017
5021
5018 2002-12-19 Fernando Perez <fperez@colorado.edu>
5022 2002-12-19 Fernando Perez <fperez@colorado.edu>
5019
5023
5020 * tools/release (version): Changed release scripts to inform
5024 * tools/release (version): Changed release scripts to inform
5021 Andrea and build a NEWS file with a list of recent changes.
5025 Andrea and build a NEWS file with a list of recent changes.
5022
5026
5023 * IPython/ColorANSI.py (__all__): changed terminal detection
5027 * IPython/ColorANSI.py (__all__): changed terminal detection
5024 code. Seems to work better for xterms without breaking
5028 code. Seems to work better for xterms without breaking
5025 konsole. Will need more testing to determine if WinXP and Mac OSX
5029 konsole. Will need more testing to determine if WinXP and Mac OSX
5026 also work ok.
5030 also work ok.
5027
5031
5028 2002-12-18 *** Released version 0.2.14pre49
5032 2002-12-18 *** Released version 0.2.14pre49
5029
5033
5030 2002-12-18 Fernando Perez <fperez@colorado.edu>
5034 2002-12-18 Fernando Perez <fperez@colorado.edu>
5031
5035
5032 * Docs: added new info about Mac OSX, from Andrea.
5036 * Docs: added new info about Mac OSX, from Andrea.
5033
5037
5034 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5038 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5035 allow direct plotting of python strings whose format is the same
5039 allow direct plotting of python strings whose format is the same
5036 of gnuplot data files.
5040 of gnuplot data files.
5037
5041
5038 2002-12-16 Fernando Perez <fperez@colorado.edu>
5042 2002-12-16 Fernando Perez <fperez@colorado.edu>
5039
5043
5040 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5044 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5041 value of exit question to be acknowledged.
5045 value of exit question to be acknowledged.
5042
5046
5043 2002-12-03 Fernando Perez <fperez@colorado.edu>
5047 2002-12-03 Fernando Perez <fperez@colorado.edu>
5044
5048
5045 * IPython/ipmaker.py: removed generators, which had been added
5049 * IPython/ipmaker.py: removed generators, which had been added
5046 by mistake in an earlier debugging run. This was causing trouble
5050 by mistake in an earlier debugging run. This was causing trouble
5047 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5051 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5048 for pointing this out.
5052 for pointing this out.
5049
5053
5050 2002-11-17 Fernando Perez <fperez@colorado.edu>
5054 2002-11-17 Fernando Perez <fperez@colorado.edu>
5051
5055
5052 * Manual: updated the Gnuplot section.
5056 * Manual: updated the Gnuplot section.
5053
5057
5054 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5058 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5055 a much better split of what goes in Runtime and what goes in
5059 a much better split of what goes in Runtime and what goes in
5056 Interactive.
5060 Interactive.
5057
5061
5058 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5062 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5059 being imported from iplib.
5063 being imported from iplib.
5060
5064
5061 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5065 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5062 for command-passing. Now the global Gnuplot instance is called
5066 for command-passing. Now the global Gnuplot instance is called
5063 'gp' instead of 'g', which was really a far too fragile and
5067 'gp' instead of 'g', which was really a far too fragile and
5064 common name.
5068 common name.
5065
5069
5066 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5070 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5067 bounding boxes generated by Gnuplot for square plots.
5071 bounding boxes generated by Gnuplot for square plots.
5068
5072
5069 * IPython/genutils.py (popkey): new function added. I should
5073 * IPython/genutils.py (popkey): new function added. I should
5070 suggest this on c.l.py as a dict method, it seems useful.
5074 suggest this on c.l.py as a dict method, it seems useful.
5071
5075
5072 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5076 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5073 to transparently handle PostScript generation. MUCH better than
5077 to transparently handle PostScript generation. MUCH better than
5074 the previous plot_eps/replot_eps (which I removed now). The code
5078 the previous plot_eps/replot_eps (which I removed now). The code
5075 is also fairly clean and well documented now (including
5079 is also fairly clean and well documented now (including
5076 docstrings).
5080 docstrings).
5077
5081
5078 2002-11-13 Fernando Perez <fperez@colorado.edu>
5082 2002-11-13 Fernando Perez <fperez@colorado.edu>
5079
5083
5080 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5084 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5081 (inconsistent with options).
5085 (inconsistent with options).
5082
5086
5083 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5087 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5084 manually disabled, I don't know why. Fixed it.
5088 manually disabled, I don't know why. Fixed it.
5085 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5089 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5086 eps output.
5090 eps output.
5087
5091
5088 2002-11-12 Fernando Perez <fperez@colorado.edu>
5092 2002-11-12 Fernando Perez <fperez@colorado.edu>
5089
5093
5090 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5094 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5091 don't propagate up to caller. Fixes crash reported by François
5095 don't propagate up to caller. Fixes crash reported by François
5092 Pinard.
5096 Pinard.
5093
5097
5094 2002-11-09 Fernando Perez <fperez@colorado.edu>
5098 2002-11-09 Fernando Perez <fperez@colorado.edu>
5095
5099
5096 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5100 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5097 history file for new users.
5101 history file for new users.
5098 (make_IPython): fixed bug where initial install would leave the
5102 (make_IPython): fixed bug where initial install would leave the
5099 user running in the .ipython dir.
5103 user running in the .ipython dir.
5100 (make_IPython): fixed bug where config dir .ipython would be
5104 (make_IPython): fixed bug where config dir .ipython would be
5101 created regardless of the given -ipythondir option. Thanks to Cory
5105 created regardless of the given -ipythondir option. Thanks to Cory
5102 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5106 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5103
5107
5104 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5108 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5105 type confirmations. Will need to use it in all of IPython's code
5109 type confirmations. Will need to use it in all of IPython's code
5106 consistently.
5110 consistently.
5107
5111
5108 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5112 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5109 context to print 31 lines instead of the default 5. This will make
5113 context to print 31 lines instead of the default 5. This will make
5110 the crash reports extremely detailed in case the problem is in
5114 the crash reports extremely detailed in case the problem is in
5111 libraries I don't have access to.
5115 libraries I don't have access to.
5112
5116
5113 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5117 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5114 line of defense' code to still crash, but giving users fair
5118 line of defense' code to still crash, but giving users fair
5115 warning. I don't want internal errors to go unreported: if there's
5119 warning. I don't want internal errors to go unreported: if there's
5116 an internal problem, IPython should crash and generate a full
5120 an internal problem, IPython should crash and generate a full
5117 report.
5121 report.
5118
5122
5119 2002-11-08 Fernando Perez <fperez@colorado.edu>
5123 2002-11-08 Fernando Perez <fperez@colorado.edu>
5120
5124
5121 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5125 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5122 otherwise uncaught exceptions which can appear if people set
5126 otherwise uncaught exceptions which can appear if people set
5123 sys.stdout to something badly broken. Thanks to a crash report
5127 sys.stdout to something badly broken. Thanks to a crash report
5124 from henni-AT-mail.brainbot.com.
5128 from henni-AT-mail.brainbot.com.
5125
5129
5126 2002-11-04 Fernando Perez <fperez@colorado.edu>
5130 2002-11-04 Fernando Perez <fperez@colorado.edu>
5127
5131
5128 * IPython/iplib.py (InteractiveShell.interact): added
5132 * IPython/iplib.py (InteractiveShell.interact): added
5129 __IPYTHON__active to the builtins. It's a flag which goes on when
5133 __IPYTHON__active to the builtins. It's a flag which goes on when
5130 the interaction starts and goes off again when it stops. This
5134 the interaction starts and goes off again when it stops. This
5131 allows embedding code to detect being inside IPython. Before this
5135 allows embedding code to detect being inside IPython. Before this
5132 was done via __IPYTHON__, but that only shows that an IPython
5136 was done via __IPYTHON__, but that only shows that an IPython
5133 instance has been created.
5137 instance has been created.
5134
5138
5135 * IPython/Magic.py (Magic.magic_env): I realized that in a
5139 * IPython/Magic.py (Magic.magic_env): I realized that in a
5136 UserDict, instance.data holds the data as a normal dict. So I
5140 UserDict, instance.data holds the data as a normal dict. So I
5137 modified @env to return os.environ.data instead of rebuilding a
5141 modified @env to return os.environ.data instead of rebuilding a
5138 dict by hand.
5142 dict by hand.
5139
5143
5140 2002-11-02 Fernando Perez <fperez@colorado.edu>
5144 2002-11-02 Fernando Perez <fperez@colorado.edu>
5141
5145
5142 * IPython/genutils.py (warn): changed so that level 1 prints no
5146 * IPython/genutils.py (warn): changed so that level 1 prints no
5143 header. Level 2 is now the default (with 'WARNING' header, as
5147 header. Level 2 is now the default (with 'WARNING' header, as
5144 before). I think I tracked all places where changes were needed in
5148 before). I think I tracked all places where changes were needed in
5145 IPython, but outside code using the old level numbering may have
5149 IPython, but outside code using the old level numbering may have
5146 broken.
5150 broken.
5147
5151
5148 * IPython/iplib.py (InteractiveShell.runcode): added this to
5152 * IPython/iplib.py (InteractiveShell.runcode): added this to
5149 handle the tracebacks in SystemExit traps correctly. The previous
5153 handle the tracebacks in SystemExit traps correctly. The previous
5150 code (through interact) was printing more of the stack than
5154 code (through interact) was printing more of the stack than
5151 necessary, showing IPython internal code to the user.
5155 necessary, showing IPython internal code to the user.
5152
5156
5153 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5157 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5154 default. Now that the default at the confirmation prompt is yes,
5158 default. Now that the default at the confirmation prompt is yes,
5155 it's not so intrusive. François' argument that ipython sessions
5159 it's not so intrusive. François' argument that ipython sessions
5156 tend to be complex enough not to lose them from an accidental C-d,
5160 tend to be complex enough not to lose them from an accidental C-d,
5157 is a valid one.
5161 is a valid one.
5158
5162
5159 * IPython/iplib.py (InteractiveShell.interact): added a
5163 * IPython/iplib.py (InteractiveShell.interact): added a
5160 showtraceback() call to the SystemExit trap, and modified the exit
5164 showtraceback() call to the SystemExit trap, and modified the exit
5161 confirmation to have yes as the default.
5165 confirmation to have yes as the default.
5162
5166
5163 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5167 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5164 this file. It's been gone from the code for a long time, this was
5168 this file. It's been gone from the code for a long time, this was
5165 simply leftover junk.
5169 simply leftover junk.
5166
5170
5167 2002-11-01 Fernando Perez <fperez@colorado.edu>
5171 2002-11-01 Fernando Perez <fperez@colorado.edu>
5168
5172
5169 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5173 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5170 added. If set, IPython now traps EOF and asks for
5174 added. If set, IPython now traps EOF and asks for
5171 confirmation. After a request by François Pinard.
5175 confirmation. After a request by François Pinard.
5172
5176
5173 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5177 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5174 of @abort, and with a new (better) mechanism for handling the
5178 of @abort, and with a new (better) mechanism for handling the
5175 exceptions.
5179 exceptions.
5176
5180
5177 2002-10-27 Fernando Perez <fperez@colorado.edu>
5181 2002-10-27 Fernando Perez <fperez@colorado.edu>
5178
5182
5179 * IPython/usage.py (__doc__): updated the --help information and
5183 * IPython/usage.py (__doc__): updated the --help information and
5180 the ipythonrc file to indicate that -log generates
5184 the ipythonrc file to indicate that -log generates
5181 ./ipython.log. Also fixed the corresponding info in @logstart.
5185 ./ipython.log. Also fixed the corresponding info in @logstart.
5182 This and several other fixes in the manuals thanks to reports by
5186 This and several other fixes in the manuals thanks to reports by
5183 François Pinard <pinard-AT-iro.umontreal.ca>.
5187 François Pinard <pinard-AT-iro.umontreal.ca>.
5184
5188
5185 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5189 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5186 refer to @logstart (instead of @log, which doesn't exist).
5190 refer to @logstart (instead of @log, which doesn't exist).
5187
5191
5188 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5192 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5189 AttributeError crash. Thanks to Christopher Armstrong
5193 AttributeError crash. Thanks to Christopher Armstrong
5190 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5194 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5191 introduced recently (in 0.2.14pre37) with the fix to the eval
5195 introduced recently (in 0.2.14pre37) with the fix to the eval
5192 problem mentioned below.
5196 problem mentioned below.
5193
5197
5194 2002-10-17 Fernando Perez <fperez@colorado.edu>
5198 2002-10-17 Fernando Perez <fperez@colorado.edu>
5195
5199
5196 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5200 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5197 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5201 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5198
5202
5199 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5203 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5200 this function to fix a problem reported by Alex Schmolck. He saw
5204 this function to fix a problem reported by Alex Schmolck. He saw
5201 it with list comprehensions and generators, which were getting
5205 it with list comprehensions and generators, which were getting
5202 called twice. The real problem was an 'eval' call in testing for
5206 called twice. The real problem was an 'eval' call in testing for
5203 automagic which was evaluating the input line silently.
5207 automagic which was evaluating the input line silently.
5204
5208
5205 This is a potentially very nasty bug, if the input has side
5209 This is a potentially very nasty bug, if the input has side
5206 effects which must not be repeated. The code is much cleaner now,
5210 effects which must not be repeated. The code is much cleaner now,
5207 without any blanket 'except' left and with a regexp test for
5211 without any blanket 'except' left and with a regexp test for
5208 actual function names.
5212 actual function names.
5209
5213
5210 But an eval remains, which I'm not fully comfortable with. I just
5214 But an eval remains, which I'm not fully comfortable with. I just
5211 don't know how to find out if an expression could be a callable in
5215 don't know how to find out if an expression could be a callable in
5212 the user's namespace without doing an eval on the string. However
5216 the user's namespace without doing an eval on the string. However
5213 that string is now much more strictly checked so that no code
5217 that string is now much more strictly checked so that no code
5214 slips by, so the eval should only happen for things that can
5218 slips by, so the eval should only happen for things that can
5215 really be only function/method names.
5219 really be only function/method names.
5216
5220
5217 2002-10-15 Fernando Perez <fperez@colorado.edu>
5221 2002-10-15 Fernando Perez <fperez@colorado.edu>
5218
5222
5219 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5223 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5220 OSX information to main manual, removed README_Mac_OSX file from
5224 OSX information to main manual, removed README_Mac_OSX file from
5221 distribution. Also updated credits for recent additions.
5225 distribution. Also updated credits for recent additions.
5222
5226
5223 2002-10-10 Fernando Perez <fperez@colorado.edu>
5227 2002-10-10 Fernando Perez <fperez@colorado.edu>
5224
5228
5225 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5229 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5226 terminal-related issues. Many thanks to Andrea Riciputi
5230 terminal-related issues. Many thanks to Andrea Riciputi
5227 <andrea.riciputi-AT-libero.it> for writing it.
5231 <andrea.riciputi-AT-libero.it> for writing it.
5228
5232
5229 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5233 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5230 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5234 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5231
5235
5232 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5236 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5233 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5237 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5234 <syver-en-AT-online.no> who both submitted patches for this problem.
5238 <syver-en-AT-online.no> who both submitted patches for this problem.
5235
5239
5236 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5240 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5237 global embedding to make sure that things don't overwrite user
5241 global embedding to make sure that things don't overwrite user
5238 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5242 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5239
5243
5240 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5244 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5241 compatibility. Thanks to Hayden Callow
5245 compatibility. Thanks to Hayden Callow
5242 <h.callow-AT-elec.canterbury.ac.nz>
5246 <h.callow-AT-elec.canterbury.ac.nz>
5243
5247
5244 2002-10-04 Fernando Perez <fperez@colorado.edu>
5248 2002-10-04 Fernando Perez <fperez@colorado.edu>
5245
5249
5246 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5250 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5247 Gnuplot.File objects.
5251 Gnuplot.File objects.
5248
5252
5249 2002-07-23 Fernando Perez <fperez@colorado.edu>
5253 2002-07-23 Fernando Perez <fperez@colorado.edu>
5250
5254
5251 * IPython/genutils.py (timing): Added timings() and timing() for
5255 * IPython/genutils.py (timing): Added timings() and timing() for
5252 quick access to the most commonly needed data, the execution
5256 quick access to the most commonly needed data, the execution
5253 times. Old timing() renamed to timings_out().
5257 times. Old timing() renamed to timings_out().
5254
5258
5255 2002-07-18 Fernando Perez <fperez@colorado.edu>
5259 2002-07-18 Fernando Perez <fperez@colorado.edu>
5256
5260
5257 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5261 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5258 bug with nested instances disrupting the parent's tab completion.
5262 bug with nested instances disrupting the parent's tab completion.
5259
5263
5260 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5264 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5261 all_completions code to begin the emacs integration.
5265 all_completions code to begin the emacs integration.
5262
5266
5263 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5267 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5264 argument to allow titling individual arrays when plotting.
5268 argument to allow titling individual arrays when plotting.
5265
5269
5266 2002-07-15 Fernando Perez <fperez@colorado.edu>
5270 2002-07-15 Fernando Perez <fperez@colorado.edu>
5267
5271
5268 * setup.py (make_shortcut): changed to retrieve the value of
5272 * setup.py (make_shortcut): changed to retrieve the value of
5269 'Program Files' directory from the registry (this value changes in
5273 'Program Files' directory from the registry (this value changes in
5270 non-english versions of Windows). Thanks to Thomas Fanslau
5274 non-english versions of Windows). Thanks to Thomas Fanslau
5271 <tfanslau-AT-gmx.de> for the report.
5275 <tfanslau-AT-gmx.de> for the report.
5272
5276
5273 2002-07-10 Fernando Perez <fperez@colorado.edu>
5277 2002-07-10 Fernando Perez <fperez@colorado.edu>
5274
5278
5275 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5279 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5276 a bug in pdb, which crashes if a line with only whitespace is
5280 a bug in pdb, which crashes if a line with only whitespace is
5277 entered. Bug report submitted to sourceforge.
5281 entered. Bug report submitted to sourceforge.
5278
5282
5279 2002-07-09 Fernando Perez <fperez@colorado.edu>
5283 2002-07-09 Fernando Perez <fperez@colorado.edu>
5280
5284
5281 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5285 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5282 reporting exceptions (it's a bug in inspect.py, I just set a
5286 reporting exceptions (it's a bug in inspect.py, I just set a
5283 workaround).
5287 workaround).
5284
5288
5285 2002-07-08 Fernando Perez <fperez@colorado.edu>
5289 2002-07-08 Fernando Perez <fperez@colorado.edu>
5286
5290
5287 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5291 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5288 __IPYTHON__ in __builtins__ to show up in user_ns.
5292 __IPYTHON__ in __builtins__ to show up in user_ns.
5289
5293
5290 2002-07-03 Fernando Perez <fperez@colorado.edu>
5294 2002-07-03 Fernando Perez <fperez@colorado.edu>
5291
5295
5292 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5296 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5293 name from @gp_set_instance to @gp_set_default.
5297 name from @gp_set_instance to @gp_set_default.
5294
5298
5295 * IPython/ipmaker.py (make_IPython): default editor value set to
5299 * IPython/ipmaker.py (make_IPython): default editor value set to
5296 '0' (a string), to match the rc file. Otherwise will crash when
5300 '0' (a string), to match the rc file. Otherwise will crash when
5297 .strip() is called on it.
5301 .strip() is called on it.
5298
5302
5299
5303
5300 2002-06-28 Fernando Perez <fperez@colorado.edu>
5304 2002-06-28 Fernando Perez <fperez@colorado.edu>
5301
5305
5302 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5306 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5303 of files in current directory when a file is executed via
5307 of files in current directory when a file is executed via
5304 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5308 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5305
5309
5306 * setup.py (manfiles): fix for rpm builds, submitted by RA
5310 * setup.py (manfiles): fix for rpm builds, submitted by RA
5307 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5311 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5308
5312
5309 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5313 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5310 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5314 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5311 string!). A. Schmolck caught this one.
5315 string!). A. Schmolck caught this one.
5312
5316
5313 2002-06-27 Fernando Perez <fperez@colorado.edu>
5317 2002-06-27 Fernando Perez <fperez@colorado.edu>
5314
5318
5315 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5319 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5316 defined files at the cmd line. __name__ wasn't being set to
5320 defined files at the cmd line. __name__ wasn't being set to
5317 __main__.
5321 __main__.
5318
5322
5319 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5323 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5320 regular lists and tuples besides Numeric arrays.
5324 regular lists and tuples besides Numeric arrays.
5321
5325
5322 * IPython/Prompts.py (CachedOutput.__call__): Added output
5326 * IPython/Prompts.py (CachedOutput.__call__): Added output
5323 supression for input ending with ';'. Similar to Mathematica and
5327 supression for input ending with ';'. Similar to Mathematica and
5324 Matlab. The _* vars and Out[] list are still updated, just like
5328 Matlab. The _* vars and Out[] list are still updated, just like
5325 Mathematica behaves.
5329 Mathematica behaves.
5326
5330
5327 2002-06-25 Fernando Perez <fperez@colorado.edu>
5331 2002-06-25 Fernando Perez <fperez@colorado.edu>
5328
5332
5329 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5333 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5330 .ini extensions for profiels under Windows.
5334 .ini extensions for profiels under Windows.
5331
5335
5332 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5336 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5333 string form. Fix contributed by Alexander Schmolck
5337 string form. Fix contributed by Alexander Schmolck
5334 <a.schmolck-AT-gmx.net>
5338 <a.schmolck-AT-gmx.net>
5335
5339
5336 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5340 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5337 pre-configured Gnuplot instance.
5341 pre-configured Gnuplot instance.
5338
5342
5339 2002-06-21 Fernando Perez <fperez@colorado.edu>
5343 2002-06-21 Fernando Perez <fperez@colorado.edu>
5340
5344
5341 * IPython/numutils.py (exp_safe): new function, works around the
5345 * IPython/numutils.py (exp_safe): new function, works around the
5342 underflow problems in Numeric.
5346 underflow problems in Numeric.
5343 (log2): New fn. Safe log in base 2: returns exact integer answer
5347 (log2): New fn. Safe log in base 2: returns exact integer answer
5344 for exact integer powers of 2.
5348 for exact integer powers of 2.
5345
5349
5346 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5350 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5347 properly.
5351 properly.
5348
5352
5349 2002-06-20 Fernando Perez <fperez@colorado.edu>
5353 2002-06-20 Fernando Perez <fperez@colorado.edu>
5350
5354
5351 * IPython/genutils.py (timing): new function like
5355 * IPython/genutils.py (timing): new function like
5352 Mathematica's. Similar to time_test, but returns more info.
5356 Mathematica's. Similar to time_test, but returns more info.
5353
5357
5354 2002-06-18 Fernando Perez <fperez@colorado.edu>
5358 2002-06-18 Fernando Perez <fperez@colorado.edu>
5355
5359
5356 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5360 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5357 according to Mike Heeter's suggestions.
5361 according to Mike Heeter's suggestions.
5358
5362
5359 2002-06-16 Fernando Perez <fperez@colorado.edu>
5363 2002-06-16 Fernando Perez <fperez@colorado.edu>
5360
5364
5361 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5365 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5362 system. GnuplotMagic is gone as a user-directory option. New files
5366 system. GnuplotMagic is gone as a user-directory option. New files
5363 make it easier to use all the gnuplot stuff both from external
5367 make it easier to use all the gnuplot stuff both from external
5364 programs as well as from IPython. Had to rewrite part of
5368 programs as well as from IPython. Had to rewrite part of
5365 hardcopy() b/c of a strange bug: often the ps files simply don't
5369 hardcopy() b/c of a strange bug: often the ps files simply don't
5366 get created, and require a repeat of the command (often several
5370 get created, and require a repeat of the command (often several
5367 times).
5371 times).
5368
5372
5369 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5373 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5370 resolve output channel at call time, so that if sys.stderr has
5374 resolve output channel at call time, so that if sys.stderr has
5371 been redirected by user this gets honored.
5375 been redirected by user this gets honored.
5372
5376
5373 2002-06-13 Fernando Perez <fperez@colorado.edu>
5377 2002-06-13 Fernando Perez <fperez@colorado.edu>
5374
5378
5375 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5379 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5376 IPShell. Kept a copy with the old names to avoid breaking people's
5380 IPShell. Kept a copy with the old names to avoid breaking people's
5377 embedded code.
5381 embedded code.
5378
5382
5379 * IPython/ipython: simplified it to the bare minimum after
5383 * IPython/ipython: simplified it to the bare minimum after
5380 Holger's suggestions. Added info about how to use it in
5384 Holger's suggestions. Added info about how to use it in
5381 PYTHONSTARTUP.
5385 PYTHONSTARTUP.
5382
5386
5383 * IPython/Shell.py (IPythonShell): changed the options passing
5387 * IPython/Shell.py (IPythonShell): changed the options passing
5384 from a string with funky %s replacements to a straight list. Maybe
5388 from a string with funky %s replacements to a straight list. Maybe
5385 a bit more typing, but it follows sys.argv conventions, so there's
5389 a bit more typing, but it follows sys.argv conventions, so there's
5386 less special-casing to remember.
5390 less special-casing to remember.
5387
5391
5388 2002-06-12 Fernando Perez <fperez@colorado.edu>
5392 2002-06-12 Fernando Perez <fperez@colorado.edu>
5389
5393
5390 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5394 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5391 command. Thanks to a suggestion by Mike Heeter.
5395 command. Thanks to a suggestion by Mike Heeter.
5392 (Magic.magic_pfile): added behavior to look at filenames if given
5396 (Magic.magic_pfile): added behavior to look at filenames if given
5393 arg is not a defined object.
5397 arg is not a defined object.
5394 (Magic.magic_save): New @save function to save code snippets. Also
5398 (Magic.magic_save): New @save function to save code snippets. Also
5395 a Mike Heeter idea.
5399 a Mike Heeter idea.
5396
5400
5397 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5401 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5398 plot() and replot(). Much more convenient now, especially for
5402 plot() and replot(). Much more convenient now, especially for
5399 interactive use.
5403 interactive use.
5400
5404
5401 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5405 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5402 filenames.
5406 filenames.
5403
5407
5404 2002-06-02 Fernando Perez <fperez@colorado.edu>
5408 2002-06-02 Fernando Perez <fperez@colorado.edu>
5405
5409
5406 * IPython/Struct.py (Struct.__init__): modified to admit
5410 * IPython/Struct.py (Struct.__init__): modified to admit
5407 initialization via another struct.
5411 initialization via another struct.
5408
5412
5409 * IPython/genutils.py (SystemExec.__init__): New stateful
5413 * IPython/genutils.py (SystemExec.__init__): New stateful
5410 interface to xsys and bq. Useful for writing system scripts.
5414 interface to xsys and bq. Useful for writing system scripts.
5411
5415
5412 2002-05-30 Fernando Perez <fperez@colorado.edu>
5416 2002-05-30 Fernando Perez <fperez@colorado.edu>
5413
5417
5414 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5418 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5415 documents. This will make the user download smaller (it's getting
5419 documents. This will make the user download smaller (it's getting
5416 too big).
5420 too big).
5417
5421
5418 2002-05-29 Fernando Perez <fperez@colorado.edu>
5422 2002-05-29 Fernando Perez <fperez@colorado.edu>
5419
5423
5420 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5424 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5421 fix problems with shelve and pickle. Seems to work, but I don't
5425 fix problems with shelve and pickle. Seems to work, but I don't
5422 know if corner cases break it. Thanks to Mike Heeter
5426 know if corner cases break it. Thanks to Mike Heeter
5423 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5427 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5424
5428
5425 2002-05-24 Fernando Perez <fperez@colorado.edu>
5429 2002-05-24 Fernando Perez <fperez@colorado.edu>
5426
5430
5427 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5431 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5428 macros having broken.
5432 macros having broken.
5429
5433
5430 2002-05-21 Fernando Perez <fperez@colorado.edu>
5434 2002-05-21 Fernando Perez <fperez@colorado.edu>
5431
5435
5432 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5436 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5433 introduced logging bug: all history before logging started was
5437 introduced logging bug: all history before logging started was
5434 being written one character per line! This came from the redesign
5438 being written one character per line! This came from the redesign
5435 of the input history as a special list which slices to strings,
5439 of the input history as a special list which slices to strings,
5436 not to lists.
5440 not to lists.
5437
5441
5438 2002-05-20 Fernando Perez <fperez@colorado.edu>
5442 2002-05-20 Fernando Perez <fperez@colorado.edu>
5439
5443
5440 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5444 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5441 be an attribute of all classes in this module. The design of these
5445 be an attribute of all classes in this module. The design of these
5442 classes needs some serious overhauling.
5446 classes needs some serious overhauling.
5443
5447
5444 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5448 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5445 which was ignoring '_' in option names.
5449 which was ignoring '_' in option names.
5446
5450
5447 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5451 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5448 'Verbose_novars' to 'Context' and made it the new default. It's a
5452 'Verbose_novars' to 'Context' and made it the new default. It's a
5449 bit more readable and also safer than verbose.
5453 bit more readable and also safer than verbose.
5450
5454
5451 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5455 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5452 triple-quoted strings.
5456 triple-quoted strings.
5453
5457
5454 * IPython/OInspect.py (__all__): new module exposing the object
5458 * IPython/OInspect.py (__all__): new module exposing the object
5455 introspection facilities. Now the corresponding magics are dummy
5459 introspection facilities. Now the corresponding magics are dummy
5456 wrappers around this. Having this module will make it much easier
5460 wrappers around this. Having this module will make it much easier
5457 to put these functions into our modified pdb.
5461 to put these functions into our modified pdb.
5458 This new object inspector system uses the new colorizing module,
5462 This new object inspector system uses the new colorizing module,
5459 so source code and other things are nicely syntax highlighted.
5463 so source code and other things are nicely syntax highlighted.
5460
5464
5461 2002-05-18 Fernando Perez <fperez@colorado.edu>
5465 2002-05-18 Fernando Perez <fperez@colorado.edu>
5462
5466
5463 * IPython/ColorANSI.py: Split the coloring tools into a separate
5467 * IPython/ColorANSI.py: Split the coloring tools into a separate
5464 module so I can use them in other code easier (they were part of
5468 module so I can use them in other code easier (they were part of
5465 ultraTB).
5469 ultraTB).
5466
5470
5467 2002-05-17 Fernando Perez <fperez@colorado.edu>
5471 2002-05-17 Fernando Perez <fperez@colorado.edu>
5468
5472
5469 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5473 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5470 fixed it to set the global 'g' also to the called instance, as
5474 fixed it to set the global 'g' also to the called instance, as
5471 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5475 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5472 user's 'g' variables).
5476 user's 'g' variables).
5473
5477
5474 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5478 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5475 global variables (aliases to _ih,_oh) so that users which expect
5479 global variables (aliases to _ih,_oh) so that users which expect
5476 In[5] or Out[7] to work aren't unpleasantly surprised.
5480 In[5] or Out[7] to work aren't unpleasantly surprised.
5477 (InputList.__getslice__): new class to allow executing slices of
5481 (InputList.__getslice__): new class to allow executing slices of
5478 input history directly. Very simple class, complements the use of
5482 input history directly. Very simple class, complements the use of
5479 macros.
5483 macros.
5480
5484
5481 2002-05-16 Fernando Perez <fperez@colorado.edu>
5485 2002-05-16 Fernando Perez <fperez@colorado.edu>
5482
5486
5483 * setup.py (docdirbase): make doc directory be just doc/IPython
5487 * setup.py (docdirbase): make doc directory be just doc/IPython
5484 without version numbers, it will reduce clutter for users.
5488 without version numbers, it will reduce clutter for users.
5485
5489
5486 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5490 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5487 execfile call to prevent possible memory leak. See for details:
5491 execfile call to prevent possible memory leak. See for details:
5488 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5492 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5489
5493
5490 2002-05-15 Fernando Perez <fperez@colorado.edu>
5494 2002-05-15 Fernando Perez <fperez@colorado.edu>
5491
5495
5492 * IPython/Magic.py (Magic.magic_psource): made the object
5496 * IPython/Magic.py (Magic.magic_psource): made the object
5493 introspection names be more standard: pdoc, pdef, pfile and
5497 introspection names be more standard: pdoc, pdef, pfile and
5494 psource. They all print/page their output, and it makes
5498 psource. They all print/page their output, and it makes
5495 remembering them easier. Kept old names for compatibility as
5499 remembering them easier. Kept old names for compatibility as
5496 aliases.
5500 aliases.
5497
5501
5498 2002-05-14 Fernando Perez <fperez@colorado.edu>
5502 2002-05-14 Fernando Perez <fperez@colorado.edu>
5499
5503
5500 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5504 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5501 what the mouse problem was. The trick is to use gnuplot with temp
5505 what the mouse problem was. The trick is to use gnuplot with temp
5502 files and NOT with pipes (for data communication), because having
5506 files and NOT with pipes (for data communication), because having
5503 both pipes and the mouse on is bad news.
5507 both pipes and the mouse on is bad news.
5504
5508
5505 2002-05-13 Fernando Perez <fperez@colorado.edu>
5509 2002-05-13 Fernando Perez <fperez@colorado.edu>
5506
5510
5507 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5511 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5508 bug. Information would be reported about builtins even when
5512 bug. Information would be reported about builtins even when
5509 user-defined functions overrode them.
5513 user-defined functions overrode them.
5510
5514
5511 2002-05-11 Fernando Perez <fperez@colorado.edu>
5515 2002-05-11 Fernando Perez <fperez@colorado.edu>
5512
5516
5513 * IPython/__init__.py (__all__): removed FlexCompleter from
5517 * IPython/__init__.py (__all__): removed FlexCompleter from
5514 __all__ so that things don't fail in platforms without readline.
5518 __all__ so that things don't fail in platforms without readline.
5515
5519
5516 2002-05-10 Fernando Perez <fperez@colorado.edu>
5520 2002-05-10 Fernando Perez <fperez@colorado.edu>
5517
5521
5518 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5522 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5519 it requires Numeric, effectively making Numeric a dependency for
5523 it requires Numeric, effectively making Numeric a dependency for
5520 IPython.
5524 IPython.
5521
5525
5522 * Released 0.2.13
5526 * Released 0.2.13
5523
5527
5524 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5528 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5525 profiler interface. Now all the major options from the profiler
5529 profiler interface. Now all the major options from the profiler
5526 module are directly supported in IPython, both for single
5530 module are directly supported in IPython, both for single
5527 expressions (@prun) and for full programs (@run -p).
5531 expressions (@prun) and for full programs (@run -p).
5528
5532
5529 2002-05-09 Fernando Perez <fperez@colorado.edu>
5533 2002-05-09 Fernando Perez <fperez@colorado.edu>
5530
5534
5531 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5535 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5532 magic properly formatted for screen.
5536 magic properly formatted for screen.
5533
5537
5534 * setup.py (make_shortcut): Changed things to put pdf version in
5538 * setup.py (make_shortcut): Changed things to put pdf version in
5535 doc/ instead of doc/manual (had to change lyxport a bit).
5539 doc/ instead of doc/manual (had to change lyxport a bit).
5536
5540
5537 * IPython/Magic.py (Profile.string_stats): made profile runs go
5541 * IPython/Magic.py (Profile.string_stats): made profile runs go
5538 through pager (they are long and a pager allows searching, saving,
5542 through pager (they are long and a pager allows searching, saving,
5539 etc.)
5543 etc.)
5540
5544
5541 2002-05-08 Fernando Perez <fperez@colorado.edu>
5545 2002-05-08 Fernando Perez <fperez@colorado.edu>
5542
5546
5543 * Released 0.2.12
5547 * Released 0.2.12
5544
5548
5545 2002-05-06 Fernando Perez <fperez@colorado.edu>
5549 2002-05-06 Fernando Perez <fperez@colorado.edu>
5546
5550
5547 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5551 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5548 introduced); 'hist n1 n2' was broken.
5552 introduced); 'hist n1 n2' was broken.
5549 (Magic.magic_pdb): added optional on/off arguments to @pdb
5553 (Magic.magic_pdb): added optional on/off arguments to @pdb
5550 (Magic.magic_run): added option -i to @run, which executes code in
5554 (Magic.magic_run): added option -i to @run, which executes code in
5551 the IPython namespace instead of a clean one. Also added @irun as
5555 the IPython namespace instead of a clean one. Also added @irun as
5552 an alias to @run -i.
5556 an alias to @run -i.
5553
5557
5554 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5558 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5555 fixed (it didn't really do anything, the namespaces were wrong).
5559 fixed (it didn't really do anything, the namespaces were wrong).
5556
5560
5557 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5561 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5558
5562
5559 * IPython/__init__.py (__all__): Fixed package namespace, now
5563 * IPython/__init__.py (__all__): Fixed package namespace, now
5560 'import IPython' does give access to IPython.<all> as
5564 'import IPython' does give access to IPython.<all> as
5561 expected. Also renamed __release__ to Release.
5565 expected. Also renamed __release__ to Release.
5562
5566
5563 * IPython/Debugger.py (__license__): created new Pdb class which
5567 * IPython/Debugger.py (__license__): created new Pdb class which
5564 functions like a drop-in for the normal pdb.Pdb but does NOT
5568 functions like a drop-in for the normal pdb.Pdb but does NOT
5565 import readline by default. This way it doesn't muck up IPython's
5569 import readline by default. This way it doesn't muck up IPython's
5566 readline handling, and now tab-completion finally works in the
5570 readline handling, and now tab-completion finally works in the
5567 debugger -- sort of. It completes things globally visible, but the
5571 debugger -- sort of. It completes things globally visible, but the
5568 completer doesn't track the stack as pdb walks it. That's a bit
5572 completer doesn't track the stack as pdb walks it. That's a bit
5569 tricky, and I'll have to implement it later.
5573 tricky, and I'll have to implement it later.
5570
5574
5571 2002-05-05 Fernando Perez <fperez@colorado.edu>
5575 2002-05-05 Fernando Perez <fperez@colorado.edu>
5572
5576
5573 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5577 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5574 magic docstrings when printed via ? (explicit \'s were being
5578 magic docstrings when printed via ? (explicit \'s were being
5575 printed).
5579 printed).
5576
5580
5577 * IPython/ipmaker.py (make_IPython): fixed namespace
5581 * IPython/ipmaker.py (make_IPython): fixed namespace
5578 identification bug. Now variables loaded via logs or command-line
5582 identification bug. Now variables loaded via logs or command-line
5579 files are recognized in the interactive namespace by @who.
5583 files are recognized in the interactive namespace by @who.
5580
5584
5581 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5585 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5582 log replay system stemming from the string form of Structs.
5586 log replay system stemming from the string form of Structs.
5583
5587
5584 * IPython/Magic.py (Macro.__init__): improved macros to properly
5588 * IPython/Magic.py (Macro.__init__): improved macros to properly
5585 handle magic commands in them.
5589 handle magic commands in them.
5586 (Magic.magic_logstart): usernames are now expanded so 'logstart
5590 (Magic.magic_logstart): usernames are now expanded so 'logstart
5587 ~/mylog' now works.
5591 ~/mylog' now works.
5588
5592
5589 * IPython/iplib.py (complete): fixed bug where paths starting with
5593 * IPython/iplib.py (complete): fixed bug where paths starting with
5590 '/' would be completed as magic names.
5594 '/' would be completed as magic names.
5591
5595
5592 2002-05-04 Fernando Perez <fperez@colorado.edu>
5596 2002-05-04 Fernando Perez <fperez@colorado.edu>
5593
5597
5594 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5598 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5595 allow running full programs under the profiler's control.
5599 allow running full programs under the profiler's control.
5596
5600
5597 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5601 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5598 mode to report exceptions verbosely but without formatting
5602 mode to report exceptions verbosely but without formatting
5599 variables. This addresses the issue of ipython 'freezing' (it's
5603 variables. This addresses the issue of ipython 'freezing' (it's
5600 not frozen, but caught in an expensive formatting loop) when huge
5604 not frozen, but caught in an expensive formatting loop) when huge
5601 variables are in the context of an exception.
5605 variables are in the context of an exception.
5602 (VerboseTB.text): Added '--->' markers at line where exception was
5606 (VerboseTB.text): Added '--->' markers at line where exception was
5603 triggered. Much clearer to read, especially in NoColor modes.
5607 triggered. Much clearer to read, especially in NoColor modes.
5604
5608
5605 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5609 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5606 implemented in reverse when changing to the new parse_options().
5610 implemented in reverse when changing to the new parse_options().
5607
5611
5608 2002-05-03 Fernando Perez <fperez@colorado.edu>
5612 2002-05-03 Fernando Perez <fperez@colorado.edu>
5609
5613
5610 * IPython/Magic.py (Magic.parse_options): new function so that
5614 * IPython/Magic.py (Magic.parse_options): new function so that
5611 magics can parse options easier.
5615 magics can parse options easier.
5612 (Magic.magic_prun): new function similar to profile.run(),
5616 (Magic.magic_prun): new function similar to profile.run(),
5613 suggested by Chris Hart.
5617 suggested by Chris Hart.
5614 (Magic.magic_cd): fixed behavior so that it only changes if
5618 (Magic.magic_cd): fixed behavior so that it only changes if
5615 directory actually is in history.
5619 directory actually is in history.
5616
5620
5617 * IPython/usage.py (__doc__): added information about potential
5621 * IPython/usage.py (__doc__): added information about potential
5618 slowness of Verbose exception mode when there are huge data
5622 slowness of Verbose exception mode when there are huge data
5619 structures to be formatted (thanks to Archie Paulson).
5623 structures to be formatted (thanks to Archie Paulson).
5620
5624
5621 * IPython/ipmaker.py (make_IPython): Changed default logging
5625 * IPython/ipmaker.py (make_IPython): Changed default logging
5622 (when simply called with -log) to use curr_dir/ipython.log in
5626 (when simply called with -log) to use curr_dir/ipython.log in
5623 rotate mode. Fixed crash which was occuring with -log before
5627 rotate mode. Fixed crash which was occuring with -log before
5624 (thanks to Jim Boyle).
5628 (thanks to Jim Boyle).
5625
5629
5626 2002-05-01 Fernando Perez <fperez@colorado.edu>
5630 2002-05-01 Fernando Perez <fperez@colorado.edu>
5627
5631
5628 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5632 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5629 was nasty -- though somewhat of a corner case).
5633 was nasty -- though somewhat of a corner case).
5630
5634
5631 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5635 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5632 text (was a bug).
5636 text (was a bug).
5633
5637
5634 2002-04-30 Fernando Perez <fperez@colorado.edu>
5638 2002-04-30 Fernando Perez <fperez@colorado.edu>
5635
5639
5636 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5640 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5637 a print after ^D or ^C from the user so that the In[] prompt
5641 a print after ^D or ^C from the user so that the In[] prompt
5638 doesn't over-run the gnuplot one.
5642 doesn't over-run the gnuplot one.
5639
5643
5640 2002-04-29 Fernando Perez <fperez@colorado.edu>
5644 2002-04-29 Fernando Perez <fperez@colorado.edu>
5641
5645
5642 * Released 0.2.10
5646 * Released 0.2.10
5643
5647
5644 * IPython/__release__.py (version): get date dynamically.
5648 * IPython/__release__.py (version): get date dynamically.
5645
5649
5646 * Misc. documentation updates thanks to Arnd's comments. Also ran
5650 * Misc. documentation updates thanks to Arnd's comments. Also ran
5647 a full spellcheck on the manual (hadn't been done in a while).
5651 a full spellcheck on the manual (hadn't been done in a while).
5648
5652
5649 2002-04-27 Fernando Perez <fperez@colorado.edu>
5653 2002-04-27 Fernando Perez <fperez@colorado.edu>
5650
5654
5651 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5655 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5652 starting a log in mid-session would reset the input history list.
5656 starting a log in mid-session would reset the input history list.
5653
5657
5654 2002-04-26 Fernando Perez <fperez@colorado.edu>
5658 2002-04-26 Fernando Perez <fperez@colorado.edu>
5655
5659
5656 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5660 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5657 all files were being included in an update. Now anything in
5661 all files were being included in an update. Now anything in
5658 UserConfig that matches [A-Za-z]*.py will go (this excludes
5662 UserConfig that matches [A-Za-z]*.py will go (this excludes
5659 __init__.py)
5663 __init__.py)
5660
5664
5661 2002-04-25 Fernando Perez <fperez@colorado.edu>
5665 2002-04-25 Fernando Perez <fperez@colorado.edu>
5662
5666
5663 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5667 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5664 to __builtins__ so that any form of embedded or imported code can
5668 to __builtins__ so that any form of embedded or imported code can
5665 test for being inside IPython.
5669 test for being inside IPython.
5666
5670
5667 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5671 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5668 changed to GnuplotMagic because it's now an importable module,
5672 changed to GnuplotMagic because it's now an importable module,
5669 this makes the name follow that of the standard Gnuplot module.
5673 this makes the name follow that of the standard Gnuplot module.
5670 GnuplotMagic can now be loaded at any time in mid-session.
5674 GnuplotMagic can now be loaded at any time in mid-session.
5671
5675
5672 2002-04-24 Fernando Perez <fperez@colorado.edu>
5676 2002-04-24 Fernando Perez <fperez@colorado.edu>
5673
5677
5674 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5678 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5675 the globals (IPython has its own namespace) and the
5679 the globals (IPython has its own namespace) and the
5676 PhysicalQuantity stuff is much better anyway.
5680 PhysicalQuantity stuff is much better anyway.
5677
5681
5678 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5682 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5679 embedding example to standard user directory for
5683 embedding example to standard user directory for
5680 distribution. Also put it in the manual.
5684 distribution. Also put it in the manual.
5681
5685
5682 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5686 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5683 instance as first argument (so it doesn't rely on some obscure
5687 instance as first argument (so it doesn't rely on some obscure
5684 hidden global).
5688 hidden global).
5685
5689
5686 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5690 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5687 delimiters. While it prevents ().TAB from working, it allows
5691 delimiters. While it prevents ().TAB from working, it allows
5688 completions in open (... expressions. This is by far a more common
5692 completions in open (... expressions. This is by far a more common
5689 case.
5693 case.
5690
5694
5691 2002-04-23 Fernando Perez <fperez@colorado.edu>
5695 2002-04-23 Fernando Perez <fperez@colorado.edu>
5692
5696
5693 * IPython/Extensions/InterpreterPasteInput.py: new
5697 * IPython/Extensions/InterpreterPasteInput.py: new
5694 syntax-processing module for pasting lines with >>> or ... at the
5698 syntax-processing module for pasting lines with >>> or ... at the
5695 start.
5699 start.
5696
5700
5697 * IPython/Extensions/PhysicalQ_Interactive.py
5701 * IPython/Extensions/PhysicalQ_Interactive.py
5698 (PhysicalQuantityInteractive.__int__): fixed to work with either
5702 (PhysicalQuantityInteractive.__int__): fixed to work with either
5699 Numeric or math.
5703 Numeric or math.
5700
5704
5701 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5705 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5702 provided profiles. Now we have:
5706 provided profiles. Now we have:
5703 -math -> math module as * and cmath with its own namespace.
5707 -math -> math module as * and cmath with its own namespace.
5704 -numeric -> Numeric as *, plus gnuplot & grace
5708 -numeric -> Numeric as *, plus gnuplot & grace
5705 -physics -> same as before
5709 -physics -> same as before
5706
5710
5707 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5711 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5708 user-defined magics wouldn't be found by @magic if they were
5712 user-defined magics wouldn't be found by @magic if they were
5709 defined as class methods. Also cleaned up the namespace search
5713 defined as class methods. Also cleaned up the namespace search
5710 logic and the string building (to use %s instead of many repeated
5714 logic and the string building (to use %s instead of many repeated
5711 string adds).
5715 string adds).
5712
5716
5713 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5717 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5714 of user-defined magics to operate with class methods (cleaner, in
5718 of user-defined magics to operate with class methods (cleaner, in
5715 line with the gnuplot code).
5719 line with the gnuplot code).
5716
5720
5717 2002-04-22 Fernando Perez <fperez@colorado.edu>
5721 2002-04-22 Fernando Perez <fperez@colorado.edu>
5718
5722
5719 * setup.py: updated dependency list so that manual is updated when
5723 * setup.py: updated dependency list so that manual is updated when
5720 all included files change.
5724 all included files change.
5721
5725
5722 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5726 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5723 the delimiter removal option (the fix is ugly right now).
5727 the delimiter removal option (the fix is ugly right now).
5724
5728
5725 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5729 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5726 all of the math profile (quicker loading, no conflict between
5730 all of the math profile (quicker loading, no conflict between
5727 g-9.8 and g-gnuplot).
5731 g-9.8 and g-gnuplot).
5728
5732
5729 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5733 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5730 name of post-mortem files to IPython_crash_report.txt.
5734 name of post-mortem files to IPython_crash_report.txt.
5731
5735
5732 * Cleanup/update of the docs. Added all the new readline info and
5736 * Cleanup/update of the docs. Added all the new readline info and
5733 formatted all lists as 'real lists'.
5737 formatted all lists as 'real lists'.
5734
5738
5735 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5739 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5736 tab-completion options, since the full readline parse_and_bind is
5740 tab-completion options, since the full readline parse_and_bind is
5737 now accessible.
5741 now accessible.
5738
5742
5739 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5743 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5740 handling of readline options. Now users can specify any string to
5744 handling of readline options. Now users can specify any string to
5741 be passed to parse_and_bind(), as well as the delimiters to be
5745 be passed to parse_and_bind(), as well as the delimiters to be
5742 removed.
5746 removed.
5743 (InteractiveShell.__init__): Added __name__ to the global
5747 (InteractiveShell.__init__): Added __name__ to the global
5744 namespace so that things like Itpl which rely on its existence
5748 namespace so that things like Itpl which rely on its existence
5745 don't crash.
5749 don't crash.
5746 (InteractiveShell._prefilter): Defined the default with a _ so
5750 (InteractiveShell._prefilter): Defined the default with a _ so
5747 that prefilter() is easier to override, while the default one
5751 that prefilter() is easier to override, while the default one
5748 remains available.
5752 remains available.
5749
5753
5750 2002-04-18 Fernando Perez <fperez@colorado.edu>
5754 2002-04-18 Fernando Perez <fperez@colorado.edu>
5751
5755
5752 * Added information about pdb in the docs.
5756 * Added information about pdb in the docs.
5753
5757
5754 2002-04-17 Fernando Perez <fperez@colorado.edu>
5758 2002-04-17 Fernando Perez <fperez@colorado.edu>
5755
5759
5756 * IPython/ipmaker.py (make_IPython): added rc_override option to
5760 * IPython/ipmaker.py (make_IPython): added rc_override option to
5757 allow passing config options at creation time which may override
5761 allow passing config options at creation time which may override
5758 anything set in the config files or command line. This is
5762 anything set in the config files or command line. This is
5759 particularly useful for configuring embedded instances.
5763 particularly useful for configuring embedded instances.
5760
5764
5761 2002-04-15 Fernando Perez <fperez@colorado.edu>
5765 2002-04-15 Fernando Perez <fperez@colorado.edu>
5762
5766
5763 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5767 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5764 crash embedded instances because of the input cache falling out of
5768 crash embedded instances because of the input cache falling out of
5765 sync with the output counter.
5769 sync with the output counter.
5766
5770
5767 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5771 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5768 mode which calls pdb after an uncaught exception in IPython itself.
5772 mode which calls pdb after an uncaught exception in IPython itself.
5769
5773
5770 2002-04-14 Fernando Perez <fperez@colorado.edu>
5774 2002-04-14 Fernando Perez <fperez@colorado.edu>
5771
5775
5772 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5776 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5773 readline, fix it back after each call.
5777 readline, fix it back after each call.
5774
5778
5775 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5779 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5776 method to force all access via __call__(), which guarantees that
5780 method to force all access via __call__(), which guarantees that
5777 traceback references are properly deleted.
5781 traceback references are properly deleted.
5778
5782
5779 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5783 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5780 improve printing when pprint is in use.
5784 improve printing when pprint is in use.
5781
5785
5782 2002-04-13 Fernando Perez <fperez@colorado.edu>
5786 2002-04-13 Fernando Perez <fperez@colorado.edu>
5783
5787
5784 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5788 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5785 exceptions aren't caught anymore. If the user triggers one, he
5789 exceptions aren't caught anymore. If the user triggers one, he
5786 should know why he's doing it and it should go all the way up,
5790 should know why he's doing it and it should go all the way up,
5787 just like any other exception. So now @abort will fully kill the
5791 just like any other exception. So now @abort will fully kill the
5788 embedded interpreter and the embedding code (unless that happens
5792 embedded interpreter and the embedding code (unless that happens
5789 to catch SystemExit).
5793 to catch SystemExit).
5790
5794
5791 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5795 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5792 and a debugger() method to invoke the interactive pdb debugger
5796 and a debugger() method to invoke the interactive pdb debugger
5793 after printing exception information. Also added the corresponding
5797 after printing exception information. Also added the corresponding
5794 -pdb option and @pdb magic to control this feature, and updated
5798 -pdb option and @pdb magic to control this feature, and updated
5795 the docs. After a suggestion from Christopher Hart
5799 the docs. After a suggestion from Christopher Hart
5796 (hart-AT-caltech.edu).
5800 (hart-AT-caltech.edu).
5797
5801
5798 2002-04-12 Fernando Perez <fperez@colorado.edu>
5802 2002-04-12 Fernando Perez <fperez@colorado.edu>
5799
5803
5800 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5804 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5801 the exception handlers defined by the user (not the CrashHandler)
5805 the exception handlers defined by the user (not the CrashHandler)
5802 so that user exceptions don't trigger an ipython bug report.
5806 so that user exceptions don't trigger an ipython bug report.
5803
5807
5804 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5808 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5805 configurable (it should have always been so).
5809 configurable (it should have always been so).
5806
5810
5807 2002-03-26 Fernando Perez <fperez@colorado.edu>
5811 2002-03-26 Fernando Perez <fperez@colorado.edu>
5808
5812
5809 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5813 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5810 and there to fix embedding namespace issues. This should all be
5814 and there to fix embedding namespace issues. This should all be
5811 done in a more elegant way.
5815 done in a more elegant way.
5812
5816
5813 2002-03-25 Fernando Perez <fperez@colorado.edu>
5817 2002-03-25 Fernando Perez <fperez@colorado.edu>
5814
5818
5815 * IPython/genutils.py (get_home_dir): Try to make it work under
5819 * IPython/genutils.py (get_home_dir): Try to make it work under
5816 win9x also.
5820 win9x also.
5817
5821
5818 2002-03-20 Fernando Perez <fperez@colorado.edu>
5822 2002-03-20 Fernando Perez <fperez@colorado.edu>
5819
5823
5820 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5824 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5821 sys.displayhook untouched upon __init__.
5825 sys.displayhook untouched upon __init__.
5822
5826
5823 2002-03-19 Fernando Perez <fperez@colorado.edu>
5827 2002-03-19 Fernando Perez <fperez@colorado.edu>
5824
5828
5825 * Released 0.2.9 (for embedding bug, basically).
5829 * Released 0.2.9 (for embedding bug, basically).
5826
5830
5827 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5831 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5828 exceptions so that enclosing shell's state can be restored.
5832 exceptions so that enclosing shell's state can be restored.
5829
5833
5830 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5834 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5831 naming conventions in the .ipython/ dir.
5835 naming conventions in the .ipython/ dir.
5832
5836
5833 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5837 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5834 from delimiters list so filenames with - in them get expanded.
5838 from delimiters list so filenames with - in them get expanded.
5835
5839
5836 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5840 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5837 sys.displayhook not being properly restored after an embedded call.
5841 sys.displayhook not being properly restored after an embedded call.
5838
5842
5839 2002-03-18 Fernando Perez <fperez@colorado.edu>
5843 2002-03-18 Fernando Perez <fperez@colorado.edu>
5840
5844
5841 * Released 0.2.8
5845 * Released 0.2.8
5842
5846
5843 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5847 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5844 some files weren't being included in a -upgrade.
5848 some files weren't being included in a -upgrade.
5845 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5849 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5846 on' so that the first tab completes.
5850 on' so that the first tab completes.
5847 (InteractiveShell.handle_magic): fixed bug with spaces around
5851 (InteractiveShell.handle_magic): fixed bug with spaces around
5848 quotes breaking many magic commands.
5852 quotes breaking many magic commands.
5849
5853
5850 * setup.py: added note about ignoring the syntax error messages at
5854 * setup.py: added note about ignoring the syntax error messages at
5851 installation.
5855 installation.
5852
5856
5853 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5857 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5854 streamlining the gnuplot interface, now there's only one magic @gp.
5858 streamlining the gnuplot interface, now there's only one magic @gp.
5855
5859
5856 2002-03-17 Fernando Perez <fperez@colorado.edu>
5860 2002-03-17 Fernando Perez <fperez@colorado.edu>
5857
5861
5858 * IPython/UserConfig/magic_gnuplot.py: new name for the
5862 * IPython/UserConfig/magic_gnuplot.py: new name for the
5859 example-magic_pm.py file. Much enhanced system, now with a shell
5863 example-magic_pm.py file. Much enhanced system, now with a shell
5860 for communicating directly with gnuplot, one command at a time.
5864 for communicating directly with gnuplot, one command at a time.
5861
5865
5862 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5866 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5863 setting __name__=='__main__'.
5867 setting __name__=='__main__'.
5864
5868
5865 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5869 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5866 mini-shell for accessing gnuplot from inside ipython. Should
5870 mini-shell for accessing gnuplot from inside ipython. Should
5867 extend it later for grace access too. Inspired by Arnd's
5871 extend it later for grace access too. Inspired by Arnd's
5868 suggestion.
5872 suggestion.
5869
5873
5870 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5874 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5871 calling magic functions with () in their arguments. Thanks to Arnd
5875 calling magic functions with () in their arguments. Thanks to Arnd
5872 Baecker for pointing this to me.
5876 Baecker for pointing this to me.
5873
5877
5874 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5878 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5875 infinitely for integer or complex arrays (only worked with floats).
5879 infinitely for integer or complex arrays (only worked with floats).
5876
5880
5877 2002-03-16 Fernando Perez <fperez@colorado.edu>
5881 2002-03-16 Fernando Perez <fperez@colorado.edu>
5878
5882
5879 * setup.py: Merged setup and setup_windows into a single script
5883 * setup.py: Merged setup and setup_windows into a single script
5880 which properly handles things for windows users.
5884 which properly handles things for windows users.
5881
5885
5882 2002-03-15 Fernando Perez <fperez@colorado.edu>
5886 2002-03-15 Fernando Perez <fperez@colorado.edu>
5883
5887
5884 * Big change to the manual: now the magics are all automatically
5888 * Big change to the manual: now the magics are all automatically
5885 documented. This information is generated from their docstrings
5889 documented. This information is generated from their docstrings
5886 and put in a latex file included by the manual lyx file. This way
5890 and put in a latex file included by the manual lyx file. This way
5887 we get always up to date information for the magics. The manual
5891 we get always up to date information for the magics. The manual
5888 now also has proper version information, also auto-synced.
5892 now also has proper version information, also auto-synced.
5889
5893
5890 For this to work, an undocumented --magic_docstrings option was added.
5894 For this to work, an undocumented --magic_docstrings option was added.
5891
5895
5892 2002-03-13 Fernando Perez <fperez@colorado.edu>
5896 2002-03-13 Fernando Perez <fperez@colorado.edu>
5893
5897
5894 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5898 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5895 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5899 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5896
5900
5897 2002-03-12 Fernando Perez <fperez@colorado.edu>
5901 2002-03-12 Fernando Perez <fperez@colorado.edu>
5898
5902
5899 * IPython/ultraTB.py (TermColors): changed color escapes again to
5903 * IPython/ultraTB.py (TermColors): changed color escapes again to
5900 fix the (old, reintroduced) line-wrapping bug. Basically, if
5904 fix the (old, reintroduced) line-wrapping bug. Basically, if
5901 \001..\002 aren't given in the color escapes, lines get wrapped
5905 \001..\002 aren't given in the color escapes, lines get wrapped
5902 weirdly. But giving those screws up old xterms and emacs terms. So
5906 weirdly. But giving those screws up old xterms and emacs terms. So
5903 I added some logic for emacs terms to be ok, but I can't identify old
5907 I added some logic for emacs terms to be ok, but I can't identify old
5904 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5908 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5905
5909
5906 2002-03-10 Fernando Perez <fperez@colorado.edu>
5910 2002-03-10 Fernando Perez <fperez@colorado.edu>
5907
5911
5908 * IPython/usage.py (__doc__): Various documentation cleanups and
5912 * IPython/usage.py (__doc__): Various documentation cleanups and
5909 updates, both in usage docstrings and in the manual.
5913 updates, both in usage docstrings and in the manual.
5910
5914
5911 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5915 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5912 handling of caching. Set minimum acceptabe value for having a
5916 handling of caching. Set minimum acceptabe value for having a
5913 cache at 20 values.
5917 cache at 20 values.
5914
5918
5915 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5919 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5916 install_first_time function to a method, renamed it and added an
5920 install_first_time function to a method, renamed it and added an
5917 'upgrade' mode. Now people can update their config directory with
5921 'upgrade' mode. Now people can update their config directory with
5918 a simple command line switch (-upgrade, also new).
5922 a simple command line switch (-upgrade, also new).
5919
5923
5920 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5924 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5921 @file (convenient for automagic users under Python >= 2.2).
5925 @file (convenient for automagic users under Python >= 2.2).
5922 Removed @files (it seemed more like a plural than an abbrev. of
5926 Removed @files (it seemed more like a plural than an abbrev. of
5923 'file show').
5927 'file show').
5924
5928
5925 * IPython/iplib.py (install_first_time): Fixed crash if there were
5929 * IPython/iplib.py (install_first_time): Fixed crash if there were
5926 backup files ('~') in .ipython/ install directory.
5930 backup files ('~') in .ipython/ install directory.
5927
5931
5928 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5932 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5929 system. Things look fine, but these changes are fairly
5933 system. Things look fine, but these changes are fairly
5930 intrusive. Test them for a few days.
5934 intrusive. Test them for a few days.
5931
5935
5932 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5936 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5933 the prompts system. Now all in/out prompt strings are user
5937 the prompts system. Now all in/out prompt strings are user
5934 controllable. This is particularly useful for embedding, as one
5938 controllable. This is particularly useful for embedding, as one
5935 can tag embedded instances with particular prompts.
5939 can tag embedded instances with particular prompts.
5936
5940
5937 Also removed global use of sys.ps1/2, which now allows nested
5941 Also removed global use of sys.ps1/2, which now allows nested
5938 embeddings without any problems. Added command-line options for
5942 embeddings without any problems. Added command-line options for
5939 the prompt strings.
5943 the prompt strings.
5940
5944
5941 2002-03-08 Fernando Perez <fperez@colorado.edu>
5945 2002-03-08 Fernando Perez <fperez@colorado.edu>
5942
5946
5943 * IPython/UserConfig/example-embed-short.py (ipshell): added
5947 * IPython/UserConfig/example-embed-short.py (ipshell): added
5944 example file with the bare minimum code for embedding.
5948 example file with the bare minimum code for embedding.
5945
5949
5946 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5950 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5947 functionality for the embeddable shell to be activated/deactivated
5951 functionality for the embeddable shell to be activated/deactivated
5948 either globally or at each call.
5952 either globally or at each call.
5949
5953
5950 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5954 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5951 rewriting the prompt with '--->' for auto-inputs with proper
5955 rewriting the prompt with '--->' for auto-inputs with proper
5952 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5956 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5953 this is handled by the prompts class itself, as it should.
5957 this is handled by the prompts class itself, as it should.
5954
5958
5955 2002-03-05 Fernando Perez <fperez@colorado.edu>
5959 2002-03-05 Fernando Perez <fperez@colorado.edu>
5956
5960
5957 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5961 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5958 @logstart to avoid name clashes with the math log function.
5962 @logstart to avoid name clashes with the math log function.
5959
5963
5960 * Big updates to X/Emacs section of the manual.
5964 * Big updates to X/Emacs section of the manual.
5961
5965
5962 * Removed ipython_emacs. Milan explained to me how to pass
5966 * Removed ipython_emacs. Milan explained to me how to pass
5963 arguments to ipython through Emacs. Some day I'm going to end up
5967 arguments to ipython through Emacs. Some day I'm going to end up
5964 learning some lisp...
5968 learning some lisp...
5965
5969
5966 2002-03-04 Fernando Perez <fperez@colorado.edu>
5970 2002-03-04 Fernando Perez <fperez@colorado.edu>
5967
5971
5968 * IPython/ipython_emacs: Created script to be used as the
5972 * IPython/ipython_emacs: Created script to be used as the
5969 py-python-command Emacs variable so we can pass IPython
5973 py-python-command Emacs variable so we can pass IPython
5970 parameters. I can't figure out how to tell Emacs directly to pass
5974 parameters. I can't figure out how to tell Emacs directly to pass
5971 parameters to IPython, so a dummy shell script will do it.
5975 parameters to IPython, so a dummy shell script will do it.
5972
5976
5973 Other enhancements made for things to work better under Emacs'
5977 Other enhancements made for things to work better under Emacs'
5974 various types of terminals. Many thanks to Milan Zamazal
5978 various types of terminals. Many thanks to Milan Zamazal
5975 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5979 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5976
5980
5977 2002-03-01 Fernando Perez <fperez@colorado.edu>
5981 2002-03-01 Fernando Perez <fperez@colorado.edu>
5978
5982
5979 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5983 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5980 that loading of readline is now optional. This gives better
5984 that loading of readline is now optional. This gives better
5981 control to emacs users.
5985 control to emacs users.
5982
5986
5983 * IPython/ultraTB.py (__date__): Modified color escape sequences
5987 * IPython/ultraTB.py (__date__): Modified color escape sequences
5984 and now things work fine under xterm and in Emacs' term buffers
5988 and now things work fine under xterm and in Emacs' term buffers
5985 (though not shell ones). Well, in emacs you get colors, but all
5989 (though not shell ones). Well, in emacs you get colors, but all
5986 seem to be 'light' colors (no difference between dark and light
5990 seem to be 'light' colors (no difference between dark and light
5987 ones). But the garbage chars are gone, and also in xterms. It
5991 ones). But the garbage chars are gone, and also in xterms. It
5988 seems that now I'm using 'cleaner' ansi sequences.
5992 seems that now I'm using 'cleaner' ansi sequences.
5989
5993
5990 2002-02-21 Fernando Perez <fperez@colorado.edu>
5994 2002-02-21 Fernando Perez <fperez@colorado.edu>
5991
5995
5992 * Released 0.2.7 (mainly to publish the scoping fix).
5996 * Released 0.2.7 (mainly to publish the scoping fix).
5993
5997
5994 * IPython/Logger.py (Logger.logstate): added. A corresponding
5998 * IPython/Logger.py (Logger.logstate): added. A corresponding
5995 @logstate magic was created.
5999 @logstate magic was created.
5996
6000
5997 * IPython/Magic.py: fixed nested scoping problem under Python
6001 * IPython/Magic.py: fixed nested scoping problem under Python
5998 2.1.x (automagic wasn't working).
6002 2.1.x (automagic wasn't working).
5999
6003
6000 2002-02-20 Fernando Perez <fperez@colorado.edu>
6004 2002-02-20 Fernando Perez <fperez@colorado.edu>
6001
6005
6002 * Released 0.2.6.
6006 * Released 0.2.6.
6003
6007
6004 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
6008 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
6005 option so that logs can come out without any headers at all.
6009 option so that logs can come out without any headers at all.
6006
6010
6007 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
6011 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
6008 SciPy.
6012 SciPy.
6009
6013
6010 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6014 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6011 that embedded IPython calls don't require vars() to be explicitly
6015 that embedded IPython calls don't require vars() to be explicitly
6012 passed. Now they are extracted from the caller's frame (code
6016 passed. Now they are extracted from the caller's frame (code
6013 snatched from Eric Jones' weave). Added better documentation to
6017 snatched from Eric Jones' weave). Added better documentation to
6014 the section on embedding and the example file.
6018 the section on embedding and the example file.
6015
6019
6016 * IPython/genutils.py (page): Changed so that under emacs, it just
6020 * IPython/genutils.py (page): Changed so that under emacs, it just
6017 prints the string. You can then page up and down in the emacs
6021 prints the string. You can then page up and down in the emacs
6018 buffer itself. This is how the builtin help() works.
6022 buffer itself. This is how the builtin help() works.
6019
6023
6020 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6024 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6021 macro scoping: macros need to be executed in the user's namespace
6025 macro scoping: macros need to be executed in the user's namespace
6022 to work as if they had been typed by the user.
6026 to work as if they had been typed by the user.
6023
6027
6024 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6028 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6025 execute automatically (no need to type 'exec...'). They then
6029 execute automatically (no need to type 'exec...'). They then
6026 behave like 'true macros'. The printing system was also modified
6030 behave like 'true macros'. The printing system was also modified
6027 for this to work.
6031 for this to work.
6028
6032
6029 2002-02-19 Fernando Perez <fperez@colorado.edu>
6033 2002-02-19 Fernando Perez <fperez@colorado.edu>
6030
6034
6031 * IPython/genutils.py (page_file): new function for paging files
6035 * IPython/genutils.py (page_file): new function for paging files
6032 in an OS-independent way. Also necessary for file viewing to work
6036 in an OS-independent way. Also necessary for file viewing to work
6033 well inside Emacs buffers.
6037 well inside Emacs buffers.
6034 (page): Added checks for being in an emacs buffer.
6038 (page): Added checks for being in an emacs buffer.
6035 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6039 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6036 same bug in iplib.
6040 same bug in iplib.
6037
6041
6038 2002-02-18 Fernando Perez <fperez@colorado.edu>
6042 2002-02-18 Fernando Perez <fperez@colorado.edu>
6039
6043
6040 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6044 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6041 of readline so that IPython can work inside an Emacs buffer.
6045 of readline so that IPython can work inside an Emacs buffer.
6042
6046
6043 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6047 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6044 method signatures (they weren't really bugs, but it looks cleaner
6048 method signatures (they weren't really bugs, but it looks cleaner
6045 and keeps PyChecker happy).
6049 and keeps PyChecker happy).
6046
6050
6047 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6051 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6048 for implementing various user-defined hooks. Currently only
6052 for implementing various user-defined hooks. Currently only
6049 display is done.
6053 display is done.
6050
6054
6051 * IPython/Prompts.py (CachedOutput._display): changed display
6055 * IPython/Prompts.py (CachedOutput._display): changed display
6052 functions so that they can be dynamically changed by users easily.
6056 functions so that they can be dynamically changed by users easily.
6053
6057
6054 * IPython/Extensions/numeric_formats.py (num_display): added an
6058 * IPython/Extensions/numeric_formats.py (num_display): added an
6055 extension for printing NumPy arrays in flexible manners. It
6059 extension for printing NumPy arrays in flexible manners. It
6056 doesn't do anything yet, but all the structure is in
6060 doesn't do anything yet, but all the structure is in
6057 place. Ultimately the plan is to implement output format control
6061 place. Ultimately the plan is to implement output format control
6058 like in Octave.
6062 like in Octave.
6059
6063
6060 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6064 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6061 methods are found at run-time by all the automatic machinery.
6065 methods are found at run-time by all the automatic machinery.
6062
6066
6063 2002-02-17 Fernando Perez <fperez@colorado.edu>
6067 2002-02-17 Fernando Perez <fperez@colorado.edu>
6064
6068
6065 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6069 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6066 whole file a little.
6070 whole file a little.
6067
6071
6068 * ToDo: closed this document. Now there's a new_design.lyx
6072 * ToDo: closed this document. Now there's a new_design.lyx
6069 document for all new ideas. Added making a pdf of it for the
6073 document for all new ideas. Added making a pdf of it for the
6070 end-user distro.
6074 end-user distro.
6071
6075
6072 * IPython/Logger.py (Logger.switch_log): Created this to replace
6076 * IPython/Logger.py (Logger.switch_log): Created this to replace
6073 logon() and logoff(). It also fixes a nasty crash reported by
6077 logon() and logoff(). It also fixes a nasty crash reported by
6074 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6078 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6075
6079
6076 * IPython/iplib.py (complete): got auto-completion to work with
6080 * IPython/iplib.py (complete): got auto-completion to work with
6077 automagic (I had wanted this for a long time).
6081 automagic (I had wanted this for a long time).
6078
6082
6079 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6083 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6080 to @file, since file() is now a builtin and clashes with automagic
6084 to @file, since file() is now a builtin and clashes with automagic
6081 for @file.
6085 for @file.
6082
6086
6083 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6087 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6084 of this was previously in iplib, which had grown to more than 2000
6088 of this was previously in iplib, which had grown to more than 2000
6085 lines, way too long. No new functionality, but it makes managing
6089 lines, way too long. No new functionality, but it makes managing
6086 the code a bit easier.
6090 the code a bit easier.
6087
6091
6088 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6092 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6089 information to crash reports.
6093 information to crash reports.
6090
6094
6091 2002-02-12 Fernando Perez <fperez@colorado.edu>
6095 2002-02-12 Fernando Perez <fperez@colorado.edu>
6092
6096
6093 * Released 0.2.5.
6097 * Released 0.2.5.
6094
6098
6095 2002-02-11 Fernando Perez <fperez@colorado.edu>
6099 2002-02-11 Fernando Perez <fperez@colorado.edu>
6096
6100
6097 * Wrote a relatively complete Windows installer. It puts
6101 * Wrote a relatively complete Windows installer. It puts
6098 everything in place, creates Start Menu entries and fixes the
6102 everything in place, creates Start Menu entries and fixes the
6099 color issues. Nothing fancy, but it works.
6103 color issues. Nothing fancy, but it works.
6100
6104
6101 2002-02-10 Fernando Perez <fperez@colorado.edu>
6105 2002-02-10 Fernando Perez <fperez@colorado.edu>
6102
6106
6103 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6107 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6104 os.path.expanduser() call so that we can type @run ~/myfile.py and
6108 os.path.expanduser() call so that we can type @run ~/myfile.py and
6105 have thigs work as expected.
6109 have thigs work as expected.
6106
6110
6107 * IPython/genutils.py (page): fixed exception handling so things
6111 * IPython/genutils.py (page): fixed exception handling so things
6108 work both in Unix and Windows correctly. Quitting a pager triggers
6112 work both in Unix and Windows correctly. Quitting a pager triggers
6109 an IOError/broken pipe in Unix, and in windows not finding a pager
6113 an IOError/broken pipe in Unix, and in windows not finding a pager
6110 is also an IOError, so I had to actually look at the return value
6114 is also an IOError, so I had to actually look at the return value
6111 of the exception, not just the exception itself. Should be ok now.
6115 of the exception, not just the exception itself. Should be ok now.
6112
6116
6113 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6117 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6114 modified to allow case-insensitive color scheme changes.
6118 modified to allow case-insensitive color scheme changes.
6115
6119
6116 2002-02-09 Fernando Perez <fperez@colorado.edu>
6120 2002-02-09 Fernando Perez <fperez@colorado.edu>
6117
6121
6118 * IPython/genutils.py (native_line_ends): new function to leave
6122 * IPython/genutils.py (native_line_ends): new function to leave
6119 user config files with os-native line-endings.
6123 user config files with os-native line-endings.
6120
6124
6121 * README and manual updates.
6125 * README and manual updates.
6122
6126
6123 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6127 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6124 instead of StringType to catch Unicode strings.
6128 instead of StringType to catch Unicode strings.
6125
6129
6126 * IPython/genutils.py (filefind): fixed bug for paths with
6130 * IPython/genutils.py (filefind): fixed bug for paths with
6127 embedded spaces (very common in Windows).
6131 embedded spaces (very common in Windows).
6128
6132
6129 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6133 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6130 files under Windows, so that they get automatically associated
6134 files under Windows, so that they get automatically associated
6131 with a text editor. Windows makes it a pain to handle
6135 with a text editor. Windows makes it a pain to handle
6132 extension-less files.
6136 extension-less files.
6133
6137
6134 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6138 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6135 warning about readline only occur for Posix. In Windows there's no
6139 warning about readline only occur for Posix. In Windows there's no
6136 way to get readline, so why bother with the warning.
6140 way to get readline, so why bother with the warning.
6137
6141
6138 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6142 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6139 for __str__ instead of dir(self), since dir() changed in 2.2.
6143 for __str__ instead of dir(self), since dir() changed in 2.2.
6140
6144
6141 * Ported to Windows! Tested on XP, I suspect it should work fine
6145 * Ported to Windows! Tested on XP, I suspect it should work fine
6142 on NT/2000, but I don't think it will work on 98 et al. That
6146 on NT/2000, but I don't think it will work on 98 et al. That
6143 series of Windows is such a piece of junk anyway that I won't try
6147 series of Windows is such a piece of junk anyway that I won't try
6144 porting it there. The XP port was straightforward, showed a few
6148 porting it there. The XP port was straightforward, showed a few
6145 bugs here and there (fixed all), in particular some string
6149 bugs here and there (fixed all), in particular some string
6146 handling stuff which required considering Unicode strings (which
6150 handling stuff which required considering Unicode strings (which
6147 Windows uses). This is good, but hasn't been too tested :) No
6151 Windows uses). This is good, but hasn't been too tested :) No
6148 fancy installer yet, I'll put a note in the manual so people at
6152 fancy installer yet, I'll put a note in the manual so people at
6149 least make manually a shortcut.
6153 least make manually a shortcut.
6150
6154
6151 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6155 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6152 into a single one, "colors". This now controls both prompt and
6156 into a single one, "colors". This now controls both prompt and
6153 exception color schemes, and can be changed both at startup
6157 exception color schemes, and can be changed both at startup
6154 (either via command-line switches or via ipythonrc files) and at
6158 (either via command-line switches or via ipythonrc files) and at
6155 runtime, with @colors.
6159 runtime, with @colors.
6156 (Magic.magic_run): renamed @prun to @run and removed the old
6160 (Magic.magic_run): renamed @prun to @run and removed the old
6157 @run. The two were too similar to warrant keeping both.
6161 @run. The two were too similar to warrant keeping both.
6158
6162
6159 2002-02-03 Fernando Perez <fperez@colorado.edu>
6163 2002-02-03 Fernando Perez <fperez@colorado.edu>
6160
6164
6161 * IPython/iplib.py (install_first_time): Added comment on how to
6165 * IPython/iplib.py (install_first_time): Added comment on how to
6162 configure the color options for first-time users. Put a <return>
6166 configure the color options for first-time users. Put a <return>
6163 request at the end so that small-terminal users get a chance to
6167 request at the end so that small-terminal users get a chance to
6164 read the startup info.
6168 read the startup info.
6165
6169
6166 2002-01-23 Fernando Perez <fperez@colorado.edu>
6170 2002-01-23 Fernando Perez <fperez@colorado.edu>
6167
6171
6168 * IPython/iplib.py (CachedOutput.update): Changed output memory
6172 * IPython/iplib.py (CachedOutput.update): Changed output memory
6169 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6173 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6170 input history we still use _i. Did this b/c these variable are
6174 input history we still use _i. Did this b/c these variable are
6171 very commonly used in interactive work, so the less we need to
6175 very commonly used in interactive work, so the less we need to
6172 type the better off we are.
6176 type the better off we are.
6173 (Magic.magic_prun): updated @prun to better handle the namespaces
6177 (Magic.magic_prun): updated @prun to better handle the namespaces
6174 the file will run in, including a fix for __name__ not being set
6178 the file will run in, including a fix for __name__ not being set
6175 before.
6179 before.
6176
6180
6177 2002-01-20 Fernando Perez <fperez@colorado.edu>
6181 2002-01-20 Fernando Perez <fperez@colorado.edu>
6178
6182
6179 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6183 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6180 extra garbage for Python 2.2. Need to look more carefully into
6184 extra garbage for Python 2.2. Need to look more carefully into
6181 this later.
6185 this later.
6182
6186
6183 2002-01-19 Fernando Perez <fperez@colorado.edu>
6187 2002-01-19 Fernando Perez <fperez@colorado.edu>
6184
6188
6185 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6189 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6186 display SyntaxError exceptions properly formatted when they occur
6190 display SyntaxError exceptions properly formatted when they occur
6187 (they can be triggered by imported code).
6191 (they can be triggered by imported code).
6188
6192
6189 2002-01-18 Fernando Perez <fperez@colorado.edu>
6193 2002-01-18 Fernando Perez <fperez@colorado.edu>
6190
6194
6191 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6195 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6192 SyntaxError exceptions are reported nicely formatted, instead of
6196 SyntaxError exceptions are reported nicely formatted, instead of
6193 spitting out only offset information as before.
6197 spitting out only offset information as before.
6194 (Magic.magic_prun): Added the @prun function for executing
6198 (Magic.magic_prun): Added the @prun function for executing
6195 programs with command line args inside IPython.
6199 programs with command line args inside IPython.
6196
6200
6197 2002-01-16 Fernando Perez <fperez@colorado.edu>
6201 2002-01-16 Fernando Perez <fperez@colorado.edu>
6198
6202
6199 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6203 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6200 to *not* include the last item given in a range. This brings their
6204 to *not* include the last item given in a range. This brings their
6201 behavior in line with Python's slicing:
6205 behavior in line with Python's slicing:
6202 a[n1:n2] -> a[n1]...a[n2-1]
6206 a[n1:n2] -> a[n1]...a[n2-1]
6203 It may be a bit less convenient, but I prefer to stick to Python's
6207 It may be a bit less convenient, but I prefer to stick to Python's
6204 conventions *everywhere*, so users never have to wonder.
6208 conventions *everywhere*, so users never have to wonder.
6205 (Magic.magic_macro): Added @macro function to ease the creation of
6209 (Magic.magic_macro): Added @macro function to ease the creation of
6206 macros.
6210 macros.
6207
6211
6208 2002-01-05 Fernando Perez <fperez@colorado.edu>
6212 2002-01-05 Fernando Perez <fperez@colorado.edu>
6209
6213
6210 * Released 0.2.4.
6214 * Released 0.2.4.
6211
6215
6212 * IPython/iplib.py (Magic.magic_pdef):
6216 * IPython/iplib.py (Magic.magic_pdef):
6213 (InteractiveShell.safe_execfile): report magic lines and error
6217 (InteractiveShell.safe_execfile): report magic lines and error
6214 lines without line numbers so one can easily copy/paste them for
6218 lines without line numbers so one can easily copy/paste them for
6215 re-execution.
6219 re-execution.
6216
6220
6217 * Updated manual with recent changes.
6221 * Updated manual with recent changes.
6218
6222
6219 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6223 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6220 docstring printing when class? is called. Very handy for knowing
6224 docstring printing when class? is called. Very handy for knowing
6221 how to create class instances (as long as __init__ is well
6225 how to create class instances (as long as __init__ is well
6222 documented, of course :)
6226 documented, of course :)
6223 (Magic.magic_doc): print both class and constructor docstrings.
6227 (Magic.magic_doc): print both class and constructor docstrings.
6224 (Magic.magic_pdef): give constructor info if passed a class and
6228 (Magic.magic_pdef): give constructor info if passed a class and
6225 __call__ info for callable object instances.
6229 __call__ info for callable object instances.
6226
6230
6227 2002-01-04 Fernando Perez <fperez@colorado.edu>
6231 2002-01-04 Fernando Perez <fperez@colorado.edu>
6228
6232
6229 * Made deep_reload() off by default. It doesn't always work
6233 * Made deep_reload() off by default. It doesn't always work
6230 exactly as intended, so it's probably safer to have it off. It's
6234 exactly as intended, so it's probably safer to have it off. It's
6231 still available as dreload() anyway, so nothing is lost.
6235 still available as dreload() anyway, so nothing is lost.
6232
6236
6233 2002-01-02 Fernando Perez <fperez@colorado.edu>
6237 2002-01-02 Fernando Perez <fperez@colorado.edu>
6234
6238
6235 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6239 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6236 so I wanted an updated release).
6240 so I wanted an updated release).
6237
6241
6238 2001-12-27 Fernando Perez <fperez@colorado.edu>
6242 2001-12-27 Fernando Perez <fperez@colorado.edu>
6239
6243
6240 * IPython/iplib.py (InteractiveShell.interact): Added the original
6244 * IPython/iplib.py (InteractiveShell.interact): Added the original
6241 code from 'code.py' for this module in order to change the
6245 code from 'code.py' for this module in order to change the
6242 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6246 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6243 the history cache would break when the user hit Ctrl-C, and
6247 the history cache would break when the user hit Ctrl-C, and
6244 interact() offers no way to add any hooks to it.
6248 interact() offers no way to add any hooks to it.
6245
6249
6246 2001-12-23 Fernando Perez <fperez@colorado.edu>
6250 2001-12-23 Fernando Perez <fperez@colorado.edu>
6247
6251
6248 * setup.py: added check for 'MANIFEST' before trying to remove
6252 * setup.py: added check for 'MANIFEST' before trying to remove
6249 it. Thanks to Sean Reifschneider.
6253 it. Thanks to Sean Reifschneider.
6250
6254
6251 2001-12-22 Fernando Perez <fperez@colorado.edu>
6255 2001-12-22 Fernando Perez <fperez@colorado.edu>
6252
6256
6253 * Released 0.2.2.
6257 * Released 0.2.2.
6254
6258
6255 * Finished (reasonably) writing the manual. Later will add the
6259 * Finished (reasonably) writing the manual. Later will add the
6256 python-standard navigation stylesheets, but for the time being
6260 python-standard navigation stylesheets, but for the time being
6257 it's fairly complete. Distribution will include html and pdf
6261 it's fairly complete. Distribution will include html and pdf
6258 versions.
6262 versions.
6259
6263
6260 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6264 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6261 (MayaVi author).
6265 (MayaVi author).
6262
6266
6263 2001-12-21 Fernando Perez <fperez@colorado.edu>
6267 2001-12-21 Fernando Perez <fperez@colorado.edu>
6264
6268
6265 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6269 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6266 good public release, I think (with the manual and the distutils
6270 good public release, I think (with the manual and the distutils
6267 installer). The manual can use some work, but that can go
6271 installer). The manual can use some work, but that can go
6268 slowly. Otherwise I think it's quite nice for end users. Next
6272 slowly. Otherwise I think it's quite nice for end users. Next
6269 summer, rewrite the guts of it...
6273 summer, rewrite the guts of it...
6270
6274
6271 * Changed format of ipythonrc files to use whitespace as the
6275 * Changed format of ipythonrc files to use whitespace as the
6272 separator instead of an explicit '='. Cleaner.
6276 separator instead of an explicit '='. Cleaner.
6273
6277
6274 2001-12-20 Fernando Perez <fperez@colorado.edu>
6278 2001-12-20 Fernando Perez <fperez@colorado.edu>
6275
6279
6276 * Started a manual in LyX. For now it's just a quick merge of the
6280 * Started a manual in LyX. For now it's just a quick merge of the
6277 various internal docstrings and READMEs. Later it may grow into a
6281 various internal docstrings and READMEs. Later it may grow into a
6278 nice, full-blown manual.
6282 nice, full-blown manual.
6279
6283
6280 * Set up a distutils based installer. Installation should now be
6284 * Set up a distutils based installer. Installation should now be
6281 trivially simple for end-users.
6285 trivially simple for end-users.
6282
6286
6283 2001-12-11 Fernando Perez <fperez@colorado.edu>
6287 2001-12-11 Fernando Perez <fperez@colorado.edu>
6284
6288
6285 * Released 0.2.0. First public release, announced it at
6289 * Released 0.2.0. First public release, announced it at
6286 comp.lang.python. From now on, just bugfixes...
6290 comp.lang.python. From now on, just bugfixes...
6287
6291
6288 * Went through all the files, set copyright/license notices and
6292 * Went through all the files, set copyright/license notices and
6289 cleaned up things. Ready for release.
6293 cleaned up things. Ready for release.
6290
6294
6291 2001-12-10 Fernando Perez <fperez@colorado.edu>
6295 2001-12-10 Fernando Perez <fperez@colorado.edu>
6292
6296
6293 * Changed the first-time installer not to use tarfiles. It's more
6297 * Changed the first-time installer not to use tarfiles. It's more
6294 robust now and less unix-dependent. Also makes it easier for
6298 robust now and less unix-dependent. Also makes it easier for
6295 people to later upgrade versions.
6299 people to later upgrade versions.
6296
6300
6297 * Changed @exit to @abort to reflect the fact that it's pretty
6301 * Changed @exit to @abort to reflect the fact that it's pretty
6298 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6302 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6299 becomes significant only when IPyhton is embedded: in that case,
6303 becomes significant only when IPyhton is embedded: in that case,
6300 C-D closes IPython only, but @abort kills the enclosing program
6304 C-D closes IPython only, but @abort kills the enclosing program
6301 too (unless it had called IPython inside a try catching
6305 too (unless it had called IPython inside a try catching
6302 SystemExit).
6306 SystemExit).
6303
6307
6304 * Created Shell module which exposes the actuall IPython Shell
6308 * Created Shell module which exposes the actuall IPython Shell
6305 classes, currently the normal and the embeddable one. This at
6309 classes, currently the normal and the embeddable one. This at
6306 least offers a stable interface we won't need to change when
6310 least offers a stable interface we won't need to change when
6307 (later) the internals are rewritten. That rewrite will be confined
6311 (later) the internals are rewritten. That rewrite will be confined
6308 to iplib and ipmaker, but the Shell interface should remain as is.
6312 to iplib and ipmaker, but the Shell interface should remain as is.
6309
6313
6310 * Added embed module which offers an embeddable IPShell object,
6314 * Added embed module which offers an embeddable IPShell object,
6311 useful to fire up IPython *inside* a running program. Great for
6315 useful to fire up IPython *inside* a running program. Great for
6312 debugging or dynamical data analysis.
6316 debugging or dynamical data analysis.
6313
6317
6314 2001-12-08 Fernando Perez <fperez@colorado.edu>
6318 2001-12-08 Fernando Perez <fperez@colorado.edu>
6315
6319
6316 * Fixed small bug preventing seeing info from methods of defined
6320 * Fixed small bug preventing seeing info from methods of defined
6317 objects (incorrect namespace in _ofind()).
6321 objects (incorrect namespace in _ofind()).
6318
6322
6319 * Documentation cleanup. Moved the main usage docstrings to a
6323 * Documentation cleanup. Moved the main usage docstrings to a
6320 separate file, usage.py (cleaner to maintain, and hopefully in the
6324 separate file, usage.py (cleaner to maintain, and hopefully in the
6321 future some perlpod-like way of producing interactive, man and
6325 future some perlpod-like way of producing interactive, man and
6322 html docs out of it will be found).
6326 html docs out of it will be found).
6323
6327
6324 * Added @profile to see your profile at any time.
6328 * Added @profile to see your profile at any time.
6325
6329
6326 * Added @p as an alias for 'print'. It's especially convenient if
6330 * Added @p as an alias for 'print'. It's especially convenient if
6327 using automagic ('p x' prints x).
6331 using automagic ('p x' prints x).
6328
6332
6329 * Small cleanups and fixes after a pychecker run.
6333 * Small cleanups and fixes after a pychecker run.
6330
6334
6331 * Changed the @cd command to handle @cd - and @cd -<n> for
6335 * Changed the @cd command to handle @cd - and @cd -<n> for
6332 visiting any directory in _dh.
6336 visiting any directory in _dh.
6333
6337
6334 * Introduced _dh, a history of visited directories. @dhist prints
6338 * Introduced _dh, a history of visited directories. @dhist prints
6335 it out with numbers.
6339 it out with numbers.
6336
6340
6337 2001-12-07 Fernando Perez <fperez@colorado.edu>
6341 2001-12-07 Fernando Perez <fperez@colorado.edu>
6338
6342
6339 * Released 0.1.22
6343 * Released 0.1.22
6340
6344
6341 * Made initialization a bit more robust against invalid color
6345 * Made initialization a bit more robust against invalid color
6342 options in user input (exit, not traceback-crash).
6346 options in user input (exit, not traceback-crash).
6343
6347
6344 * Changed the bug crash reporter to write the report only in the
6348 * Changed the bug crash reporter to write the report only in the
6345 user's .ipython directory. That way IPython won't litter people's
6349 user's .ipython directory. That way IPython won't litter people's
6346 hard disks with crash files all over the place. Also print on
6350 hard disks with crash files all over the place. Also print on
6347 screen the necessary mail command.
6351 screen the necessary mail command.
6348
6352
6349 * With the new ultraTB, implemented LightBG color scheme for light
6353 * With the new ultraTB, implemented LightBG color scheme for light
6350 background terminals. A lot of people like white backgrounds, so I
6354 background terminals. A lot of people like white backgrounds, so I
6351 guess we should at least give them something readable.
6355 guess we should at least give them something readable.
6352
6356
6353 2001-12-06 Fernando Perez <fperez@colorado.edu>
6357 2001-12-06 Fernando Perez <fperez@colorado.edu>
6354
6358
6355 * Modified the structure of ultraTB. Now there's a proper class
6359 * Modified the structure of ultraTB. Now there's a proper class
6356 for tables of color schemes which allow adding schemes easily and
6360 for tables of color schemes which allow adding schemes easily and
6357 switching the active scheme without creating a new instance every
6361 switching the active scheme without creating a new instance every
6358 time (which was ridiculous). The syntax for creating new schemes
6362 time (which was ridiculous). The syntax for creating new schemes
6359 is also cleaner. I think ultraTB is finally done, with a clean
6363 is also cleaner. I think ultraTB is finally done, with a clean
6360 class structure. Names are also much cleaner (now there's proper
6364 class structure. Names are also much cleaner (now there's proper
6361 color tables, no need for every variable to also have 'color' in
6365 color tables, no need for every variable to also have 'color' in
6362 its name).
6366 its name).
6363
6367
6364 * Broke down genutils into separate files. Now genutils only
6368 * Broke down genutils into separate files. Now genutils only
6365 contains utility functions, and classes have been moved to their
6369 contains utility functions, and classes have been moved to their
6366 own files (they had enough independent functionality to warrant
6370 own files (they had enough independent functionality to warrant
6367 it): ConfigLoader, OutputTrap, Struct.
6371 it): ConfigLoader, OutputTrap, Struct.
6368
6372
6369 2001-12-05 Fernando Perez <fperez@colorado.edu>
6373 2001-12-05 Fernando Perez <fperez@colorado.edu>
6370
6374
6371 * IPython turns 21! Released version 0.1.21, as a candidate for
6375 * IPython turns 21! Released version 0.1.21, as a candidate for
6372 public consumption. If all goes well, release in a few days.
6376 public consumption. If all goes well, release in a few days.
6373
6377
6374 * Fixed path bug (files in Extensions/ directory wouldn't be found
6378 * Fixed path bug (files in Extensions/ directory wouldn't be found
6375 unless IPython/ was explicitly in sys.path).
6379 unless IPython/ was explicitly in sys.path).
6376
6380
6377 * Extended the FlexCompleter class as MagicCompleter to allow
6381 * Extended the FlexCompleter class as MagicCompleter to allow
6378 completion of @-starting lines.
6382 completion of @-starting lines.
6379
6383
6380 * Created __release__.py file as a central repository for release
6384 * Created __release__.py file as a central repository for release
6381 info that other files can read from.
6385 info that other files can read from.
6382
6386
6383 * Fixed small bug in logging: when logging was turned on in
6387 * Fixed small bug in logging: when logging was turned on in
6384 mid-session, old lines with special meanings (!@?) were being
6388 mid-session, old lines with special meanings (!@?) were being
6385 logged without the prepended comment, which is necessary since
6389 logged without the prepended comment, which is necessary since
6386 they are not truly valid python syntax. This should make session
6390 they are not truly valid python syntax. This should make session
6387 restores produce less errors.
6391 restores produce less errors.
6388
6392
6389 * The namespace cleanup forced me to make a FlexCompleter class
6393 * The namespace cleanup forced me to make a FlexCompleter class
6390 which is nothing but a ripoff of rlcompleter, but with selectable
6394 which is nothing but a ripoff of rlcompleter, but with selectable
6391 namespace (rlcompleter only works in __main__.__dict__). I'll try
6395 namespace (rlcompleter only works in __main__.__dict__). I'll try
6392 to submit a note to the authors to see if this change can be
6396 to submit a note to the authors to see if this change can be
6393 incorporated in future rlcompleter releases (Dec.6: done)
6397 incorporated in future rlcompleter releases (Dec.6: done)
6394
6398
6395 * More fixes to namespace handling. It was a mess! Now all
6399 * More fixes to namespace handling. It was a mess! Now all
6396 explicit references to __main__.__dict__ are gone (except when
6400 explicit references to __main__.__dict__ are gone (except when
6397 really needed) and everything is handled through the namespace
6401 really needed) and everything is handled through the namespace
6398 dicts in the IPython instance. We seem to be getting somewhere
6402 dicts in the IPython instance. We seem to be getting somewhere
6399 with this, finally...
6403 with this, finally...
6400
6404
6401 * Small documentation updates.
6405 * Small documentation updates.
6402
6406
6403 * Created the Extensions directory under IPython (with an
6407 * Created the Extensions directory under IPython (with an
6404 __init__.py). Put the PhysicalQ stuff there. This directory should
6408 __init__.py). Put the PhysicalQ stuff there. This directory should
6405 be used for all special-purpose extensions.
6409 be used for all special-purpose extensions.
6406
6410
6407 * File renaming:
6411 * File renaming:
6408 ipythonlib --> ipmaker
6412 ipythonlib --> ipmaker
6409 ipplib --> iplib
6413 ipplib --> iplib
6410 This makes a bit more sense in terms of what these files actually do.
6414 This makes a bit more sense in terms of what these files actually do.
6411
6415
6412 * Moved all the classes and functions in ipythonlib to ipplib, so
6416 * Moved all the classes and functions in ipythonlib to ipplib, so
6413 now ipythonlib only has make_IPython(). This will ease up its
6417 now ipythonlib only has make_IPython(). This will ease up its
6414 splitting in smaller functional chunks later.
6418 splitting in smaller functional chunks later.
6415
6419
6416 * Cleaned up (done, I think) output of @whos. Better column
6420 * Cleaned up (done, I think) output of @whos. Better column
6417 formatting, and now shows str(var) for as much as it can, which is
6421 formatting, and now shows str(var) for as much as it can, which is
6418 typically what one gets with a 'print var'.
6422 typically what one gets with a 'print var'.
6419
6423
6420 2001-12-04 Fernando Perez <fperez@colorado.edu>
6424 2001-12-04 Fernando Perez <fperez@colorado.edu>
6421
6425
6422 * Fixed namespace problems. Now builtin/IPyhton/user names get
6426 * Fixed namespace problems. Now builtin/IPyhton/user names get
6423 properly reported in their namespace. Internal namespace handling
6427 properly reported in their namespace. Internal namespace handling
6424 is finally getting decent (not perfect yet, but much better than
6428 is finally getting decent (not perfect yet, but much better than
6425 the ad-hoc mess we had).
6429 the ad-hoc mess we had).
6426
6430
6427 * Removed -exit option. If people just want to run a python
6431 * Removed -exit option. If people just want to run a python
6428 script, that's what the normal interpreter is for. Less
6432 script, that's what the normal interpreter is for. Less
6429 unnecessary options, less chances for bugs.
6433 unnecessary options, less chances for bugs.
6430
6434
6431 * Added a crash handler which generates a complete post-mortem if
6435 * Added a crash handler which generates a complete post-mortem if
6432 IPython crashes. This will help a lot in tracking bugs down the
6436 IPython crashes. This will help a lot in tracking bugs down the
6433 road.
6437 road.
6434
6438
6435 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6439 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6436 which were boud to functions being reassigned would bypass the
6440 which were boud to functions being reassigned would bypass the
6437 logger, breaking the sync of _il with the prompt counter. This
6441 logger, breaking the sync of _il with the prompt counter. This
6438 would then crash IPython later when a new line was logged.
6442 would then crash IPython later when a new line was logged.
6439
6443
6440 2001-12-02 Fernando Perez <fperez@colorado.edu>
6444 2001-12-02 Fernando Perez <fperez@colorado.edu>
6441
6445
6442 * Made IPython a package. This means people don't have to clutter
6446 * Made IPython a package. This means people don't have to clutter
6443 their sys.path with yet another directory. Changed the INSTALL
6447 their sys.path with yet another directory. Changed the INSTALL
6444 file accordingly.
6448 file accordingly.
6445
6449
6446 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6450 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6447 sorts its output (so @who shows it sorted) and @whos formats the
6451 sorts its output (so @who shows it sorted) and @whos formats the
6448 table according to the width of the first column. Nicer, easier to
6452 table according to the width of the first column. Nicer, easier to
6449 read. Todo: write a generic table_format() which takes a list of
6453 read. Todo: write a generic table_format() which takes a list of
6450 lists and prints it nicely formatted, with optional row/column
6454 lists and prints it nicely formatted, with optional row/column
6451 separators and proper padding and justification.
6455 separators and proper padding and justification.
6452
6456
6453 * Released 0.1.20
6457 * Released 0.1.20
6454
6458
6455 * Fixed bug in @log which would reverse the inputcache list (a
6459 * Fixed bug in @log which would reverse the inputcache list (a
6456 copy operation was missing).
6460 copy operation was missing).
6457
6461
6458 * Code cleanup. @config was changed to use page(). Better, since
6462 * Code cleanup. @config was changed to use page(). Better, since
6459 its output is always quite long.
6463 its output is always quite long.
6460
6464
6461 * Itpl is back as a dependency. I was having too many problems
6465 * Itpl is back as a dependency. I was having too many problems
6462 getting the parametric aliases to work reliably, and it's just
6466 getting the parametric aliases to work reliably, and it's just
6463 easier to code weird string operations with it than playing %()s
6467 easier to code weird string operations with it than playing %()s
6464 games. It's only ~6k, so I don't think it's too big a deal.
6468 games. It's only ~6k, so I don't think it's too big a deal.
6465
6469
6466 * Found (and fixed) a very nasty bug with history. !lines weren't
6470 * Found (and fixed) a very nasty bug with history. !lines weren't
6467 getting cached, and the out of sync caches would crash
6471 getting cached, and the out of sync caches would crash
6468 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6472 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6469 division of labor a bit better. Bug fixed, cleaner structure.
6473 division of labor a bit better. Bug fixed, cleaner structure.
6470
6474
6471 2001-12-01 Fernando Perez <fperez@colorado.edu>
6475 2001-12-01 Fernando Perez <fperez@colorado.edu>
6472
6476
6473 * Released 0.1.19
6477 * Released 0.1.19
6474
6478
6475 * Added option -n to @hist to prevent line number printing. Much
6479 * Added option -n to @hist to prevent line number printing. Much
6476 easier to copy/paste code this way.
6480 easier to copy/paste code this way.
6477
6481
6478 * Created global _il to hold the input list. Allows easy
6482 * Created global _il to hold the input list. Allows easy
6479 re-execution of blocks of code by slicing it (inspired by Janko's
6483 re-execution of blocks of code by slicing it (inspired by Janko's
6480 comment on 'macros').
6484 comment on 'macros').
6481
6485
6482 * Small fixes and doc updates.
6486 * Small fixes and doc updates.
6483
6487
6484 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6488 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6485 much too fragile with automagic. Handles properly multi-line
6489 much too fragile with automagic. Handles properly multi-line
6486 statements and takes parameters.
6490 statements and takes parameters.
6487
6491
6488 2001-11-30 Fernando Perez <fperez@colorado.edu>
6492 2001-11-30 Fernando Perez <fperez@colorado.edu>
6489
6493
6490 * Version 0.1.18 released.
6494 * Version 0.1.18 released.
6491
6495
6492 * Fixed nasty namespace bug in initial module imports.
6496 * Fixed nasty namespace bug in initial module imports.
6493
6497
6494 * Added copyright/license notes to all code files (except
6498 * Added copyright/license notes to all code files (except
6495 DPyGetOpt). For the time being, LGPL. That could change.
6499 DPyGetOpt). For the time being, LGPL. That could change.
6496
6500
6497 * Rewrote a much nicer README, updated INSTALL, cleaned up
6501 * Rewrote a much nicer README, updated INSTALL, cleaned up
6498 ipythonrc-* samples.
6502 ipythonrc-* samples.
6499
6503
6500 * Overall code/documentation cleanup. Basically ready for
6504 * Overall code/documentation cleanup. Basically ready for
6501 release. Only remaining thing: licence decision (LGPL?).
6505 release. Only remaining thing: licence decision (LGPL?).
6502
6506
6503 * Converted load_config to a class, ConfigLoader. Now recursion
6507 * Converted load_config to a class, ConfigLoader. Now recursion
6504 control is better organized. Doesn't include the same file twice.
6508 control is better organized. Doesn't include the same file twice.
6505
6509
6506 2001-11-29 Fernando Perez <fperez@colorado.edu>
6510 2001-11-29 Fernando Perez <fperez@colorado.edu>
6507
6511
6508 * Got input history working. Changed output history variables from
6512 * Got input history working. Changed output history variables from
6509 _p to _o so that _i is for input and _o for output. Just cleaner
6513 _p to _o so that _i is for input and _o for output. Just cleaner
6510 convention.
6514 convention.
6511
6515
6512 * Implemented parametric aliases. This pretty much allows the
6516 * Implemented parametric aliases. This pretty much allows the
6513 alias system to offer full-blown shell convenience, I think.
6517 alias system to offer full-blown shell convenience, I think.
6514
6518
6515 * Version 0.1.17 released, 0.1.18 opened.
6519 * Version 0.1.17 released, 0.1.18 opened.
6516
6520
6517 * dot_ipython/ipythonrc (alias): added documentation.
6521 * dot_ipython/ipythonrc (alias): added documentation.
6518 (xcolor): Fixed small bug (xcolors -> xcolor)
6522 (xcolor): Fixed small bug (xcolors -> xcolor)
6519
6523
6520 * Changed the alias system. Now alias is a magic command to define
6524 * Changed the alias system. Now alias is a magic command to define
6521 aliases just like the shell. Rationale: the builtin magics should
6525 aliases just like the shell. Rationale: the builtin magics should
6522 be there for things deeply connected to IPython's
6526 be there for things deeply connected to IPython's
6523 architecture. And this is a much lighter system for what I think
6527 architecture. And this is a much lighter system for what I think
6524 is the really important feature: allowing users to define quickly
6528 is the really important feature: allowing users to define quickly
6525 magics that will do shell things for them, so they can customize
6529 magics that will do shell things for them, so they can customize
6526 IPython easily to match their work habits. If someone is really
6530 IPython easily to match their work habits. If someone is really
6527 desperate to have another name for a builtin alias, they can
6531 desperate to have another name for a builtin alias, they can
6528 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6532 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6529 works.
6533 works.
6530
6534
6531 2001-11-28 Fernando Perez <fperez@colorado.edu>
6535 2001-11-28 Fernando Perez <fperez@colorado.edu>
6532
6536
6533 * Changed @file so that it opens the source file at the proper
6537 * Changed @file so that it opens the source file at the proper
6534 line. Since it uses less, if your EDITOR environment is
6538 line. Since it uses less, if your EDITOR environment is
6535 configured, typing v will immediately open your editor of choice
6539 configured, typing v will immediately open your editor of choice
6536 right at the line where the object is defined. Not as quick as
6540 right at the line where the object is defined. Not as quick as
6537 having a direct @edit command, but for all intents and purposes it
6541 having a direct @edit command, but for all intents and purposes it
6538 works. And I don't have to worry about writing @edit to deal with
6542 works. And I don't have to worry about writing @edit to deal with
6539 all the editors, less does that.
6543 all the editors, less does that.
6540
6544
6541 * Version 0.1.16 released, 0.1.17 opened.
6545 * Version 0.1.16 released, 0.1.17 opened.
6542
6546
6543 * Fixed some nasty bugs in the page/page_dumb combo that could
6547 * Fixed some nasty bugs in the page/page_dumb combo that could
6544 crash IPython.
6548 crash IPython.
6545
6549
6546 2001-11-27 Fernando Perez <fperez@colorado.edu>
6550 2001-11-27 Fernando Perez <fperez@colorado.edu>
6547
6551
6548 * Version 0.1.15 released, 0.1.16 opened.
6552 * Version 0.1.15 released, 0.1.16 opened.
6549
6553
6550 * Finally got ? and ?? to work for undefined things: now it's
6554 * Finally got ? and ?? to work for undefined things: now it's
6551 possible to type {}.get? and get information about the get method
6555 possible to type {}.get? and get information about the get method
6552 of dicts, or os.path? even if only os is defined (so technically
6556 of dicts, or os.path? even if only os is defined (so technically
6553 os.path isn't). Works at any level. For example, after import os,
6557 os.path isn't). Works at any level. For example, after import os,
6554 os?, os.path?, os.path.abspath? all work. This is great, took some
6558 os?, os.path?, os.path.abspath? all work. This is great, took some
6555 work in _ofind.
6559 work in _ofind.
6556
6560
6557 * Fixed more bugs with logging. The sanest way to do it was to add
6561 * Fixed more bugs with logging. The sanest way to do it was to add
6558 to @log a 'mode' parameter. Killed two in one shot (this mode
6562 to @log a 'mode' parameter. Killed two in one shot (this mode
6559 option was a request of Janko's). I think it's finally clean
6563 option was a request of Janko's). I think it's finally clean
6560 (famous last words).
6564 (famous last words).
6561
6565
6562 * Added a page_dumb() pager which does a decent job of paging on
6566 * Added a page_dumb() pager which does a decent job of paging on
6563 screen, if better things (like less) aren't available. One less
6567 screen, if better things (like less) aren't available. One less
6564 unix dependency (someday maybe somebody will port this to
6568 unix dependency (someday maybe somebody will port this to
6565 windows).
6569 windows).
6566
6570
6567 * Fixed problem in magic_log: would lock of logging out if log
6571 * Fixed problem in magic_log: would lock of logging out if log
6568 creation failed (because it would still think it had succeeded).
6572 creation failed (because it would still think it had succeeded).
6569
6573
6570 * Improved the page() function using curses to auto-detect screen
6574 * Improved the page() function using curses to auto-detect screen
6571 size. Now it can make a much better decision on whether to print
6575 size. Now it can make a much better decision on whether to print
6572 or page a string. Option screen_length was modified: a value 0
6576 or page a string. Option screen_length was modified: a value 0
6573 means auto-detect, and that's the default now.
6577 means auto-detect, and that's the default now.
6574
6578
6575 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6579 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6576 go out. I'll test it for a few days, then talk to Janko about
6580 go out. I'll test it for a few days, then talk to Janko about
6577 licences and announce it.
6581 licences and announce it.
6578
6582
6579 * Fixed the length of the auto-generated ---> prompt which appears
6583 * Fixed the length of the auto-generated ---> prompt which appears
6580 for auto-parens and auto-quotes. Getting this right isn't trivial,
6584 for auto-parens and auto-quotes. Getting this right isn't trivial,
6581 with all the color escapes, different prompt types and optional
6585 with all the color escapes, different prompt types and optional
6582 separators. But it seems to be working in all the combinations.
6586 separators. But it seems to be working in all the combinations.
6583
6587
6584 2001-11-26 Fernando Perez <fperez@colorado.edu>
6588 2001-11-26 Fernando Perez <fperez@colorado.edu>
6585
6589
6586 * Wrote a regexp filter to get option types from the option names
6590 * Wrote a regexp filter to get option types from the option names
6587 string. This eliminates the need to manually keep two duplicate
6591 string. This eliminates the need to manually keep two duplicate
6588 lists.
6592 lists.
6589
6593
6590 * Removed the unneeded check_option_names. Now options are handled
6594 * Removed the unneeded check_option_names. Now options are handled
6591 in a much saner manner and it's easy to visually check that things
6595 in a much saner manner and it's easy to visually check that things
6592 are ok.
6596 are ok.
6593
6597
6594 * Updated version numbers on all files I modified to carry a
6598 * Updated version numbers on all files I modified to carry a
6595 notice so Janko and Nathan have clear version markers.
6599 notice so Janko and Nathan have clear version markers.
6596
6600
6597 * Updated docstring for ultraTB with my changes. I should send
6601 * Updated docstring for ultraTB with my changes. I should send
6598 this to Nathan.
6602 this to Nathan.
6599
6603
6600 * Lots of small fixes. Ran everything through pychecker again.
6604 * Lots of small fixes. Ran everything through pychecker again.
6601
6605
6602 * Made loading of deep_reload an cmd line option. If it's not too
6606 * Made loading of deep_reload an cmd line option. If it's not too
6603 kosher, now people can just disable it. With -nodeep_reload it's
6607 kosher, now people can just disable it. With -nodeep_reload it's
6604 still available as dreload(), it just won't overwrite reload().
6608 still available as dreload(), it just won't overwrite reload().
6605
6609
6606 * Moved many options to the no| form (-opt and -noopt
6610 * Moved many options to the no| form (-opt and -noopt
6607 accepted). Cleaner.
6611 accepted). Cleaner.
6608
6612
6609 * Changed magic_log so that if called with no parameters, it uses
6613 * Changed magic_log so that if called with no parameters, it uses
6610 'rotate' mode. That way auto-generated logs aren't automatically
6614 'rotate' mode. That way auto-generated logs aren't automatically
6611 over-written. For normal logs, now a backup is made if it exists
6615 over-written. For normal logs, now a backup is made if it exists
6612 (only 1 level of backups). A new 'backup' mode was added to the
6616 (only 1 level of backups). A new 'backup' mode was added to the
6613 Logger class to support this. This was a request by Janko.
6617 Logger class to support this. This was a request by Janko.
6614
6618
6615 * Added @logoff/@logon to stop/restart an active log.
6619 * Added @logoff/@logon to stop/restart an active log.
6616
6620
6617 * Fixed a lot of bugs in log saving/replay. It was pretty
6621 * Fixed a lot of bugs in log saving/replay. It was pretty
6618 broken. Now special lines (!@,/) appear properly in the command
6622 broken. Now special lines (!@,/) appear properly in the command
6619 history after a log replay.
6623 history after a log replay.
6620
6624
6621 * Tried and failed to implement full session saving via pickle. My
6625 * Tried and failed to implement full session saving via pickle. My
6622 idea was to pickle __main__.__dict__, but modules can't be
6626 idea was to pickle __main__.__dict__, but modules can't be
6623 pickled. This would be a better alternative to replaying logs, but
6627 pickled. This would be a better alternative to replaying logs, but
6624 seems quite tricky to get to work. Changed -session to be called
6628 seems quite tricky to get to work. Changed -session to be called
6625 -logplay, which more accurately reflects what it does. And if we
6629 -logplay, which more accurately reflects what it does. And if we
6626 ever get real session saving working, -session is now available.
6630 ever get real session saving working, -session is now available.
6627
6631
6628 * Implemented color schemes for prompts also. As for tracebacks,
6632 * Implemented color schemes for prompts also. As for tracebacks,
6629 currently only NoColor and Linux are supported. But now the
6633 currently only NoColor and Linux are supported. But now the
6630 infrastructure is in place, based on a generic ColorScheme
6634 infrastructure is in place, based on a generic ColorScheme
6631 class. So writing and activating new schemes both for the prompts
6635 class. So writing and activating new schemes both for the prompts
6632 and the tracebacks should be straightforward.
6636 and the tracebacks should be straightforward.
6633
6637
6634 * Version 0.1.13 released, 0.1.14 opened.
6638 * Version 0.1.13 released, 0.1.14 opened.
6635
6639
6636 * Changed handling of options for output cache. Now counter is
6640 * Changed handling of options for output cache. Now counter is
6637 hardwired starting at 1 and one specifies the maximum number of
6641 hardwired starting at 1 and one specifies the maximum number of
6638 entries *in the outcache* (not the max prompt counter). This is
6642 entries *in the outcache* (not the max prompt counter). This is
6639 much better, since many statements won't increase the cache
6643 much better, since many statements won't increase the cache
6640 count. It also eliminated some confusing options, now there's only
6644 count. It also eliminated some confusing options, now there's only
6641 one: cache_size.
6645 one: cache_size.
6642
6646
6643 * Added 'alias' magic function and magic_alias option in the
6647 * Added 'alias' magic function and magic_alias option in the
6644 ipythonrc file. Now the user can easily define whatever names he
6648 ipythonrc file. Now the user can easily define whatever names he
6645 wants for the magic functions without having to play weird
6649 wants for the magic functions without having to play weird
6646 namespace games. This gives IPython a real shell-like feel.
6650 namespace games. This gives IPython a real shell-like feel.
6647
6651
6648 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6652 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6649 @ or not).
6653 @ or not).
6650
6654
6651 This was one of the last remaining 'visible' bugs (that I know
6655 This was one of the last remaining 'visible' bugs (that I know
6652 of). I think if I can clean up the session loading so it works
6656 of). I think if I can clean up the session loading so it works
6653 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6657 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6654 about licensing).
6658 about licensing).
6655
6659
6656 2001-11-25 Fernando Perez <fperez@colorado.edu>
6660 2001-11-25 Fernando Perez <fperez@colorado.edu>
6657
6661
6658 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6662 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6659 there's a cleaner distinction between what ? and ?? show.
6663 there's a cleaner distinction between what ? and ?? show.
6660
6664
6661 * Added screen_length option. Now the user can define his own
6665 * Added screen_length option. Now the user can define his own
6662 screen size for page() operations.
6666 screen size for page() operations.
6663
6667
6664 * Implemented magic shell-like functions with automatic code
6668 * Implemented magic shell-like functions with automatic code
6665 generation. Now adding another function is just a matter of adding
6669 generation. Now adding another function is just a matter of adding
6666 an entry to a dict, and the function is dynamically generated at
6670 an entry to a dict, and the function is dynamically generated at
6667 run-time. Python has some really cool features!
6671 run-time. Python has some really cool features!
6668
6672
6669 * Renamed many options to cleanup conventions a little. Now all
6673 * Renamed many options to cleanup conventions a little. Now all
6670 are lowercase, and only underscores where needed. Also in the code
6674 are lowercase, and only underscores where needed. Also in the code
6671 option name tables are clearer.
6675 option name tables are clearer.
6672
6676
6673 * Changed prompts a little. Now input is 'In [n]:' instead of
6677 * Changed prompts a little. Now input is 'In [n]:' instead of
6674 'In[n]:='. This allows it the numbers to be aligned with the
6678 'In[n]:='. This allows it the numbers to be aligned with the
6675 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6679 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6676 Python (it was a Mathematica thing). The '...' continuation prompt
6680 Python (it was a Mathematica thing). The '...' continuation prompt
6677 was also changed a little to align better.
6681 was also changed a little to align better.
6678
6682
6679 * Fixed bug when flushing output cache. Not all _p<n> variables
6683 * Fixed bug when flushing output cache. Not all _p<n> variables
6680 exist, so their deletion needs to be wrapped in a try:
6684 exist, so their deletion needs to be wrapped in a try:
6681
6685
6682 * Figured out how to properly use inspect.formatargspec() (it
6686 * Figured out how to properly use inspect.formatargspec() (it
6683 requires the args preceded by *). So I removed all the code from
6687 requires the args preceded by *). So I removed all the code from
6684 _get_pdef in Magic, which was just replicating that.
6688 _get_pdef in Magic, which was just replicating that.
6685
6689
6686 * Added test to prefilter to allow redefining magic function names
6690 * Added test to prefilter to allow redefining magic function names
6687 as variables. This is ok, since the @ form is always available,
6691 as variables. This is ok, since the @ form is always available,
6688 but whe should allow the user to define a variable called 'ls' if
6692 but whe should allow the user to define a variable called 'ls' if
6689 he needs it.
6693 he needs it.
6690
6694
6691 * Moved the ToDo information from README into a separate ToDo.
6695 * Moved the ToDo information from README into a separate ToDo.
6692
6696
6693 * General code cleanup and small bugfixes. I think it's close to a
6697 * General code cleanup and small bugfixes. I think it's close to a
6694 state where it can be released, obviously with a big 'beta'
6698 state where it can be released, obviously with a big 'beta'
6695 warning on it.
6699 warning on it.
6696
6700
6697 * Got the magic function split to work. Now all magics are defined
6701 * Got the magic function split to work. Now all magics are defined
6698 in a separate class. It just organizes things a bit, and now
6702 in a separate class. It just organizes things a bit, and now
6699 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6703 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6700 was too long).
6704 was too long).
6701
6705
6702 * Changed @clear to @reset to avoid potential confusions with
6706 * Changed @clear to @reset to avoid potential confusions with
6703 the shell command clear. Also renamed @cl to @clear, which does
6707 the shell command clear. Also renamed @cl to @clear, which does
6704 exactly what people expect it to from their shell experience.
6708 exactly what people expect it to from their shell experience.
6705
6709
6706 Added a check to the @reset command (since it's so
6710 Added a check to the @reset command (since it's so
6707 destructive, it's probably a good idea to ask for confirmation).
6711 destructive, it's probably a good idea to ask for confirmation).
6708 But now reset only works for full namespace resetting. Since the
6712 But now reset only works for full namespace resetting. Since the
6709 del keyword is already there for deleting a few specific
6713 del keyword is already there for deleting a few specific
6710 variables, I don't see the point of having a redundant magic
6714 variables, I don't see the point of having a redundant magic
6711 function for the same task.
6715 function for the same task.
6712
6716
6713 2001-11-24 Fernando Perez <fperez@colorado.edu>
6717 2001-11-24 Fernando Perez <fperez@colorado.edu>
6714
6718
6715 * Updated the builtin docs (esp. the ? ones).
6719 * Updated the builtin docs (esp. the ? ones).
6716
6720
6717 * Ran all the code through pychecker. Not terribly impressed with
6721 * Ran all the code through pychecker. Not terribly impressed with
6718 it: lots of spurious warnings and didn't really find anything of
6722 it: lots of spurious warnings and didn't really find anything of
6719 substance (just a few modules being imported and not used).
6723 substance (just a few modules being imported and not used).
6720
6724
6721 * Implemented the new ultraTB functionality into IPython. New
6725 * Implemented the new ultraTB functionality into IPython. New
6722 option: xcolors. This chooses color scheme. xmode now only selects
6726 option: xcolors. This chooses color scheme. xmode now only selects
6723 between Plain and Verbose. Better orthogonality.
6727 between Plain and Verbose. Better orthogonality.
6724
6728
6725 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6729 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6726 mode and color scheme for the exception handlers. Now it's
6730 mode and color scheme for the exception handlers. Now it's
6727 possible to have the verbose traceback with no coloring.
6731 possible to have the verbose traceback with no coloring.
6728
6732
6729 2001-11-23 Fernando Perez <fperez@colorado.edu>
6733 2001-11-23 Fernando Perez <fperez@colorado.edu>
6730
6734
6731 * Version 0.1.12 released, 0.1.13 opened.
6735 * Version 0.1.12 released, 0.1.13 opened.
6732
6736
6733 * Removed option to set auto-quote and auto-paren escapes by
6737 * Removed option to set auto-quote and auto-paren escapes by
6734 user. The chances of breaking valid syntax are just too high. If
6738 user. The chances of breaking valid syntax are just too high. If
6735 someone *really* wants, they can always dig into the code.
6739 someone *really* wants, they can always dig into the code.
6736
6740
6737 * Made prompt separators configurable.
6741 * Made prompt separators configurable.
6738
6742
6739 2001-11-22 Fernando Perez <fperez@colorado.edu>
6743 2001-11-22 Fernando Perez <fperez@colorado.edu>
6740
6744
6741 * Small bugfixes in many places.
6745 * Small bugfixes in many places.
6742
6746
6743 * Removed the MyCompleter class from ipplib. It seemed redundant
6747 * Removed the MyCompleter class from ipplib. It seemed redundant
6744 with the C-p,C-n history search functionality. Less code to
6748 with the C-p,C-n history search functionality. Less code to
6745 maintain.
6749 maintain.
6746
6750
6747 * Moved all the original ipython.py code into ipythonlib.py. Right
6751 * Moved all the original ipython.py code into ipythonlib.py. Right
6748 now it's just one big dump into a function called make_IPython, so
6752 now it's just one big dump into a function called make_IPython, so
6749 no real modularity has been gained. But at least it makes the
6753 no real modularity has been gained. But at least it makes the
6750 wrapper script tiny, and since ipythonlib is a module, it gets
6754 wrapper script tiny, and since ipythonlib is a module, it gets
6751 compiled and startup is much faster.
6755 compiled and startup is much faster.
6752
6756
6753 This is a reasobably 'deep' change, so we should test it for a
6757 This is a reasobably 'deep' change, so we should test it for a
6754 while without messing too much more with the code.
6758 while without messing too much more with the code.
6755
6759
6756 2001-11-21 Fernando Perez <fperez@colorado.edu>
6760 2001-11-21 Fernando Perez <fperez@colorado.edu>
6757
6761
6758 * Version 0.1.11 released, 0.1.12 opened for further work.
6762 * Version 0.1.11 released, 0.1.12 opened for further work.
6759
6763
6760 * Removed dependency on Itpl. It was only needed in one place. It
6764 * Removed dependency on Itpl. It was only needed in one place. It
6761 would be nice if this became part of python, though. It makes life
6765 would be nice if this became part of python, though. It makes life
6762 *a lot* easier in some cases.
6766 *a lot* easier in some cases.
6763
6767
6764 * Simplified the prefilter code a bit. Now all handlers are
6768 * Simplified the prefilter code a bit. Now all handlers are
6765 expected to explicitly return a value (at least a blank string).
6769 expected to explicitly return a value (at least a blank string).
6766
6770
6767 * Heavy edits in ipplib. Removed the help system altogether. Now
6771 * Heavy edits in ipplib. Removed the help system altogether. Now
6768 obj?/?? is used for inspecting objects, a magic @doc prints
6772 obj?/?? is used for inspecting objects, a magic @doc prints
6769 docstrings, and full-blown Python help is accessed via the 'help'
6773 docstrings, and full-blown Python help is accessed via the 'help'
6770 keyword. This cleans up a lot of code (less to maintain) and does
6774 keyword. This cleans up a lot of code (less to maintain) and does
6771 the job. Since 'help' is now a standard Python component, might as
6775 the job. Since 'help' is now a standard Python component, might as
6772 well use it and remove duplicate functionality.
6776 well use it and remove duplicate functionality.
6773
6777
6774 Also removed the option to use ipplib as a standalone program. By
6778 Also removed the option to use ipplib as a standalone program. By
6775 now it's too dependent on other parts of IPython to function alone.
6779 now it's too dependent on other parts of IPython to function alone.
6776
6780
6777 * Fixed bug in genutils.pager. It would crash if the pager was
6781 * Fixed bug in genutils.pager. It would crash if the pager was
6778 exited immediately after opening (broken pipe).
6782 exited immediately after opening (broken pipe).
6779
6783
6780 * Trimmed down the VerboseTB reporting a little. The header is
6784 * Trimmed down the VerboseTB reporting a little. The header is
6781 much shorter now and the repeated exception arguments at the end
6785 much shorter now and the repeated exception arguments at the end
6782 have been removed. For interactive use the old header seemed a bit
6786 have been removed. For interactive use the old header seemed a bit
6783 excessive.
6787 excessive.
6784
6788
6785 * Fixed small bug in output of @whos for variables with multi-word
6789 * Fixed small bug in output of @whos for variables with multi-word
6786 types (only first word was displayed).
6790 types (only first word was displayed).
6787
6791
6788 2001-11-17 Fernando Perez <fperez@colorado.edu>
6792 2001-11-17 Fernando Perez <fperez@colorado.edu>
6789
6793
6790 * Version 0.1.10 released, 0.1.11 opened for further work.
6794 * Version 0.1.10 released, 0.1.11 opened for further work.
6791
6795
6792 * Modified dirs and friends. dirs now *returns* the stack (not
6796 * Modified dirs and friends. dirs now *returns* the stack (not
6793 prints), so one can manipulate it as a variable. Convenient to
6797 prints), so one can manipulate it as a variable. Convenient to
6794 travel along many directories.
6798 travel along many directories.
6795
6799
6796 * Fixed bug in magic_pdef: would only work with functions with
6800 * Fixed bug in magic_pdef: would only work with functions with
6797 arguments with default values.
6801 arguments with default values.
6798
6802
6799 2001-11-14 Fernando Perez <fperez@colorado.edu>
6803 2001-11-14 Fernando Perez <fperez@colorado.edu>
6800
6804
6801 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6805 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6802 example with IPython. Various other minor fixes and cleanups.
6806 example with IPython. Various other minor fixes and cleanups.
6803
6807
6804 * Version 0.1.9 released, 0.1.10 opened for further work.
6808 * Version 0.1.9 released, 0.1.10 opened for further work.
6805
6809
6806 * Added sys.path to the list of directories searched in the
6810 * Added sys.path to the list of directories searched in the
6807 execfile= option. It used to be the current directory and the
6811 execfile= option. It used to be the current directory and the
6808 user's IPYTHONDIR only.
6812 user's IPYTHONDIR only.
6809
6813
6810 2001-11-13 Fernando Perez <fperez@colorado.edu>
6814 2001-11-13 Fernando Perez <fperez@colorado.edu>
6811
6815
6812 * Reinstated the raw_input/prefilter separation that Janko had
6816 * Reinstated the raw_input/prefilter separation that Janko had
6813 initially. This gives a more convenient setup for extending the
6817 initially. This gives a more convenient setup for extending the
6814 pre-processor from the outside: raw_input always gets a string,
6818 pre-processor from the outside: raw_input always gets a string,
6815 and prefilter has to process it. We can then redefine prefilter
6819 and prefilter has to process it. We can then redefine prefilter
6816 from the outside and implement extensions for special
6820 from the outside and implement extensions for special
6817 purposes.
6821 purposes.
6818
6822
6819 Today I got one for inputting PhysicalQuantity objects
6823 Today I got one for inputting PhysicalQuantity objects
6820 (from Scientific) without needing any function calls at
6824 (from Scientific) without needing any function calls at
6821 all. Extremely convenient, and it's all done as a user-level
6825 all. Extremely convenient, and it's all done as a user-level
6822 extension (no IPython code was touched). Now instead of:
6826 extension (no IPython code was touched). Now instead of:
6823 a = PhysicalQuantity(4.2,'m/s**2')
6827 a = PhysicalQuantity(4.2,'m/s**2')
6824 one can simply say
6828 one can simply say
6825 a = 4.2 m/s**2
6829 a = 4.2 m/s**2
6826 or even
6830 or even
6827 a = 4.2 m/s^2
6831 a = 4.2 m/s^2
6828
6832
6829 I use this, but it's also a proof of concept: IPython really is
6833 I use this, but it's also a proof of concept: IPython really is
6830 fully user-extensible, even at the level of the parsing of the
6834 fully user-extensible, even at the level of the parsing of the
6831 command line. It's not trivial, but it's perfectly doable.
6835 command line. It's not trivial, but it's perfectly doable.
6832
6836
6833 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6837 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6834 the problem of modules being loaded in the inverse order in which
6838 the problem of modules being loaded in the inverse order in which
6835 they were defined in
6839 they were defined in
6836
6840
6837 * Version 0.1.8 released, 0.1.9 opened for further work.
6841 * Version 0.1.8 released, 0.1.9 opened for further work.
6838
6842
6839 * Added magics pdef, source and file. They respectively show the
6843 * Added magics pdef, source and file. They respectively show the
6840 definition line ('prototype' in C), source code and full python
6844 definition line ('prototype' in C), source code and full python
6841 file for any callable object. The object inspector oinfo uses
6845 file for any callable object. The object inspector oinfo uses
6842 these to show the same information.
6846 these to show the same information.
6843
6847
6844 * Version 0.1.7 released, 0.1.8 opened for further work.
6848 * Version 0.1.7 released, 0.1.8 opened for further work.
6845
6849
6846 * Separated all the magic functions into a class called Magic. The
6850 * Separated all the magic functions into a class called Magic. The
6847 InteractiveShell class was becoming too big for Xemacs to handle
6851 InteractiveShell class was becoming too big for Xemacs to handle
6848 (de-indenting a line would lock it up for 10 seconds while it
6852 (de-indenting a line would lock it up for 10 seconds while it
6849 backtracked on the whole class!)
6853 backtracked on the whole class!)
6850
6854
6851 FIXME: didn't work. It can be done, but right now namespaces are
6855 FIXME: didn't work. It can be done, but right now namespaces are
6852 all messed up. Do it later (reverted it for now, so at least
6856 all messed up. Do it later (reverted it for now, so at least
6853 everything works as before).
6857 everything works as before).
6854
6858
6855 * Got the object introspection system (magic_oinfo) working! I
6859 * Got the object introspection system (magic_oinfo) working! I
6856 think this is pretty much ready for release to Janko, so he can
6860 think this is pretty much ready for release to Janko, so he can
6857 test it for a while and then announce it. Pretty much 100% of what
6861 test it for a while and then announce it. Pretty much 100% of what
6858 I wanted for the 'phase 1' release is ready. Happy, tired.
6862 I wanted for the 'phase 1' release is ready. Happy, tired.
6859
6863
6860 2001-11-12 Fernando Perez <fperez@colorado.edu>
6864 2001-11-12 Fernando Perez <fperez@colorado.edu>
6861
6865
6862 * Version 0.1.6 released, 0.1.7 opened for further work.
6866 * Version 0.1.6 released, 0.1.7 opened for further work.
6863
6867
6864 * Fixed bug in printing: it used to test for truth before
6868 * Fixed bug in printing: it used to test for truth before
6865 printing, so 0 wouldn't print. Now checks for None.
6869 printing, so 0 wouldn't print. Now checks for None.
6866
6870
6867 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6871 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6868 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6872 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6869 reaches by hand into the outputcache. Think of a better way to do
6873 reaches by hand into the outputcache. Think of a better way to do
6870 this later.
6874 this later.
6871
6875
6872 * Various small fixes thanks to Nathan's comments.
6876 * Various small fixes thanks to Nathan's comments.
6873
6877
6874 * Changed magic_pprint to magic_Pprint. This way it doesn't
6878 * Changed magic_pprint to magic_Pprint. This way it doesn't
6875 collide with pprint() and the name is consistent with the command
6879 collide with pprint() and the name is consistent with the command
6876 line option.
6880 line option.
6877
6881
6878 * Changed prompt counter behavior to be fully like
6882 * Changed prompt counter behavior to be fully like
6879 Mathematica's. That is, even input that doesn't return a result
6883 Mathematica's. That is, even input that doesn't return a result
6880 raises the prompt counter. The old behavior was kind of confusing
6884 raises the prompt counter. The old behavior was kind of confusing
6881 (getting the same prompt number several times if the operation
6885 (getting the same prompt number several times if the operation
6882 didn't return a result).
6886 didn't return a result).
6883
6887
6884 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6888 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6885
6889
6886 * Fixed -Classic mode (wasn't working anymore).
6890 * Fixed -Classic mode (wasn't working anymore).
6887
6891
6888 * Added colored prompts using Nathan's new code. Colors are
6892 * Added colored prompts using Nathan's new code. Colors are
6889 currently hardwired, they can be user-configurable. For
6893 currently hardwired, they can be user-configurable. For
6890 developers, they can be chosen in file ipythonlib.py, at the
6894 developers, they can be chosen in file ipythonlib.py, at the
6891 beginning of the CachedOutput class def.
6895 beginning of the CachedOutput class def.
6892
6896
6893 2001-11-11 Fernando Perez <fperez@colorado.edu>
6897 2001-11-11 Fernando Perez <fperez@colorado.edu>
6894
6898
6895 * Version 0.1.5 released, 0.1.6 opened for further work.
6899 * Version 0.1.5 released, 0.1.6 opened for further work.
6896
6900
6897 * Changed magic_env to *return* the environment as a dict (not to
6901 * Changed magic_env to *return* the environment as a dict (not to
6898 print it). This way it prints, but it can also be processed.
6902 print it). This way it prints, but it can also be processed.
6899
6903
6900 * Added Verbose exception reporting to interactive
6904 * Added Verbose exception reporting to interactive
6901 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6905 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6902 traceback. Had to make some changes to the ultraTB file. This is
6906 traceback. Had to make some changes to the ultraTB file. This is
6903 probably the last 'big' thing in my mental todo list. This ties
6907 probably the last 'big' thing in my mental todo list. This ties
6904 in with the next entry:
6908 in with the next entry:
6905
6909
6906 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6910 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6907 has to specify is Plain, Color or Verbose for all exception
6911 has to specify is Plain, Color or Verbose for all exception
6908 handling.
6912 handling.
6909
6913
6910 * Removed ShellServices option. All this can really be done via
6914 * Removed ShellServices option. All this can really be done via
6911 the magic system. It's easier to extend, cleaner and has automatic
6915 the magic system. It's easier to extend, cleaner and has automatic
6912 namespace protection and documentation.
6916 namespace protection and documentation.
6913
6917
6914 2001-11-09 Fernando Perez <fperez@colorado.edu>
6918 2001-11-09 Fernando Perez <fperez@colorado.edu>
6915
6919
6916 * Fixed bug in output cache flushing (missing parameter to
6920 * Fixed bug in output cache flushing (missing parameter to
6917 __init__). Other small bugs fixed (found using pychecker).
6921 __init__). Other small bugs fixed (found using pychecker).
6918
6922
6919 * Version 0.1.4 opened for bugfixing.
6923 * Version 0.1.4 opened for bugfixing.
6920
6924
6921 2001-11-07 Fernando Perez <fperez@colorado.edu>
6925 2001-11-07 Fernando Perez <fperez@colorado.edu>
6922
6926
6923 * Version 0.1.3 released, mainly because of the raw_input bug.
6927 * Version 0.1.3 released, mainly because of the raw_input bug.
6924
6928
6925 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6929 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6926 and when testing for whether things were callable, a call could
6930 and when testing for whether things were callable, a call could
6927 actually be made to certain functions. They would get called again
6931 actually be made to certain functions. They would get called again
6928 once 'really' executed, with a resulting double call. A disaster
6932 once 'really' executed, with a resulting double call. A disaster
6929 in many cases (list.reverse() would never work!).
6933 in many cases (list.reverse() would never work!).
6930
6934
6931 * Removed prefilter() function, moved its code to raw_input (which
6935 * Removed prefilter() function, moved its code to raw_input (which
6932 after all was just a near-empty caller for prefilter). This saves
6936 after all was just a near-empty caller for prefilter). This saves
6933 a function call on every prompt, and simplifies the class a tiny bit.
6937 a function call on every prompt, and simplifies the class a tiny bit.
6934
6938
6935 * Fix _ip to __ip name in magic example file.
6939 * Fix _ip to __ip name in magic example file.
6936
6940
6937 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6941 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6938 work with non-gnu versions of tar.
6942 work with non-gnu versions of tar.
6939
6943
6940 2001-11-06 Fernando Perez <fperez@colorado.edu>
6944 2001-11-06 Fernando Perez <fperez@colorado.edu>
6941
6945
6942 * Version 0.1.2. Just to keep track of the recent changes.
6946 * Version 0.1.2. Just to keep track of the recent changes.
6943
6947
6944 * Fixed nasty bug in output prompt routine. It used to check 'if
6948 * Fixed nasty bug in output prompt routine. It used to check 'if
6945 arg != None...'. Problem is, this fails if arg implements a
6949 arg != None...'. Problem is, this fails if arg implements a
6946 special comparison (__cmp__) which disallows comparing to
6950 special comparison (__cmp__) which disallows comparing to
6947 None. Found it when trying to use the PhysicalQuantity module from
6951 None. Found it when trying to use the PhysicalQuantity module from
6948 ScientificPython.
6952 ScientificPython.
6949
6953
6950 2001-11-05 Fernando Perez <fperez@colorado.edu>
6954 2001-11-05 Fernando Perez <fperez@colorado.edu>
6951
6955
6952 * Also added dirs. Now the pushd/popd/dirs family functions
6956 * Also added dirs. Now the pushd/popd/dirs family functions
6953 basically like the shell, with the added convenience of going home
6957 basically like the shell, with the added convenience of going home
6954 when called with no args.
6958 when called with no args.
6955
6959
6956 * pushd/popd slightly modified to mimic shell behavior more
6960 * pushd/popd slightly modified to mimic shell behavior more
6957 closely.
6961 closely.
6958
6962
6959 * Added env,pushd,popd from ShellServices as magic functions. I
6963 * Added env,pushd,popd from ShellServices as magic functions. I
6960 think the cleanest will be to port all desired functions from
6964 think the cleanest will be to port all desired functions from
6961 ShellServices as magics and remove ShellServices altogether. This
6965 ShellServices as magics and remove ShellServices altogether. This
6962 will provide a single, clean way of adding functionality
6966 will provide a single, clean way of adding functionality
6963 (shell-type or otherwise) to IP.
6967 (shell-type or otherwise) to IP.
6964
6968
6965 2001-11-04 Fernando Perez <fperez@colorado.edu>
6969 2001-11-04 Fernando Perez <fperez@colorado.edu>
6966
6970
6967 * Added .ipython/ directory to sys.path. This way users can keep
6971 * Added .ipython/ directory to sys.path. This way users can keep
6968 customizations there and access them via import.
6972 customizations there and access them via import.
6969
6973
6970 2001-11-03 Fernando Perez <fperez@colorado.edu>
6974 2001-11-03 Fernando Perez <fperez@colorado.edu>
6971
6975
6972 * Opened version 0.1.1 for new changes.
6976 * Opened version 0.1.1 for new changes.
6973
6977
6974 * Changed version number to 0.1.0: first 'public' release, sent to
6978 * Changed version number to 0.1.0: first 'public' release, sent to
6975 Nathan and Janko.
6979 Nathan and Janko.
6976
6980
6977 * Lots of small fixes and tweaks.
6981 * Lots of small fixes and tweaks.
6978
6982
6979 * Minor changes to whos format. Now strings are shown, snipped if
6983 * Minor changes to whos format. Now strings are shown, snipped if
6980 too long.
6984 too long.
6981
6985
6982 * Changed ShellServices to work on __main__ so they show up in @who
6986 * Changed ShellServices to work on __main__ so they show up in @who
6983
6987
6984 * Help also works with ? at the end of a line:
6988 * Help also works with ? at the end of a line:
6985 ?sin and sin?
6989 ?sin and sin?
6986 both produce the same effect. This is nice, as often I use the
6990 both produce the same effect. This is nice, as often I use the
6987 tab-complete to find the name of a method, but I used to then have
6991 tab-complete to find the name of a method, but I used to then have
6988 to go to the beginning of the line to put a ? if I wanted more
6992 to go to the beginning of the line to put a ? if I wanted more
6989 info. Now I can just add the ? and hit return. Convenient.
6993 info. Now I can just add the ? and hit return. Convenient.
6990
6994
6991 2001-11-02 Fernando Perez <fperez@colorado.edu>
6995 2001-11-02 Fernando Perez <fperez@colorado.edu>
6992
6996
6993 * Python version check (>=2.1) added.
6997 * Python version check (>=2.1) added.
6994
6998
6995 * Added LazyPython documentation. At this point the docs are quite
6999 * Added LazyPython documentation. At this point the docs are quite
6996 a mess. A cleanup is in order.
7000 a mess. A cleanup is in order.
6997
7001
6998 * Auto-installer created. For some bizarre reason, the zipfiles
7002 * Auto-installer created. For some bizarre reason, the zipfiles
6999 module isn't working on my system. So I made a tar version
7003 module isn't working on my system. So I made a tar version
7000 (hopefully the command line options in various systems won't kill
7004 (hopefully the command line options in various systems won't kill
7001 me).
7005 me).
7002
7006
7003 * Fixes to Struct in genutils. Now all dictionary-like methods are
7007 * Fixes to Struct in genutils. Now all dictionary-like methods are
7004 protected (reasonably).
7008 protected (reasonably).
7005
7009
7006 * Added pager function to genutils and changed ? to print usage
7010 * Added pager function to genutils and changed ? to print usage
7007 note through it (it was too long).
7011 note through it (it was too long).
7008
7012
7009 * Added the LazyPython functionality. Works great! I changed the
7013 * Added the LazyPython functionality. Works great! I changed the
7010 auto-quote escape to ';', it's on home row and next to '. But
7014 auto-quote escape to ';', it's on home row and next to '. But
7011 both auto-quote and auto-paren (still /) escapes are command-line
7015 both auto-quote and auto-paren (still /) escapes are command-line
7012 parameters.
7016 parameters.
7013
7017
7014
7018
7015 2001-11-01 Fernando Perez <fperez@colorado.edu>
7019 2001-11-01 Fernando Perez <fperez@colorado.edu>
7016
7020
7017 * Version changed to 0.0.7. Fairly large change: configuration now
7021 * Version changed to 0.0.7. Fairly large change: configuration now
7018 is all stored in a directory, by default .ipython. There, all
7022 is all stored in a directory, by default .ipython. There, all
7019 config files have normal looking names (not .names)
7023 config files have normal looking names (not .names)
7020
7024
7021 * Version 0.0.6 Released first to Lucas and Archie as a test
7025 * Version 0.0.6 Released first to Lucas and Archie as a test
7022 run. Since it's the first 'semi-public' release, change version to
7026 run. Since it's the first 'semi-public' release, change version to
7023 > 0.0.6 for any changes now.
7027 > 0.0.6 for any changes now.
7024
7028
7025 * Stuff I had put in the ipplib.py changelog:
7029 * Stuff I had put in the ipplib.py changelog:
7026
7030
7027 Changes to InteractiveShell:
7031 Changes to InteractiveShell:
7028
7032
7029 - Made the usage message a parameter.
7033 - Made the usage message a parameter.
7030
7034
7031 - Require the name of the shell variable to be given. It's a bit
7035 - Require the name of the shell variable to be given. It's a bit
7032 of a hack, but allows the name 'shell' not to be hardwired in the
7036 of a hack, but allows the name 'shell' not to be hardwired in the
7033 magic (@) handler, which is problematic b/c it requires
7037 magic (@) handler, which is problematic b/c it requires
7034 polluting the global namespace with 'shell'. This in turn is
7038 polluting the global namespace with 'shell'. This in turn is
7035 fragile: if a user redefines a variable called shell, things
7039 fragile: if a user redefines a variable called shell, things
7036 break.
7040 break.
7037
7041
7038 - magic @: all functions available through @ need to be defined
7042 - magic @: all functions available through @ need to be defined
7039 as magic_<name>, even though they can be called simply as
7043 as magic_<name>, even though they can be called simply as
7040 @<name>. This allows the special command @magic to gather
7044 @<name>. This allows the special command @magic to gather
7041 information automatically about all existing magic functions,
7045 information automatically about all existing magic functions,
7042 even if they are run-time user extensions, by parsing the shell
7046 even if they are run-time user extensions, by parsing the shell
7043 instance __dict__ looking for special magic_ names.
7047 instance __dict__ looking for special magic_ names.
7044
7048
7045 - mainloop: added *two* local namespace parameters. This allows
7049 - mainloop: added *two* local namespace parameters. This allows
7046 the class to differentiate between parameters which were there
7050 the class to differentiate between parameters which were there
7047 before and after command line initialization was processed. This
7051 before and after command line initialization was processed. This
7048 way, later @who can show things loaded at startup by the
7052 way, later @who can show things loaded at startup by the
7049 user. This trick was necessary to make session saving/reloading
7053 user. This trick was necessary to make session saving/reloading
7050 really work: ideally after saving/exiting/reloading a session,
7054 really work: ideally after saving/exiting/reloading a session,
7051 *everything* should look the same, including the output of @who. I
7055 *everything* should look the same, including the output of @who. I
7052 was only able to make this work with this double namespace
7056 was only able to make this work with this double namespace
7053 trick.
7057 trick.
7054
7058
7055 - added a header to the logfile which allows (almost) full
7059 - added a header to the logfile which allows (almost) full
7056 session restoring.
7060 session restoring.
7057
7061
7058 - prepend lines beginning with @ or !, with a and log
7062 - prepend lines beginning with @ or !, with a and log
7059 them. Why? !lines: may be useful to know what you did @lines:
7063 them. Why? !lines: may be useful to know what you did @lines:
7060 they may affect session state. So when restoring a session, at
7064 they may affect session state. So when restoring a session, at
7061 least inform the user of their presence. I couldn't quite get
7065 least inform the user of their presence. I couldn't quite get
7062 them to properly re-execute, but at least the user is warned.
7066 them to properly re-execute, but at least the user is warned.
7063
7067
7064 * Started ChangeLog.
7068 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now