##// END OF EJS Templates
Command line args have the highest priority again
vivainio -
Show More
@@ -1,766 +1,769 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 2649 2007-08-21 18:19:20Z vivainio $"""
9 $Id: ipmaker.py 2672 2007-08-26 09:15:26Z 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 """? -> Introduction to IPython's features.
114 """? -> Introduction to IPython's features.
115 %magic -> Information about IPython's 'magic' % functions.
115 %magic -> Information about IPython's 'magic' % functions.
116 help -> Python's own help system.
116 help -> Python's own help system.
117 object? -> Details about 'object'. ?object also works, ?? prints more.
117 object? -> Details about 'object'. ?object also works, ?? prints more.
118 """ ]
118 """ ]
119
119
120 IP.usage = interactive_usage
120 IP.usage = interactive_usage
121
121
122 # Platform-dependent suffix and directory names. We use _ipython instead
122 # Platform-dependent suffix and directory names. We use _ipython instead
123 # of .ipython under win32 b/c there's software that breaks with .named
123 # of .ipython under win32 b/c there's software that breaks with .named
124 # directories on that platform.
124 # directories on that platform.
125 if os.name == 'posix':
125 if os.name == 'posix':
126 rc_suffix = ''
126 rc_suffix = ''
127 ipdir_def = '.ipython'
127 ipdir_def = '.ipython'
128 else:
128 else:
129 rc_suffix = '.ini'
129 rc_suffix = '.ini'
130 ipdir_def = '_ipython'
130 ipdir_def = '_ipython'
131
131
132 # default directory for configuration
132 # default directory for configuration
133 ipythondir_def = os.path.abspath(os.environ.get('IPYTHONDIR',
133 ipythondir_def = os.path.abspath(os.environ.get('IPYTHONDIR',
134 os.path.join(IP.home_dir,ipdir_def)))
134 os.path.join(IP.home_dir,ipdir_def)))
135
135
136 sys.path.insert(0, '') # add . to sys.path. Fix from Prabhu Ramachandran
136 sys.path.insert(0, '') # add . to sys.path. Fix from Prabhu Ramachandran
137
137
138 # we need the directory where IPython itself is installed
138 # we need the directory where IPython itself is installed
139 import IPython
139 import IPython
140 IPython_dir = os.path.dirname(IPython.__file__)
140 IPython_dir = os.path.dirname(IPython.__file__)
141 del IPython
141 del IPython
142
142
143 #-------------------------------------------------------------------------
143 #-------------------------------------------------------------------------
144 # Command line handling
144 # Command line handling
145
145
146 # Valid command line options (uses DPyGetOpt syntax, like Perl's
146 # Valid command line options (uses DPyGetOpt syntax, like Perl's
147 # GetOpt::Long)
147 # GetOpt::Long)
148
148
149 # Any key not listed here gets deleted even if in the file (like session
149 # Any key not listed here gets deleted even if in the file (like session
150 # or profile). That's deliberate, to maintain the rc namespace clean.
150 # or profile). That's deliberate, to maintain the rc namespace clean.
151
151
152 # Each set of options appears twice: under _conv only the names are
152 # Each set of options appears twice: under _conv only the names are
153 # listed, indicating which type they must be converted to when reading the
153 # listed, indicating which type they must be converted to when reading the
154 # ipythonrc file. And under DPyGetOpt they are listed with the regular
154 # ipythonrc file. And under DPyGetOpt they are listed with the regular
155 # DPyGetOpt syntax (=s,=i,:f,etc).
155 # DPyGetOpt syntax (=s,=i,:f,etc).
156
156
157 # Make sure there's a space before each end of line (they get auto-joined!)
157 # Make sure there's a space before each end of line (they get auto-joined!)
158 cmdline_opts = ('autocall=i autoindent! automagic! banner! cache_size|cs=i '
158 cmdline_opts = ('autocall=i autoindent! automagic! banner! cache_size|cs=i '
159 'c=s classic|cl color_info! colors=s confirm_exit! '
159 'c=s classic|cl color_info! colors=s confirm_exit! '
160 'debug! deep_reload! editor=s log|l messages! nosep '
160 'debug! deep_reload! editor=s log|l messages! nosep '
161 'object_info_string_level=i pdb! '
161 'object_info_string_level=i pdb! '
162 'pprint! prompt_in1|pi1=s prompt_in2|pi2=s prompt_out|po=s '
162 'pprint! prompt_in1|pi1=s prompt_in2|pi2=s prompt_out|po=s '
163 'pylab_import_all! '
163 'pylab_import_all! '
164 'quick screen_length|sl=i prompts_pad_left=i '
164 'quick screen_length|sl=i prompts_pad_left=i '
165 'logfile|lf=s logplay|lp=s profile|p=s '
165 'logfile|lf=s logplay|lp=s profile|p=s '
166 'readline! readline_merge_completions! '
166 'readline! readline_merge_completions! '
167 'readline_omit__names! '
167 'readline_omit__names! '
168 'rcfile=s separate_in|si=s separate_out|so=s '
168 'rcfile=s separate_in|si=s separate_out|so=s '
169 'separate_out2|so2=s xmode=s wildcards_case_sensitive! '
169 'separate_out2|so2=s xmode=s wildcards_case_sensitive! '
170 'magic_docstrings system_verbose! '
170 'magic_docstrings system_verbose! '
171 'multi_line_specials! '
171 'multi_line_specials! '
172 'term_title! wxversion=s '
172 'term_title! wxversion=s '
173 'autoedit_syntax!')
173 'autoedit_syntax!')
174
174
175 # Options that can *only* appear at the cmd line (not in rcfiles).
175 # Options that can *only* appear at the cmd line (not in rcfiles).
176
176
177 # The "ignore" option is a kludge so that Emacs buffers don't crash, since
177 # The "ignore" option is a kludge so that Emacs buffers don't crash, since
178 # the 'C-c !' command in emacs automatically appends a -i option at the end.
178 # the 'C-c !' command in emacs automatically appends a -i option at the end.
179 cmdline_only = ('help ignore|i ipythondir=s Version upgrade '
179 cmdline_only = ('help ignore|i ipythondir=s Version upgrade '
180 'gthread! qthread! q4thread! wthread! pylab! tk!')
180 'gthread! qthread! q4thread! wthread! pylab! tk!')
181
181
182 # Build the actual name list to be used by DPyGetOpt
182 # Build the actual name list to be used by DPyGetOpt
183 opts_names = qw(cmdline_opts) + qw(cmdline_only)
183 opts_names = qw(cmdline_opts) + qw(cmdline_only)
184
184
185 # Set sensible command line defaults.
185 # Set sensible command line defaults.
186 # This should have everything from cmdline_opts and cmdline_only
186 # This should have everything from cmdline_opts and cmdline_only
187 opts_def = Struct(autocall = 1,
187 opts_def = Struct(autocall = 1,
188 autoedit_syntax = 0,
188 autoedit_syntax = 0,
189 autoindent = 0,
189 autoindent = 0,
190 automagic = 1,
190 automagic = 1,
191 banner = 1,
191 banner = 1,
192 cache_size = 1000,
192 cache_size = 1000,
193 c = '',
193 c = '',
194 classic = 0,
194 classic = 0,
195 colors = 'NoColor',
195 colors = 'NoColor',
196 color_info = 0,
196 color_info = 0,
197 confirm_exit = 1,
197 confirm_exit = 1,
198 debug = 0,
198 debug = 0,
199 deep_reload = 0,
199 deep_reload = 0,
200 editor = '0',
200 editor = '0',
201 help = 0,
201 help = 0,
202 ignore = 0,
202 ignore = 0,
203 ipythondir = ipythondir_def,
203 ipythondir = ipythondir_def,
204 log = 0,
204 log = 0,
205 logfile = '',
205 logfile = '',
206 logplay = '',
206 logplay = '',
207 multi_line_specials = 1,
207 multi_line_specials = 1,
208 messages = 1,
208 messages = 1,
209 object_info_string_level = 0,
209 object_info_string_level = 0,
210 nosep = 0,
210 nosep = 0,
211 pdb = 0,
211 pdb = 0,
212 pprint = 0,
212 pprint = 0,
213 profile = '',
213 profile = '',
214 prompt_in1 = 'In [\\#]: ',
214 prompt_in1 = 'In [\\#]: ',
215 prompt_in2 = ' .\\D.: ',
215 prompt_in2 = ' .\\D.: ',
216 prompt_out = 'Out[\\#]: ',
216 prompt_out = 'Out[\\#]: ',
217 prompts_pad_left = 1,
217 prompts_pad_left = 1,
218 pylab_import_all = 1,
218 pylab_import_all = 1,
219 quiet = 0,
219 quiet = 0,
220 quick = 0,
220 quick = 0,
221 readline = 1,
221 readline = 1,
222 readline_merge_completions = 1,
222 readline_merge_completions = 1,
223 readline_omit__names = 0,
223 readline_omit__names = 0,
224 rcfile = 'ipythonrc' + rc_suffix,
224 rcfile = 'ipythonrc' + rc_suffix,
225 screen_length = 0,
225 screen_length = 0,
226 separate_in = '\n',
226 separate_in = '\n',
227 separate_out = '\n',
227 separate_out = '\n',
228 separate_out2 = '',
228 separate_out2 = '',
229 system_header = 'IPython system call: ',
229 system_header = 'IPython system call: ',
230 system_verbose = 0,
230 system_verbose = 0,
231 gthread = 0,
231 gthread = 0,
232 qthread = 0,
232 qthread = 0,
233 q4thread = 0,
233 q4thread = 0,
234 wthread = 0,
234 wthread = 0,
235 pylab = 0,
235 pylab = 0,
236 term_title = 1,
236 term_title = 1,
237 tk = 0,
237 tk = 0,
238 upgrade = 0,
238 upgrade = 0,
239 Version = 0,
239 Version = 0,
240 xmode = 'Verbose',
240 xmode = 'Verbose',
241 wildcards_case_sensitive = 1,
241 wildcards_case_sensitive = 1,
242 wxversion = '0',
242 wxversion = '0',
243 magic_docstrings = 0, # undocumented, for doc generation
243 magic_docstrings = 0, # undocumented, for doc generation
244 )
244 )
245
245
246 # Things that will *only* appear in rcfiles (not at the command line).
246 # Things that will *only* appear in rcfiles (not at the command line).
247 # Make sure there's a space before each end of line (they get auto-joined!)
247 # Make sure there's a space before each end of line (they get auto-joined!)
248 rcfile_opts = { qwflat: 'include import_mod import_all execfile ',
248 rcfile_opts = { qwflat: 'include import_mod import_all execfile ',
249 qw_lol: 'import_some ',
249 qw_lol: 'import_some ',
250 # for things with embedded whitespace:
250 # for things with embedded whitespace:
251 list_strings:'execute alias readline_parse_and_bind ',
251 list_strings:'execute alias readline_parse_and_bind ',
252 # Regular strings need no conversion:
252 # Regular strings need no conversion:
253 None:'readline_remove_delims ',
253 None:'readline_remove_delims ',
254 }
254 }
255 # Default values for these
255 # Default values for these
256 rc_def = Struct(include = [],
256 rc_def = Struct(include = [],
257 import_mod = [],
257 import_mod = [],
258 import_all = [],
258 import_all = [],
259 import_some = [[]],
259 import_some = [[]],
260 execute = [],
260 execute = [],
261 execfile = [],
261 execfile = [],
262 alias = [],
262 alias = [],
263 readline_parse_and_bind = [],
263 readline_parse_and_bind = [],
264 readline_remove_delims = '',
264 readline_remove_delims = '',
265 )
265 )
266
266
267 # Build the type conversion dictionary from the above tables:
267 # Build the type conversion dictionary from the above tables:
268 typeconv = rcfile_opts.copy()
268 typeconv = rcfile_opts.copy()
269 typeconv.update(optstr2types(cmdline_opts))
269 typeconv.update(optstr2types(cmdline_opts))
270
270
271 # FIXME: the None key appears in both, put that back together by hand. Ugly!
271 # FIXME: the None key appears in both, put that back together by hand. Ugly!
272 typeconv[None] += ' ' + rcfile_opts[None]
272 typeconv[None] += ' ' + rcfile_opts[None]
273
273
274 # Remove quotes at ends of all strings (used to protect spaces)
274 # Remove quotes at ends of all strings (used to protect spaces)
275 typeconv[unquote_ends] = typeconv[None]
275 typeconv[unquote_ends] = typeconv[None]
276 del typeconv[None]
276 del typeconv[None]
277
277
278 # Build the list we'll use to make all config decisions with defaults:
278 # Build the list we'll use to make all config decisions with defaults:
279 opts_all = opts_def.copy()
279 opts_all = opts_def.copy()
280 opts_all.update(rc_def)
280 opts_all.update(rc_def)
281
281
282 # Build conflict resolver for recursive loading of config files:
282 # Build conflict resolver for recursive loading of config files:
283 # - preserve means the outermost file maintains the value, it is not
283 # - preserve means the outermost file maintains the value, it is not
284 # overwritten if an included file has the same key.
284 # overwritten if an included file has the same key.
285 # - add_flip applies + to the two values, so it better make sense to add
285 # - add_flip applies + to the two values, so it better make sense to add
286 # those types of keys. But it flips them first so that things loaded
286 # those types of keys. But it flips them first so that things loaded
287 # deeper in the inclusion chain have lower precedence.
287 # deeper in the inclusion chain have lower precedence.
288 conflict = {'preserve': ' '.join([ typeconv[int],
288 conflict = {'preserve': ' '.join([ typeconv[int],
289 typeconv[unquote_ends] ]),
289 typeconv[unquote_ends] ]),
290 'add_flip': ' '.join([ typeconv[qwflat],
290 'add_flip': ' '.join([ typeconv[qwflat],
291 typeconv[qw_lol],
291 typeconv[qw_lol],
292 typeconv[list_strings] ])
292 typeconv[list_strings] ])
293 }
293 }
294
294
295 # Now actually process the command line
295 # Now actually process the command line
296 getopt = DPyGetOpt.DPyGetOpt()
296 getopt = DPyGetOpt.DPyGetOpt()
297 getopt.setIgnoreCase(0)
297 getopt.setIgnoreCase(0)
298
298
299 getopt.parseConfiguration(opts_names)
299 getopt.parseConfiguration(opts_names)
300
300
301 try:
301 try:
302 getopt.processArguments(argv)
302 getopt.processArguments(argv)
303 except:
303 except:
304 print cmd_line_usage
304 print cmd_line_usage
305 warn('\nError in Arguments: ' + `sys.exc_value`)
305 warn('\nError in Arguments: ' + `sys.exc_value`)
306 sys.exit(1)
306 sys.exit(1)
307
307
308 # convert the options dict to a struct for much lighter syntax later
308 # convert the options dict to a struct for much lighter syntax later
309 opts = Struct(getopt.optionValues)
309 opts = Struct(getopt.optionValues)
310 args = getopt.freeValues
310 args = getopt.freeValues
311
311
312 # this is the struct (which has default values at this point) with which
312 # this is the struct (which has default values at this point) with which
313 # we make all decisions:
313 # we make all decisions:
314 opts_all.update(opts)
314 opts_all.update(opts)
315
315
316 # Options that force an immediate exit
316 # Options that force an immediate exit
317 if opts_all.help:
317 if opts_all.help:
318 page(cmd_line_usage)
318 page(cmd_line_usage)
319 sys.exit()
319 sys.exit()
320
320
321 if opts_all.Version:
321 if opts_all.Version:
322 print __version__
322 print __version__
323 sys.exit()
323 sys.exit()
324
324
325 if opts_all.magic_docstrings:
325 if opts_all.magic_docstrings:
326 IP.magic_magic('-latex')
326 IP.magic_magic('-latex')
327 sys.exit()
327 sys.exit()
328
328
329 # add personal ipythondir to sys.path so that users can put things in
329 # add personal ipythondir to sys.path so that users can put things in
330 # there for customization
330 # there for customization
331 sys.path.append(os.path.abspath(opts_all.ipythondir))
331 sys.path.append(os.path.abspath(opts_all.ipythondir))
332
332
333 # Create user config directory if it doesn't exist. This must be done
333 # Create user config directory if it doesn't exist. This must be done
334 # *after* getting the cmd line options.
334 # *after* getting the cmd line options.
335 if not os.path.isdir(opts_all.ipythondir):
335 if not os.path.isdir(opts_all.ipythondir):
336 IP.user_setup(opts_all.ipythondir,rc_suffix,'install')
336 IP.user_setup(opts_all.ipythondir,rc_suffix,'install')
337
337
338 # upgrade user config files while preserving a copy of the originals
338 # upgrade user config files while preserving a copy of the originals
339 if opts_all.upgrade:
339 if opts_all.upgrade:
340 IP.user_setup(opts_all.ipythondir,rc_suffix,'upgrade')
340 IP.user_setup(opts_all.ipythondir,rc_suffix,'upgrade')
341
341
342 # check mutually exclusive options in the *original* command line
342 # check mutually exclusive options in the *original* command line
343 mutex_opts(opts,[qw('log logfile'),qw('rcfile profile'),
343 mutex_opts(opts,[qw('log logfile'),qw('rcfile profile'),
344 qw('classic profile'),qw('classic rcfile')])
344 qw('classic profile'),qw('classic rcfile')])
345
345
346 #---------------------------------------------------------------------------
346 #---------------------------------------------------------------------------
347 # Log replay
347 # Log replay
348
348
349 # if -logplay, we need to 'become' the other session. That basically means
349 # if -logplay, we need to 'become' the other session. That basically means
350 # replacing the current command line environment with that of the old
350 # replacing the current command line environment with that of the old
351 # session and moving on.
351 # session and moving on.
352
352
353 # this is needed so that later we know we're in session reload mode, as
353 # this is needed so that later we know we're in session reload mode, as
354 # opts_all will get overwritten:
354 # opts_all will get overwritten:
355 load_logplay = 0
355 load_logplay = 0
356
356
357 if opts_all.logplay:
357 if opts_all.logplay:
358 load_logplay = opts_all.logplay
358 load_logplay = opts_all.logplay
359 opts_debug_save = opts_all.debug
359 opts_debug_save = opts_all.debug
360 try:
360 try:
361 logplay = open(opts_all.logplay)
361 logplay = open(opts_all.logplay)
362 except IOError:
362 except IOError:
363 if opts_all.debug: IP.InteractiveTB()
363 if opts_all.debug: IP.InteractiveTB()
364 warn('Could not open logplay file '+`opts_all.logplay`)
364 warn('Could not open logplay file '+`opts_all.logplay`)
365 # restore state as if nothing had happened and move on, but make
365 # restore state as if nothing had happened and move on, but make
366 # sure that later we don't try to actually load the session file
366 # sure that later we don't try to actually load the session file
367 logplay = None
367 logplay = None
368 load_logplay = 0
368 load_logplay = 0
369 del opts_all.logplay
369 del opts_all.logplay
370 else:
370 else:
371 try:
371 try:
372 logplay.readline()
372 logplay.readline()
373 logplay.readline();
373 logplay.readline();
374 # this reloads that session's command line
374 # this reloads that session's command line
375 cmd = logplay.readline()[6:]
375 cmd = logplay.readline()[6:]
376 exec cmd
376 exec cmd
377 # restore the true debug flag given so that the process of
377 # restore the true debug flag given so that the process of
378 # session loading itself can be monitored.
378 # session loading itself can be monitored.
379 opts.debug = opts_debug_save
379 opts.debug = opts_debug_save
380 # save the logplay flag so later we don't overwrite the log
380 # save the logplay flag so later we don't overwrite the log
381 opts.logplay = load_logplay
381 opts.logplay = load_logplay
382 # now we must update our own structure with defaults
382 # now we must update our own structure with defaults
383 opts_all.update(opts)
383 opts_all.update(opts)
384 # now load args
384 # now load args
385 cmd = logplay.readline()[6:]
385 cmd = logplay.readline()[6:]
386 exec cmd
386 exec cmd
387 logplay.close()
387 logplay.close()
388 except:
388 except:
389 logplay.close()
389 logplay.close()
390 if opts_all.debug: IP.InteractiveTB()
390 if opts_all.debug: IP.InteractiveTB()
391 warn("Logplay file lacking full configuration information.\n"
391 warn("Logplay file lacking full configuration information.\n"
392 "I'll try to read it, but some things may not work.")
392 "I'll try to read it, but some things may not work.")
393
393
394 #-------------------------------------------------------------------------
394 #-------------------------------------------------------------------------
395 # set up output traps: catch all output from files, being run, modules
395 # set up output traps: catch all output from files, being run, modules
396 # loaded, etc. Then give it to the user in a clean form at the end.
396 # loaded, etc. Then give it to the user in a clean form at the end.
397
397
398 msg_out = 'Output messages. '
398 msg_out = 'Output messages. '
399 msg_err = 'Error messages. '
399 msg_err = 'Error messages. '
400 msg_sep = '\n'
400 msg_sep = '\n'
401 msg = Struct(config = OutputTrap('Configuration Loader',msg_out,
401 msg = Struct(config = OutputTrap('Configuration Loader',msg_out,
402 msg_err,msg_sep,debug,
402 msg_err,msg_sep,debug,
403 quiet_out=1),
403 quiet_out=1),
404 user_exec = OutputTrap('User File Execution',msg_out,
404 user_exec = OutputTrap('User File Execution',msg_out,
405 msg_err,msg_sep,debug),
405 msg_err,msg_sep,debug),
406 logplay = OutputTrap('Log Loader',msg_out,
406 logplay = OutputTrap('Log Loader',msg_out,
407 msg_err,msg_sep,debug),
407 msg_err,msg_sep,debug),
408 summary = ''
408 summary = ''
409 )
409 )
410
410
411 #-------------------------------------------------------------------------
411 #-------------------------------------------------------------------------
412 # Process user ipythonrc-type configuration files
412 # Process user ipythonrc-type configuration files
413
413
414 # turn on output trapping and log to msg.config
414 # turn on output trapping and log to msg.config
415 # remember that with debug on, trapping is actually disabled
415 # remember that with debug on, trapping is actually disabled
416 msg.config.trap_all()
416 msg.config.trap_all()
417
417
418 # look for rcfile in current or default directory
418 # look for rcfile in current or default directory
419 try:
419 try:
420 opts_all.rcfile = filefind(opts_all.rcfile,opts_all.ipythondir)
420 opts_all.rcfile = filefind(opts_all.rcfile,opts_all.ipythondir)
421 except IOError:
421 except IOError:
422 if opts_all.debug: IP.InteractiveTB()
422 if opts_all.debug: IP.InteractiveTB()
423 warn('Configuration file %s not found. Ignoring request.'
423 warn('Configuration file %s not found. Ignoring request.'
424 % (opts_all.rcfile) )
424 % (opts_all.rcfile) )
425
425
426 # 'profiles' are a shorthand notation for config filenames
426 # 'profiles' are a shorthand notation for config filenames
427 profile_handled_by_legacy = False
427 profile_handled_by_legacy = False
428 if opts_all.profile:
428 if opts_all.profile:
429
429
430 try:
430 try:
431 opts_all.rcfile = filefind('ipythonrc-' + opts_all.profile
431 opts_all.rcfile = filefind('ipythonrc-' + opts_all.profile
432 + rc_suffix,
432 + rc_suffix,
433 opts_all.ipythondir)
433 opts_all.ipythondir)
434 profile_handled_by_legacy = True
434 profile_handled_by_legacy = True
435 except IOError:
435 except IOError:
436 if opts_all.debug: IP.InteractiveTB()
436 if opts_all.debug: IP.InteractiveTB()
437 opts.profile = '' # remove profile from options if invalid
437 opts.profile = '' # remove profile from options if invalid
438 # We won't warn anymore, primary method is ipy_profile_PROFNAME
438 # We won't warn anymore, primary method is ipy_profile_PROFNAME
439 # which does trigger a warning.
439 # which does trigger a warning.
440
440
441 # load the config file
441 # load the config file
442 rcfiledata = None
442 rcfiledata = None
443 if opts_all.quick:
443 if opts_all.quick:
444 print 'Launching IPython in quick mode. No config file read.'
444 print 'Launching IPython in quick mode. No config file read.'
445 elif opts_all.rcfile:
445 elif opts_all.rcfile:
446 try:
446 try:
447 cfg_loader = ConfigLoader(conflict)
447 cfg_loader = ConfigLoader(conflict)
448 rcfiledata = cfg_loader.load(opts_all.rcfile,typeconv,
448 rcfiledata = cfg_loader.load(opts_all.rcfile,typeconv,
449 'include',opts_all.ipythondir,
449 'include',opts_all.ipythondir,
450 purge = 1,
450 purge = 1,
451 unique = conflict['preserve'])
451 unique = conflict['preserve'])
452 except:
452 except:
453 IP.InteractiveTB()
453 IP.InteractiveTB()
454 warn('Problems loading configuration file '+
454 warn('Problems loading configuration file '+
455 `opts_all.rcfile`+
455 `opts_all.rcfile`+
456 '\nStarting with default -bare bones- configuration.')
456 '\nStarting with default -bare bones- configuration.')
457 else:
457 else:
458 warn('No valid configuration file found in either currrent directory\n'+
458 warn('No valid configuration file found in either currrent directory\n'+
459 'or in the IPython config. directory: '+`opts_all.ipythondir`+
459 'or in the IPython config. directory: '+`opts_all.ipythondir`+
460 '\nProceeding with internal defaults.')
460 '\nProceeding with internal defaults.')
461
461
462 #------------------------------------------------------------------------
462 #------------------------------------------------------------------------
463 # Set exception handlers in mode requested by user.
463 # Set exception handlers in mode requested by user.
464 otrap = OutputTrap(trap_out=1) # trap messages from magic_xmode
464 otrap = OutputTrap(trap_out=1) # trap messages from magic_xmode
465 IP.magic_xmode(opts_all.xmode)
465 IP.magic_xmode(opts_all.xmode)
466 otrap.release_out()
466 otrap.release_out()
467
467
468 #------------------------------------------------------------------------
468 #------------------------------------------------------------------------
469 # Execute user config
469 # Execute user config
470
470
471 # Create a valid config structure with the right precedence order:
471 # Create a valid config structure with the right precedence order:
472 # defaults < rcfile < command line. This needs to be in the instance, so
472 # defaults < rcfile < command line. This needs to be in the instance, so
473 # that method calls below that rely on it find it.
473 # that method calls below that rely on it find it.
474 IP.rc = rc_def.copy()
474 IP.rc = rc_def.copy()
475
475
476 # Work with a local alias inside this routine to avoid unnecessary
476 # Work with a local alias inside this routine to avoid unnecessary
477 # attribute lookups.
477 # attribute lookups.
478 IP_rc = IP.rc
478 IP_rc = IP.rc
479
479
480 IP_rc.update(opts_def)
480 IP_rc.update(opts_def)
481 if rcfiledata:
481 if rcfiledata:
482 # now we can update
482 # now we can update
483 IP_rc.update(rcfiledata)
483 IP_rc.update(rcfiledata)
484 IP_rc.update(opts)
484 IP_rc.update(opts)
485 IP_rc.update(rc_override)
485 IP_rc.update(rc_override)
486
486
487 # Store the original cmd line for reference:
487 # Store the original cmd line for reference:
488 IP_rc.opts = opts
488 IP_rc.opts = opts
489 IP_rc.args = args
489 IP_rc.args = args
490
490
491 # create a *runtime* Struct like rc for holding parameters which may be
491 # create a *runtime* Struct like rc for holding parameters which may be
492 # created and/or modified by runtime user extensions.
492 # created and/or modified by runtime user extensions.
493 IP.runtime_rc = Struct()
493 IP.runtime_rc = Struct()
494
494
495 # from this point on, all config should be handled through IP_rc,
495 # from this point on, all config should be handled through IP_rc,
496 # opts* shouldn't be used anymore.
496 # opts* shouldn't be used anymore.
497
497
498
498
499 # update IP_rc with some special things that need manual
499 # update IP_rc with some special things that need manual
500 # tweaks. Basically options which affect other options. I guess this
500 # tweaks. Basically options which affect other options. I guess this
501 # should just be written so that options are fully orthogonal and we
501 # should just be written so that options are fully orthogonal and we
502 # wouldn't worry about this stuff!
502 # wouldn't worry about this stuff!
503
503
504 if IP_rc.classic:
504 if IP_rc.classic:
505 IP_rc.quick = 1
505 IP_rc.quick = 1
506 IP_rc.cache_size = 0
506 IP_rc.cache_size = 0
507 IP_rc.pprint = 0
507 IP_rc.pprint = 0
508 IP_rc.prompt_in1 = '>>> '
508 IP_rc.prompt_in1 = '>>> '
509 IP_rc.prompt_in2 = '... '
509 IP_rc.prompt_in2 = '... '
510 IP_rc.prompt_out = ''
510 IP_rc.prompt_out = ''
511 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
511 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
512 IP_rc.colors = 'NoColor'
512 IP_rc.colors = 'NoColor'
513 IP_rc.xmode = 'Plain'
513 IP_rc.xmode = 'Plain'
514
514
515 IP.pre_config_initialization()
515 IP.pre_config_initialization()
516 # configure readline
516 # configure readline
517 # Define the history file for saving commands in between sessions
517 # Define the history file for saving commands in between sessions
518 if IP_rc.profile:
518 if IP_rc.profile:
519 histfname = 'history-%s' % IP_rc.profile
519 histfname = 'history-%s' % IP_rc.profile
520 else:
520 else:
521 histfname = 'history'
521 histfname = 'history'
522 IP.histfile = os.path.join(opts_all.ipythondir,histfname)
522 IP.histfile = os.path.join(opts_all.ipythondir,histfname)
523
523
524 # update exception handlers with rc file status
524 # update exception handlers with rc file status
525 otrap.trap_out() # I don't want these messages ever.
525 otrap.trap_out() # I don't want these messages ever.
526 IP.magic_xmode(IP_rc.xmode)
526 IP.magic_xmode(IP_rc.xmode)
527 otrap.release_out()
527 otrap.release_out()
528
528
529 # activate logging if requested and not reloading a log
529 # activate logging if requested and not reloading a log
530 if IP_rc.logplay:
530 if IP_rc.logplay:
531 IP.magic_logstart(IP_rc.logplay + ' append')
531 IP.magic_logstart(IP_rc.logplay + ' append')
532 elif IP_rc.logfile:
532 elif IP_rc.logfile:
533 IP.magic_logstart(IP_rc.logfile)
533 IP.magic_logstart(IP_rc.logfile)
534 elif IP_rc.log:
534 elif IP_rc.log:
535 IP.magic_logstart()
535 IP.magic_logstart()
536
536
537 # find user editor so that it we don't have to look it up constantly
537 # find user editor so that it we don't have to look it up constantly
538 if IP_rc.editor.strip()=='0':
538 if IP_rc.editor.strip()=='0':
539 try:
539 try:
540 ed = os.environ['EDITOR']
540 ed = os.environ['EDITOR']
541 except KeyError:
541 except KeyError:
542 if os.name == 'posix':
542 if os.name == 'posix':
543 ed = 'vi' # the only one guaranteed to be there!
543 ed = 'vi' # the only one guaranteed to be there!
544 else:
544 else:
545 ed = 'notepad' # same in Windows!
545 ed = 'notepad' # same in Windows!
546 IP_rc.editor = ed
546 IP_rc.editor = ed
547
547
548 # Keep track of whether this is an embedded instance or not (useful for
548 # Keep track of whether this is an embedded instance or not (useful for
549 # post-mortems).
549 # post-mortems).
550 IP_rc.embedded = IP.embedded
550 IP_rc.embedded = IP.embedded
551
551
552 # Recursive reload
552 # Recursive reload
553 try:
553 try:
554 from IPython import deep_reload
554 from IPython import deep_reload
555 if IP_rc.deep_reload:
555 if IP_rc.deep_reload:
556 __builtin__.reload = deep_reload.reload
556 __builtin__.reload = deep_reload.reload
557 else:
557 else:
558 __builtin__.dreload = deep_reload.reload
558 __builtin__.dreload = deep_reload.reload
559 del deep_reload
559 del deep_reload
560 except ImportError:
560 except ImportError:
561 pass
561 pass
562
562
563 # Save the current state of our namespace so that the interactive shell
563 # Save the current state of our namespace so that the interactive shell
564 # can later know which variables have been created by us from config files
564 # can later know which variables have been created by us from config files
565 # and loading. This way, loading a file (in any way) is treated just like
565 # and loading. This way, loading a file (in any way) is treated just like
566 # defining things on the command line, and %who works as expected.
566 # defining things on the command line, and %who works as expected.
567
567
568 # DON'T do anything that affects the namespace beyond this point!
568 # DON'T do anything that affects the namespace beyond this point!
569 IP.internal_ns.update(__main__.__dict__)
569 IP.internal_ns.update(__main__.__dict__)
570
570
571 #IP.internal_ns.update(locals()) # so our stuff doesn't show up in %who
571 #IP.internal_ns.update(locals()) # so our stuff doesn't show up in %who
572
572
573 # Now run through the different sections of the users's config
573 # Now run through the different sections of the users's config
574 if IP_rc.debug:
574 if IP_rc.debug:
575 print 'Trying to execute the following configuration structure:'
575 print 'Trying to execute the following configuration structure:'
576 print '(Things listed first are deeper in the inclusion tree and get'
576 print '(Things listed first are deeper in the inclusion tree and get'
577 print 'loaded first).\n'
577 print 'loaded first).\n'
578 pprint(IP_rc.__dict__)
578 pprint(IP_rc.__dict__)
579
579
580 for mod in IP_rc.import_mod:
580 for mod in IP_rc.import_mod:
581 try:
581 try:
582 exec 'import '+mod in IP.user_ns
582 exec 'import '+mod in IP.user_ns
583 except :
583 except :
584 IP.InteractiveTB()
584 IP.InteractiveTB()
585 import_fail_info(mod)
585 import_fail_info(mod)
586
586
587 for mod_fn in IP_rc.import_some:
587 for mod_fn in IP_rc.import_some:
588 if not mod_fn == []:
588 if not mod_fn == []:
589 mod,fn = mod_fn[0],','.join(mod_fn[1:])
589 mod,fn = mod_fn[0],','.join(mod_fn[1:])
590 try:
590 try:
591 exec 'from '+mod+' import '+fn in IP.user_ns
591 exec 'from '+mod+' import '+fn in IP.user_ns
592 except :
592 except :
593 IP.InteractiveTB()
593 IP.InteractiveTB()
594 import_fail_info(mod,fn)
594 import_fail_info(mod,fn)
595
595
596 for mod in IP_rc.import_all:
596 for mod in IP_rc.import_all:
597 try:
597 try:
598 exec 'from '+mod+' import *' in IP.user_ns
598 exec 'from '+mod+' import *' in IP.user_ns
599 except :
599 except :
600 IP.InteractiveTB()
600 IP.InteractiveTB()
601 import_fail_info(mod)
601 import_fail_info(mod)
602
602
603 for code in IP_rc.execute:
603 for code in IP_rc.execute:
604 try:
604 try:
605 exec code in IP.user_ns
605 exec code in IP.user_ns
606 except:
606 except:
607 IP.InteractiveTB()
607 IP.InteractiveTB()
608 warn('Failure executing code: ' + `code`)
608 warn('Failure executing code: ' + `code`)
609
609
610 # Execute the files the user wants in ipythonrc
610 # Execute the files the user wants in ipythonrc
611 for file in IP_rc.execfile:
611 for file in IP_rc.execfile:
612 try:
612 try:
613 file = filefind(file,sys.path+[IPython_dir])
613 file = filefind(file,sys.path+[IPython_dir])
614 except IOError:
614 except IOError:
615 warn(itpl('File $file not found. Skipping it.'))
615 warn(itpl('File $file not found. Skipping it.'))
616 else:
616 else:
617 IP.safe_execfile(os.path.expanduser(file),IP.user_ns)
617 IP.safe_execfile(os.path.expanduser(file),IP.user_ns)
618
618
619 # finally, try importing ipy_*_conf for final configuration
619 # finally, try importing ipy_*_conf for final configuration
620 try:
620 try:
621 import ipy_system_conf
621 import ipy_system_conf
622 except ImportError:
622 except ImportError:
623 if opts_all.debug: IP.InteractiveTB()
623 if opts_all.debug: IP.InteractiveTB()
624 warn("Could not import 'ipy_system_conf'")
624 warn("Could not import 'ipy_system_conf'")
625 except:
625 except:
626 IP.InteractiveTB()
626 IP.InteractiveTB()
627 import_fail_info('ipy_system_conf')
627 import_fail_info('ipy_system_conf')
628
628
629 # only import prof module if ipythonrc-PROF was not found
629 # only import prof module if ipythonrc-PROF was not found
630 if opts_all.profile and not profile_handled_by_legacy:
630 if opts_all.profile and not profile_handled_by_legacy:
631 profmodname = 'ipy_profile_' + opts_all.profile
631 profmodname = 'ipy_profile_' + opts_all.profile
632 try:
632 try:
633 __import__(profmodname)
633 __import__(profmodname)
634 except ImportError:
634 except ImportError:
635 # only warn if ipythonrc-PROFNAME didn't exist
635 # only warn if ipythonrc-PROFNAME didn't exist
636 if opts.profile =='':
636 if opts.profile =='':
637 warn("Could not start with profile '%s'!\n"
637 warn("Could not start with profile '%s'!\n"
638 "('%s/%s.py' does not exist? run '%%upgrade')" %
638 "('%s/%s.py' does not exist? run '%%upgrade')" %
639 (opts_all.profile, opts_all.ipythondir, profmodname) )
639 (opts_all.profile, opts_all.ipythondir, profmodname) )
640 except:
640 except:
641 print "Error importing",profmodname,"- perhaps you should run %upgrade?"
641 print "Error importing",profmodname,"- perhaps you should run %upgrade?"
642 IP.InteractiveTB()
642 IP.InteractiveTB()
643 import_fail_info(profmodname)
643 import_fail_info(profmodname)
644 else:
644 else:
645 import ipy_profile_none
645 import ipy_profile_none
646 try:
646 try:
647 import ipy_user_conf
647 import ipy_user_conf
648 except ImportError:
648 except ImportError:
649 if opts_all.debug: IP.InteractiveTB()
649 if opts_all.debug: IP.InteractiveTB()
650 warn("Could not import user config!\n "
650 warn("Could not import user config!\n "
651 "('%s/ipy_user_conf.py' does not exist? Please run '%%upgrade')\n"
651 "('%s/ipy_user_conf.py' does not exist? Please run '%%upgrade')\n"
652 % opts_all.ipythondir)
652 % opts_all.ipythondir)
653 except:
653 except:
654 print "Error importing ipy_user_conf - perhaps you should run %upgrade?"
654 print "Error importing ipy_user_conf - perhaps you should run %upgrade?"
655 IP.InteractiveTB()
655 IP.InteractiveTB()
656 import_fail_info("ipy_user_conf")
656 import_fail_info("ipy_user_conf")
657
658 # finally, push the argv to options again to ensure highest priority
659 IP_rc.update(opts)
657
660
658 # release stdout and stderr and save config log into a global summary
661 # release stdout and stderr and save config log into a global summary
659 msg.config.release_all()
662 msg.config.release_all()
660 if IP_rc.messages:
663 if IP_rc.messages:
661 msg.summary += msg.config.summary_all()
664 msg.summary += msg.config.summary_all()
662
665
663 #------------------------------------------------------------------------
666 #------------------------------------------------------------------------
664 # Setup interactive session
667 # Setup interactive session
665
668
666 # Now we should be fully configured. We can then execute files or load
669 # Now we should be fully configured. We can then execute files or load
667 # things only needed for interactive use. Then we'll open the shell.
670 # things only needed for interactive use. Then we'll open the shell.
668
671
669 # Take a snapshot of the user namespace before opening the shell. That way
672 # Take a snapshot of the user namespace before opening the shell. That way
670 # we'll be able to identify which things were interactively defined and
673 # we'll be able to identify which things were interactively defined and
671 # which were defined through config files.
674 # which were defined through config files.
672 IP.user_config_ns.update(IP.user_ns)
675 IP.user_config_ns.update(IP.user_ns)
673
676
674 # Force reading a file as if it were a session log. Slower but safer.
677 # Force reading a file as if it were a session log. Slower but safer.
675 if load_logplay:
678 if load_logplay:
676 print 'Replaying log...'
679 print 'Replaying log...'
677 try:
680 try:
678 if IP_rc.debug:
681 if IP_rc.debug:
679 logplay_quiet = 0
682 logplay_quiet = 0
680 else:
683 else:
681 logplay_quiet = 1
684 logplay_quiet = 1
682
685
683 msg.logplay.trap_all()
686 msg.logplay.trap_all()
684 IP.safe_execfile(load_logplay,IP.user_ns,
687 IP.safe_execfile(load_logplay,IP.user_ns,
685 islog = 1, quiet = logplay_quiet)
688 islog = 1, quiet = logplay_quiet)
686 msg.logplay.release_all()
689 msg.logplay.release_all()
687 if IP_rc.messages:
690 if IP_rc.messages:
688 msg.summary += msg.logplay.summary_all()
691 msg.summary += msg.logplay.summary_all()
689 except:
692 except:
690 warn('Problems replaying logfile %s.' % load_logplay)
693 warn('Problems replaying logfile %s.' % load_logplay)
691 IP.InteractiveTB()
694 IP.InteractiveTB()
692
695
693 # Load remaining files in command line
696 # Load remaining files in command line
694 msg.user_exec.trap_all()
697 msg.user_exec.trap_all()
695
698
696 # Do NOT execute files named in the command line as scripts to be loaded
699 # Do NOT execute files named in the command line as scripts to be loaded
697 # by embedded instances. Doing so has the potential for an infinite
700 # by embedded instances. Doing so has the potential for an infinite
698 # recursion if there are exceptions thrown in the process.
701 # recursion if there are exceptions thrown in the process.
699
702
700 # XXX FIXME: the execution of user files should be moved out to after
703 # XXX FIXME: the execution of user files should be moved out to after
701 # ipython is fully initialized, just as if they were run via %run at the
704 # ipython is fully initialized, just as if they were run via %run at the
702 # ipython prompt. This would also give them the benefit of ipython's
705 # ipython prompt. This would also give them the benefit of ipython's
703 # nice tracebacks.
706 # nice tracebacks.
704
707
705 if (not embedded and IP_rc.args and
708 if (not embedded and IP_rc.args and
706 not IP_rc.args[0].lower().endswith('.ipy')):
709 not IP_rc.args[0].lower().endswith('.ipy')):
707 name_save = IP.user_ns['__name__']
710 name_save = IP.user_ns['__name__']
708 IP.user_ns['__name__'] = '__main__'
711 IP.user_ns['__name__'] = '__main__'
709 # Set our own excepthook in case the user code tries to call it
712 # Set our own excepthook in case the user code tries to call it
710 # directly. This prevents triggering the IPython crash handler.
713 # directly. This prevents triggering the IPython crash handler.
711 old_excepthook,sys.excepthook = sys.excepthook, IP.excepthook
714 old_excepthook,sys.excepthook = sys.excepthook, IP.excepthook
712
715
713 save_argv = sys.argv[1:] # save it for later restoring
716 save_argv = sys.argv[1:] # save it for later restoring
714
717
715 sys.argv = args
718 sys.argv = args
716
719
717 try:
720 try:
718 IP.safe_execfile(args[0], IP.user_ns)
721 IP.safe_execfile(args[0], IP.user_ns)
719 finally:
722 finally:
720 # Reset our crash handler in place
723 # Reset our crash handler in place
721 sys.excepthook = old_excepthook
724 sys.excepthook = old_excepthook
722 sys.argv[:] = save_argv
725 sys.argv[:] = save_argv
723 IP.user_ns['__name__'] = name_save
726 IP.user_ns['__name__'] = name_save
724
727
725 msg.user_exec.release_all()
728 msg.user_exec.release_all()
726
729
727 if IP_rc.messages:
730 if IP_rc.messages:
728 msg.summary += msg.user_exec.summary_all()
731 msg.summary += msg.user_exec.summary_all()
729
732
730 # since we can't specify a null string on the cmd line, 0 is the equivalent:
733 # since we can't specify a null string on the cmd line, 0 is the equivalent:
731 if IP_rc.nosep:
734 if IP_rc.nosep:
732 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
735 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
733 if IP_rc.separate_in == '0': IP_rc.separate_in = ''
736 if IP_rc.separate_in == '0': IP_rc.separate_in = ''
734 if IP_rc.separate_out == '0': IP_rc.separate_out = ''
737 if IP_rc.separate_out == '0': IP_rc.separate_out = ''
735 if IP_rc.separate_out2 == '0': IP_rc.separate_out2 = ''
738 if IP_rc.separate_out2 == '0': IP_rc.separate_out2 = ''
736 IP_rc.separate_in = IP_rc.separate_in.replace('\\n','\n')
739 IP_rc.separate_in = IP_rc.separate_in.replace('\\n','\n')
737 IP_rc.separate_out = IP_rc.separate_out.replace('\\n','\n')
740 IP_rc.separate_out = IP_rc.separate_out.replace('\\n','\n')
738 IP_rc.separate_out2 = IP_rc.separate_out2.replace('\\n','\n')
741 IP_rc.separate_out2 = IP_rc.separate_out2.replace('\\n','\n')
739
742
740 # Determine how many lines at the bottom of the screen are needed for
743 # Determine how many lines at the bottom of the screen are needed for
741 # showing prompts, so we can know wheter long strings are to be printed or
744 # showing prompts, so we can know wheter long strings are to be printed or
742 # paged:
745 # paged:
743 num_lines_bot = IP_rc.separate_in.count('\n')+1
746 num_lines_bot = IP_rc.separate_in.count('\n')+1
744 IP_rc.screen_length = IP_rc.screen_length - num_lines_bot
747 IP_rc.screen_length = IP_rc.screen_length - num_lines_bot
745
748
746 # configure startup banner
749 # configure startup banner
747 if IP_rc.c: # regular python doesn't print the banner with -c
750 if IP_rc.c: # regular python doesn't print the banner with -c
748 IP_rc.banner = 0
751 IP_rc.banner = 0
749 if IP_rc.banner:
752 if IP_rc.banner:
750 BANN_P = IP.BANNER_PARTS
753 BANN_P = IP.BANNER_PARTS
751 else:
754 else:
752 BANN_P = []
755 BANN_P = []
753
756
754 if IP_rc.profile: BANN_P.append('IPython profile: %s\n' % IP_rc.profile)
757 if IP_rc.profile: BANN_P.append('IPython profile: %s\n' % IP_rc.profile)
755
758
756 # add message log (possibly empty)
759 # add message log (possibly empty)
757 if msg.summary: BANN_P.append(msg.summary)
760 if msg.summary: BANN_P.append(msg.summary)
758 # Final banner is a string
761 # Final banner is a string
759 IP.BANNER = '\n'.join(BANN_P)
762 IP.BANNER = '\n'.join(BANN_P)
760
763
761 # Finalize the IPython instance. This assumes the rc structure is fully
764 # Finalize the IPython instance. This assumes the rc structure is fully
762 # in place.
765 # in place.
763 IP.post_config_initialization()
766 IP.post_config_initialization()
764
767
765 return IP
768 return IP
766 #************************ end of file <ipmaker.py> **************************
769 #************************ end of file <ipmaker.py> **************************
@@ -1,7052 +1,7056 b''
1 2007-08-26 Ville Vainio <vivainio@gmail.com>
2
3 * ipmaker.py: Command line args have the highest priority again
4
1 2007-08-22 Ville Vainio <vivainio@gmail.com>
5 2007-08-22 Ville Vainio <vivainio@gmail.com>
2
6
3 * iplib.py: no extra empty (last) line in raw hist w/ multiline
7 * iplib.py: no extra empty (last) line in raw hist w/ multiline
4 statements
8 statements
5
9
6 * logger.py: Fix bug where blank lines in history were not
10 * logger.py: Fix bug where blank lines in history were not
7 added until AFTER adding the current line; translated and raw
11 added until AFTER adding the current line; translated and raw
8 history should finally be in sync with prompt now.
12 history should finally be in sync with prompt now.
9
13
10 * ipy_completers.py: quick_completer now makes it easy to create
14 * ipy_completers.py: quick_completer now makes it easy to create
11 trivial custom completers
15 trivial custom completers
12
16
13 * clearcmd.py: shadow history compression & erasing, fixed input hist
17 * clearcmd.py: shadow history compression & erasing, fixed input hist
14 clearing.
18 clearing.
15
19
16 * envpersist.py, history.py: %env (sh profile only), %hist completers
20 * envpersist.py, history.py: %env (sh profile only), %hist completers
17
21
18 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
22 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
19 term title now include the drive letter, and always use / instead of
23 term title now include the drive letter, and always use / instead of
20 os.sep (as per recommended approach for win32 ipython in general).
24 os.sep (as per recommended approach for win32 ipython in general).
21
25
22 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
26 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
23 plain python scripts from ipykit command line by running
27 plain python scripts from ipykit command line by running
24 "py myscript.py", even w/o installed python.
28 "py myscript.py", even w/o installed python.
25
29
26 2007-08-21 Ville Vainio <vivainio@gmail.com>
30 2007-08-21 Ville Vainio <vivainio@gmail.com>
27
31
28 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
32 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
29 (for backwards compatibility)
33 (for backwards compatibility)
30
34
31 * history.py: switch back to %hist -t from %hist -r as default.
35 * history.py: switch back to %hist -t from %hist -r as default.
32 At least until raw history is fixed for good.
36 At least until raw history is fixed for good.
33
37
34 2007-08-20 Ville Vainio <vivainio@gmail.com>
38 2007-08-20 Ville Vainio <vivainio@gmail.com>
35
39
36 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
40 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
37 locate alias redeclarations etc. Also, avoid handling
41 locate alias redeclarations etc. Also, avoid handling
38 _ip.IP.alias_table directly, prefer using _ip.defalias.
42 _ip.IP.alias_table directly, prefer using _ip.defalias.
39
43
40
44
41 2007-08-15 Ville Vainio <vivainio@gmail.com>
45 2007-08-15 Ville Vainio <vivainio@gmail.com>
42
46
43 * prefilter.py: ! is now always served first
47 * prefilter.py: ! is now always served first
44
48
45 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
49 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
46
50
47 * IPython/iplib.py (safe_execfile): fix the SystemExit
51 * IPython/iplib.py (safe_execfile): fix the SystemExit
48 auto-suppression code to work in Python2.4 (the internal structure
52 auto-suppression code to work in Python2.4 (the internal structure
49 of that exception changed and I'd only tested the code with 2.5).
53 of that exception changed and I'd only tested the code with 2.5).
50 Bug reported by a SciPy attendee.
54 Bug reported by a SciPy attendee.
51
55
52 2007-08-13 Ville Vainio <vivainio@gmail.com>
56 2007-08-13 Ville Vainio <vivainio@gmail.com>
53
57
54 * prefilter.py: reverted !c:/bin/foo fix, made % in
58 * prefilter.py: reverted !c:/bin/foo fix, made % in
55 multiline specials work again
59 multiline specials work again
56
60
57 2007-08-13 Ville Vainio <vivainio@gmail.com>
61 2007-08-13 Ville Vainio <vivainio@gmail.com>
58
62
59 * prefilter.py: Take more care to special-case !, so that
63 * prefilter.py: Take more care to special-case !, so that
60 !c:/bin/foo.exe works.
64 !c:/bin/foo.exe works.
61
65
62 * setup.py: if we are building eggs, strip all docs and
66 * setup.py: if we are building eggs, strip all docs and
63 examples (it doesn't make sense to bytecompile examples,
67 examples (it doesn't make sense to bytecompile examples,
64 and docs would be in an awkward place anyway).
68 and docs would be in an awkward place anyway).
65
69
66 * Ryan Krauss' patch fixes start menu shortcuts when IPython
70 * Ryan Krauss' patch fixes start menu shortcuts when IPython
67 is installed into a directory that has spaces in the name.
71 is installed into a directory that has spaces in the name.
68
72
69 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
73 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
70
74
71 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
75 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
72 doctest profile and %doctest_mode, so they actually generate the
76 doctest profile and %doctest_mode, so they actually generate the
73 blank lines needed by doctest to separate individual tests.
77 blank lines needed by doctest to separate individual tests.
74
78
75 * IPython/iplib.py (safe_execfile): modify so that running code
79 * IPython/iplib.py (safe_execfile): modify so that running code
76 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
80 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
77 doesn't get a printed traceback. Any other value in sys.exit(),
81 doesn't get a printed traceback. Any other value in sys.exit(),
78 including the empty call, still generates a traceback. This
82 including the empty call, still generates a traceback. This
79 enables use of %run without having to pass '-e' for codes that
83 enables use of %run without having to pass '-e' for codes that
80 correctly set the exit status flag.
84 correctly set the exit status flag.
81
85
82 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
86 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
83
87
84 * IPython/iplib.py (InteractiveShell.post_config_initialization):
88 * IPython/iplib.py (InteractiveShell.post_config_initialization):
85 fix problems with doctests failing when run inside IPython due to
89 fix problems with doctests failing when run inside IPython due to
86 IPython's modifications of sys.displayhook.
90 IPython's modifications of sys.displayhook.
87
91
88 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
92 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
89
93
90 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
94 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
91 a string with names.
95 a string with names.
92
96
93 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
97 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
94
98
95 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
99 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
96 magic to toggle on/off the doctest pasting support without having
100 magic to toggle on/off the doctest pasting support without having
97 to leave a session to switch to a separate profile.
101 to leave a session to switch to a separate profile.
98
102
99 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
103 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
100
104
101 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
105 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
102 introduce a blank line between inputs, to conform to doctest
106 introduce a blank line between inputs, to conform to doctest
103 requirements.
107 requirements.
104
108
105 * IPython/OInspect.py (Inspector.pinfo): fix another part where
109 * IPython/OInspect.py (Inspector.pinfo): fix another part where
106 auto-generated docstrings for new-style classes were showing up.
110 auto-generated docstrings for new-style classes were showing up.
107
111
108 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
112 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
109
113
110 * api_changes: Add new file to track backward-incompatible
114 * api_changes: Add new file to track backward-incompatible
111 user-visible changes.
115 user-visible changes.
112
116
113 2007-08-06 Ville Vainio <vivainio@gmail.com>
117 2007-08-06 Ville Vainio <vivainio@gmail.com>
114
118
115 * ipmaker.py: fix bug where user_config_ns didn't exist at all
119 * ipmaker.py: fix bug where user_config_ns didn't exist at all
116 before all the config files were handled.
120 before all the config files were handled.
117
121
118 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
122 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
119
123
120 * IPython/irunner.py (RunnerFactory): Add new factory class for
124 * IPython/irunner.py (RunnerFactory): Add new factory class for
121 creating reusable runners based on filenames.
125 creating reusable runners based on filenames.
122
126
123 * IPython/Extensions/ipy_profile_doctest.py: New profile for
127 * IPython/Extensions/ipy_profile_doctest.py: New profile for
124 doctest support. It sets prompts/exceptions as similar to
128 doctest support. It sets prompts/exceptions as similar to
125 standard Python as possible, so that ipython sessions in this
129 standard Python as possible, so that ipython sessions in this
126 profile can be easily pasted as doctests with minimal
130 profile can be easily pasted as doctests with minimal
127 modifications. It also enables pasting of doctests from external
131 modifications. It also enables pasting of doctests from external
128 sources (even if they have leading whitespace), so that you can
132 sources (even if they have leading whitespace), so that you can
129 rerun doctests from existing sources.
133 rerun doctests from existing sources.
130
134
131 * IPython/iplib.py (_prefilter): fix a buglet where after entering
135 * IPython/iplib.py (_prefilter): fix a buglet where after entering
132 some whitespace, the prompt would become a continuation prompt
136 some whitespace, the prompt would become a continuation prompt
133 with no way of exiting it other than Ctrl-C. This fix brings us
137 with no way of exiting it other than Ctrl-C. This fix brings us
134 into conformity with how the default python prompt works.
138 into conformity with how the default python prompt works.
135
139
136 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
140 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
137 Add support for pasting not only lines that start with '>>>', but
141 Add support for pasting not only lines that start with '>>>', but
138 also with ' >>>'. That is, arbitrary whitespace can now precede
142 also with ' >>>'. That is, arbitrary whitespace can now precede
139 the prompts. This makes the system useful for pasting doctests
143 the prompts. This makes the system useful for pasting doctests
140 from docstrings back into a normal session.
144 from docstrings back into a normal session.
141
145
142 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
146 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
143
147
144 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
148 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
145 r1357, which had killed multiple invocations of an embedded
149 r1357, which had killed multiple invocations of an embedded
146 ipython (this means that example-embed has been broken for over 1
150 ipython (this means that example-embed has been broken for over 1
147 year!!!). Rather than possibly breaking the batch stuff for which
151 year!!!). Rather than possibly breaking the batch stuff for which
148 the code in iplib.py/interact was introduced, I worked around the
152 the code in iplib.py/interact was introduced, I worked around the
149 problem in the embedding class in Shell.py. We really need a
153 problem in the embedding class in Shell.py. We really need a
150 bloody test suite for this code, I'm sick of finding stuff that
154 bloody test suite for this code, I'm sick of finding stuff that
151 used to work breaking left and right every time I use an old
155 used to work breaking left and right every time I use an old
152 feature I hadn't touched in a few months.
156 feature I hadn't touched in a few months.
153 (kill_embedded): Add a new magic that only shows up in embedded
157 (kill_embedded): Add a new magic that only shows up in embedded
154 mode, to allow users to permanently deactivate an embedded instance.
158 mode, to allow users to permanently deactivate an embedded instance.
155
159
156 2007-08-01 Ville Vainio <vivainio@gmail.com>
160 2007-08-01 Ville Vainio <vivainio@gmail.com>
157
161
158 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
162 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
159 history gets out of sync on runlines (e.g. when running macros).
163 history gets out of sync on runlines (e.g. when running macros).
160
164
161 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
165 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
162
166
163 * IPython/Magic.py (magic_colors): fix win32-related error message
167 * IPython/Magic.py (magic_colors): fix win32-related error message
164 that could appear under *nix when readline was missing. Patch by
168 that could appear under *nix when readline was missing. Patch by
165 Scott Jackson, closes #175.
169 Scott Jackson, closes #175.
166
170
167 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
171 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
168
172
169 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
173 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
170 completer that it traits-aware, so that traits objects don't show
174 completer that it traits-aware, so that traits objects don't show
171 all of their internal attributes all the time.
175 all of their internal attributes all the time.
172
176
173 * IPython/genutils.py (dir2): moved this code from inside
177 * IPython/genutils.py (dir2): moved this code from inside
174 completer.py to expose it publicly, so I could use it in the
178 completer.py to expose it publicly, so I could use it in the
175 wildcards bugfix.
179 wildcards bugfix.
176
180
177 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
181 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
178 Stefan with Traits.
182 Stefan with Traits.
179
183
180 * IPython/completer.py (Completer.attr_matches): change internal
184 * IPython/completer.py (Completer.attr_matches): change internal
181 var name from 'object' to 'obj', since 'object' is now a builtin
185 var name from 'object' to 'obj', since 'object' is now a builtin
182 and this can lead to weird bugs if reusing this code elsewhere.
186 and this can lead to weird bugs if reusing this code elsewhere.
183
187
184 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
188 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
185
189
186 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
190 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
187 'foo?' and update the code to prevent printing of default
191 'foo?' and update the code to prevent printing of default
188 docstrings that started appearing after I added support for
192 docstrings that started appearing after I added support for
189 new-style classes. The approach I'm using isn't ideal (I just
193 new-style classes. The approach I'm using isn't ideal (I just
190 special-case those strings) but I'm not sure how to more robustly
194 special-case those strings) but I'm not sure how to more robustly
191 differentiate between truly user-written strings and Python's
195 differentiate between truly user-written strings and Python's
192 automatic ones.
196 automatic ones.
193
197
194 2007-07-09 Ville Vainio <vivainio@gmail.com>
198 2007-07-09 Ville Vainio <vivainio@gmail.com>
195
199
196 * completer.py: Applied Matthew Neeley's patch:
200 * completer.py: Applied Matthew Neeley's patch:
197 Dynamic attributes from trait_names and _getAttributeNames are added
201 Dynamic attributes from trait_names and _getAttributeNames are added
198 to the list of tab completions, but when this happens, the attribute
202 to the list of tab completions, but when this happens, the attribute
199 list is turned into a set, so the attributes are unordered when
203 list is turned into a set, so the attributes are unordered when
200 printed, which makes it hard to find the right completion. This patch
204 printed, which makes it hard to find the right completion. This patch
201 turns this set back into a list and sort it.
205 turns this set back into a list and sort it.
202
206
203 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
207 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
204
208
205 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
209 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
206 classes in various inspector functions.
210 classes in various inspector functions.
207
211
208 2007-06-28 Ville Vainio <vivainio@gmail.com>
212 2007-06-28 Ville Vainio <vivainio@gmail.com>
209
213
210 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
214 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
211 Implement "shadow" namespace, and callable aliases that reside there.
215 Implement "shadow" namespace, and callable aliases that reside there.
212 Use them by:
216 Use them by:
213
217
214 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
218 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
215
219
216 foo hello world
220 foo hello world
217 (gets translated to:)
221 (gets translated to:)
218 _sh.foo(r"""hello world""")
222 _sh.foo(r"""hello world""")
219
223
220 In practice, this kind of alias can take the role of a magic function
224 In practice, this kind of alias can take the role of a magic function
221
225
222 * New generic inspect_object, called on obj? and obj??
226 * New generic inspect_object, called on obj? and obj??
223
227
224 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
228 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
225
229
226 * IPython/ultraTB.py (findsource): fix a problem with
230 * IPython/ultraTB.py (findsource): fix a problem with
227 inspect.getfile that can cause crashes during traceback construction.
231 inspect.getfile that can cause crashes during traceback construction.
228
232
229 2007-06-14 Ville Vainio <vivainio@gmail.com>
233 2007-06-14 Ville Vainio <vivainio@gmail.com>
230
234
231 * iplib.py (handle_auto): Try to use ascii for printing "--->"
235 * iplib.py (handle_auto): Try to use ascii for printing "--->"
232 autocall rewrite indication, becausesometimes unicode fails to print
236 autocall rewrite indication, becausesometimes unicode fails to print
233 properly (and you get ' - - - '). Use plain uncoloured ---> for
237 properly (and you get ' - - - '). Use plain uncoloured ---> for
234 unicode.
238 unicode.
235
239
236 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
240 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
237
241
238 . pickleshare 'hash' commands (hget, hset, hcompress,
242 . pickleshare 'hash' commands (hget, hset, hcompress,
239 hdict) for efficient shadow history storage.
243 hdict) for efficient shadow history storage.
240
244
241 2007-06-13 Ville Vainio <vivainio@gmail.com>
245 2007-06-13 Ville Vainio <vivainio@gmail.com>
242
246
243 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
247 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
244 Added kw arg 'interactive', tell whether vars should be visible
248 Added kw arg 'interactive', tell whether vars should be visible
245 with %whos.
249 with %whos.
246
250
247 2007-06-11 Ville Vainio <vivainio@gmail.com>
251 2007-06-11 Ville Vainio <vivainio@gmail.com>
248
252
249 * pspersistence.py, Magic.py, iplib.py: directory history now saved
253 * pspersistence.py, Magic.py, iplib.py: directory history now saved
250 to db
254 to db
251
255
252 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
256 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
253 Also, it exits IPython immediately after evaluating the command (just like
257 Also, it exits IPython immediately after evaluating the command (just like
254 std python)
258 std python)
255
259
256 2007-06-05 Walter Doerwald <walter@livinglogic.de>
260 2007-06-05 Walter Doerwald <walter@livinglogic.de>
257
261
258 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
262 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
259 Python string and captures the output. (Idea and original patch by
263 Python string and captures the output. (Idea and original patch by
260 StοΏ½fan van der Walt)
264 StοΏ½fan van der Walt)
261
265
262 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
266 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
263
267
264 * IPython/ultraTB.py (VerboseTB.text): update printing of
268 * IPython/ultraTB.py (VerboseTB.text): update printing of
265 exception types for Python 2.5 (now all exceptions in the stdlib
269 exception types for Python 2.5 (now all exceptions in the stdlib
266 are new-style classes).
270 are new-style classes).
267
271
268 2007-05-31 Walter Doerwald <walter@livinglogic.de>
272 2007-05-31 Walter Doerwald <walter@livinglogic.de>
269
273
270 * IPython/Extensions/igrid.py: Add new commands refresh and
274 * IPython/Extensions/igrid.py: Add new commands refresh and
271 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
275 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
272 the iterator once (refresh) or after every x seconds (refresh_timer).
276 the iterator once (refresh) or after every x seconds (refresh_timer).
273 Add a working implementation of "searchexpression", where the text
277 Add a working implementation of "searchexpression", where the text
274 entered is not the text to search for, but an expression that must
278 entered is not the text to search for, but an expression that must
275 be true. Added display of shortcuts to the menu. Added commands "pickinput"
279 be true. Added display of shortcuts to the menu. Added commands "pickinput"
276 and "pickinputattr" that put the object or attribute under the cursor
280 and "pickinputattr" that put the object or attribute under the cursor
277 in the input line. Split the statusbar to be able to display the currently
281 in the input line. Split the statusbar to be able to display the currently
278 active refresh interval. (Patch by Nik Tautenhahn)
282 active refresh interval. (Patch by Nik Tautenhahn)
279
283
280 2007-05-29 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
284 2007-05-29 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
281
285
282 * fixing set_term_title to use ctypes as default
286 * fixing set_term_title to use ctypes as default
283
287
284 * fixing set_term_title fallback to work when curent dir
288 * fixing set_term_title fallback to work when curent dir
285 is on a windows network share
289 is on a windows network share
286
290
287 2007-05-28 Ville Vainio <vivainio@gmail.com>
291 2007-05-28 Ville Vainio <vivainio@gmail.com>
288
292
289 * %cpaste: strip + with > from left (diffs).
293 * %cpaste: strip + with > from left (diffs).
290
294
291 * iplib.py: Fix crash when readline not installed
295 * iplib.py: Fix crash when readline not installed
292
296
293 2007-05-26 Ville Vainio <vivainio@gmail.com>
297 2007-05-26 Ville Vainio <vivainio@gmail.com>
294
298
295 * generics.py: intruduce easy to extend result_display generic
299 * generics.py: intruduce easy to extend result_display generic
296 function (using simplegeneric.py).
300 function (using simplegeneric.py).
297
301
298 * Fixed the append functionality of %set.
302 * Fixed the append functionality of %set.
299
303
300 2007-05-25 Ville Vainio <vivainio@gmail.com>
304 2007-05-25 Ville Vainio <vivainio@gmail.com>
301
305
302 * New magic: %rep (fetch / run old commands from history)
306 * New magic: %rep (fetch / run old commands from history)
303
307
304 * New extension: mglob (%mglob magic), for powerful glob / find /filter
308 * New extension: mglob (%mglob magic), for powerful glob / find /filter
305 like functionality
309 like functionality
306
310
307 % maghistory.py: %hist -g PATTERM greps the history for pattern
311 % maghistory.py: %hist -g PATTERM greps the history for pattern
308
312
309 2007-05-24 Walter Doerwald <walter@livinglogic.de>
313 2007-05-24 Walter Doerwald <walter@livinglogic.de>
310
314
311 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
315 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
312 browse the IPython input history
316 browse the IPython input history
313
317
314 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
318 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
315 (mapped to "i") can be used to put the object under the curser in the input
319 (mapped to "i") can be used to put the object under the curser in the input
316 line. pickinputattr (mapped to "I") does the same for the attribute under
320 line. pickinputattr (mapped to "I") does the same for the attribute under
317 the cursor.
321 the cursor.
318
322
319 2007-05-24 Ville Vainio <vivainio@gmail.com>
323 2007-05-24 Ville Vainio <vivainio@gmail.com>
320
324
321 * Grand magic cleansing (changeset [2380]):
325 * Grand magic cleansing (changeset [2380]):
322
326
323 * Introduce ipy_legacy.py where the following magics were
327 * Introduce ipy_legacy.py where the following magics were
324 moved:
328 moved:
325
329
326 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
330 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
327
331
328 If you need them, either use default profile or "import ipy_legacy"
332 If you need them, either use default profile or "import ipy_legacy"
329 in your ipy_user_conf.py
333 in your ipy_user_conf.py
330
334
331 * Move sh and scipy profile to Extensions from UserConfig. this implies
335 * Move sh and scipy profile to Extensions from UserConfig. this implies
332 you should not edit them, but you don't need to run %upgrade when
336 you should not edit them, but you don't need to run %upgrade when
333 upgrading IPython anymore.
337 upgrading IPython anymore.
334
338
335 * %hist/%history now operates in "raw" mode by default. To get the old
339 * %hist/%history now operates in "raw" mode by default. To get the old
336 behaviour, run '%hist -n' (native mode).
340 behaviour, run '%hist -n' (native mode).
337
341
338 * split ipy_stock_completers.py to ipy_stock_completers.py and
342 * split ipy_stock_completers.py to ipy_stock_completers.py and
339 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
343 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
340 installed as default.
344 installed as default.
341
345
342 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
346 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
343 handling.
347 handling.
344
348
345 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
349 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
346 input if readline is available.
350 input if readline is available.
347
351
348 2007-05-23 Ville Vainio <vivainio@gmail.com>
352 2007-05-23 Ville Vainio <vivainio@gmail.com>
349
353
350 * macro.py: %store uses __getstate__ properly
354 * macro.py: %store uses __getstate__ properly
351
355
352 * exesetup.py: added new setup script for creating
356 * exesetup.py: added new setup script for creating
353 standalone IPython executables with py2exe (i.e.
357 standalone IPython executables with py2exe (i.e.
354 no python installation required).
358 no python installation required).
355
359
356 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
360 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
357 its place.
361 its place.
358
362
359 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
363 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
360
364
361 2007-05-21 Ville Vainio <vivainio@gmail.com>
365 2007-05-21 Ville Vainio <vivainio@gmail.com>
362
366
363 * platutil_win32.py (set_term_title): handle
367 * platutil_win32.py (set_term_title): handle
364 failure of 'title' system call properly.
368 failure of 'title' system call properly.
365
369
366 2007-05-17 Walter Doerwald <walter@livinglogic.de>
370 2007-05-17 Walter Doerwald <walter@livinglogic.de>
367
371
368 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
372 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
369 (Bug detected by Paul Mueller).
373 (Bug detected by Paul Mueller).
370
374
371 2007-05-16 Ville Vainio <vivainio@gmail.com>
375 2007-05-16 Ville Vainio <vivainio@gmail.com>
372
376
373 * ipy_profile_sci.py, ipython_win_post_install.py: Create
377 * ipy_profile_sci.py, ipython_win_post_install.py: Create
374 new "sci" profile, effectively a modern version of the old
378 new "sci" profile, effectively a modern version of the old
375 "scipy" profile (which is now slated for deprecation).
379 "scipy" profile (which is now slated for deprecation).
376
380
377 2007-05-15 Ville Vainio <vivainio@gmail.com>
381 2007-05-15 Ville Vainio <vivainio@gmail.com>
378
382
379 * pycolorize.py, pycolor.1: Paul Mueller's patches that
383 * pycolorize.py, pycolor.1: Paul Mueller's patches that
380 make pycolorize read input from stdin when run without arguments.
384 make pycolorize read input from stdin when run without arguments.
381
385
382 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
386 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
383
387
384 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
388 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
385 it in sh profile (instead of ipy_system_conf.py).
389 it in sh profile (instead of ipy_system_conf.py).
386
390
387 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
391 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
388 aliases are now lower case on windows (MyCommand.exe => mycommand).
392 aliases are now lower case on windows (MyCommand.exe => mycommand).
389
393
390 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
394 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
391 Macros are now callable objects that inherit from ipapi.IPyAutocall,
395 Macros are now callable objects that inherit from ipapi.IPyAutocall,
392 i.e. get autocalled regardless of system autocall setting.
396 i.e. get autocalled regardless of system autocall setting.
393
397
394 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
398 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
395
399
396 * IPython/rlineimpl.py: check for clear_history in readline and
400 * IPython/rlineimpl.py: check for clear_history in readline and
397 make it a dummy no-op if not available. This function isn't
401 make it a dummy no-op if not available. This function isn't
398 guaranteed to be in the API and appeared in Python 2.4, so we need
402 guaranteed to be in the API and appeared in Python 2.4, so we need
399 to check it ourselves. Also, clean up this file quite a bit.
403 to check it ourselves. Also, clean up this file quite a bit.
400
404
401 * ipython.1: update man page and full manual with information
405 * ipython.1: update man page and full manual with information
402 about threads (remove outdated warning). Closes #151.
406 about threads (remove outdated warning). Closes #151.
403
407
404 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
408 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
405
409
406 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
410 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
407 in trunk (note that this made it into the 0.8.1 release already,
411 in trunk (note that this made it into the 0.8.1 release already,
408 but the changelogs didn't get coordinated). Many thanks to Gael
412 but the changelogs didn't get coordinated). Many thanks to Gael
409 Varoquaux <gael.varoquaux-AT-normalesup.org>
413 Varoquaux <gael.varoquaux-AT-normalesup.org>
410
414
411 2007-05-09 *** Released version 0.8.1
415 2007-05-09 *** Released version 0.8.1
412
416
413 2007-05-10 Walter Doerwald <walter@livinglogic.de>
417 2007-05-10 Walter Doerwald <walter@livinglogic.de>
414
418
415 * IPython/Extensions/igrid.py: Incorporate html help into
419 * IPython/Extensions/igrid.py: Incorporate html help into
416 the module, so we don't have to search for the file.
420 the module, so we don't have to search for the file.
417
421
418 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
422 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
419
423
420 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
424 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
421
425
422 2007-04-30 Ville Vainio <vivainio@gmail.com>
426 2007-04-30 Ville Vainio <vivainio@gmail.com>
423
427
424 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
428 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
425 user has illegal (non-ascii) home directory name
429 user has illegal (non-ascii) home directory name
426
430
427 2007-04-27 Ville Vainio <vivainio@gmail.com>
431 2007-04-27 Ville Vainio <vivainio@gmail.com>
428
432
429 * platutils_win32.py: implement set_term_title for windows
433 * platutils_win32.py: implement set_term_title for windows
430
434
431 * Update version number
435 * Update version number
432
436
433 * ipy_profile_sh.py: more informative prompt (2 dir levels)
437 * ipy_profile_sh.py: more informative prompt (2 dir levels)
434
438
435 2007-04-26 Walter Doerwald <walter@livinglogic.de>
439 2007-04-26 Walter Doerwald <walter@livinglogic.de>
436
440
437 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
441 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
438 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
442 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
439 bug discovered by Ville).
443 bug discovered by Ville).
440
444
441 2007-04-26 Ville Vainio <vivainio@gmail.com>
445 2007-04-26 Ville Vainio <vivainio@gmail.com>
442
446
443 * Extensions/ipy_completers.py: Olivier's module completer now
447 * Extensions/ipy_completers.py: Olivier's module completer now
444 saves the list of root modules if it takes > 4 secs on the first run.
448 saves the list of root modules if it takes > 4 secs on the first run.
445
449
446 * Magic.py (%rehashx): %rehashx now clears the completer cache
450 * Magic.py (%rehashx): %rehashx now clears the completer cache
447
451
448
452
449 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
453 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
450
454
451 * ipython.el: fix incorrect color scheme, reported by Stefan.
455 * ipython.el: fix incorrect color scheme, reported by Stefan.
452 Closes #149.
456 Closes #149.
453
457
454 * IPython/PyColorize.py (Parser.format2): fix state-handling
458 * IPython/PyColorize.py (Parser.format2): fix state-handling
455 logic. I still don't like how that code handles state, but at
459 logic. I still don't like how that code handles state, but at
456 least now it should be correct, if inelegant. Closes #146.
460 least now it should be correct, if inelegant. Closes #146.
457
461
458 2007-04-25 Ville Vainio <vivainio@gmail.com>
462 2007-04-25 Ville Vainio <vivainio@gmail.com>
459
463
460 * Extensions/ipy_which.py: added extension for %which magic, works
464 * Extensions/ipy_which.py: added extension for %which magic, works
461 a lot like unix 'which' but also finds and expands aliases, and
465 a lot like unix 'which' but also finds and expands aliases, and
462 allows wildcards.
466 allows wildcards.
463
467
464 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
468 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
465 as opposed to returning nothing.
469 as opposed to returning nothing.
466
470
467 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
471 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
468 ipy_stock_completers on default profile, do import on sh profile.
472 ipy_stock_completers on default profile, do import on sh profile.
469
473
470 2007-04-22 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
474 2007-04-22 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
471
475
472 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
476 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
473 like ipython.py foo.py which raised a IndexError.
477 like ipython.py foo.py which raised a IndexError.
474
478
475 2007-04-21 Ville Vainio <vivainio@gmail.com>
479 2007-04-21 Ville Vainio <vivainio@gmail.com>
476
480
477 * Extensions/ipy_extutil.py: added extension to manage other ipython
481 * Extensions/ipy_extutil.py: added extension to manage other ipython
478 extensions. Now only supports 'ls' == list extensions.
482 extensions. Now only supports 'ls' == list extensions.
479
483
480 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
484 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
481
485
482 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
486 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
483 would prevent use of the exception system outside of a running
487 would prevent use of the exception system outside of a running
484 IPython instance.
488 IPython instance.
485
489
486 2007-04-20 Ville Vainio <vivainio@gmail.com>
490 2007-04-20 Ville Vainio <vivainio@gmail.com>
487
491
488 * Extensions/ipy_render.py: added extension for easy
492 * Extensions/ipy_render.py: added extension for easy
489 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
493 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
490 'Iptl' template notation,
494 'Iptl' template notation,
491
495
492 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
496 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
493 safer & faster 'import' completer.
497 safer & faster 'import' completer.
494
498
495 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
499 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
496 and _ip.defalias(name, command).
500 and _ip.defalias(name, command).
497
501
498 * Extensions/ipy_exportdb.py: New extension for exporting all the
502 * Extensions/ipy_exportdb.py: New extension for exporting all the
499 %store'd data in a portable format (normal ipapi calls like
503 %store'd data in a portable format (normal ipapi calls like
500 defmacro() etc.)
504 defmacro() etc.)
501
505
502 2007-04-19 Ville Vainio <vivainio@gmail.com>
506 2007-04-19 Ville Vainio <vivainio@gmail.com>
503
507
504 * upgrade_dir.py: skip junk files like *.pyc
508 * upgrade_dir.py: skip junk files like *.pyc
505
509
506 * Release.py: version number to 0.8.1
510 * Release.py: version number to 0.8.1
507
511
508 2007-04-18 Ville Vainio <vivainio@gmail.com>
512 2007-04-18 Ville Vainio <vivainio@gmail.com>
509
513
510 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
514 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
511 and later on win32.
515 and later on win32.
512
516
513 2007-04-16 Ville Vainio <vivainio@gmail.com>
517 2007-04-16 Ville Vainio <vivainio@gmail.com>
514
518
515 * iplib.py (showtraceback): Do not crash when running w/o readline.
519 * iplib.py (showtraceback): Do not crash when running w/o readline.
516
520
517 2007-04-12 Walter Doerwald <walter@livinglogic.de>
521 2007-04-12 Walter Doerwald <walter@livinglogic.de>
518
522
519 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
523 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
520 sorted (case sensitive with files and dirs mixed).
524 sorted (case sensitive with files and dirs mixed).
521
525
522 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
526 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
523
527
524 * IPython/Release.py (version): Open trunk for 0.8.1 development.
528 * IPython/Release.py (version): Open trunk for 0.8.1 development.
525
529
526 2007-04-10 *** Released version 0.8.0
530 2007-04-10 *** Released version 0.8.0
527
531
528 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
532 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
529
533
530 * Tag 0.8.0 for release.
534 * Tag 0.8.0 for release.
531
535
532 * IPython/iplib.py (reloadhist): add API function to cleanly
536 * IPython/iplib.py (reloadhist): add API function to cleanly
533 reload the readline history, which was growing inappropriately on
537 reload the readline history, which was growing inappropriately on
534 every %run call.
538 every %run call.
535
539
536 * win32_manual_post_install.py (run): apply last part of Nicolas
540 * win32_manual_post_install.py (run): apply last part of Nicolas
537 Pernetty's patch (I'd accidentally applied it in a different
541 Pernetty's patch (I'd accidentally applied it in a different
538 directory and this particular file didn't get patched).
542 directory and this particular file didn't get patched).
539
543
540 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
544 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
541
545
542 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
546 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
543 find the main thread id and use the proper API call. Thanks to
547 find the main thread id and use the proper API call. Thanks to
544 Stefan for the fix.
548 Stefan for the fix.
545
549
546 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
550 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
547 unit tests to reflect fixed ticket #52, and add more tests sent by
551 unit tests to reflect fixed ticket #52, and add more tests sent by
548 him.
552 him.
549
553
550 * IPython/iplib.py (raw_input): restore the readline completer
554 * IPython/iplib.py (raw_input): restore the readline completer
551 state on every input, in case third-party code messed it up.
555 state on every input, in case third-party code messed it up.
552 (_prefilter): revert recent addition of early-escape checks which
556 (_prefilter): revert recent addition of early-escape checks which
553 prevent many valid alias calls from working.
557 prevent many valid alias calls from working.
554
558
555 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
559 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
556 flag for sigint handler so we don't run a full signal() call on
560 flag for sigint handler so we don't run a full signal() call on
557 each runcode access.
561 each runcode access.
558
562
559 * IPython/Magic.py (magic_whos): small improvement to diagnostic
563 * IPython/Magic.py (magic_whos): small improvement to diagnostic
560 message.
564 message.
561
565
562 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
566 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
563
567
564 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
568 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
565 asynchronous exceptions working, i.e., Ctrl-C can actually
569 asynchronous exceptions working, i.e., Ctrl-C can actually
566 interrupt long-running code in the multithreaded shells.
570 interrupt long-running code in the multithreaded shells.
567
571
568 This is using Tomer Filiba's great ctypes-based trick:
572 This is using Tomer Filiba's great ctypes-based trick:
569 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
573 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
570 this in the past, but hadn't been able to make it work before. So
574 this in the past, but hadn't been able to make it work before. So
571 far it looks like it's actually running, but this needs more
575 far it looks like it's actually running, but this needs more
572 testing. If it really works, I'll be *very* happy, and we'll owe
576 testing. If it really works, I'll be *very* happy, and we'll owe
573 a huge thank you to Tomer. My current implementation is ugly,
577 a huge thank you to Tomer. My current implementation is ugly,
574 hackish and uses nasty globals, but I don't want to try and clean
578 hackish and uses nasty globals, but I don't want to try and clean
575 anything up until we know if it actually works.
579 anything up until we know if it actually works.
576
580
577 NOTE: this feature needs ctypes to work. ctypes is included in
581 NOTE: this feature needs ctypes to work. ctypes is included in
578 Python2.5, but 2.4 users will need to manually install it. This
582 Python2.5, but 2.4 users will need to manually install it. This
579 feature makes multi-threaded shells so much more usable that it's
583 feature makes multi-threaded shells so much more usable that it's
580 a minor price to pay (ctypes is very easy to install, already a
584 a minor price to pay (ctypes is very easy to install, already a
581 requirement for win32 and available in major linux distros).
585 requirement for win32 and available in major linux distros).
582
586
583 2007-04-04 Ville Vainio <vivainio@gmail.com>
587 2007-04-04 Ville Vainio <vivainio@gmail.com>
584
588
585 * Extensions/ipy_completers.py, ipy_stock_completers.py:
589 * Extensions/ipy_completers.py, ipy_stock_completers.py:
586 Moved implementations of 'bundled' completers to ipy_completers.py,
590 Moved implementations of 'bundled' completers to ipy_completers.py,
587 they are only enabled in ipy_stock_completers.py.
591 they are only enabled in ipy_stock_completers.py.
588
592
589 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
593 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
590
594
591 * IPython/PyColorize.py (Parser.format2): Fix identation of
595 * IPython/PyColorize.py (Parser.format2): Fix identation of
592 colorzied output and return early if color scheme is NoColor, to
596 colorzied output and return early if color scheme is NoColor, to
593 avoid unnecessary and expensive tokenization. Closes #131.
597 avoid unnecessary and expensive tokenization. Closes #131.
594
598
595 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
599 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
596
600
597 * IPython/Debugger.py: disable the use of pydb version 1.17. It
601 * IPython/Debugger.py: disable the use of pydb version 1.17. It
598 has a critical bug (a missing import that makes post-mortem not
602 has a critical bug (a missing import that makes post-mortem not
599 work at all). Unfortunately as of this time, this is the version
603 work at all). Unfortunately as of this time, this is the version
600 shipped with Ubuntu Edgy, so quite a few people have this one. I
604 shipped with Ubuntu Edgy, so quite a few people have this one. I
601 hope Edgy will update to a more recent package.
605 hope Edgy will update to a more recent package.
602
606
603 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
607 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
604
608
605 * IPython/iplib.py (_prefilter): close #52, second part of a patch
609 * IPython/iplib.py (_prefilter): close #52, second part of a patch
606 set by Stefan (only the first part had been applied before).
610 set by Stefan (only the first part had been applied before).
607
611
608 * IPython/Extensions/ipy_stock_completers.py (module_completer):
612 * IPython/Extensions/ipy_stock_completers.py (module_completer):
609 remove usage of the dangerous pkgutil.walk_packages(). See
613 remove usage of the dangerous pkgutil.walk_packages(). See
610 details in comments left in the code.
614 details in comments left in the code.
611
615
612 * IPython/Magic.py (magic_whos): add support for numpy arrays
616 * IPython/Magic.py (magic_whos): add support for numpy arrays
613 similar to what we had for Numeric.
617 similar to what we had for Numeric.
614
618
615 * IPython/completer.py (IPCompleter.complete): extend the
619 * IPython/completer.py (IPCompleter.complete): extend the
616 complete() call API to support completions by other mechanisms
620 complete() call API to support completions by other mechanisms
617 than readline. Closes #109.
621 than readline. Closes #109.
618
622
619 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
623 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
620 protect against a bug in Python's execfile(). Closes #123.
624 protect against a bug in Python's execfile(). Closes #123.
621
625
622 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
626 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
623
627
624 * IPython/iplib.py (split_user_input): ensure that when splitting
628 * IPython/iplib.py (split_user_input): ensure that when splitting
625 user input, the part that can be treated as a python name is pure
629 user input, the part that can be treated as a python name is pure
626 ascii (Python identifiers MUST be pure ascii). Part of the
630 ascii (Python identifiers MUST be pure ascii). Part of the
627 ongoing Unicode support work.
631 ongoing Unicode support work.
628
632
629 * IPython/Prompts.py (prompt_specials_color): Add \N for the
633 * IPython/Prompts.py (prompt_specials_color): Add \N for the
630 actual prompt number, without any coloring. This allows users to
634 actual prompt number, without any coloring. This allows users to
631 produce numbered prompts with their own colors. Added after a
635 produce numbered prompts with their own colors. Added after a
632 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
636 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
633
637
634 2007-03-31 Walter Doerwald <walter@livinglogic.de>
638 2007-03-31 Walter Doerwald <walter@livinglogic.de>
635
639
636 * IPython/Extensions/igrid.py: Map the return key
640 * IPython/Extensions/igrid.py: Map the return key
637 to enter() and shift-return to enterattr().
641 to enter() and shift-return to enterattr().
638
642
639 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
643 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
640
644
641 * IPython/Magic.py (magic_psearch): add unicode support by
645 * IPython/Magic.py (magic_psearch): add unicode support by
642 encoding to ascii the input, since this routine also only deals
646 encoding to ascii the input, since this routine also only deals
643 with valid Python names. Fixes a bug reported by Stefan.
647 with valid Python names. Fixes a bug reported by Stefan.
644
648
645 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
649 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
646
650
647 * IPython/Magic.py (_inspect): convert unicode input into ascii
651 * IPython/Magic.py (_inspect): convert unicode input into ascii
648 before trying to evaluate it as a Python identifier. This fixes a
652 before trying to evaluate it as a Python identifier. This fixes a
649 problem that the new unicode support had introduced when analyzing
653 problem that the new unicode support had introduced when analyzing
650 long definition lines for functions.
654 long definition lines for functions.
651
655
652 2007-03-24 Walter Doerwald <walter@livinglogic.de>
656 2007-03-24 Walter Doerwald <walter@livinglogic.de>
653
657
654 * IPython/Extensions/igrid.py: Fix picking. Using
658 * IPython/Extensions/igrid.py: Fix picking. Using
655 igrid with wxPython 2.6 and -wthread should work now.
659 igrid with wxPython 2.6 and -wthread should work now.
656 igrid.display() simply tries to create a frame without
660 igrid.display() simply tries to create a frame without
657 an application. Only if this fails an application is created.
661 an application. Only if this fails an application is created.
658
662
659 2007-03-23 Walter Doerwald <walter@livinglogic.de>
663 2007-03-23 Walter Doerwald <walter@livinglogic.de>
660
664
661 * IPython/Extensions/path.py: Updated to version 2.2.
665 * IPython/Extensions/path.py: Updated to version 2.2.
662
666
663 2007-03-23 Ville Vainio <vivainio@gmail.com>
667 2007-03-23 Ville Vainio <vivainio@gmail.com>
664
668
665 * iplib.py: recursive alias expansion now works better, so that
669 * iplib.py: recursive alias expansion now works better, so that
666 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
670 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
667 doesn't trip up the process, if 'd' has been aliased to 'ls'.
671 doesn't trip up the process, if 'd' has been aliased to 'ls'.
668
672
669 * Extensions/ipy_gnuglobal.py added, provides %global magic
673 * Extensions/ipy_gnuglobal.py added, provides %global magic
670 for users of http://www.gnu.org/software/global
674 for users of http://www.gnu.org/software/global
671
675
672 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
676 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
673 Closes #52. Patch by Stefan van der Walt.
677 Closes #52. Patch by Stefan van der Walt.
674
678
675 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
679 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
676
680
677 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
681 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
678 respect the __file__ attribute when using %run. Thanks to a bug
682 respect the __file__ attribute when using %run. Thanks to a bug
679 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
683 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
680
684
681 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
685 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
682
686
683 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
687 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
684 input. Patch sent by Stefan.
688 input. Patch sent by Stefan.
685
689
686 2007-03-20 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
690 2007-03-20 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
687 * IPython/Extensions/ipy_stock_completer.py
691 * IPython/Extensions/ipy_stock_completer.py
688 shlex_split, fix bug in shlex_split. len function
692 shlex_split, fix bug in shlex_split. len function
689 call was missing an if statement. Caused shlex_split to
693 call was missing an if statement. Caused shlex_split to
690 sometimes return "" as last element.
694 sometimes return "" as last element.
691
695
692 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
696 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
693
697
694 * IPython/completer.py
698 * IPython/completer.py
695 (IPCompleter.file_matches.single_dir_expand): fix a problem
699 (IPCompleter.file_matches.single_dir_expand): fix a problem
696 reported by Stefan, where directories containign a single subdir
700 reported by Stefan, where directories containign a single subdir
697 would be completed too early.
701 would be completed too early.
698
702
699 * IPython/Shell.py (_load_pylab): Make the execution of 'from
703 * IPython/Shell.py (_load_pylab): Make the execution of 'from
700 pylab import *' when -pylab is given be optional. A new flag,
704 pylab import *' when -pylab is given be optional. A new flag,
701 pylab_import_all controls this behavior, the default is True for
705 pylab_import_all controls this behavior, the default is True for
702 backwards compatibility.
706 backwards compatibility.
703
707
704 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
708 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
705 modified) R. Bernstein's patch for fully syntax highlighted
709 modified) R. Bernstein's patch for fully syntax highlighted
706 tracebacks. The functionality is also available under ultraTB for
710 tracebacks. The functionality is also available under ultraTB for
707 non-ipython users (someone using ultraTB but outside an ipython
711 non-ipython users (someone using ultraTB but outside an ipython
708 session). They can select the color scheme by setting the
712 session). They can select the color scheme by setting the
709 module-level global DEFAULT_SCHEME. The highlight functionality
713 module-level global DEFAULT_SCHEME. The highlight functionality
710 also works when debugging.
714 also works when debugging.
711
715
712 * IPython/genutils.py (IOStream.close): small patch by
716 * IPython/genutils.py (IOStream.close): small patch by
713 R. Bernstein for improved pydb support.
717 R. Bernstein for improved pydb support.
714
718
715 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
719 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
716 DaveS <davls@telus.net> to improve support of debugging under
720 DaveS <davls@telus.net> to improve support of debugging under
717 NTEmacs, including improved pydb behavior.
721 NTEmacs, including improved pydb behavior.
718
722
719 * IPython/Magic.py (magic_prun): Fix saving of profile info for
723 * IPython/Magic.py (magic_prun): Fix saving of profile info for
720 Python 2.5, where the stats object API changed a little. Thanks
724 Python 2.5, where the stats object API changed a little. Thanks
721 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
725 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
722
726
723 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
727 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
724 Pernetty's patch to improve support for (X)Emacs under Win32.
728 Pernetty's patch to improve support for (X)Emacs under Win32.
725
729
726 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
730 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
727
731
728 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
732 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
729 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
733 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
730 a report by Nik Tautenhahn.
734 a report by Nik Tautenhahn.
731
735
732 2007-03-16 Walter Doerwald <walter@livinglogic.de>
736 2007-03-16 Walter Doerwald <walter@livinglogic.de>
733
737
734 * setup.py: Add the igrid help files to the list of data files
738 * setup.py: Add the igrid help files to the list of data files
735 to be installed alongside igrid.
739 to be installed alongside igrid.
736 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
740 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
737 Show the input object of the igrid browser as the window tile.
741 Show the input object of the igrid browser as the window tile.
738 Show the object the cursor is on in the statusbar.
742 Show the object the cursor is on in the statusbar.
739
743
740 2007-03-15 Ville Vainio <vivainio@gmail.com>
744 2007-03-15 Ville Vainio <vivainio@gmail.com>
741
745
742 * Extensions/ipy_stock_completers.py: Fixed exception
746 * Extensions/ipy_stock_completers.py: Fixed exception
743 on mismatching quotes in %run completer. Patch by
747 on mismatching quotes in %run completer. Patch by
744 JοΏ½rgen Stenarson. Closes #127.
748 JοΏ½rgen Stenarson. Closes #127.
745
749
746 2007-03-14 Ville Vainio <vivainio@gmail.com>
750 2007-03-14 Ville Vainio <vivainio@gmail.com>
747
751
748 * Extensions/ext_rehashdir.py: Do not do auto_alias
752 * Extensions/ext_rehashdir.py: Do not do auto_alias
749 in %rehashdir, it clobbers %store'd aliases.
753 in %rehashdir, it clobbers %store'd aliases.
750
754
751 * UserConfig/ipy_profile_sh.py: envpersist.py extension
755 * UserConfig/ipy_profile_sh.py: envpersist.py extension
752 (beefed up %env) imported for sh profile.
756 (beefed up %env) imported for sh profile.
753
757
754 2007-03-10 Walter Doerwald <walter@livinglogic.de>
758 2007-03-10 Walter Doerwald <walter@livinglogic.de>
755
759
756 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
760 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
757 as the default browser.
761 as the default browser.
758 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
762 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
759 As igrid displays all attributes it ever encounters, fetch() (which has
763 As igrid displays all attributes it ever encounters, fetch() (which has
760 been renamed to _fetch()) doesn't have to recalculate the display attributes
764 been renamed to _fetch()) doesn't have to recalculate the display attributes
761 every time a new item is fetched. This should speed up scrolling.
765 every time a new item is fetched. This should speed up scrolling.
762
766
763 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
767 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
764
768
765 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
769 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
766 Schmolck's recently reported tab-completion bug (my previous one
770 Schmolck's recently reported tab-completion bug (my previous one
767 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
771 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
768
772
769 2007-03-09 Walter Doerwald <walter@livinglogic.de>
773 2007-03-09 Walter Doerwald <walter@livinglogic.de>
770
774
771 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
775 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
772 Close help window if exiting igrid.
776 Close help window if exiting igrid.
773
777
774 2007-03-02 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
778 2007-03-02 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
775
779
776 * IPython/Extensions/ipy_defaults.py: Check if readline is available
780 * IPython/Extensions/ipy_defaults.py: Check if readline is available
777 before calling functions from readline.
781 before calling functions from readline.
778
782
779 2007-03-02 Walter Doerwald <walter@livinglogic.de>
783 2007-03-02 Walter Doerwald <walter@livinglogic.de>
780
784
781 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
785 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
782 igrid is a wxPython-based display object for ipipe. If your system has
786 igrid is a wxPython-based display object for ipipe. If your system has
783 wx installed igrid will be the default display. Without wx ipipe falls
787 wx installed igrid will be the default display. Without wx ipipe falls
784 back to ibrowse (which needs curses). If no curses is installed ipipe
788 back to ibrowse (which needs curses). If no curses is installed ipipe
785 falls back to idump.
789 falls back to idump.
786
790
787 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
791 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
788
792
789 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
793 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
790 my changes from yesterday, they introduced bugs. Will reactivate
794 my changes from yesterday, they introduced bugs. Will reactivate
791 once I get a correct solution, which will be much easier thanks to
795 once I get a correct solution, which will be much easier thanks to
792 Dan Milstein's new prefilter test suite.
796 Dan Milstein's new prefilter test suite.
793
797
794 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
798 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
795
799
796 * IPython/iplib.py (split_user_input): fix input splitting so we
800 * IPython/iplib.py (split_user_input): fix input splitting so we
797 don't attempt attribute accesses on things that can't possibly be
801 don't attempt attribute accesses on things that can't possibly be
798 valid Python attributes. After a bug report by Alex Schmolck.
802 valid Python attributes. After a bug report by Alex Schmolck.
799 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
803 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
800 %magic with explicit % prefix.
804 %magic with explicit % prefix.
801
805
802 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
806 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
803
807
804 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
808 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
805 avoid a DeprecationWarning from GTK.
809 avoid a DeprecationWarning from GTK.
806
810
807 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
811 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
808
812
809 * IPython/genutils.py (clock): I modified clock() to return total
813 * IPython/genutils.py (clock): I modified clock() to return total
810 time, user+system. This is a more commonly needed metric. I also
814 time, user+system. This is a more commonly needed metric. I also
811 introduced the new clocku/clocks to get only user/system time if
815 introduced the new clocku/clocks to get only user/system time if
812 one wants those instead.
816 one wants those instead.
813
817
814 ***WARNING: API CHANGE*** clock() used to return only user time,
818 ***WARNING: API CHANGE*** clock() used to return only user time,
815 so if you want exactly the same results as before, use clocku
819 so if you want exactly the same results as before, use clocku
816 instead.
820 instead.
817
821
818 2007-02-22 Ville Vainio <vivainio@gmail.com>
822 2007-02-22 Ville Vainio <vivainio@gmail.com>
819
823
820 * IPython/Extensions/ipy_p4.py: Extension for improved
824 * IPython/Extensions/ipy_p4.py: Extension for improved
821 p4 (perforce version control system) experience.
825 p4 (perforce version control system) experience.
822 Adds %p4 magic with p4 command completion and
826 Adds %p4 magic with p4 command completion and
823 automatic -G argument (marshall output as python dict)
827 automatic -G argument (marshall output as python dict)
824
828
825 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
829 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
826
830
827 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
831 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
828 stop marks.
832 stop marks.
829 (ClearingMixin): a simple mixin to easily make a Demo class clear
833 (ClearingMixin): a simple mixin to easily make a Demo class clear
830 the screen in between blocks and have empty marquees. The
834 the screen in between blocks and have empty marquees. The
831 ClearDemo and ClearIPDemo classes that use it are included.
835 ClearDemo and ClearIPDemo classes that use it are included.
832
836
833 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
837 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
834
838
835 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
839 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
836 protect against exceptions at Python shutdown time. Patch
840 protect against exceptions at Python shutdown time. Patch
837 sumbmitted to upstream.
841 sumbmitted to upstream.
838
842
839 2007-02-14 Walter Doerwald <walter@livinglogic.de>
843 2007-02-14 Walter Doerwald <walter@livinglogic.de>
840
844
841 * IPython/Extensions/ibrowse.py: If entering the first object level
845 * IPython/Extensions/ibrowse.py: If entering the first object level
842 (i.e. the object for which the browser has been started) fails,
846 (i.e. the object for which the browser has been started) fails,
843 now the error is raised directly (aborting the browser) instead of
847 now the error is raised directly (aborting the browser) instead of
844 running into an empty levels list later.
848 running into an empty levels list later.
845
849
846 2007-02-03 Walter Doerwald <walter@livinglogic.de>
850 2007-02-03 Walter Doerwald <walter@livinglogic.de>
847
851
848 * IPython/Extensions/ipipe.py: Add an xrepr implementation
852 * IPython/Extensions/ipipe.py: Add an xrepr implementation
849 for the noitem object.
853 for the noitem object.
850
854
851 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
855 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
852
856
853 * IPython/completer.py (Completer.attr_matches): Fix small
857 * IPython/completer.py (Completer.attr_matches): Fix small
854 tab-completion bug with Enthought Traits objects with units.
858 tab-completion bug with Enthought Traits objects with units.
855 Thanks to a bug report by Tom Denniston
859 Thanks to a bug report by Tom Denniston
856 <tom.denniston-AT-alum.dartmouth.org>.
860 <tom.denniston-AT-alum.dartmouth.org>.
857
861
858 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
862 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
859
863
860 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
864 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
861 bug where only .ipy or .py would be completed. Once the first
865 bug where only .ipy or .py would be completed. Once the first
862 argument to %run has been given, all completions are valid because
866 argument to %run has been given, all completions are valid because
863 they are the arguments to the script, which may well be non-python
867 they are the arguments to the script, which may well be non-python
864 filenames.
868 filenames.
865
869
866 * IPython/irunner.py (InteractiveRunner.run_source): major updates
870 * IPython/irunner.py (InteractiveRunner.run_source): major updates
867 to irunner to allow it to correctly support real doctesting of
871 to irunner to allow it to correctly support real doctesting of
868 out-of-process ipython code.
872 out-of-process ipython code.
869
873
870 * IPython/Magic.py (magic_cd): Make the setting of the terminal
874 * IPython/Magic.py (magic_cd): Make the setting of the terminal
871 title an option (-noterm_title) because it completely breaks
875 title an option (-noterm_title) because it completely breaks
872 doctesting.
876 doctesting.
873
877
874 * IPython/demo.py: fix IPythonDemo class that was not actually working.
878 * IPython/demo.py: fix IPythonDemo class that was not actually working.
875
879
876 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
880 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
877
881
878 * IPython/irunner.py (main): fix small bug where extensions were
882 * IPython/irunner.py (main): fix small bug where extensions were
879 not being correctly recognized.
883 not being correctly recognized.
880
884
881 2007-01-23 Walter Doerwald <walter@livinglogic.de>
885 2007-01-23 Walter Doerwald <walter@livinglogic.de>
882
886
883 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
887 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
884 a string containing a single line yields the string itself as the
888 a string containing a single line yields the string itself as the
885 only item.
889 only item.
886
890
887 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
891 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
888 object if it's the same as the one on the last level (This avoids
892 object if it's the same as the one on the last level (This avoids
889 infinite recursion for one line strings).
893 infinite recursion for one line strings).
890
894
891 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
895 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
892
896
893 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
897 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
894 all output streams before printing tracebacks. This ensures that
898 all output streams before printing tracebacks. This ensures that
895 user output doesn't end up interleaved with traceback output.
899 user output doesn't end up interleaved with traceback output.
896
900
897 2007-01-10 Ville Vainio <vivainio@gmail.com>
901 2007-01-10 Ville Vainio <vivainio@gmail.com>
898
902
899 * Extensions/envpersist.py: Turbocharged %env that remembers
903 * Extensions/envpersist.py: Turbocharged %env that remembers
900 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
904 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
901 "%env VISUAL=jed".
905 "%env VISUAL=jed".
902
906
903 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
907 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
904
908
905 * IPython/iplib.py (showtraceback): ensure that we correctly call
909 * IPython/iplib.py (showtraceback): ensure that we correctly call
906 custom handlers in all cases (some with pdb were slipping through,
910 custom handlers in all cases (some with pdb were slipping through,
907 but I'm not exactly sure why).
911 but I'm not exactly sure why).
908
912
909 * IPython/Debugger.py (Tracer.__init__): added new class to
913 * IPython/Debugger.py (Tracer.__init__): added new class to
910 support set_trace-like usage of IPython's enhanced debugger.
914 support set_trace-like usage of IPython's enhanced debugger.
911
915
912 2006-12-24 Ville Vainio <vivainio@gmail.com>
916 2006-12-24 Ville Vainio <vivainio@gmail.com>
913
917
914 * ipmaker.py: more informative message when ipy_user_conf
918 * ipmaker.py: more informative message when ipy_user_conf
915 import fails (suggest running %upgrade).
919 import fails (suggest running %upgrade).
916
920
917 * tools/run_ipy_in_profiler.py: Utility to see where
921 * tools/run_ipy_in_profiler.py: Utility to see where
918 the time during IPython startup is spent.
922 the time during IPython startup is spent.
919
923
920 2006-12-20 Ville Vainio <vivainio@gmail.com>
924 2006-12-20 Ville Vainio <vivainio@gmail.com>
921
925
922 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
926 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
923
927
924 * ipapi.py: Add new ipapi method, expand_alias.
928 * ipapi.py: Add new ipapi method, expand_alias.
925
929
926 * Release.py: Bump up version to 0.7.4.svn
930 * Release.py: Bump up version to 0.7.4.svn
927
931
928 2006-12-17 Ville Vainio <vivainio@gmail.com>
932 2006-12-17 Ville Vainio <vivainio@gmail.com>
929
933
930 * Extensions/jobctrl.py: Fixed &cmd arg arg...
934 * Extensions/jobctrl.py: Fixed &cmd arg arg...
931 to work properly on posix too
935 to work properly on posix too
932
936
933 * Release.py: Update revnum (version is still just 0.7.3).
937 * Release.py: Update revnum (version is still just 0.7.3).
934
938
935 2006-12-15 Ville Vainio <vivainio@gmail.com>
939 2006-12-15 Ville Vainio <vivainio@gmail.com>
936
940
937 * scripts/ipython_win_post_install: create ipython.py in
941 * scripts/ipython_win_post_install: create ipython.py in
938 prefix + "/scripts".
942 prefix + "/scripts".
939
943
940 * Release.py: Update version to 0.7.3.
944 * Release.py: Update version to 0.7.3.
941
945
942 2006-12-14 Ville Vainio <vivainio@gmail.com>
946 2006-12-14 Ville Vainio <vivainio@gmail.com>
943
947
944 * scripts/ipython_win_post_install: Overwrite old shortcuts
948 * scripts/ipython_win_post_install: Overwrite old shortcuts
945 if they already exist
949 if they already exist
946
950
947 * Release.py: release 0.7.3rc2
951 * Release.py: release 0.7.3rc2
948
952
949 2006-12-13 Ville Vainio <vivainio@gmail.com>
953 2006-12-13 Ville Vainio <vivainio@gmail.com>
950
954
951 * Branch and update Release.py for 0.7.3rc1
955 * Branch and update Release.py for 0.7.3rc1
952
956
953 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
957 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
954
958
955 * IPython/Shell.py (IPShellWX): update for current WX naming
959 * IPython/Shell.py (IPShellWX): update for current WX naming
956 conventions, to avoid a deprecation warning with current WX
960 conventions, to avoid a deprecation warning with current WX
957 versions. Thanks to a report by Danny Shevitz.
961 versions. Thanks to a report by Danny Shevitz.
958
962
959 2006-12-12 Ville Vainio <vivainio@gmail.com>
963 2006-12-12 Ville Vainio <vivainio@gmail.com>
960
964
961 * ipmaker.py: apply david cournapeau's patch to make
965 * ipmaker.py: apply david cournapeau's patch to make
962 import_some work properly even when ipythonrc does
966 import_some work properly even when ipythonrc does
963 import_some on empty list (it was an old bug!).
967 import_some on empty list (it was an old bug!).
964
968
965 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
969 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
966 Add deprecation note to ipythonrc and a url to wiki
970 Add deprecation note to ipythonrc and a url to wiki
967 in ipy_user_conf.py
971 in ipy_user_conf.py
968
972
969
973
970 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
974 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
971 as if it was typed on IPython command prompt, i.e.
975 as if it was typed on IPython command prompt, i.e.
972 as IPython script.
976 as IPython script.
973
977
974 * example-magic.py, magic_grepl.py: remove outdated examples
978 * example-magic.py, magic_grepl.py: remove outdated examples
975
979
976 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
980 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
977
981
978 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
982 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
979 is called before any exception has occurred.
983 is called before any exception has occurred.
980
984
981 2006-12-08 Ville Vainio <vivainio@gmail.com>
985 2006-12-08 Ville Vainio <vivainio@gmail.com>
982
986
983 * Extensions/ipy_stock_completers.py: fix cd completer
987 * Extensions/ipy_stock_completers.py: fix cd completer
984 to translate /'s to \'s again.
988 to translate /'s to \'s again.
985
989
986 * completer.py: prevent traceback on file completions w/
990 * completer.py: prevent traceback on file completions w/
987 backslash.
991 backslash.
988
992
989 * Release.py: Update release number to 0.7.3b3 for release
993 * Release.py: Update release number to 0.7.3b3 for release
990
994
991 2006-12-07 Ville Vainio <vivainio@gmail.com>
995 2006-12-07 Ville Vainio <vivainio@gmail.com>
992
996
993 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
997 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
994 while executing external code. Provides more shell-like behaviour
998 while executing external code. Provides more shell-like behaviour
995 and overall better response to ctrl + C / ctrl + break.
999 and overall better response to ctrl + C / ctrl + break.
996
1000
997 * tools/make_tarball.py: new script to create tarball straight from svn
1001 * tools/make_tarball.py: new script to create tarball straight from svn
998 (setup.py sdist doesn't work on win32).
1002 (setup.py sdist doesn't work on win32).
999
1003
1000 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1004 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1001 on dirnames with spaces and use the default completer instead.
1005 on dirnames with spaces and use the default completer instead.
1002
1006
1003 * Revision.py: Change version to 0.7.3b2 for release.
1007 * Revision.py: Change version to 0.7.3b2 for release.
1004
1008
1005 2006-12-05 Ville Vainio <vivainio@gmail.com>
1009 2006-12-05 Ville Vainio <vivainio@gmail.com>
1006
1010
1007 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1011 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1008 pydb patch 4 (rm debug printing, py 2.5 checking)
1012 pydb patch 4 (rm debug printing, py 2.5 checking)
1009
1013
1010 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1014 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1011 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1015 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1012 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1016 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1013 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1017 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1014 object the cursor was on before the refresh. The command "markrange" is
1018 object the cursor was on before the refresh. The command "markrange" is
1015 mapped to "%" now.
1019 mapped to "%" now.
1016 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1020 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1017
1021
1018 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1022 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1019
1023
1020 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1024 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1021 interactive debugger on the last traceback, without having to call
1025 interactive debugger on the last traceback, without having to call
1022 %pdb and rerun your code. Made minor changes in various modules,
1026 %pdb and rerun your code. Made minor changes in various modules,
1023 should automatically recognize pydb if available.
1027 should automatically recognize pydb if available.
1024
1028
1025 2006-11-28 Ville Vainio <vivainio@gmail.com>
1029 2006-11-28 Ville Vainio <vivainio@gmail.com>
1026
1030
1027 * completer.py: If the text start with !, show file completions
1031 * completer.py: If the text start with !, show file completions
1028 properly. This helps when trying to complete command name
1032 properly. This helps when trying to complete command name
1029 for shell escapes.
1033 for shell escapes.
1030
1034
1031 2006-11-27 Ville Vainio <vivainio@gmail.com>
1035 2006-11-27 Ville Vainio <vivainio@gmail.com>
1032
1036
1033 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1037 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1034 der Walt. Clean up svn and hg completers by using a common
1038 der Walt. Clean up svn and hg completers by using a common
1035 vcs_completer.
1039 vcs_completer.
1036
1040
1037 2006-11-26 Ville Vainio <vivainio@gmail.com>
1041 2006-11-26 Ville Vainio <vivainio@gmail.com>
1038
1042
1039 * Remove ipconfig and %config; you should use _ip.options structure
1043 * Remove ipconfig and %config; you should use _ip.options structure
1040 directly instead!
1044 directly instead!
1041
1045
1042 * genutils.py: add wrap_deprecated function for deprecating callables
1046 * genutils.py: add wrap_deprecated function for deprecating callables
1043
1047
1044 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1048 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1045 _ip.system instead. ipalias is redundant.
1049 _ip.system instead. ipalias is redundant.
1046
1050
1047 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1051 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1048 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1052 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1049 explicit.
1053 explicit.
1050
1054
1051 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1055 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1052 completer. Try it by entering 'hg ' and pressing tab.
1056 completer. Try it by entering 'hg ' and pressing tab.
1053
1057
1054 * macro.py: Give Macro a useful __repr__ method
1058 * macro.py: Give Macro a useful __repr__ method
1055
1059
1056 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1060 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1057
1061
1058 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1062 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1059 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1063 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1060 we don't get a duplicate ipipe module, where registration of the xrepr
1064 we don't get a duplicate ipipe module, where registration of the xrepr
1061 implementation for Text is useless.
1065 implementation for Text is useless.
1062
1066
1063 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1067 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1064
1068
1065 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1069 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1066
1070
1067 2006-11-24 Ville Vainio <vivainio@gmail.com>
1071 2006-11-24 Ville Vainio <vivainio@gmail.com>
1068
1072
1069 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1073 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1070 try to use "cProfile" instead of the slower pure python
1074 try to use "cProfile" instead of the slower pure python
1071 "profile"
1075 "profile"
1072
1076
1073 2006-11-23 Ville Vainio <vivainio@gmail.com>
1077 2006-11-23 Ville Vainio <vivainio@gmail.com>
1074
1078
1075 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1079 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1076 Qt+IPython+Designer link in documentation.
1080 Qt+IPython+Designer link in documentation.
1077
1081
1078 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1082 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1079 correct Pdb object to %pydb.
1083 correct Pdb object to %pydb.
1080
1084
1081
1085
1082 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1086 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1083 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1087 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1084 generic xrepr(), otherwise the list implementation would kick in.
1088 generic xrepr(), otherwise the list implementation would kick in.
1085
1089
1086 2006-11-21 Ville Vainio <vivainio@gmail.com>
1090 2006-11-21 Ville Vainio <vivainio@gmail.com>
1087
1091
1088 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1092 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1089 with one from UserConfig.
1093 with one from UserConfig.
1090
1094
1091 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1095 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1092 it was missing which broke the sh profile.
1096 it was missing which broke the sh profile.
1093
1097
1094 * completer.py: file completer now uses explicit '/' instead
1098 * completer.py: file completer now uses explicit '/' instead
1095 of os.path.join, expansion of 'foo' was broken on win32
1099 of os.path.join, expansion of 'foo' was broken on win32
1096 if there was one directory with name 'foobar'.
1100 if there was one directory with name 'foobar'.
1097
1101
1098 * A bunch of patches from Kirill Smelkov:
1102 * A bunch of patches from Kirill Smelkov:
1099
1103
1100 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1104 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1101
1105
1102 * [patch 7/9] Implement %page -r (page in raw mode) -
1106 * [patch 7/9] Implement %page -r (page in raw mode) -
1103
1107
1104 * [patch 5/9] ScientificPython webpage has moved
1108 * [patch 5/9] ScientificPython webpage has moved
1105
1109
1106 * [patch 4/9] The manual mentions %ds, should be %dhist
1110 * [patch 4/9] The manual mentions %ds, should be %dhist
1107
1111
1108 * [patch 3/9] Kill old bits from %prun doc.
1112 * [patch 3/9] Kill old bits from %prun doc.
1109
1113
1110 * [patch 1/9] Fix typos here and there.
1114 * [patch 1/9] Fix typos here and there.
1111
1115
1112 2006-11-08 Ville Vainio <vivainio@gmail.com>
1116 2006-11-08 Ville Vainio <vivainio@gmail.com>
1113
1117
1114 * completer.py (attr_matches): catch all exceptions raised
1118 * completer.py (attr_matches): catch all exceptions raised
1115 by eval of expr with dots.
1119 by eval of expr with dots.
1116
1120
1117 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1121 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1118
1122
1119 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1123 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1120 input if it starts with whitespace. This allows you to paste
1124 input if it starts with whitespace. This allows you to paste
1121 indented input from any editor without manually having to type in
1125 indented input from any editor without manually having to type in
1122 the 'if 1:', which is convenient when working interactively.
1126 the 'if 1:', which is convenient when working interactively.
1123 Slightly modifed version of a patch by Bo Peng
1127 Slightly modifed version of a patch by Bo Peng
1124 <bpeng-AT-rice.edu>.
1128 <bpeng-AT-rice.edu>.
1125
1129
1126 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1130 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1127
1131
1128 * IPython/irunner.py (main): modified irunner so it automatically
1132 * IPython/irunner.py (main): modified irunner so it automatically
1129 recognizes the right runner to use based on the extension (.py for
1133 recognizes the right runner to use based on the extension (.py for
1130 python, .ipy for ipython and .sage for sage).
1134 python, .ipy for ipython and .sage for sage).
1131
1135
1132 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1136 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1133 visible in ipapi as ip.config(), to programatically control the
1137 visible in ipapi as ip.config(), to programatically control the
1134 internal rc object. There's an accompanying %config magic for
1138 internal rc object. There's an accompanying %config magic for
1135 interactive use, which has been enhanced to match the
1139 interactive use, which has been enhanced to match the
1136 funtionality in ipconfig.
1140 funtionality in ipconfig.
1137
1141
1138 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1142 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1139 so it's not just a toggle, it now takes an argument. Add support
1143 so it's not just a toggle, it now takes an argument. Add support
1140 for a customizable header when making system calls, as the new
1144 for a customizable header when making system calls, as the new
1141 system_header variable in the ipythonrc file.
1145 system_header variable in the ipythonrc file.
1142
1146
1143 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1147 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1144
1148
1145 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1149 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1146 generic functions (using Philip J. Eby's simplegeneric package).
1150 generic functions (using Philip J. Eby's simplegeneric package).
1147 This makes it possible to customize the display of third-party classes
1151 This makes it possible to customize the display of third-party classes
1148 without having to monkeypatch them. xiter() no longer supports a mode
1152 without having to monkeypatch them. xiter() no longer supports a mode
1149 argument and the XMode class has been removed. The same functionality can
1153 argument and the XMode class has been removed. The same functionality can
1150 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1154 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1151 One consequence of the switch to generic functions is that xrepr() and
1155 One consequence of the switch to generic functions is that xrepr() and
1152 xattrs() implementation must define the default value for the mode
1156 xattrs() implementation must define the default value for the mode
1153 argument themselves and xattrs() implementations must return real
1157 argument themselves and xattrs() implementations must return real
1154 descriptors.
1158 descriptors.
1155
1159
1156 * IPython/external: This new subpackage will contain all third-party
1160 * IPython/external: This new subpackage will contain all third-party
1157 packages that are bundled with IPython. (The first one is simplegeneric).
1161 packages that are bundled with IPython. (The first one is simplegeneric).
1158
1162
1159 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1163 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1160 directory which as been dropped in r1703.
1164 directory which as been dropped in r1703.
1161
1165
1162 * IPython/Extensions/ipipe.py (iless): Fixed.
1166 * IPython/Extensions/ipipe.py (iless): Fixed.
1163
1167
1164 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1168 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1165
1169
1166 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1170 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1167
1171
1168 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1172 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1169 handling in variable expansion so that shells and magics recognize
1173 handling in variable expansion so that shells and magics recognize
1170 function local scopes correctly. Bug reported by Brian.
1174 function local scopes correctly. Bug reported by Brian.
1171
1175
1172 * scripts/ipython: remove the very first entry in sys.path which
1176 * scripts/ipython: remove the very first entry in sys.path which
1173 Python auto-inserts for scripts, so that sys.path under IPython is
1177 Python auto-inserts for scripts, so that sys.path under IPython is
1174 as similar as possible to that under plain Python.
1178 as similar as possible to that under plain Python.
1175
1179
1176 * IPython/completer.py (IPCompleter.file_matches): Fix
1180 * IPython/completer.py (IPCompleter.file_matches): Fix
1177 tab-completion so that quotes are not closed unless the completion
1181 tab-completion so that quotes are not closed unless the completion
1178 is unambiguous. After a request by Stefan. Minor cleanups in
1182 is unambiguous. After a request by Stefan. Minor cleanups in
1179 ipy_stock_completers.
1183 ipy_stock_completers.
1180
1184
1181 2006-11-02 Ville Vainio <vivainio@gmail.com>
1185 2006-11-02 Ville Vainio <vivainio@gmail.com>
1182
1186
1183 * ipy_stock_completers.py: Add %run and %cd completers.
1187 * ipy_stock_completers.py: Add %run and %cd completers.
1184
1188
1185 * completer.py: Try running custom completer for both
1189 * completer.py: Try running custom completer for both
1186 "foo" and "%foo" if the command is just "foo". Ignore case
1190 "foo" and "%foo" if the command is just "foo". Ignore case
1187 when filtering possible completions.
1191 when filtering possible completions.
1188
1192
1189 * UserConfig/ipy_user_conf.py: install stock completers as default
1193 * UserConfig/ipy_user_conf.py: install stock completers as default
1190
1194
1191 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1195 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1192 simplified readline history save / restore through a wrapper
1196 simplified readline history save / restore through a wrapper
1193 function
1197 function
1194
1198
1195
1199
1196 2006-10-31 Ville Vainio <vivainio@gmail.com>
1200 2006-10-31 Ville Vainio <vivainio@gmail.com>
1197
1201
1198 * strdispatch.py, completer.py, ipy_stock_completers.py:
1202 * strdispatch.py, completer.py, ipy_stock_completers.py:
1199 Allow str_key ("command") in completer hooks. Implement
1203 Allow str_key ("command") in completer hooks. Implement
1200 trivial completer for 'import' (stdlib modules only). Rename
1204 trivial completer for 'import' (stdlib modules only). Rename
1201 ipy_linux_package_managers.py to ipy_stock_completers.py.
1205 ipy_linux_package_managers.py to ipy_stock_completers.py.
1202 SVN completer.
1206 SVN completer.
1203
1207
1204 * Extensions/ledit.py: %magic line editor for easily and
1208 * Extensions/ledit.py: %magic line editor for easily and
1205 incrementally manipulating lists of strings. The magic command
1209 incrementally manipulating lists of strings. The magic command
1206 name is %led.
1210 name is %led.
1207
1211
1208 2006-10-30 Ville Vainio <vivainio@gmail.com>
1212 2006-10-30 Ville Vainio <vivainio@gmail.com>
1209
1213
1210 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1214 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1211 Bernsteins's patches for pydb integration.
1215 Bernsteins's patches for pydb integration.
1212 http://bashdb.sourceforge.net/pydb/
1216 http://bashdb.sourceforge.net/pydb/
1213
1217
1214 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1218 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1215 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1219 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1216 custom completer hook to allow the users to implement their own
1220 custom completer hook to allow the users to implement their own
1217 completers. See ipy_linux_package_managers.py for example. The
1221 completers. See ipy_linux_package_managers.py for example. The
1218 hook name is 'complete_command'.
1222 hook name is 'complete_command'.
1219
1223
1220 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1224 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1221
1225
1222 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1226 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1223 Numeric leftovers.
1227 Numeric leftovers.
1224
1228
1225 * ipython.el (py-execute-region): apply Stefan's patch to fix
1229 * ipython.el (py-execute-region): apply Stefan's patch to fix
1226 garbled results if the python shell hasn't been previously started.
1230 garbled results if the python shell hasn't been previously started.
1227
1231
1228 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1232 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1229 pretty generic function and useful for other things.
1233 pretty generic function and useful for other things.
1230
1234
1231 * IPython/OInspect.py (getsource): Add customizable source
1235 * IPython/OInspect.py (getsource): Add customizable source
1232 extractor. After a request/patch form W. Stein (SAGE).
1236 extractor. After a request/patch form W. Stein (SAGE).
1233
1237
1234 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1238 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1235 window size to a more reasonable value from what pexpect does,
1239 window size to a more reasonable value from what pexpect does,
1236 since their choice causes wrapping bugs with long input lines.
1240 since their choice causes wrapping bugs with long input lines.
1237
1241
1238 2006-10-28 Ville Vainio <vivainio@gmail.com>
1242 2006-10-28 Ville Vainio <vivainio@gmail.com>
1239
1243
1240 * Magic.py (%run): Save and restore the readline history from
1244 * Magic.py (%run): Save and restore the readline history from
1241 file around %run commands to prevent side effects from
1245 file around %run commands to prevent side effects from
1242 %runned programs that might use readline (e.g. pydb).
1246 %runned programs that might use readline (e.g. pydb).
1243
1247
1244 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1248 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1245 invoking the pydb enhanced debugger.
1249 invoking the pydb enhanced debugger.
1246
1250
1247 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1251 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1248
1252
1249 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1253 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1250 call the base class method and propagate the return value to
1254 call the base class method and propagate the return value to
1251 ifile. This is now done by path itself.
1255 ifile. This is now done by path itself.
1252
1256
1253 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1257 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1254
1258
1255 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1259 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1256 api: set_crash_handler(), to expose the ability to change the
1260 api: set_crash_handler(), to expose the ability to change the
1257 internal crash handler.
1261 internal crash handler.
1258
1262
1259 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1263 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1260 the various parameters of the crash handler so that apps using
1264 the various parameters of the crash handler so that apps using
1261 IPython as their engine can customize crash handling. Ipmlemented
1265 IPython as their engine can customize crash handling. Ipmlemented
1262 at the request of SAGE.
1266 at the request of SAGE.
1263
1267
1264 2006-10-14 Ville Vainio <vivainio@gmail.com>
1268 2006-10-14 Ville Vainio <vivainio@gmail.com>
1265
1269
1266 * Magic.py, ipython.el: applied first "safe" part of Rocky
1270 * Magic.py, ipython.el: applied first "safe" part of Rocky
1267 Bernstein's patch set for pydb integration.
1271 Bernstein's patch set for pydb integration.
1268
1272
1269 * Magic.py (%unalias, %alias): %store'd aliases can now be
1273 * Magic.py (%unalias, %alias): %store'd aliases can now be
1270 removed with '%unalias'. %alias w/o args now shows most
1274 removed with '%unalias'. %alias w/o args now shows most
1271 interesting (stored / manually defined) aliases last
1275 interesting (stored / manually defined) aliases last
1272 where they catch the eye w/o scrolling.
1276 where they catch the eye w/o scrolling.
1273
1277
1274 * Magic.py (%rehashx), ext_rehashdir.py: files with
1278 * Magic.py (%rehashx), ext_rehashdir.py: files with
1275 'py' extension are always considered executable, even
1279 'py' extension are always considered executable, even
1276 when not in PATHEXT environment variable.
1280 when not in PATHEXT environment variable.
1277
1281
1278 2006-10-12 Ville Vainio <vivainio@gmail.com>
1282 2006-10-12 Ville Vainio <vivainio@gmail.com>
1279
1283
1280 * jobctrl.py: Add new "jobctrl" extension for spawning background
1284 * jobctrl.py: Add new "jobctrl" extension for spawning background
1281 processes with "&find /". 'import jobctrl' to try it out. Requires
1285 processes with "&find /". 'import jobctrl' to try it out. Requires
1282 'subprocess' module, standard in python 2.4+.
1286 'subprocess' module, standard in python 2.4+.
1283
1287
1284 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1288 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1285 so if foo -> bar and bar -> baz, then foo -> baz.
1289 so if foo -> bar and bar -> baz, then foo -> baz.
1286
1290
1287 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1291 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1288
1292
1289 * IPython/Magic.py (Magic.parse_options): add a new posix option
1293 * IPython/Magic.py (Magic.parse_options): add a new posix option
1290 to allow parsing of input args in magics that doesn't strip quotes
1294 to allow parsing of input args in magics that doesn't strip quotes
1291 (if posix=False). This also closes %timeit bug reported by
1295 (if posix=False). This also closes %timeit bug reported by
1292 Stefan.
1296 Stefan.
1293
1297
1294 2006-10-03 Ville Vainio <vivainio@gmail.com>
1298 2006-10-03 Ville Vainio <vivainio@gmail.com>
1295
1299
1296 * iplib.py (raw_input, interact): Return ValueError catching for
1300 * iplib.py (raw_input, interact): Return ValueError catching for
1297 raw_input. Fixes infinite loop for sys.stdin.close() or
1301 raw_input. Fixes infinite loop for sys.stdin.close() or
1298 sys.stdout.close().
1302 sys.stdout.close().
1299
1303
1300 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1304 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1301
1305
1302 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1306 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1303 to help in handling doctests. irunner is now pretty useful for
1307 to help in handling doctests. irunner is now pretty useful for
1304 running standalone scripts and simulate a full interactive session
1308 running standalone scripts and simulate a full interactive session
1305 in a format that can be then pasted as a doctest.
1309 in a format that can be then pasted as a doctest.
1306
1310
1307 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1311 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1308 on top of the default (useless) ones. This also fixes the nasty
1312 on top of the default (useless) ones. This also fixes the nasty
1309 way in which 2.5's Quitter() exits (reverted [1785]).
1313 way in which 2.5's Quitter() exits (reverted [1785]).
1310
1314
1311 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1315 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1312 2.5.
1316 2.5.
1313
1317
1314 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1318 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1315 color scheme is updated as well when color scheme is changed
1319 color scheme is updated as well when color scheme is changed
1316 interactively.
1320 interactively.
1317
1321
1318 2006-09-27 Ville Vainio <vivainio@gmail.com>
1322 2006-09-27 Ville Vainio <vivainio@gmail.com>
1319
1323
1320 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1324 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1321 infinite loop and just exit. It's a hack, but will do for a while.
1325 infinite loop and just exit. It's a hack, but will do for a while.
1322
1326
1323 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1327 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1324
1328
1325 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1329 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1326 the constructor, this makes it possible to get a list of only directories
1330 the constructor, this makes it possible to get a list of only directories
1327 or only files.
1331 or only files.
1328
1332
1329 2006-08-12 Ville Vainio <vivainio@gmail.com>
1333 2006-08-12 Ville Vainio <vivainio@gmail.com>
1330
1334
1331 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1335 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1332 they broke unittest
1336 they broke unittest
1333
1337
1334 2006-08-11 Ville Vainio <vivainio@gmail.com>
1338 2006-08-11 Ville Vainio <vivainio@gmail.com>
1335
1339
1336 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1340 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1337 by resolving issue properly, i.e. by inheriting FakeModule
1341 by resolving issue properly, i.e. by inheriting FakeModule
1338 from types.ModuleType. Pickling ipython interactive data
1342 from types.ModuleType. Pickling ipython interactive data
1339 should still work as usual (testing appreciated).
1343 should still work as usual (testing appreciated).
1340
1344
1341 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1345 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1342
1346
1343 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1347 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1344 running under python 2.3 with code from 2.4 to fix a bug with
1348 running under python 2.3 with code from 2.4 to fix a bug with
1345 help(). Reported by the Debian maintainers, Norbert Tretkowski
1349 help(). Reported by the Debian maintainers, Norbert Tretkowski
1346 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1350 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1347 <afayolle-AT-debian.org>.
1351 <afayolle-AT-debian.org>.
1348
1352
1349 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1353 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1350
1354
1351 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1355 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1352 (which was displaying "quit" twice).
1356 (which was displaying "quit" twice).
1353
1357
1354 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1358 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1355
1359
1356 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1360 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1357 the mode argument).
1361 the mode argument).
1358
1362
1359 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1363 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1360
1364
1361 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1365 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1362 not running under IPython.
1366 not running under IPython.
1363
1367
1364 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1368 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1365 and make it iterable (iterating over the attribute itself). Add two new
1369 and make it iterable (iterating over the attribute itself). Add two new
1366 magic strings for __xattrs__(): If the string starts with "-", the attribute
1370 magic strings for __xattrs__(): If the string starts with "-", the attribute
1367 will not be displayed in ibrowse's detail view (but it can still be
1371 will not be displayed in ibrowse's detail view (but it can still be
1368 iterated over). This makes it possible to add attributes that are large
1372 iterated over). This makes it possible to add attributes that are large
1369 lists or generator methods to the detail view. Replace magic attribute names
1373 lists or generator methods to the detail view. Replace magic attribute names
1370 and _attrname() and _getattr() with "descriptors": For each type of magic
1374 and _attrname() and _getattr() with "descriptors": For each type of magic
1371 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1375 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1372 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1376 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1373 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1377 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1374 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1378 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1375 are still supported.
1379 are still supported.
1376
1380
1377 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1381 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1378 fails in ibrowse.fetch(), the exception object is added as the last item
1382 fails in ibrowse.fetch(), the exception object is added as the last item
1379 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1383 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1380 a generator throws an exception midway through execution.
1384 a generator throws an exception midway through execution.
1381
1385
1382 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1386 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1383 encoding into methods.
1387 encoding into methods.
1384
1388
1385 2006-07-26 Ville Vainio <vivainio@gmail.com>
1389 2006-07-26 Ville Vainio <vivainio@gmail.com>
1386
1390
1387 * iplib.py: history now stores multiline input as single
1391 * iplib.py: history now stores multiline input as single
1388 history entries. Patch by Jorgen Cederlof.
1392 history entries. Patch by Jorgen Cederlof.
1389
1393
1390 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1394 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1391
1395
1392 * IPython/Extensions/ibrowse.py: Make cursor visible over
1396 * IPython/Extensions/ibrowse.py: Make cursor visible over
1393 non existing attributes.
1397 non existing attributes.
1394
1398
1395 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1399 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1396
1400
1397 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1401 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1398 error output of the running command doesn't mess up the screen.
1402 error output of the running command doesn't mess up the screen.
1399
1403
1400 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1404 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1401
1405
1402 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1406 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1403 argument. This sorts the items themselves.
1407 argument. This sorts the items themselves.
1404
1408
1405 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1409 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1406
1410
1407 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1411 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1408 Compile expression strings into code objects. This should speed
1412 Compile expression strings into code objects. This should speed
1409 up ifilter and friends somewhat.
1413 up ifilter and friends somewhat.
1410
1414
1411 2006-07-08 Ville Vainio <vivainio@gmail.com>
1415 2006-07-08 Ville Vainio <vivainio@gmail.com>
1412
1416
1413 * Magic.py: %cpaste now strips > from the beginning of lines
1417 * Magic.py: %cpaste now strips > from the beginning of lines
1414 to ease pasting quoted code from emails. Contributed by
1418 to ease pasting quoted code from emails. Contributed by
1415 Stefan van der Walt.
1419 Stefan van der Walt.
1416
1420
1417 2006-06-29 Ville Vainio <vivainio@gmail.com>
1421 2006-06-29 Ville Vainio <vivainio@gmail.com>
1418
1422
1419 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1423 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1420 mode, patch contributed by Darren Dale. NEEDS TESTING!
1424 mode, patch contributed by Darren Dale. NEEDS TESTING!
1421
1425
1422 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1426 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1423
1427
1424 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1428 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1425 a blue background. Fix fetching new display rows when the browser
1429 a blue background. Fix fetching new display rows when the browser
1426 scrolls more than a screenful (e.g. by using the goto command).
1430 scrolls more than a screenful (e.g. by using the goto command).
1427
1431
1428 2006-06-27 Ville Vainio <vivainio@gmail.com>
1432 2006-06-27 Ville Vainio <vivainio@gmail.com>
1429
1433
1430 * Magic.py (_inspect, _ofind) Apply David Huard's
1434 * Magic.py (_inspect, _ofind) Apply David Huard's
1431 patch for displaying the correct docstring for 'property'
1435 patch for displaying the correct docstring for 'property'
1432 attributes.
1436 attributes.
1433
1437
1434 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1438 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1435
1439
1436 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1440 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1437 commands into the methods implementing them.
1441 commands into the methods implementing them.
1438
1442
1439 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1443 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1440
1444
1441 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1445 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1442 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1446 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1443 autoindent support was authored by Jin Liu.
1447 autoindent support was authored by Jin Liu.
1444
1448
1445 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1449 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1446
1450
1447 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1451 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1448 for keymaps with a custom class that simplifies handling.
1452 for keymaps with a custom class that simplifies handling.
1449
1453
1450 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1454 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1451
1455
1452 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1456 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1453 resizing. This requires Python 2.5 to work.
1457 resizing. This requires Python 2.5 to work.
1454
1458
1455 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1459 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1456
1460
1457 * IPython/Extensions/ibrowse.py: Add two new commands to
1461 * IPython/Extensions/ibrowse.py: Add two new commands to
1458 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1462 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1459 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1463 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1460 attributes again. Remapped the help command to "?". Display
1464 attributes again. Remapped the help command to "?". Display
1461 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1465 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1462 as keys for the "home" and "end" commands. Add three new commands
1466 as keys for the "home" and "end" commands. Add three new commands
1463 to the input mode for "find" and friends: "delend" (CTRL-K)
1467 to the input mode for "find" and friends: "delend" (CTRL-K)
1464 deletes to the end of line. "incsearchup" searches upwards in the
1468 deletes to the end of line. "incsearchup" searches upwards in the
1465 command history for an input that starts with the text before the cursor.
1469 command history for an input that starts with the text before the cursor.
1466 "incsearchdown" does the same downwards. Removed a bogus mapping of
1470 "incsearchdown" does the same downwards. Removed a bogus mapping of
1467 the x key to "delete".
1471 the x key to "delete".
1468
1472
1469 2006-06-15 Ville Vainio <vivainio@gmail.com>
1473 2006-06-15 Ville Vainio <vivainio@gmail.com>
1470
1474
1471 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1475 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1472 used to create prompts dynamically, instead of the "old" way of
1476 used to create prompts dynamically, instead of the "old" way of
1473 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1477 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1474 way still works (it's invoked by the default hook), of course.
1478 way still works (it's invoked by the default hook), of course.
1475
1479
1476 * Prompts.py: added generate_output_prompt hook for altering output
1480 * Prompts.py: added generate_output_prompt hook for altering output
1477 prompt
1481 prompt
1478
1482
1479 * Release.py: Changed version string to 0.7.3.svn.
1483 * Release.py: Changed version string to 0.7.3.svn.
1480
1484
1481 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1485 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1482
1486
1483 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1487 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1484 the call to fetch() always tries to fetch enough data for at least one
1488 the call to fetch() always tries to fetch enough data for at least one
1485 full screen. This makes it possible to simply call moveto(0,0,True) in
1489 full screen. This makes it possible to simply call moveto(0,0,True) in
1486 the constructor. Fix typos and removed the obsolete goto attribute.
1490 the constructor. Fix typos and removed the obsolete goto attribute.
1487
1491
1488 2006-06-12 Ville Vainio <vivainio@gmail.com>
1492 2006-06-12 Ville Vainio <vivainio@gmail.com>
1489
1493
1490 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1494 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1491 allowing $variable interpolation within multiline statements,
1495 allowing $variable interpolation within multiline statements,
1492 though so far only with "sh" profile for a testing period.
1496 though so far only with "sh" profile for a testing period.
1493 The patch also enables splitting long commands with \ but it
1497 The patch also enables splitting long commands with \ but it
1494 doesn't work properly yet.
1498 doesn't work properly yet.
1495
1499
1496 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1500 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1497
1501
1498 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1502 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1499 input history and the position of the cursor in the input history for
1503 input history and the position of the cursor in the input history for
1500 the find, findbackwards and goto command.
1504 the find, findbackwards and goto command.
1501
1505
1502 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1506 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1503
1507
1504 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1508 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1505 implements the basic functionality of browser commands that require
1509 implements the basic functionality of browser commands that require
1506 input. Reimplement the goto, find and findbackwards commands as
1510 input. Reimplement the goto, find and findbackwards commands as
1507 subclasses of _CommandInput. Add an input history and keymaps to those
1511 subclasses of _CommandInput. Add an input history and keymaps to those
1508 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1512 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1509 execute commands.
1513 execute commands.
1510
1514
1511 2006-06-07 Ville Vainio <vivainio@gmail.com>
1515 2006-06-07 Ville Vainio <vivainio@gmail.com>
1512
1516
1513 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1517 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1514 running the batch files instead of leaving the session open.
1518 running the batch files instead of leaving the session open.
1515
1519
1516 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1520 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1517
1521
1518 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1522 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1519 the original fix was incomplete. Patch submitted by W. Maier.
1523 the original fix was incomplete. Patch submitted by W. Maier.
1520
1524
1521 2006-06-07 Ville Vainio <vivainio@gmail.com>
1525 2006-06-07 Ville Vainio <vivainio@gmail.com>
1522
1526
1523 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1527 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1524 Confirmation prompts can be supressed by 'quiet' option.
1528 Confirmation prompts can be supressed by 'quiet' option.
1525 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1529 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1526
1530
1527 2006-06-06 *** Released version 0.7.2
1531 2006-06-06 *** Released version 0.7.2
1528
1532
1529 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1533 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1530
1534
1531 * IPython/Release.py (version): Made 0.7.2 final for release.
1535 * IPython/Release.py (version): Made 0.7.2 final for release.
1532 Repo tagged and release cut.
1536 Repo tagged and release cut.
1533
1537
1534 2006-06-05 Ville Vainio <vivainio@gmail.com>
1538 2006-06-05 Ville Vainio <vivainio@gmail.com>
1535
1539
1536 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1540 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1537 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1541 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1538
1542
1539 * upgrade_dir.py: try import 'path' module a bit harder
1543 * upgrade_dir.py: try import 'path' module a bit harder
1540 (for %upgrade)
1544 (for %upgrade)
1541
1545
1542 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1546 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1543
1547
1544 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1548 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1545 instead of looping 20 times.
1549 instead of looping 20 times.
1546
1550
1547 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1551 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1548 correctly at initialization time. Bug reported by Krishna Mohan
1552 correctly at initialization time. Bug reported by Krishna Mohan
1549 Gundu <gkmohan-AT-gmail.com> on the user list.
1553 Gundu <gkmohan-AT-gmail.com> on the user list.
1550
1554
1551 * IPython/Release.py (version): Mark 0.7.2 version to start
1555 * IPython/Release.py (version): Mark 0.7.2 version to start
1552 testing for release on 06/06.
1556 testing for release on 06/06.
1553
1557
1554 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1558 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1555
1559
1556 * scripts/irunner: thin script interface so users don't have to
1560 * scripts/irunner: thin script interface so users don't have to
1557 find the module and call it as an executable, since modules rarely
1561 find the module and call it as an executable, since modules rarely
1558 live in people's PATH.
1562 live in people's PATH.
1559
1563
1560 * IPython/irunner.py (InteractiveRunner.__init__): added
1564 * IPython/irunner.py (InteractiveRunner.__init__): added
1561 delaybeforesend attribute to control delays with newer versions of
1565 delaybeforesend attribute to control delays with newer versions of
1562 pexpect. Thanks to detailed help from pexpect's author, Noah
1566 pexpect. Thanks to detailed help from pexpect's author, Noah
1563 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1567 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1564 correctly (it works in NoColor mode).
1568 correctly (it works in NoColor mode).
1565
1569
1566 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1570 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1567 SAGE list, from improper log() calls.
1571 SAGE list, from improper log() calls.
1568
1572
1569 2006-05-31 Ville Vainio <vivainio@gmail.com>
1573 2006-05-31 Ville Vainio <vivainio@gmail.com>
1570
1574
1571 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1575 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1572 with args in parens to work correctly with dirs that have spaces.
1576 with args in parens to work correctly with dirs that have spaces.
1573
1577
1574 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1578 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1575
1579
1576 * IPython/Logger.py (Logger.logstart): add option to log raw input
1580 * IPython/Logger.py (Logger.logstart): add option to log raw input
1577 instead of the processed one. A -r flag was added to the
1581 instead of the processed one. A -r flag was added to the
1578 %logstart magic used for controlling logging.
1582 %logstart magic used for controlling logging.
1579
1583
1580 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1584 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1581
1585
1582 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1586 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1583 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1587 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1584 recognize the option. After a bug report by Will Maier. This
1588 recognize the option. After a bug report by Will Maier. This
1585 closes #64 (will do it after confirmation from W. Maier).
1589 closes #64 (will do it after confirmation from W. Maier).
1586
1590
1587 * IPython/irunner.py: New module to run scripts as if manually
1591 * IPython/irunner.py: New module to run scripts as if manually
1588 typed into an interactive environment, based on pexpect. After a
1592 typed into an interactive environment, based on pexpect. After a
1589 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1593 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1590 ipython-user list. Simple unittests in the tests/ directory.
1594 ipython-user list. Simple unittests in the tests/ directory.
1591
1595
1592 * tools/release: add Will Maier, OpenBSD port maintainer, to
1596 * tools/release: add Will Maier, OpenBSD port maintainer, to
1593 recepients list. We are now officially part of the OpenBSD ports:
1597 recepients list. We are now officially part of the OpenBSD ports:
1594 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1598 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1595 work.
1599 work.
1596
1600
1597 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1601 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1598
1602
1599 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1603 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1600 so that it doesn't break tkinter apps.
1604 so that it doesn't break tkinter apps.
1601
1605
1602 * IPython/iplib.py (_prefilter): fix bug where aliases would
1606 * IPython/iplib.py (_prefilter): fix bug where aliases would
1603 shadow variables when autocall was fully off. Reported by SAGE
1607 shadow variables when autocall was fully off. Reported by SAGE
1604 author William Stein.
1608 author William Stein.
1605
1609
1606 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1610 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1607 at what detail level strings are computed when foo? is requested.
1611 at what detail level strings are computed when foo? is requested.
1608 This allows users to ask for example that the string form of an
1612 This allows users to ask for example that the string form of an
1609 object is only computed when foo?? is called, or even never, by
1613 object is only computed when foo?? is called, or even never, by
1610 setting the object_info_string_level >= 2 in the configuration
1614 setting the object_info_string_level >= 2 in the configuration
1611 file. This new option has been added and documented. After a
1615 file. This new option has been added and documented. After a
1612 request by SAGE to be able to control the printing of very large
1616 request by SAGE to be able to control the printing of very large
1613 objects more easily.
1617 objects more easily.
1614
1618
1615 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1619 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1616
1620
1617 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1621 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1618 from sys.argv, to be 100% consistent with how Python itself works
1622 from sys.argv, to be 100% consistent with how Python itself works
1619 (as seen for example with python -i file.py). After a bug report
1623 (as seen for example with python -i file.py). After a bug report
1620 by Jeffrey Collins.
1624 by Jeffrey Collins.
1621
1625
1622 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1626 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1623 nasty bug which was preventing custom namespaces with -pylab,
1627 nasty bug which was preventing custom namespaces with -pylab,
1624 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1628 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1625 compatibility (long gone from mpl).
1629 compatibility (long gone from mpl).
1626
1630
1627 * IPython/ipapi.py (make_session): name change: create->make. We
1631 * IPython/ipapi.py (make_session): name change: create->make. We
1628 use make in other places (ipmaker,...), it's shorter and easier to
1632 use make in other places (ipmaker,...), it's shorter and easier to
1629 type and say, etc. I'm trying to clean things before 0.7.2 so
1633 type and say, etc. I'm trying to clean things before 0.7.2 so
1630 that I can keep things stable wrt to ipapi in the chainsaw branch.
1634 that I can keep things stable wrt to ipapi in the chainsaw branch.
1631
1635
1632 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1636 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1633 python-mode recognizes our debugger mode. Add support for
1637 python-mode recognizes our debugger mode. Add support for
1634 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1638 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1635 <m.liu.jin-AT-gmail.com> originally written by
1639 <m.liu.jin-AT-gmail.com> originally written by
1636 doxgen-AT-newsmth.net (with minor modifications for xemacs
1640 doxgen-AT-newsmth.net (with minor modifications for xemacs
1637 compatibility)
1641 compatibility)
1638
1642
1639 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1643 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1640 tracebacks when walking the stack so that the stack tracking system
1644 tracebacks when walking the stack so that the stack tracking system
1641 in emacs' python-mode can identify the frames correctly.
1645 in emacs' python-mode can identify the frames correctly.
1642
1646
1643 * IPython/ipmaker.py (make_IPython): make the internal (and
1647 * IPython/ipmaker.py (make_IPython): make the internal (and
1644 default config) autoedit_syntax value false by default. Too many
1648 default config) autoedit_syntax value false by default. Too many
1645 users have complained to me (both on and off-list) about problems
1649 users have complained to me (both on and off-list) about problems
1646 with this option being on by default, so I'm making it default to
1650 with this option being on by default, so I'm making it default to
1647 off. It can still be enabled by anyone via the usual mechanisms.
1651 off. It can still be enabled by anyone via the usual mechanisms.
1648
1652
1649 * IPython/completer.py (Completer.attr_matches): add support for
1653 * IPython/completer.py (Completer.attr_matches): add support for
1650 PyCrust-style _getAttributeNames magic method. Patch contributed
1654 PyCrust-style _getAttributeNames magic method. Patch contributed
1651 by <mscott-AT-goldenspud.com>. Closes #50.
1655 by <mscott-AT-goldenspud.com>. Closes #50.
1652
1656
1653 * IPython/iplib.py (InteractiveShell.__init__): remove the
1657 * IPython/iplib.py (InteractiveShell.__init__): remove the
1654 deletion of exit/quit from __builtin__, which can break
1658 deletion of exit/quit from __builtin__, which can break
1655 third-party tools like the Zope debugging console. The
1659 third-party tools like the Zope debugging console. The
1656 %exit/%quit magics remain. In general, it's probably a good idea
1660 %exit/%quit magics remain. In general, it's probably a good idea
1657 not to delete anything from __builtin__, since we never know what
1661 not to delete anything from __builtin__, since we never know what
1658 that will break. In any case, python now (for 2.5) will support
1662 that will break. In any case, python now (for 2.5) will support
1659 'real' exit/quit, so this issue is moot. Closes #55.
1663 'real' exit/quit, so this issue is moot. Closes #55.
1660
1664
1661 * IPython/genutils.py (with_obj): rename the 'with' function to
1665 * IPython/genutils.py (with_obj): rename the 'with' function to
1662 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1666 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1663 becomes a language keyword. Closes #53.
1667 becomes a language keyword. Closes #53.
1664
1668
1665 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1669 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1666 __file__ attribute to this so it fools more things into thinking
1670 __file__ attribute to this so it fools more things into thinking
1667 it is a real module. Closes #59.
1671 it is a real module. Closes #59.
1668
1672
1669 * IPython/Magic.py (magic_edit): add -n option to open the editor
1673 * IPython/Magic.py (magic_edit): add -n option to open the editor
1670 at a specific line number. After a patch by Stefan van der Walt.
1674 at a specific line number. After a patch by Stefan van der Walt.
1671
1675
1672 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1676 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1673
1677
1674 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1678 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1675 reason the file could not be opened. After automatic crash
1679 reason the file could not be opened. After automatic crash
1676 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1680 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1677 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1681 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1678 (_should_recompile): Don't fire editor if using %bg, since there
1682 (_should_recompile): Don't fire editor if using %bg, since there
1679 is no file in the first place. From the same report as above.
1683 is no file in the first place. From the same report as above.
1680 (raw_input): protect against faulty third-party prefilters. After
1684 (raw_input): protect against faulty third-party prefilters. After
1681 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1685 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1682 while running under SAGE.
1686 while running under SAGE.
1683
1687
1684 2006-05-23 Ville Vainio <vivainio@gmail.com>
1688 2006-05-23 Ville Vainio <vivainio@gmail.com>
1685
1689
1686 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1690 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1687 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1691 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1688 now returns None (again), unless dummy is specifically allowed by
1692 now returns None (again), unless dummy is specifically allowed by
1689 ipapi.get(allow_dummy=True).
1693 ipapi.get(allow_dummy=True).
1690
1694
1691 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1695 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1692
1696
1693 * IPython: remove all 2.2-compatibility objects and hacks from
1697 * IPython: remove all 2.2-compatibility objects and hacks from
1694 everywhere, since we only support 2.3 at this point. Docs
1698 everywhere, since we only support 2.3 at this point. Docs
1695 updated.
1699 updated.
1696
1700
1697 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1701 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1698 Anything requiring extra validation can be turned into a Python
1702 Anything requiring extra validation can be turned into a Python
1699 property in the future. I used a property for the db one b/c
1703 property in the future. I used a property for the db one b/c
1700 there was a nasty circularity problem with the initialization
1704 there was a nasty circularity problem with the initialization
1701 order, which right now I don't have time to clean up.
1705 order, which right now I don't have time to clean up.
1702
1706
1703 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1707 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1704 another locking bug reported by Jorgen. I'm not 100% sure though,
1708 another locking bug reported by Jorgen. I'm not 100% sure though,
1705 so more testing is needed...
1709 so more testing is needed...
1706
1710
1707 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1711 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1708
1712
1709 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1713 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1710 local variables from any routine in user code (typically executed
1714 local variables from any routine in user code (typically executed
1711 with %run) directly into the interactive namespace. Very useful
1715 with %run) directly into the interactive namespace. Very useful
1712 when doing complex debugging.
1716 when doing complex debugging.
1713 (IPythonNotRunning): Changed the default None object to a dummy
1717 (IPythonNotRunning): Changed the default None object to a dummy
1714 whose attributes can be queried as well as called without
1718 whose attributes can be queried as well as called without
1715 exploding, to ease writing code which works transparently both in
1719 exploding, to ease writing code which works transparently both in
1716 and out of ipython and uses some of this API.
1720 and out of ipython and uses some of this API.
1717
1721
1718 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1722 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1719
1723
1720 * IPython/hooks.py (result_display): Fix the fact that our display
1724 * IPython/hooks.py (result_display): Fix the fact that our display
1721 hook was using str() instead of repr(), as the default python
1725 hook was using str() instead of repr(), as the default python
1722 console does. This had gone unnoticed b/c it only happened if
1726 console does. This had gone unnoticed b/c it only happened if
1723 %Pprint was off, but the inconsistency was there.
1727 %Pprint was off, but the inconsistency was there.
1724
1728
1725 2006-05-15 Ville Vainio <vivainio@gmail.com>
1729 2006-05-15 Ville Vainio <vivainio@gmail.com>
1726
1730
1727 * Oinspect.py: Only show docstring for nonexisting/binary files
1731 * Oinspect.py: Only show docstring for nonexisting/binary files
1728 when doing object??, closing ticket #62
1732 when doing object??, closing ticket #62
1729
1733
1730 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1734 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1731
1735
1732 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1736 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1733 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1737 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1734 was being released in a routine which hadn't checked if it had
1738 was being released in a routine which hadn't checked if it had
1735 been the one to acquire it.
1739 been the one to acquire it.
1736
1740
1737 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1741 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1738
1742
1739 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1743 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1740
1744
1741 2006-04-11 Ville Vainio <vivainio@gmail.com>
1745 2006-04-11 Ville Vainio <vivainio@gmail.com>
1742
1746
1743 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1747 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1744 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1748 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1745 prefilters, allowing stuff like magics and aliases in the file.
1749 prefilters, allowing stuff like magics and aliases in the file.
1746
1750
1747 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1751 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1748 added. Supported now are "%clear in" and "%clear out" (clear input and
1752 added. Supported now are "%clear in" and "%clear out" (clear input and
1749 output history, respectively). Also fixed CachedOutput.flush to
1753 output history, respectively). Also fixed CachedOutput.flush to
1750 properly flush the output cache.
1754 properly flush the output cache.
1751
1755
1752 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1756 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1753 half-success (and fail explicitly).
1757 half-success (and fail explicitly).
1754
1758
1755 2006-03-28 Ville Vainio <vivainio@gmail.com>
1759 2006-03-28 Ville Vainio <vivainio@gmail.com>
1756
1760
1757 * iplib.py: Fix quoting of aliases so that only argless ones
1761 * iplib.py: Fix quoting of aliases so that only argless ones
1758 are quoted
1762 are quoted
1759
1763
1760 2006-03-28 Ville Vainio <vivainio@gmail.com>
1764 2006-03-28 Ville Vainio <vivainio@gmail.com>
1761
1765
1762 * iplib.py: Quote aliases with spaces in the name.
1766 * iplib.py: Quote aliases with spaces in the name.
1763 "c:\program files\blah\bin" is now legal alias target.
1767 "c:\program files\blah\bin" is now legal alias target.
1764
1768
1765 * ext_rehashdir.py: Space no longer allowed as arg
1769 * ext_rehashdir.py: Space no longer allowed as arg
1766 separator, since space is legal in path names.
1770 separator, since space is legal in path names.
1767
1771
1768 2006-03-16 Ville Vainio <vivainio@gmail.com>
1772 2006-03-16 Ville Vainio <vivainio@gmail.com>
1769
1773
1770 * upgrade_dir.py: Take path.py from Extensions, correcting
1774 * upgrade_dir.py: Take path.py from Extensions, correcting
1771 %upgrade magic
1775 %upgrade magic
1772
1776
1773 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1777 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1774
1778
1775 * hooks.py: Only enclose editor binary in quotes if legal and
1779 * hooks.py: Only enclose editor binary in quotes if legal and
1776 necessary (space in the name, and is an existing file). Fixes a bug
1780 necessary (space in the name, and is an existing file). Fixes a bug
1777 reported by Zachary Pincus.
1781 reported by Zachary Pincus.
1778
1782
1779 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1783 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1780
1784
1781 * Manual: thanks to a tip on proper color handling for Emacs, by
1785 * Manual: thanks to a tip on proper color handling for Emacs, by
1782 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1786 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1783
1787
1784 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1788 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1785 by applying the provided patch. Thanks to Liu Jin
1789 by applying the provided patch. Thanks to Liu Jin
1786 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1790 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1787 XEmacs/Linux, I'm trusting the submitter that it actually helps
1791 XEmacs/Linux, I'm trusting the submitter that it actually helps
1788 under win32/GNU Emacs. Will revisit if any problems are reported.
1792 under win32/GNU Emacs. Will revisit if any problems are reported.
1789
1793
1790 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1794 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1791
1795
1792 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1796 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1793 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1797 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1794
1798
1795 2006-03-12 Ville Vainio <vivainio@gmail.com>
1799 2006-03-12 Ville Vainio <vivainio@gmail.com>
1796
1800
1797 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1801 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1798 Torsten Marek.
1802 Torsten Marek.
1799
1803
1800 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1804 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1801
1805
1802 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1806 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1803 line ranges works again.
1807 line ranges works again.
1804
1808
1805 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1809 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1806
1810
1807 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1811 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1808 and friends, after a discussion with Zach Pincus on ipython-user.
1812 and friends, after a discussion with Zach Pincus on ipython-user.
1809 I'm not 100% sure, but after thinking about it quite a bit, it may
1813 I'm not 100% sure, but after thinking about it quite a bit, it may
1810 be OK. Testing with the multithreaded shells didn't reveal any
1814 be OK. Testing with the multithreaded shells didn't reveal any
1811 problems, but let's keep an eye out.
1815 problems, but let's keep an eye out.
1812
1816
1813 In the process, I fixed a few things which were calling
1817 In the process, I fixed a few things which were calling
1814 self.InteractiveTB() directly (like safe_execfile), which is a
1818 self.InteractiveTB() directly (like safe_execfile), which is a
1815 mistake: ALL exception reporting should be done by calling
1819 mistake: ALL exception reporting should be done by calling
1816 self.showtraceback(), which handles state and tab-completion and
1820 self.showtraceback(), which handles state and tab-completion and
1817 more.
1821 more.
1818
1822
1819 2006-03-01 Ville Vainio <vivainio@gmail.com>
1823 2006-03-01 Ville Vainio <vivainio@gmail.com>
1820
1824
1821 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1825 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1822 To use, do "from ipipe import *".
1826 To use, do "from ipipe import *".
1823
1827
1824 2006-02-24 Ville Vainio <vivainio@gmail.com>
1828 2006-02-24 Ville Vainio <vivainio@gmail.com>
1825
1829
1826 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1830 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1827 "cleanly" and safely than the older upgrade mechanism.
1831 "cleanly" and safely than the older upgrade mechanism.
1828
1832
1829 2006-02-21 Ville Vainio <vivainio@gmail.com>
1833 2006-02-21 Ville Vainio <vivainio@gmail.com>
1830
1834
1831 * Magic.py: %save works again.
1835 * Magic.py: %save works again.
1832
1836
1833 2006-02-15 Ville Vainio <vivainio@gmail.com>
1837 2006-02-15 Ville Vainio <vivainio@gmail.com>
1834
1838
1835 * Magic.py: %Pprint works again
1839 * Magic.py: %Pprint works again
1836
1840
1837 * Extensions/ipy_sane_defaults.py: Provide everything provided
1841 * Extensions/ipy_sane_defaults.py: Provide everything provided
1838 in default ipythonrc, to make it possible to have a completely empty
1842 in default ipythonrc, to make it possible to have a completely empty
1839 ipythonrc (and thus completely rc-file free configuration)
1843 ipythonrc (and thus completely rc-file free configuration)
1840
1844
1841 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1845 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1842
1846
1843 * IPython/hooks.py (editor): quote the call to the editor command,
1847 * IPython/hooks.py (editor): quote the call to the editor command,
1844 to allow commands with spaces in them. Problem noted by watching
1848 to allow commands with spaces in them. Problem noted by watching
1845 Ian Oswald's video about textpad under win32 at
1849 Ian Oswald's video about textpad under win32 at
1846 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1850 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1847
1851
1848 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1852 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1849 describing magics (we haven't used @ for a loong time).
1853 describing magics (we haven't used @ for a loong time).
1850
1854
1851 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1855 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1852 contributed by marienz to close
1856 contributed by marienz to close
1853 http://www.scipy.net/roundup/ipython/issue53.
1857 http://www.scipy.net/roundup/ipython/issue53.
1854
1858
1855 2006-02-10 Ville Vainio <vivainio@gmail.com>
1859 2006-02-10 Ville Vainio <vivainio@gmail.com>
1856
1860
1857 * genutils.py: getoutput now works in win32 too
1861 * genutils.py: getoutput now works in win32 too
1858
1862
1859 * completer.py: alias and magic completion only invoked
1863 * completer.py: alias and magic completion only invoked
1860 at the first "item" in the line, to avoid "cd %store"
1864 at the first "item" in the line, to avoid "cd %store"
1861 nonsense.
1865 nonsense.
1862
1866
1863 2006-02-09 Ville Vainio <vivainio@gmail.com>
1867 2006-02-09 Ville Vainio <vivainio@gmail.com>
1864
1868
1865 * test/*: Added a unit testing framework (finally).
1869 * test/*: Added a unit testing framework (finally).
1866 '%run runtests.py' to run test_*.
1870 '%run runtests.py' to run test_*.
1867
1871
1868 * ipapi.py: Exposed runlines and set_custom_exc
1872 * ipapi.py: Exposed runlines and set_custom_exc
1869
1873
1870 2006-02-07 Ville Vainio <vivainio@gmail.com>
1874 2006-02-07 Ville Vainio <vivainio@gmail.com>
1871
1875
1872 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1876 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1873 instead use "f(1 2)" as before.
1877 instead use "f(1 2)" as before.
1874
1878
1875 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1879 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1876
1880
1877 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1881 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1878 facilities, for demos processed by the IPython input filter
1882 facilities, for demos processed by the IPython input filter
1879 (IPythonDemo), and for running a script one-line-at-a-time as a
1883 (IPythonDemo), and for running a script one-line-at-a-time as a
1880 demo, both for pure Python (LineDemo) and for IPython-processed
1884 demo, both for pure Python (LineDemo) and for IPython-processed
1881 input (IPythonLineDemo). After a request by Dave Kohel, from the
1885 input (IPythonLineDemo). After a request by Dave Kohel, from the
1882 SAGE team.
1886 SAGE team.
1883 (Demo.edit): added an edit() method to the demo objects, to edit
1887 (Demo.edit): added an edit() method to the demo objects, to edit
1884 the in-memory copy of the last executed block.
1888 the in-memory copy of the last executed block.
1885
1889
1886 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1890 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1887 processing to %edit, %macro and %save. These commands can now be
1891 processing to %edit, %macro and %save. These commands can now be
1888 invoked on the unprocessed input as it was typed by the user
1892 invoked on the unprocessed input as it was typed by the user
1889 (without any prefilters applied). After requests by the SAGE team
1893 (without any prefilters applied). After requests by the SAGE team
1890 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1894 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1891
1895
1892 2006-02-01 Ville Vainio <vivainio@gmail.com>
1896 2006-02-01 Ville Vainio <vivainio@gmail.com>
1893
1897
1894 * setup.py, eggsetup.py: easy_install ipython==dev works
1898 * setup.py, eggsetup.py: easy_install ipython==dev works
1895 correctly now (on Linux)
1899 correctly now (on Linux)
1896
1900
1897 * ipy_user_conf,ipmaker: user config changes, removed spurious
1901 * ipy_user_conf,ipmaker: user config changes, removed spurious
1898 warnings
1902 warnings
1899
1903
1900 * iplib: if rc.banner is string, use it as is.
1904 * iplib: if rc.banner is string, use it as is.
1901
1905
1902 * Magic: %pycat accepts a string argument and pages it's contents.
1906 * Magic: %pycat accepts a string argument and pages it's contents.
1903
1907
1904
1908
1905 2006-01-30 Ville Vainio <vivainio@gmail.com>
1909 2006-01-30 Ville Vainio <vivainio@gmail.com>
1906
1910
1907 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1911 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1908 Now %store and bookmarks work through PickleShare, meaning that
1912 Now %store and bookmarks work through PickleShare, meaning that
1909 concurrent access is possible and all ipython sessions see the
1913 concurrent access is possible and all ipython sessions see the
1910 same database situation all the time, instead of snapshot of
1914 same database situation all the time, instead of snapshot of
1911 the situation when the session was started. Hence, %bookmark
1915 the situation when the session was started. Hence, %bookmark
1912 results are immediately accessible from othes sessions. The database
1916 results are immediately accessible from othes sessions. The database
1913 is also available for use by user extensions. See:
1917 is also available for use by user extensions. See:
1914 http://www.python.org/pypi/pickleshare
1918 http://www.python.org/pypi/pickleshare
1915
1919
1916 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1920 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1917
1921
1918 * aliases can now be %store'd
1922 * aliases can now be %store'd
1919
1923
1920 * path.py moved to Extensions so that pickleshare does not need
1924 * path.py moved to Extensions so that pickleshare does not need
1921 IPython-specific import. Extensions added to pythonpath right
1925 IPython-specific import. Extensions added to pythonpath right
1922 at __init__.
1926 at __init__.
1923
1927
1924 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1928 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1925 called with _ip.system and the pre-transformed command string.
1929 called with _ip.system and the pre-transformed command string.
1926
1930
1927 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1931 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1928
1932
1929 * IPython/iplib.py (interact): Fix that we were not catching
1933 * IPython/iplib.py (interact): Fix that we were not catching
1930 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1934 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1931 logic here had to change, but it's fixed now.
1935 logic here had to change, but it's fixed now.
1932
1936
1933 2006-01-29 Ville Vainio <vivainio@gmail.com>
1937 2006-01-29 Ville Vainio <vivainio@gmail.com>
1934
1938
1935 * iplib.py: Try to import pyreadline on Windows.
1939 * iplib.py: Try to import pyreadline on Windows.
1936
1940
1937 2006-01-27 Ville Vainio <vivainio@gmail.com>
1941 2006-01-27 Ville Vainio <vivainio@gmail.com>
1938
1942
1939 * iplib.py: Expose ipapi as _ip in builtin namespace.
1943 * iplib.py: Expose ipapi as _ip in builtin namespace.
1940 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1944 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1941 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1945 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1942 syntax now produce _ip.* variant of the commands.
1946 syntax now produce _ip.* variant of the commands.
1943
1947
1944 * "_ip.options().autoedit_syntax = 2" automatically throws
1948 * "_ip.options().autoedit_syntax = 2" automatically throws
1945 user to editor for syntax error correction without prompting.
1949 user to editor for syntax error correction without prompting.
1946
1950
1947 2006-01-27 Ville Vainio <vivainio@gmail.com>
1951 2006-01-27 Ville Vainio <vivainio@gmail.com>
1948
1952
1949 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1953 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1950 'ipython' at argv[0]) executed through command line.
1954 'ipython' at argv[0]) executed through command line.
1951 NOTE: this DEPRECATES calling ipython with multiple scripts
1955 NOTE: this DEPRECATES calling ipython with multiple scripts
1952 ("ipython a.py b.py c.py")
1956 ("ipython a.py b.py c.py")
1953
1957
1954 * iplib.py, hooks.py: Added configurable input prefilter,
1958 * iplib.py, hooks.py: Added configurable input prefilter,
1955 named 'input_prefilter'. See ext_rescapture.py for example
1959 named 'input_prefilter'. See ext_rescapture.py for example
1956 usage.
1960 usage.
1957
1961
1958 * ext_rescapture.py, Magic.py: Better system command output capture
1962 * ext_rescapture.py, Magic.py: Better system command output capture
1959 through 'var = !ls' (deprecates user-visible %sc). Same notation
1963 through 'var = !ls' (deprecates user-visible %sc). Same notation
1960 applies for magics, 'var = %alias' assigns alias list to var.
1964 applies for magics, 'var = %alias' assigns alias list to var.
1961
1965
1962 * ipapi.py: added meta() for accessing extension-usable data store.
1966 * ipapi.py: added meta() for accessing extension-usable data store.
1963
1967
1964 * iplib.py: added InteractiveShell.getapi(). New magics should be
1968 * iplib.py: added InteractiveShell.getapi(). New magics should be
1965 written doing self.getapi() instead of using the shell directly.
1969 written doing self.getapi() instead of using the shell directly.
1966
1970
1967 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1971 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1968 %store foo >> ~/myfoo.txt to store variables to files (in clean
1972 %store foo >> ~/myfoo.txt to store variables to files (in clean
1969 textual form, not a restorable pickle).
1973 textual form, not a restorable pickle).
1970
1974
1971 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1975 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1972
1976
1973 * usage.py, Magic.py: added %quickref
1977 * usage.py, Magic.py: added %quickref
1974
1978
1975 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1979 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1976
1980
1977 * GetoptErrors when invoking magics etc. with wrong args
1981 * GetoptErrors when invoking magics etc. with wrong args
1978 are now more helpful:
1982 are now more helpful:
1979 GetoptError: option -l not recognized (allowed: "qb" )
1983 GetoptError: option -l not recognized (allowed: "qb" )
1980
1984
1981 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1985 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1982
1986
1983 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1987 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1984 computationally intensive blocks don't appear to stall the demo.
1988 computationally intensive blocks don't appear to stall the demo.
1985
1989
1986 2006-01-24 Ville Vainio <vivainio@gmail.com>
1990 2006-01-24 Ville Vainio <vivainio@gmail.com>
1987
1991
1988 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1992 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1989 value to manipulate resulting history entry.
1993 value to manipulate resulting history entry.
1990
1994
1991 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1995 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1992 to instance methods of IPApi class, to make extending an embedded
1996 to instance methods of IPApi class, to make extending an embedded
1993 IPython feasible. See ext_rehashdir.py for example usage.
1997 IPython feasible. See ext_rehashdir.py for example usage.
1994
1998
1995 * Merged 1071-1076 from branches/0.7.1
1999 * Merged 1071-1076 from branches/0.7.1
1996
2000
1997
2001
1998 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2002 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
1999
2003
2000 * tools/release (daystamp): Fix build tools to use the new
2004 * tools/release (daystamp): Fix build tools to use the new
2001 eggsetup.py script to build lightweight eggs.
2005 eggsetup.py script to build lightweight eggs.
2002
2006
2003 * Applied changesets 1062 and 1064 before 0.7.1 release.
2007 * Applied changesets 1062 and 1064 before 0.7.1 release.
2004
2008
2005 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2009 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2006 see the raw input history (without conversions like %ls ->
2010 see the raw input history (without conversions like %ls ->
2007 ipmagic("ls")). After a request from W. Stein, SAGE
2011 ipmagic("ls")). After a request from W. Stein, SAGE
2008 (http://modular.ucsd.edu/sage) developer. This information is
2012 (http://modular.ucsd.edu/sage) developer. This information is
2009 stored in the input_hist_raw attribute of the IPython instance, so
2013 stored in the input_hist_raw attribute of the IPython instance, so
2010 developers can access it if needed (it's an InputList instance).
2014 developers can access it if needed (it's an InputList instance).
2011
2015
2012 * Versionstring = 0.7.2.svn
2016 * Versionstring = 0.7.2.svn
2013
2017
2014 * eggsetup.py: A separate script for constructing eggs, creates
2018 * eggsetup.py: A separate script for constructing eggs, creates
2015 proper launch scripts even on Windows (an .exe file in
2019 proper launch scripts even on Windows (an .exe file in
2016 \python24\scripts).
2020 \python24\scripts).
2017
2021
2018 * ipapi.py: launch_new_instance, launch entry point needed for the
2022 * ipapi.py: launch_new_instance, launch entry point needed for the
2019 egg.
2023 egg.
2020
2024
2021 2006-01-23 Ville Vainio <vivainio@gmail.com>
2025 2006-01-23 Ville Vainio <vivainio@gmail.com>
2022
2026
2023 * Added %cpaste magic for pasting python code
2027 * Added %cpaste magic for pasting python code
2024
2028
2025 2006-01-22 Ville Vainio <vivainio@gmail.com>
2029 2006-01-22 Ville Vainio <vivainio@gmail.com>
2026
2030
2027 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2031 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2028
2032
2029 * Versionstring = 0.7.2.svn
2033 * Versionstring = 0.7.2.svn
2030
2034
2031 * eggsetup.py: A separate script for constructing eggs, creates
2035 * eggsetup.py: A separate script for constructing eggs, creates
2032 proper launch scripts even on Windows (an .exe file in
2036 proper launch scripts even on Windows (an .exe file in
2033 \python24\scripts).
2037 \python24\scripts).
2034
2038
2035 * ipapi.py: launch_new_instance, launch entry point needed for the
2039 * ipapi.py: launch_new_instance, launch entry point needed for the
2036 egg.
2040 egg.
2037
2041
2038 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2042 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2039
2043
2040 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2044 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2041 %pfile foo would print the file for foo even if it was a binary.
2045 %pfile foo would print the file for foo even if it was a binary.
2042 Now, extensions '.so' and '.dll' are skipped.
2046 Now, extensions '.so' and '.dll' are skipped.
2043
2047
2044 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2048 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2045 bug, where macros would fail in all threaded modes. I'm not 100%
2049 bug, where macros would fail in all threaded modes. I'm not 100%
2046 sure, so I'm going to put out an rc instead of making a release
2050 sure, so I'm going to put out an rc instead of making a release
2047 today, and wait for feedback for at least a few days.
2051 today, and wait for feedback for at least a few days.
2048
2052
2049 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2053 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2050 it...) the handling of pasting external code with autoindent on.
2054 it...) the handling of pasting external code with autoindent on.
2051 To get out of a multiline input, the rule will appear for most
2055 To get out of a multiline input, the rule will appear for most
2052 users unchanged: two blank lines or change the indent level
2056 users unchanged: two blank lines or change the indent level
2053 proposed by IPython. But there is a twist now: you can
2057 proposed by IPython. But there is a twist now: you can
2054 add/subtract only *one or two spaces*. If you add/subtract three
2058 add/subtract only *one or two spaces*. If you add/subtract three
2055 or more (unless you completely delete the line), IPython will
2059 or more (unless you completely delete the line), IPython will
2056 accept that line, and you'll need to enter a second one of pure
2060 accept that line, and you'll need to enter a second one of pure
2057 whitespace. I know it sounds complicated, but I can't find a
2061 whitespace. I know it sounds complicated, but I can't find a
2058 different solution that covers all the cases, with the right
2062 different solution that covers all the cases, with the right
2059 heuristics. Hopefully in actual use, nobody will really notice
2063 heuristics. Hopefully in actual use, nobody will really notice
2060 all these strange rules and things will 'just work'.
2064 all these strange rules and things will 'just work'.
2061
2065
2062 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2066 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2063
2067
2064 * IPython/iplib.py (interact): catch exceptions which can be
2068 * IPython/iplib.py (interact): catch exceptions which can be
2065 triggered asynchronously by signal handlers. Thanks to an
2069 triggered asynchronously by signal handlers. Thanks to an
2066 automatic crash report, submitted by Colin Kingsley
2070 automatic crash report, submitted by Colin Kingsley
2067 <tercel-AT-gentoo.org>.
2071 <tercel-AT-gentoo.org>.
2068
2072
2069 2006-01-20 Ville Vainio <vivainio@gmail.com>
2073 2006-01-20 Ville Vainio <vivainio@gmail.com>
2070
2074
2071 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2075 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2072 (%rehashdir, very useful, try it out) of how to extend ipython
2076 (%rehashdir, very useful, try it out) of how to extend ipython
2073 with new magics. Also added Extensions dir to pythonpath to make
2077 with new magics. Also added Extensions dir to pythonpath to make
2074 importing extensions easy.
2078 importing extensions easy.
2075
2079
2076 * %store now complains when trying to store interactively declared
2080 * %store now complains when trying to store interactively declared
2077 classes / instances of those classes.
2081 classes / instances of those classes.
2078
2082
2079 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2083 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2080 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2084 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2081 if they exist, and ipy_user_conf.py with some defaults is created for
2085 if they exist, and ipy_user_conf.py with some defaults is created for
2082 the user.
2086 the user.
2083
2087
2084 * Startup rehashing done by the config file, not InterpreterExec.
2088 * Startup rehashing done by the config file, not InterpreterExec.
2085 This means system commands are available even without selecting the
2089 This means system commands are available even without selecting the
2086 pysh profile. It's the sensible default after all.
2090 pysh profile. It's the sensible default after all.
2087
2091
2088 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2092 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2089
2093
2090 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2094 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2091 multiline code with autoindent on working. But I am really not
2095 multiline code with autoindent on working. But I am really not
2092 sure, so this needs more testing. Will commit a debug-enabled
2096 sure, so this needs more testing. Will commit a debug-enabled
2093 version for now, while I test it some more, so that Ville and
2097 version for now, while I test it some more, so that Ville and
2094 others may also catch any problems. Also made
2098 others may also catch any problems. Also made
2095 self.indent_current_str() a method, to ensure that there's no
2099 self.indent_current_str() a method, to ensure that there's no
2096 chance of the indent space count and the corresponding string
2100 chance of the indent space count and the corresponding string
2097 falling out of sync. All code needing the string should just call
2101 falling out of sync. All code needing the string should just call
2098 the method.
2102 the method.
2099
2103
2100 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2104 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2101
2105
2102 * IPython/Magic.py (magic_edit): fix check for when users don't
2106 * IPython/Magic.py (magic_edit): fix check for when users don't
2103 save their output files, the try/except was in the wrong section.
2107 save their output files, the try/except was in the wrong section.
2104
2108
2105 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2109 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2106
2110
2107 * IPython/Magic.py (magic_run): fix __file__ global missing from
2111 * IPython/Magic.py (magic_run): fix __file__ global missing from
2108 script's namespace when executed via %run. After a report by
2112 script's namespace when executed via %run. After a report by
2109 Vivian.
2113 Vivian.
2110
2114
2111 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2115 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2112 when using python 2.4. The parent constructor changed in 2.4, and
2116 when using python 2.4. The parent constructor changed in 2.4, and
2113 we need to track it directly (we can't call it, as it messes up
2117 we need to track it directly (we can't call it, as it messes up
2114 readline and tab-completion inside our pdb would stop working).
2118 readline and tab-completion inside our pdb would stop working).
2115 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2119 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2116
2120
2117 2006-01-16 Ville Vainio <vivainio@gmail.com>
2121 2006-01-16 Ville Vainio <vivainio@gmail.com>
2118
2122
2119 * Ipython/magic.py: Reverted back to old %edit functionality
2123 * Ipython/magic.py: Reverted back to old %edit functionality
2120 that returns file contents on exit.
2124 that returns file contents on exit.
2121
2125
2122 * IPython/path.py: Added Jason Orendorff's "path" module to
2126 * IPython/path.py: Added Jason Orendorff's "path" module to
2123 IPython tree, http://www.jorendorff.com/articles/python/path/.
2127 IPython tree, http://www.jorendorff.com/articles/python/path/.
2124 You can get path objects conveniently through %sc, and !!, e.g.:
2128 You can get path objects conveniently through %sc, and !!, e.g.:
2125 sc files=ls
2129 sc files=ls
2126 for p in files.paths: # or files.p
2130 for p in files.paths: # or files.p
2127 print p,p.mtime
2131 print p,p.mtime
2128
2132
2129 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2133 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2130 now work again without considering the exclusion regexp -
2134 now work again without considering the exclusion regexp -
2131 hence, things like ',foo my/path' turn to 'foo("my/path")'
2135 hence, things like ',foo my/path' turn to 'foo("my/path")'
2132 instead of syntax error.
2136 instead of syntax error.
2133
2137
2134
2138
2135 2006-01-14 Ville Vainio <vivainio@gmail.com>
2139 2006-01-14 Ville Vainio <vivainio@gmail.com>
2136
2140
2137 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2141 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2138 ipapi decorators for python 2.4 users, options() provides access to rc
2142 ipapi decorators for python 2.4 users, options() provides access to rc
2139 data.
2143 data.
2140
2144
2141 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2145 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2142 as path separators (even on Linux ;-). Space character after
2146 as path separators (even on Linux ;-). Space character after
2143 backslash (as yielded by tab completer) is still space;
2147 backslash (as yielded by tab completer) is still space;
2144 "%cd long\ name" works as expected.
2148 "%cd long\ name" works as expected.
2145
2149
2146 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2150 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2147 as "chain of command", with priority. API stays the same,
2151 as "chain of command", with priority. API stays the same,
2148 TryNext exception raised by a hook function signals that
2152 TryNext exception raised by a hook function signals that
2149 current hook failed and next hook should try handling it, as
2153 current hook failed and next hook should try handling it, as
2150 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2154 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2151 requested configurable display hook, which is now implemented.
2155 requested configurable display hook, which is now implemented.
2152
2156
2153 2006-01-13 Ville Vainio <vivainio@gmail.com>
2157 2006-01-13 Ville Vainio <vivainio@gmail.com>
2154
2158
2155 * IPython/platutils*.py: platform specific utility functions,
2159 * IPython/platutils*.py: platform specific utility functions,
2156 so far only set_term_title is implemented (change terminal
2160 so far only set_term_title is implemented (change terminal
2157 label in windowing systems). %cd now changes the title to
2161 label in windowing systems). %cd now changes the title to
2158 current dir.
2162 current dir.
2159
2163
2160 * IPython/Release.py: Added myself to "authors" list,
2164 * IPython/Release.py: Added myself to "authors" list,
2161 had to create new files.
2165 had to create new files.
2162
2166
2163 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2167 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2164 shell escape; not a known bug but had potential to be one in the
2168 shell escape; not a known bug but had potential to be one in the
2165 future.
2169 future.
2166
2170
2167 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2171 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2168 extension API for IPython! See the module for usage example. Fix
2172 extension API for IPython! See the module for usage example. Fix
2169 OInspect for docstring-less magic functions.
2173 OInspect for docstring-less magic functions.
2170
2174
2171
2175
2172 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2176 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2173
2177
2174 * IPython/iplib.py (raw_input): temporarily deactivate all
2178 * IPython/iplib.py (raw_input): temporarily deactivate all
2175 attempts at allowing pasting of code with autoindent on. It
2179 attempts at allowing pasting of code with autoindent on. It
2176 introduced bugs (reported by Prabhu) and I can't seem to find a
2180 introduced bugs (reported by Prabhu) and I can't seem to find a
2177 robust combination which works in all cases. Will have to revisit
2181 robust combination which works in all cases. Will have to revisit
2178 later.
2182 later.
2179
2183
2180 * IPython/genutils.py: remove isspace() function. We've dropped
2184 * IPython/genutils.py: remove isspace() function. We've dropped
2181 2.2 compatibility, so it's OK to use the string method.
2185 2.2 compatibility, so it's OK to use the string method.
2182
2186
2183 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2187 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2184
2188
2185 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2189 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2186 matching what NOT to autocall on, to include all python binary
2190 matching what NOT to autocall on, to include all python binary
2187 operators (including things like 'and', 'or', 'is' and 'in').
2191 operators (including things like 'and', 'or', 'is' and 'in').
2188 Prompted by a bug report on 'foo & bar', but I realized we had
2192 Prompted by a bug report on 'foo & bar', but I realized we had
2189 many more potential bug cases with other operators. The regexp is
2193 many more potential bug cases with other operators. The regexp is
2190 self.re_exclude_auto, it's fairly commented.
2194 self.re_exclude_auto, it's fairly commented.
2191
2195
2192 2006-01-12 Ville Vainio <vivainio@gmail.com>
2196 2006-01-12 Ville Vainio <vivainio@gmail.com>
2193
2197
2194 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2198 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2195 Prettified and hardened string/backslash quoting with ipsystem(),
2199 Prettified and hardened string/backslash quoting with ipsystem(),
2196 ipalias() and ipmagic(). Now even \ characters are passed to
2200 ipalias() and ipmagic(). Now even \ characters are passed to
2197 %magics, !shell escapes and aliases exactly as they are in the
2201 %magics, !shell escapes and aliases exactly as they are in the
2198 ipython command line. Should improve backslash experience,
2202 ipython command line. Should improve backslash experience,
2199 particularly in Windows (path delimiter for some commands that
2203 particularly in Windows (path delimiter for some commands that
2200 won't understand '/'), but Unix benefits as well (regexps). %cd
2204 won't understand '/'), but Unix benefits as well (regexps). %cd
2201 magic still doesn't support backslash path delimiters, though. Also
2205 magic still doesn't support backslash path delimiters, though. Also
2202 deleted all pretense of supporting multiline command strings in
2206 deleted all pretense of supporting multiline command strings in
2203 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2207 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2204
2208
2205 * doc/build_doc_instructions.txt added. Documentation on how to
2209 * doc/build_doc_instructions.txt added. Documentation on how to
2206 use doc/update_manual.py, added yesterday. Both files contributed
2210 use doc/update_manual.py, added yesterday. Both files contributed
2207 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2211 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2208 doc/*.sh for deprecation at a later date.
2212 doc/*.sh for deprecation at a later date.
2209
2213
2210 * /ipython.py Added ipython.py to root directory for
2214 * /ipython.py Added ipython.py to root directory for
2211 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2215 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2212 ipython.py) and development convenience (no need to keep doing
2216 ipython.py) and development convenience (no need to keep doing
2213 "setup.py install" between changes).
2217 "setup.py install" between changes).
2214
2218
2215 * Made ! and !! shell escapes work (again) in multiline expressions:
2219 * Made ! and !! shell escapes work (again) in multiline expressions:
2216 if 1:
2220 if 1:
2217 !ls
2221 !ls
2218 !!ls
2222 !!ls
2219
2223
2220 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2224 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2221
2225
2222 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2226 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2223 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2227 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2224 module in case-insensitive installation. Was causing crashes
2228 module in case-insensitive installation. Was causing crashes
2225 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2229 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2226
2230
2227 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2231 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2228 <marienz-AT-gentoo.org>, closes
2232 <marienz-AT-gentoo.org>, closes
2229 http://www.scipy.net/roundup/ipython/issue51.
2233 http://www.scipy.net/roundup/ipython/issue51.
2230
2234
2231 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2235 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2232
2236
2233 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2237 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2234 problem of excessive CPU usage under *nix and keyboard lag under
2238 problem of excessive CPU usage under *nix and keyboard lag under
2235 win32.
2239 win32.
2236
2240
2237 2006-01-10 *** Released version 0.7.0
2241 2006-01-10 *** Released version 0.7.0
2238
2242
2239 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2243 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2240
2244
2241 * IPython/Release.py (revision): tag version number to 0.7.0,
2245 * IPython/Release.py (revision): tag version number to 0.7.0,
2242 ready for release.
2246 ready for release.
2243
2247
2244 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2248 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2245 it informs the user of the name of the temp. file used. This can
2249 it informs the user of the name of the temp. file used. This can
2246 help if you decide later to reuse that same file, so you know
2250 help if you decide later to reuse that same file, so you know
2247 where to copy the info from.
2251 where to copy the info from.
2248
2252
2249 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2253 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2250
2254
2251 * setup_bdist_egg.py: little script to build an egg. Added
2255 * setup_bdist_egg.py: little script to build an egg. Added
2252 support in the release tools as well.
2256 support in the release tools as well.
2253
2257
2254 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2258 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2255
2259
2256 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2260 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2257 version selection (new -wxversion command line and ipythonrc
2261 version selection (new -wxversion command line and ipythonrc
2258 parameter). Patch contributed by Arnd Baecker
2262 parameter). Patch contributed by Arnd Baecker
2259 <arnd.baecker-AT-web.de>.
2263 <arnd.baecker-AT-web.de>.
2260
2264
2261 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2265 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2262 embedded instances, for variables defined at the interactive
2266 embedded instances, for variables defined at the interactive
2263 prompt of the embedded ipython. Reported by Arnd.
2267 prompt of the embedded ipython. Reported by Arnd.
2264
2268
2265 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2269 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2266 it can be used as a (stateful) toggle, or with a direct parameter.
2270 it can be used as a (stateful) toggle, or with a direct parameter.
2267
2271
2268 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2272 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2269 could be triggered in certain cases and cause the traceback
2273 could be triggered in certain cases and cause the traceback
2270 printer not to work.
2274 printer not to work.
2271
2275
2272 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2276 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2273
2277
2274 * IPython/iplib.py (_should_recompile): Small fix, closes
2278 * IPython/iplib.py (_should_recompile): Small fix, closes
2275 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2279 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2276
2280
2277 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2281 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2278
2282
2279 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2283 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2280 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2284 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2281 Moad for help with tracking it down.
2285 Moad for help with tracking it down.
2282
2286
2283 * IPython/iplib.py (handle_auto): fix autocall handling for
2287 * IPython/iplib.py (handle_auto): fix autocall handling for
2284 objects which support BOTH __getitem__ and __call__ (so that f [x]
2288 objects which support BOTH __getitem__ and __call__ (so that f [x]
2285 is left alone, instead of becoming f([x]) automatically).
2289 is left alone, instead of becoming f([x]) automatically).
2286
2290
2287 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2291 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2288 Ville's patch.
2292 Ville's patch.
2289
2293
2290 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2294 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2291
2295
2292 * IPython/iplib.py (handle_auto): changed autocall semantics to
2296 * IPython/iplib.py (handle_auto): changed autocall semantics to
2293 include 'smart' mode, where the autocall transformation is NOT
2297 include 'smart' mode, where the autocall transformation is NOT
2294 applied if there are no arguments on the line. This allows you to
2298 applied if there are no arguments on the line. This allows you to
2295 just type 'foo' if foo is a callable to see its internal form,
2299 just type 'foo' if foo is a callable to see its internal form,
2296 instead of having it called with no arguments (typically a
2300 instead of having it called with no arguments (typically a
2297 mistake). The old 'full' autocall still exists: for that, you
2301 mistake). The old 'full' autocall still exists: for that, you
2298 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2302 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2299
2303
2300 * IPython/completer.py (Completer.attr_matches): add
2304 * IPython/completer.py (Completer.attr_matches): add
2301 tab-completion support for Enthoughts' traits. After a report by
2305 tab-completion support for Enthoughts' traits. After a report by
2302 Arnd and a patch by Prabhu.
2306 Arnd and a patch by Prabhu.
2303
2307
2304 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2308 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2305
2309
2306 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2310 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2307 Schmolck's patch to fix inspect.getinnerframes().
2311 Schmolck's patch to fix inspect.getinnerframes().
2308
2312
2309 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2313 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2310 for embedded instances, regarding handling of namespaces and items
2314 for embedded instances, regarding handling of namespaces and items
2311 added to the __builtin__ one. Multiple embedded instances and
2315 added to the __builtin__ one. Multiple embedded instances and
2312 recursive embeddings should work better now (though I'm not sure
2316 recursive embeddings should work better now (though I'm not sure
2313 I've got all the corner cases fixed, that code is a bit of a brain
2317 I've got all the corner cases fixed, that code is a bit of a brain
2314 twister).
2318 twister).
2315
2319
2316 * IPython/Magic.py (magic_edit): added support to edit in-memory
2320 * IPython/Magic.py (magic_edit): added support to edit in-memory
2317 macros (automatically creates the necessary temp files). %edit
2321 macros (automatically creates the necessary temp files). %edit
2318 also doesn't return the file contents anymore, it's just noise.
2322 also doesn't return the file contents anymore, it's just noise.
2319
2323
2320 * IPython/completer.py (Completer.attr_matches): revert change to
2324 * IPython/completer.py (Completer.attr_matches): revert change to
2321 complete only on attributes listed in __all__. I realized it
2325 complete only on attributes listed in __all__. I realized it
2322 cripples the tab-completion system as a tool for exploring the
2326 cripples the tab-completion system as a tool for exploring the
2323 internals of unknown libraries (it renders any non-__all__
2327 internals of unknown libraries (it renders any non-__all__
2324 attribute off-limits). I got bit by this when trying to see
2328 attribute off-limits). I got bit by this when trying to see
2325 something inside the dis module.
2329 something inside the dis module.
2326
2330
2327 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2331 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2328
2332
2329 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2333 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2330 namespace for users and extension writers to hold data in. This
2334 namespace for users and extension writers to hold data in. This
2331 follows the discussion in
2335 follows the discussion in
2332 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2336 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2333
2337
2334 * IPython/completer.py (IPCompleter.complete): small patch to help
2338 * IPython/completer.py (IPCompleter.complete): small patch to help
2335 tab-completion under Emacs, after a suggestion by John Barnard
2339 tab-completion under Emacs, after a suggestion by John Barnard
2336 <barnarj-AT-ccf.org>.
2340 <barnarj-AT-ccf.org>.
2337
2341
2338 * IPython/Magic.py (Magic.extract_input_slices): added support for
2342 * IPython/Magic.py (Magic.extract_input_slices): added support for
2339 the slice notation in magics to use N-M to represent numbers N...M
2343 the slice notation in magics to use N-M to represent numbers N...M
2340 (closed endpoints). This is used by %macro and %save.
2344 (closed endpoints). This is used by %macro and %save.
2341
2345
2342 * IPython/completer.py (Completer.attr_matches): for modules which
2346 * IPython/completer.py (Completer.attr_matches): for modules which
2343 define __all__, complete only on those. After a patch by Jeffrey
2347 define __all__, complete only on those. After a patch by Jeffrey
2344 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2348 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2345 speed up this routine.
2349 speed up this routine.
2346
2350
2347 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2351 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2348 don't know if this is the end of it, but the behavior now is
2352 don't know if this is the end of it, but the behavior now is
2349 certainly much more correct. Note that coupled with macros,
2353 certainly much more correct. Note that coupled with macros,
2350 slightly surprising (at first) behavior may occur: a macro will in
2354 slightly surprising (at first) behavior may occur: a macro will in
2351 general expand to multiple lines of input, so upon exiting, the
2355 general expand to multiple lines of input, so upon exiting, the
2352 in/out counters will both be bumped by the corresponding amount
2356 in/out counters will both be bumped by the corresponding amount
2353 (as if the macro's contents had been typed interactively). Typing
2357 (as if the macro's contents had been typed interactively). Typing
2354 %hist will reveal the intermediate (silently processed) lines.
2358 %hist will reveal the intermediate (silently processed) lines.
2355
2359
2356 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2360 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2357 pickle to fail (%run was overwriting __main__ and not restoring
2361 pickle to fail (%run was overwriting __main__ and not restoring
2358 it, but pickle relies on __main__ to operate).
2362 it, but pickle relies on __main__ to operate).
2359
2363
2360 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2364 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2361 using properties, but forgot to make the main InteractiveShell
2365 using properties, but forgot to make the main InteractiveShell
2362 class a new-style class. Properties fail silently, and
2366 class a new-style class. Properties fail silently, and
2363 mysteriously, with old-style class (getters work, but
2367 mysteriously, with old-style class (getters work, but
2364 setters don't do anything).
2368 setters don't do anything).
2365
2369
2366 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2370 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2367
2371
2368 * IPython/Magic.py (magic_history): fix history reporting bug (I
2372 * IPython/Magic.py (magic_history): fix history reporting bug (I
2369 know some nasties are still there, I just can't seem to find a
2373 know some nasties are still there, I just can't seem to find a
2370 reproducible test case to track them down; the input history is
2374 reproducible test case to track them down; the input history is
2371 falling out of sync...)
2375 falling out of sync...)
2372
2376
2373 * IPython/iplib.py (handle_shell_escape): fix bug where both
2377 * IPython/iplib.py (handle_shell_escape): fix bug where both
2374 aliases and system accesses where broken for indented code (such
2378 aliases and system accesses where broken for indented code (such
2375 as loops).
2379 as loops).
2376
2380
2377 * IPython/genutils.py (shell): fix small but critical bug for
2381 * IPython/genutils.py (shell): fix small but critical bug for
2378 win32 system access.
2382 win32 system access.
2379
2383
2380 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2384 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2381
2385
2382 * IPython/iplib.py (showtraceback): remove use of the
2386 * IPython/iplib.py (showtraceback): remove use of the
2383 sys.last_{type/value/traceback} structures, which are non
2387 sys.last_{type/value/traceback} structures, which are non
2384 thread-safe.
2388 thread-safe.
2385 (_prefilter): change control flow to ensure that we NEVER
2389 (_prefilter): change control flow to ensure that we NEVER
2386 introspect objects when autocall is off. This will guarantee that
2390 introspect objects when autocall is off. This will guarantee that
2387 having an input line of the form 'x.y', where access to attribute
2391 having an input line of the form 'x.y', where access to attribute
2388 'y' has side effects, doesn't trigger the side effect TWICE. It
2392 'y' has side effects, doesn't trigger the side effect TWICE. It
2389 is important to note that, with autocall on, these side effects
2393 is important to note that, with autocall on, these side effects
2390 can still happen.
2394 can still happen.
2391 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2395 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2392 trio. IPython offers these three kinds of special calls which are
2396 trio. IPython offers these three kinds of special calls which are
2393 not python code, and it's a good thing to have their call method
2397 not python code, and it's a good thing to have their call method
2394 be accessible as pure python functions (not just special syntax at
2398 be accessible as pure python functions (not just special syntax at
2395 the command line). It gives us a better internal implementation
2399 the command line). It gives us a better internal implementation
2396 structure, as well as exposing these for user scripting more
2400 structure, as well as exposing these for user scripting more
2397 cleanly.
2401 cleanly.
2398
2402
2399 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2403 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2400 file. Now that they'll be more likely to be used with the
2404 file. Now that they'll be more likely to be used with the
2401 persistance system (%store), I want to make sure their module path
2405 persistance system (%store), I want to make sure their module path
2402 doesn't change in the future, so that we don't break things for
2406 doesn't change in the future, so that we don't break things for
2403 users' persisted data.
2407 users' persisted data.
2404
2408
2405 * IPython/iplib.py (autoindent_update): move indentation
2409 * IPython/iplib.py (autoindent_update): move indentation
2406 management into the _text_ processing loop, not the keyboard
2410 management into the _text_ processing loop, not the keyboard
2407 interactive one. This is necessary to correctly process non-typed
2411 interactive one. This is necessary to correctly process non-typed
2408 multiline input (such as macros).
2412 multiline input (such as macros).
2409
2413
2410 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2414 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2411 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2415 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2412 which was producing problems in the resulting manual.
2416 which was producing problems in the resulting manual.
2413 (magic_whos): improve reporting of instances (show their class,
2417 (magic_whos): improve reporting of instances (show their class,
2414 instead of simply printing 'instance' which isn't terribly
2418 instead of simply printing 'instance' which isn't terribly
2415 informative).
2419 informative).
2416
2420
2417 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2421 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2418 (minor mods) to support network shares under win32.
2422 (minor mods) to support network shares under win32.
2419
2423
2420 * IPython/winconsole.py (get_console_size): add new winconsole
2424 * IPython/winconsole.py (get_console_size): add new winconsole
2421 module and fixes to page_dumb() to improve its behavior under
2425 module and fixes to page_dumb() to improve its behavior under
2422 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2426 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2423
2427
2424 * IPython/Magic.py (Macro): simplified Macro class to just
2428 * IPython/Magic.py (Macro): simplified Macro class to just
2425 subclass list. We've had only 2.2 compatibility for a very long
2429 subclass list. We've had only 2.2 compatibility for a very long
2426 time, yet I was still avoiding subclassing the builtin types. No
2430 time, yet I was still avoiding subclassing the builtin types. No
2427 more (I'm also starting to use properties, though I won't shift to
2431 more (I'm also starting to use properties, though I won't shift to
2428 2.3-specific features quite yet).
2432 2.3-specific features quite yet).
2429 (magic_store): added Ville's patch for lightweight variable
2433 (magic_store): added Ville's patch for lightweight variable
2430 persistence, after a request on the user list by Matt Wilkie
2434 persistence, after a request on the user list by Matt Wilkie
2431 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2435 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2432 details.
2436 details.
2433
2437
2434 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2438 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2435 changed the default logfile name from 'ipython.log' to
2439 changed the default logfile name from 'ipython.log' to
2436 'ipython_log.py'. These logs are real python files, and now that
2440 'ipython_log.py'. These logs are real python files, and now that
2437 we have much better multiline support, people are more likely to
2441 we have much better multiline support, people are more likely to
2438 want to use them as such. Might as well name them correctly.
2442 want to use them as such. Might as well name them correctly.
2439
2443
2440 * IPython/Magic.py: substantial cleanup. While we can't stop
2444 * IPython/Magic.py: substantial cleanup. While we can't stop
2441 using magics as mixins, due to the existing customizations 'out
2445 using magics as mixins, due to the existing customizations 'out
2442 there' which rely on the mixin naming conventions, at least I
2446 there' which rely on the mixin naming conventions, at least I
2443 cleaned out all cross-class name usage. So once we are OK with
2447 cleaned out all cross-class name usage. So once we are OK with
2444 breaking compatibility, the two systems can be separated.
2448 breaking compatibility, the two systems can be separated.
2445
2449
2446 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2450 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2447 anymore, and the class is a fair bit less hideous as well. New
2451 anymore, and the class is a fair bit less hideous as well. New
2448 features were also introduced: timestamping of input, and logging
2452 features were also introduced: timestamping of input, and logging
2449 of output results. These are user-visible with the -t and -o
2453 of output results. These are user-visible with the -t and -o
2450 options to %logstart. Closes
2454 options to %logstart. Closes
2451 http://www.scipy.net/roundup/ipython/issue11 and a request by
2455 http://www.scipy.net/roundup/ipython/issue11 and a request by
2452 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2456 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2453
2457
2454 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2458 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2455
2459
2456 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2460 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2457 better handle backslashes in paths. See the thread 'More Windows
2461 better handle backslashes in paths. See the thread 'More Windows
2458 questions part 2 - \/ characters revisited' on the iypthon user
2462 questions part 2 - \/ characters revisited' on the iypthon user
2459 list:
2463 list:
2460 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2464 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2461
2465
2462 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2466 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2463
2467
2464 (InteractiveShell.__init__): change threaded shells to not use the
2468 (InteractiveShell.__init__): change threaded shells to not use the
2465 ipython crash handler. This was causing more problems than not,
2469 ipython crash handler. This was causing more problems than not,
2466 as exceptions in the main thread (GUI code, typically) would
2470 as exceptions in the main thread (GUI code, typically) would
2467 always show up as a 'crash', when they really weren't.
2471 always show up as a 'crash', when they really weren't.
2468
2472
2469 The colors and exception mode commands (%colors/%xmode) have been
2473 The colors and exception mode commands (%colors/%xmode) have been
2470 synchronized to also take this into account, so users can get
2474 synchronized to also take this into account, so users can get
2471 verbose exceptions for their threaded code as well. I also added
2475 verbose exceptions for their threaded code as well. I also added
2472 support for activating pdb inside this exception handler as well,
2476 support for activating pdb inside this exception handler as well,
2473 so now GUI authors can use IPython's enhanced pdb at runtime.
2477 so now GUI authors can use IPython's enhanced pdb at runtime.
2474
2478
2475 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2479 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2476 true by default, and add it to the shipped ipythonrc file. Since
2480 true by default, and add it to the shipped ipythonrc file. Since
2477 this asks the user before proceeding, I think it's OK to make it
2481 this asks the user before proceeding, I think it's OK to make it
2478 true by default.
2482 true by default.
2479
2483
2480 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2484 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2481 of the previous special-casing of input in the eval loop. I think
2485 of the previous special-casing of input in the eval loop. I think
2482 this is cleaner, as they really are commands and shouldn't have
2486 this is cleaner, as they really are commands and shouldn't have
2483 a special role in the middle of the core code.
2487 a special role in the middle of the core code.
2484
2488
2485 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2489 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2486
2490
2487 * IPython/iplib.py (edit_syntax_error): added support for
2491 * IPython/iplib.py (edit_syntax_error): added support for
2488 automatically reopening the editor if the file had a syntax error
2492 automatically reopening the editor if the file had a syntax error
2489 in it. Thanks to scottt who provided the patch at:
2493 in it. Thanks to scottt who provided the patch at:
2490 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2494 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2491 version committed).
2495 version committed).
2492
2496
2493 * IPython/iplib.py (handle_normal): add suport for multi-line
2497 * IPython/iplib.py (handle_normal): add suport for multi-line
2494 input with emtpy lines. This fixes
2498 input with emtpy lines. This fixes
2495 http://www.scipy.net/roundup/ipython/issue43 and a similar
2499 http://www.scipy.net/roundup/ipython/issue43 and a similar
2496 discussion on the user list.
2500 discussion on the user list.
2497
2501
2498 WARNING: a behavior change is necessarily introduced to support
2502 WARNING: a behavior change is necessarily introduced to support
2499 blank lines: now a single blank line with whitespace does NOT
2503 blank lines: now a single blank line with whitespace does NOT
2500 break the input loop, which means that when autoindent is on, by
2504 break the input loop, which means that when autoindent is on, by
2501 default hitting return on the next (indented) line does NOT exit.
2505 default hitting return on the next (indented) line does NOT exit.
2502
2506
2503 Instead, to exit a multiline input you can either have:
2507 Instead, to exit a multiline input you can either have:
2504
2508
2505 - TWO whitespace lines (just hit return again), or
2509 - TWO whitespace lines (just hit return again), or
2506 - a single whitespace line of a different length than provided
2510 - a single whitespace line of a different length than provided
2507 by the autoindent (add or remove a space).
2511 by the autoindent (add or remove a space).
2508
2512
2509 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2513 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2510 module to better organize all readline-related functionality.
2514 module to better organize all readline-related functionality.
2511 I've deleted FlexCompleter and put all completion clases here.
2515 I've deleted FlexCompleter and put all completion clases here.
2512
2516
2513 * IPython/iplib.py (raw_input): improve indentation management.
2517 * IPython/iplib.py (raw_input): improve indentation management.
2514 It is now possible to paste indented code with autoindent on, and
2518 It is now possible to paste indented code with autoindent on, and
2515 the code is interpreted correctly (though it still looks bad on
2519 the code is interpreted correctly (though it still looks bad on
2516 screen, due to the line-oriented nature of ipython).
2520 screen, due to the line-oriented nature of ipython).
2517 (MagicCompleter.complete): change behavior so that a TAB key on an
2521 (MagicCompleter.complete): change behavior so that a TAB key on an
2518 otherwise empty line actually inserts a tab, instead of completing
2522 otherwise empty line actually inserts a tab, instead of completing
2519 on the entire global namespace. This makes it easier to use the
2523 on the entire global namespace. This makes it easier to use the
2520 TAB key for indentation. After a request by Hans Meine
2524 TAB key for indentation. After a request by Hans Meine
2521 <hans_meine-AT-gmx.net>
2525 <hans_meine-AT-gmx.net>
2522 (_prefilter): add support so that typing plain 'exit' or 'quit'
2526 (_prefilter): add support so that typing plain 'exit' or 'quit'
2523 does a sensible thing. Originally I tried to deviate as little as
2527 does a sensible thing. Originally I tried to deviate as little as
2524 possible from the default python behavior, but even that one may
2528 possible from the default python behavior, but even that one may
2525 change in this direction (thread on python-dev to that effect).
2529 change in this direction (thread on python-dev to that effect).
2526 Regardless, ipython should do the right thing even if CPython's
2530 Regardless, ipython should do the right thing even if CPython's
2527 '>>>' prompt doesn't.
2531 '>>>' prompt doesn't.
2528 (InteractiveShell): removed subclassing code.InteractiveConsole
2532 (InteractiveShell): removed subclassing code.InteractiveConsole
2529 class. By now we'd overridden just about all of its methods: I've
2533 class. By now we'd overridden just about all of its methods: I've
2530 copied the remaining two over, and now ipython is a standalone
2534 copied the remaining two over, and now ipython is a standalone
2531 class. This will provide a clearer picture for the chainsaw
2535 class. This will provide a clearer picture for the chainsaw
2532 branch refactoring.
2536 branch refactoring.
2533
2537
2534 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2538 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2535
2539
2536 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2540 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2537 failures for objects which break when dir() is called on them.
2541 failures for objects which break when dir() is called on them.
2538
2542
2539 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2543 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2540 distinct local and global namespaces in the completer API. This
2544 distinct local and global namespaces in the completer API. This
2541 change allows us to properly handle completion with distinct
2545 change allows us to properly handle completion with distinct
2542 scopes, including in embedded instances (this had never really
2546 scopes, including in embedded instances (this had never really
2543 worked correctly).
2547 worked correctly).
2544
2548
2545 Note: this introduces a change in the constructor for
2549 Note: this introduces a change in the constructor for
2546 MagicCompleter, as a new global_namespace parameter is now the
2550 MagicCompleter, as a new global_namespace parameter is now the
2547 second argument (the others were bumped one position).
2551 second argument (the others were bumped one position).
2548
2552
2549 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2553 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2550
2554
2551 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2555 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2552 embedded instances (which can be done now thanks to Vivian's
2556 embedded instances (which can be done now thanks to Vivian's
2553 frame-handling fixes for pdb).
2557 frame-handling fixes for pdb).
2554 (InteractiveShell.__init__): Fix namespace handling problem in
2558 (InteractiveShell.__init__): Fix namespace handling problem in
2555 embedded instances. We were overwriting __main__ unconditionally,
2559 embedded instances. We were overwriting __main__ unconditionally,
2556 and this should only be done for 'full' (non-embedded) IPython;
2560 and this should only be done for 'full' (non-embedded) IPython;
2557 embedded instances must respect the caller's __main__. Thanks to
2561 embedded instances must respect the caller's __main__. Thanks to
2558 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2562 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2559
2563
2560 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2564 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2561
2565
2562 * setup.py: added download_url to setup(). This registers the
2566 * setup.py: added download_url to setup(). This registers the
2563 download address at PyPI, which is not only useful to humans
2567 download address at PyPI, which is not only useful to humans
2564 browsing the site, but is also picked up by setuptools (the Eggs
2568 browsing the site, but is also picked up by setuptools (the Eggs
2565 machinery). Thanks to Ville and R. Kern for the info/discussion
2569 machinery). Thanks to Ville and R. Kern for the info/discussion
2566 on this.
2570 on this.
2567
2571
2568 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2572 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2569
2573
2570 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2574 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2571 This brings a lot of nice functionality to the pdb mode, which now
2575 This brings a lot of nice functionality to the pdb mode, which now
2572 has tab-completion, syntax highlighting, and better stack handling
2576 has tab-completion, syntax highlighting, and better stack handling
2573 than before. Many thanks to Vivian De Smedt
2577 than before. Many thanks to Vivian De Smedt
2574 <vivian-AT-vdesmedt.com> for the original patches.
2578 <vivian-AT-vdesmedt.com> for the original patches.
2575
2579
2576 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2580 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2577
2581
2578 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2582 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2579 sequence to consistently accept the banner argument. The
2583 sequence to consistently accept the banner argument. The
2580 inconsistency was tripping SAGE, thanks to Gary Zablackis
2584 inconsistency was tripping SAGE, thanks to Gary Zablackis
2581 <gzabl-AT-yahoo.com> for the report.
2585 <gzabl-AT-yahoo.com> for the report.
2582
2586
2583 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2587 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2584
2588
2585 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2589 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2586 Fix bug where a naked 'alias' call in the ipythonrc file would
2590 Fix bug where a naked 'alias' call in the ipythonrc file would
2587 cause a crash. Bug reported by Jorgen Stenarson.
2591 cause a crash. Bug reported by Jorgen Stenarson.
2588
2592
2589 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2593 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2590
2594
2591 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2595 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2592 startup time.
2596 startup time.
2593
2597
2594 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2598 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2595 instances had introduced a bug with globals in normal code. Now
2599 instances had introduced a bug with globals in normal code. Now
2596 it's working in all cases.
2600 it's working in all cases.
2597
2601
2598 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2602 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2599 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2603 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2600 has been introduced to set the default case sensitivity of the
2604 has been introduced to set the default case sensitivity of the
2601 searches. Users can still select either mode at runtime on a
2605 searches. Users can still select either mode at runtime on a
2602 per-search basis.
2606 per-search basis.
2603
2607
2604 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2608 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2605
2609
2606 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2610 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2607 attributes in wildcard searches for subclasses. Modified version
2611 attributes in wildcard searches for subclasses. Modified version
2608 of a patch by Jorgen.
2612 of a patch by Jorgen.
2609
2613
2610 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2614 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2611
2615
2612 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2616 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2613 embedded instances. I added a user_global_ns attribute to the
2617 embedded instances. I added a user_global_ns attribute to the
2614 InteractiveShell class to handle this.
2618 InteractiveShell class to handle this.
2615
2619
2616 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2620 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2617
2621
2618 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2622 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2619 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2623 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2620 (reported under win32, but may happen also in other platforms).
2624 (reported under win32, but may happen also in other platforms).
2621 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2625 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2622
2626
2623 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2627 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2624
2628
2625 * IPython/Magic.py (magic_psearch): new support for wildcard
2629 * IPython/Magic.py (magic_psearch): new support for wildcard
2626 patterns. Now, typing ?a*b will list all names which begin with a
2630 patterns. Now, typing ?a*b will list all names which begin with a
2627 and end in b, for example. The %psearch magic has full
2631 and end in b, for example. The %psearch magic has full
2628 docstrings. Many thanks to JΓΆrgen Stenarson
2632 docstrings. Many thanks to JΓΆrgen Stenarson
2629 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2633 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2630 implementing this functionality.
2634 implementing this functionality.
2631
2635
2632 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2636 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2633
2637
2634 * Manual: fixed long-standing annoyance of double-dashes (as in
2638 * Manual: fixed long-standing annoyance of double-dashes (as in
2635 --prefix=~, for example) being stripped in the HTML version. This
2639 --prefix=~, for example) being stripped in the HTML version. This
2636 is a latex2html bug, but a workaround was provided. Many thanks
2640 is a latex2html bug, but a workaround was provided. Many thanks
2637 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2641 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2638 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2642 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2639 rolling. This seemingly small issue had tripped a number of users
2643 rolling. This seemingly small issue had tripped a number of users
2640 when first installing, so I'm glad to see it gone.
2644 when first installing, so I'm glad to see it gone.
2641
2645
2642 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2646 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2643
2647
2644 * IPython/Extensions/numeric_formats.py: fix missing import,
2648 * IPython/Extensions/numeric_formats.py: fix missing import,
2645 reported by Stephen Walton.
2649 reported by Stephen Walton.
2646
2650
2647 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2651 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2648
2652
2649 * IPython/demo.py: finish demo module, fully documented now.
2653 * IPython/demo.py: finish demo module, fully documented now.
2650
2654
2651 * IPython/genutils.py (file_read): simple little utility to read a
2655 * IPython/genutils.py (file_read): simple little utility to read a
2652 file and ensure it's closed afterwards.
2656 file and ensure it's closed afterwards.
2653
2657
2654 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2658 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2655
2659
2656 * IPython/demo.py (Demo.__init__): added support for individually
2660 * IPython/demo.py (Demo.__init__): added support for individually
2657 tagging blocks for automatic execution.
2661 tagging blocks for automatic execution.
2658
2662
2659 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2663 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2660 syntax-highlighted python sources, requested by John.
2664 syntax-highlighted python sources, requested by John.
2661
2665
2662 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2666 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2663
2667
2664 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2668 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2665 finishing.
2669 finishing.
2666
2670
2667 * IPython/genutils.py (shlex_split): moved from Magic to here,
2671 * IPython/genutils.py (shlex_split): moved from Magic to here,
2668 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2672 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2669
2673
2670 * IPython/demo.py (Demo.__init__): added support for silent
2674 * IPython/demo.py (Demo.__init__): added support for silent
2671 blocks, improved marks as regexps, docstrings written.
2675 blocks, improved marks as regexps, docstrings written.
2672 (Demo.__init__): better docstring, added support for sys.argv.
2676 (Demo.__init__): better docstring, added support for sys.argv.
2673
2677
2674 * IPython/genutils.py (marquee): little utility used by the demo
2678 * IPython/genutils.py (marquee): little utility used by the demo
2675 code, handy in general.
2679 code, handy in general.
2676
2680
2677 * IPython/demo.py (Demo.__init__): new class for interactive
2681 * IPython/demo.py (Demo.__init__): new class for interactive
2678 demos. Not documented yet, I just wrote it in a hurry for
2682 demos. Not documented yet, I just wrote it in a hurry for
2679 scipy'05. Will docstring later.
2683 scipy'05. Will docstring later.
2680
2684
2681 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2685 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2682
2686
2683 * IPython/Shell.py (sigint_handler): Drastic simplification which
2687 * IPython/Shell.py (sigint_handler): Drastic simplification which
2684 also seems to make Ctrl-C work correctly across threads! This is
2688 also seems to make Ctrl-C work correctly across threads! This is
2685 so simple, that I can't beleive I'd missed it before. Needs more
2689 so simple, that I can't beleive I'd missed it before. Needs more
2686 testing, though.
2690 testing, though.
2687 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2691 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2688 like this before...
2692 like this before...
2689
2693
2690 * IPython/genutils.py (get_home_dir): add protection against
2694 * IPython/genutils.py (get_home_dir): add protection against
2691 non-dirs in win32 registry.
2695 non-dirs in win32 registry.
2692
2696
2693 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2697 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2694 bug where dict was mutated while iterating (pysh crash).
2698 bug where dict was mutated while iterating (pysh crash).
2695
2699
2696 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2700 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2697
2701
2698 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2702 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2699 spurious newlines added by this routine. After a report by
2703 spurious newlines added by this routine. After a report by
2700 F. Mantegazza.
2704 F. Mantegazza.
2701
2705
2702 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2706 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2703
2707
2704 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2708 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2705 calls. These were a leftover from the GTK 1.x days, and can cause
2709 calls. These were a leftover from the GTK 1.x days, and can cause
2706 problems in certain cases (after a report by John Hunter).
2710 problems in certain cases (after a report by John Hunter).
2707
2711
2708 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2712 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2709 os.getcwd() fails at init time. Thanks to patch from David Remahl
2713 os.getcwd() fails at init time. Thanks to patch from David Remahl
2710 <chmod007-AT-mac.com>.
2714 <chmod007-AT-mac.com>.
2711 (InteractiveShell.__init__): prevent certain special magics from
2715 (InteractiveShell.__init__): prevent certain special magics from
2712 being shadowed by aliases. Closes
2716 being shadowed by aliases. Closes
2713 http://www.scipy.net/roundup/ipython/issue41.
2717 http://www.scipy.net/roundup/ipython/issue41.
2714
2718
2715 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2719 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2716
2720
2717 * IPython/iplib.py (InteractiveShell.complete): Added new
2721 * IPython/iplib.py (InteractiveShell.complete): Added new
2718 top-level completion method to expose the completion mechanism
2722 top-level completion method to expose the completion mechanism
2719 beyond readline-based environments.
2723 beyond readline-based environments.
2720
2724
2721 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2725 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2722
2726
2723 * tools/ipsvnc (svnversion): fix svnversion capture.
2727 * tools/ipsvnc (svnversion): fix svnversion capture.
2724
2728
2725 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2729 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2726 attribute to self, which was missing. Before, it was set by a
2730 attribute to self, which was missing. Before, it was set by a
2727 routine which in certain cases wasn't being called, so the
2731 routine which in certain cases wasn't being called, so the
2728 instance could end up missing the attribute. This caused a crash.
2732 instance could end up missing the attribute. This caused a crash.
2729 Closes http://www.scipy.net/roundup/ipython/issue40.
2733 Closes http://www.scipy.net/roundup/ipython/issue40.
2730
2734
2731 2005-08-16 Fernando Perez <fperez@colorado.edu>
2735 2005-08-16 Fernando Perez <fperez@colorado.edu>
2732
2736
2733 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2737 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2734 contains non-string attribute. Closes
2738 contains non-string attribute. Closes
2735 http://www.scipy.net/roundup/ipython/issue38.
2739 http://www.scipy.net/roundup/ipython/issue38.
2736
2740
2737 2005-08-14 Fernando Perez <fperez@colorado.edu>
2741 2005-08-14 Fernando Perez <fperez@colorado.edu>
2738
2742
2739 * tools/ipsvnc: Minor improvements, to add changeset info.
2743 * tools/ipsvnc: Minor improvements, to add changeset info.
2740
2744
2741 2005-08-12 Fernando Perez <fperez@colorado.edu>
2745 2005-08-12 Fernando Perez <fperez@colorado.edu>
2742
2746
2743 * IPython/iplib.py (runsource): remove self.code_to_run_src
2747 * IPython/iplib.py (runsource): remove self.code_to_run_src
2744 attribute. I realized this is nothing more than
2748 attribute. I realized this is nothing more than
2745 '\n'.join(self.buffer), and having the same data in two different
2749 '\n'.join(self.buffer), and having the same data in two different
2746 places is just asking for synchronization bugs. This may impact
2750 places is just asking for synchronization bugs. This may impact
2747 people who have custom exception handlers, so I need to warn
2751 people who have custom exception handlers, so I need to warn
2748 ipython-dev about it (F. Mantegazza may use them).
2752 ipython-dev about it (F. Mantegazza may use them).
2749
2753
2750 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2754 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2751
2755
2752 * IPython/genutils.py: fix 2.2 compatibility (generators)
2756 * IPython/genutils.py: fix 2.2 compatibility (generators)
2753
2757
2754 2005-07-18 Fernando Perez <fperez@colorado.edu>
2758 2005-07-18 Fernando Perez <fperez@colorado.edu>
2755
2759
2756 * IPython/genutils.py (get_home_dir): fix to help users with
2760 * IPython/genutils.py (get_home_dir): fix to help users with
2757 invalid $HOME under win32.
2761 invalid $HOME under win32.
2758
2762
2759 2005-07-17 Fernando Perez <fperez@colorado.edu>
2763 2005-07-17 Fernando Perez <fperez@colorado.edu>
2760
2764
2761 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2765 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2762 some old hacks and clean up a bit other routines; code should be
2766 some old hacks and clean up a bit other routines; code should be
2763 simpler and a bit faster.
2767 simpler and a bit faster.
2764
2768
2765 * IPython/iplib.py (interact): removed some last-resort attempts
2769 * IPython/iplib.py (interact): removed some last-resort attempts
2766 to survive broken stdout/stderr. That code was only making it
2770 to survive broken stdout/stderr. That code was only making it
2767 harder to abstract out the i/o (necessary for gui integration),
2771 harder to abstract out the i/o (necessary for gui integration),
2768 and the crashes it could prevent were extremely rare in practice
2772 and the crashes it could prevent were extremely rare in practice
2769 (besides being fully user-induced in a pretty violent manner).
2773 (besides being fully user-induced in a pretty violent manner).
2770
2774
2771 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2775 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2772 Nothing major yet, but the code is simpler to read; this should
2776 Nothing major yet, but the code is simpler to read; this should
2773 make it easier to do more serious modifications in the future.
2777 make it easier to do more serious modifications in the future.
2774
2778
2775 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2779 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2776 which broke in .15 (thanks to a report by Ville).
2780 which broke in .15 (thanks to a report by Ville).
2777
2781
2778 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2782 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2779 be quite correct, I know next to nothing about unicode). This
2783 be quite correct, I know next to nothing about unicode). This
2780 will allow unicode strings to be used in prompts, amongst other
2784 will allow unicode strings to be used in prompts, amongst other
2781 cases. It also will prevent ipython from crashing when unicode
2785 cases. It also will prevent ipython from crashing when unicode
2782 shows up unexpectedly in many places. If ascii encoding fails, we
2786 shows up unexpectedly in many places. If ascii encoding fails, we
2783 assume utf_8. Currently the encoding is not a user-visible
2787 assume utf_8. Currently the encoding is not a user-visible
2784 setting, though it could be made so if there is demand for it.
2788 setting, though it could be made so if there is demand for it.
2785
2789
2786 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2790 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2787
2791
2788 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2792 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2789
2793
2790 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2794 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2791
2795
2792 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2796 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2793 code can work transparently for 2.2/2.3.
2797 code can work transparently for 2.2/2.3.
2794
2798
2795 2005-07-16 Fernando Perez <fperez@colorado.edu>
2799 2005-07-16 Fernando Perez <fperez@colorado.edu>
2796
2800
2797 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2801 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2798 out of the color scheme table used for coloring exception
2802 out of the color scheme table used for coloring exception
2799 tracebacks. This allows user code to add new schemes at runtime.
2803 tracebacks. This allows user code to add new schemes at runtime.
2800 This is a minimally modified version of the patch at
2804 This is a minimally modified version of the patch at
2801 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2805 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2802 for the contribution.
2806 for the contribution.
2803
2807
2804 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2808 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2805 slightly modified version of the patch in
2809 slightly modified version of the patch in
2806 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2810 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2807 to remove the previous try/except solution (which was costlier).
2811 to remove the previous try/except solution (which was costlier).
2808 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2812 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2809
2813
2810 2005-06-08 Fernando Perez <fperez@colorado.edu>
2814 2005-06-08 Fernando Perez <fperez@colorado.edu>
2811
2815
2812 * IPython/iplib.py (write/write_err): Add methods to abstract all
2816 * IPython/iplib.py (write/write_err): Add methods to abstract all
2813 I/O a bit more.
2817 I/O a bit more.
2814
2818
2815 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2819 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2816 warning, reported by Aric Hagberg, fix by JD Hunter.
2820 warning, reported by Aric Hagberg, fix by JD Hunter.
2817
2821
2818 2005-06-02 *** Released version 0.6.15
2822 2005-06-02 *** Released version 0.6.15
2819
2823
2820 2005-06-01 Fernando Perez <fperez@colorado.edu>
2824 2005-06-01 Fernando Perez <fperez@colorado.edu>
2821
2825
2822 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2826 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2823 tab-completion of filenames within open-quoted strings. Note that
2827 tab-completion of filenames within open-quoted strings. Note that
2824 this requires that in ~/.ipython/ipythonrc, users change the
2828 this requires that in ~/.ipython/ipythonrc, users change the
2825 readline delimiters configuration to read:
2829 readline delimiters configuration to read:
2826
2830
2827 readline_remove_delims -/~
2831 readline_remove_delims -/~
2828
2832
2829
2833
2830 2005-05-31 *** Released version 0.6.14
2834 2005-05-31 *** Released version 0.6.14
2831
2835
2832 2005-05-29 Fernando Perez <fperez@colorado.edu>
2836 2005-05-29 Fernando Perez <fperez@colorado.edu>
2833
2837
2834 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2838 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2835 with files not on the filesystem. Reported by Eliyahu Sandler
2839 with files not on the filesystem. Reported by Eliyahu Sandler
2836 <eli@gondolin.net>
2840 <eli@gondolin.net>
2837
2841
2838 2005-05-22 Fernando Perez <fperez@colorado.edu>
2842 2005-05-22 Fernando Perez <fperez@colorado.edu>
2839
2843
2840 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2844 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2841 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2845 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2842
2846
2843 2005-05-19 Fernando Perez <fperez@colorado.edu>
2847 2005-05-19 Fernando Perez <fperez@colorado.edu>
2844
2848
2845 * IPython/iplib.py (safe_execfile): close a file which could be
2849 * IPython/iplib.py (safe_execfile): close a file which could be
2846 left open (causing problems in win32, which locks open files).
2850 left open (causing problems in win32, which locks open files).
2847 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2851 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2848
2852
2849 2005-05-18 Fernando Perez <fperez@colorado.edu>
2853 2005-05-18 Fernando Perez <fperez@colorado.edu>
2850
2854
2851 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2855 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2852 keyword arguments correctly to safe_execfile().
2856 keyword arguments correctly to safe_execfile().
2853
2857
2854 2005-05-13 Fernando Perez <fperez@colorado.edu>
2858 2005-05-13 Fernando Perez <fperez@colorado.edu>
2855
2859
2856 * ipython.1: Added info about Qt to manpage, and threads warning
2860 * ipython.1: Added info about Qt to manpage, and threads warning
2857 to usage page (invoked with --help).
2861 to usage page (invoked with --help).
2858
2862
2859 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2863 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2860 new matcher (it goes at the end of the priority list) to do
2864 new matcher (it goes at the end of the priority list) to do
2861 tab-completion on named function arguments. Submitted by George
2865 tab-completion on named function arguments. Submitted by George
2862 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2866 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2863 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2867 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2864 for more details.
2868 for more details.
2865
2869
2866 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2870 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2867 SystemExit exceptions in the script being run. Thanks to a report
2871 SystemExit exceptions in the script being run. Thanks to a report
2868 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2872 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2869 producing very annoying behavior when running unit tests.
2873 producing very annoying behavior when running unit tests.
2870
2874
2871 2005-05-12 Fernando Perez <fperez@colorado.edu>
2875 2005-05-12 Fernando Perez <fperez@colorado.edu>
2872
2876
2873 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2877 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2874 which I'd broken (again) due to a changed regexp. In the process,
2878 which I'd broken (again) due to a changed regexp. In the process,
2875 added ';' as an escape to auto-quote the whole line without
2879 added ';' as an escape to auto-quote the whole line without
2876 splitting its arguments. Thanks to a report by Jerry McRae
2880 splitting its arguments. Thanks to a report by Jerry McRae
2877 <qrs0xyc02-AT-sneakemail.com>.
2881 <qrs0xyc02-AT-sneakemail.com>.
2878
2882
2879 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2883 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2880 possible crashes caused by a TokenError. Reported by Ed Schofield
2884 possible crashes caused by a TokenError. Reported by Ed Schofield
2881 <schofield-AT-ftw.at>.
2885 <schofield-AT-ftw.at>.
2882
2886
2883 2005-05-06 Fernando Perez <fperez@colorado.edu>
2887 2005-05-06 Fernando Perez <fperez@colorado.edu>
2884
2888
2885 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2889 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2886
2890
2887 2005-04-29 Fernando Perez <fperez@colorado.edu>
2891 2005-04-29 Fernando Perez <fperez@colorado.edu>
2888
2892
2889 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2893 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2890 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2894 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2891 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2895 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2892 which provides support for Qt interactive usage (similar to the
2896 which provides support for Qt interactive usage (similar to the
2893 existing one for WX and GTK). This had been often requested.
2897 existing one for WX and GTK). This had been often requested.
2894
2898
2895 2005-04-14 *** Released version 0.6.13
2899 2005-04-14 *** Released version 0.6.13
2896
2900
2897 2005-04-08 Fernando Perez <fperez@colorado.edu>
2901 2005-04-08 Fernando Perez <fperez@colorado.edu>
2898
2902
2899 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2903 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2900 from _ofind, which gets called on almost every input line. Now,
2904 from _ofind, which gets called on almost every input line. Now,
2901 we only try to get docstrings if they are actually going to be
2905 we only try to get docstrings if they are actually going to be
2902 used (the overhead of fetching unnecessary docstrings can be
2906 used (the overhead of fetching unnecessary docstrings can be
2903 noticeable for certain objects, such as Pyro proxies).
2907 noticeable for certain objects, such as Pyro proxies).
2904
2908
2905 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2909 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2906 for completers. For some reason I had been passing them the state
2910 for completers. For some reason I had been passing them the state
2907 variable, which completers never actually need, and was in
2911 variable, which completers never actually need, and was in
2908 conflict with the rlcompleter API. Custom completers ONLY need to
2912 conflict with the rlcompleter API. Custom completers ONLY need to
2909 take the text parameter.
2913 take the text parameter.
2910
2914
2911 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2915 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2912 work correctly in pysh. I've also moved all the logic which used
2916 work correctly in pysh. I've also moved all the logic which used
2913 to be in pysh.py here, which will prevent problems with future
2917 to be in pysh.py here, which will prevent problems with future
2914 upgrades. However, this time I must warn users to update their
2918 upgrades. However, this time I must warn users to update their
2915 pysh profile to include the line
2919 pysh profile to include the line
2916
2920
2917 import_all IPython.Extensions.InterpreterExec
2921 import_all IPython.Extensions.InterpreterExec
2918
2922
2919 because otherwise things won't work for them. They MUST also
2923 because otherwise things won't work for them. They MUST also
2920 delete pysh.py and the line
2924 delete pysh.py and the line
2921
2925
2922 execfile pysh.py
2926 execfile pysh.py
2923
2927
2924 from their ipythonrc-pysh.
2928 from their ipythonrc-pysh.
2925
2929
2926 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2930 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2927 robust in the face of objects whose dir() returns non-strings
2931 robust in the face of objects whose dir() returns non-strings
2928 (which it shouldn't, but some broken libs like ITK do). Thanks to
2932 (which it shouldn't, but some broken libs like ITK do). Thanks to
2929 a patch by John Hunter (implemented differently, though). Also
2933 a patch by John Hunter (implemented differently, though). Also
2930 minor improvements by using .extend instead of + on lists.
2934 minor improvements by using .extend instead of + on lists.
2931
2935
2932 * pysh.py:
2936 * pysh.py:
2933
2937
2934 2005-04-06 Fernando Perez <fperez@colorado.edu>
2938 2005-04-06 Fernando Perez <fperez@colorado.edu>
2935
2939
2936 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2940 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2937 by default, so that all users benefit from it. Those who don't
2941 by default, so that all users benefit from it. Those who don't
2938 want it can still turn it off.
2942 want it can still turn it off.
2939
2943
2940 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2944 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2941 config file, I'd forgotten about this, so users were getting it
2945 config file, I'd forgotten about this, so users were getting it
2942 off by default.
2946 off by default.
2943
2947
2944 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2948 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2945 consistency. Now magics can be called in multiline statements,
2949 consistency. Now magics can be called in multiline statements,
2946 and python variables can be expanded in magic calls via $var.
2950 and python variables can be expanded in magic calls via $var.
2947 This makes the magic system behave just like aliases or !system
2951 This makes the magic system behave just like aliases or !system
2948 calls.
2952 calls.
2949
2953
2950 2005-03-28 Fernando Perez <fperez@colorado.edu>
2954 2005-03-28 Fernando Perez <fperez@colorado.edu>
2951
2955
2952 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2956 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2953 expensive string additions for building command. Add support for
2957 expensive string additions for building command. Add support for
2954 trailing ';' when autocall is used.
2958 trailing ';' when autocall is used.
2955
2959
2956 2005-03-26 Fernando Perez <fperez@colorado.edu>
2960 2005-03-26 Fernando Perez <fperez@colorado.edu>
2957
2961
2958 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2962 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2959 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2963 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2960 ipython.el robust against prompts with any number of spaces
2964 ipython.el robust against prompts with any number of spaces
2961 (including 0) after the ':' character.
2965 (including 0) after the ':' character.
2962
2966
2963 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2967 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2964 continuation prompt, which misled users to think the line was
2968 continuation prompt, which misled users to think the line was
2965 already indented. Closes debian Bug#300847, reported to me by
2969 already indented. Closes debian Bug#300847, reported to me by
2966 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2970 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2967
2971
2968 2005-03-23 Fernando Perez <fperez@colorado.edu>
2972 2005-03-23 Fernando Perez <fperez@colorado.edu>
2969
2973
2970 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2974 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2971 properly aligned if they have embedded newlines.
2975 properly aligned if they have embedded newlines.
2972
2976
2973 * IPython/iplib.py (runlines): Add a public method to expose
2977 * IPython/iplib.py (runlines): Add a public method to expose
2974 IPython's code execution machinery, so that users can run strings
2978 IPython's code execution machinery, so that users can run strings
2975 as if they had been typed at the prompt interactively.
2979 as if they had been typed at the prompt interactively.
2976 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2980 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2977 methods which can call the system shell, but with python variable
2981 methods which can call the system shell, but with python variable
2978 expansion. The three such methods are: __IPYTHON__.system,
2982 expansion. The three such methods are: __IPYTHON__.system,
2979 .getoutput and .getoutputerror. These need to be documented in a
2983 .getoutput and .getoutputerror. These need to be documented in a
2980 'public API' section (to be written) of the manual.
2984 'public API' section (to be written) of the manual.
2981
2985
2982 2005-03-20 Fernando Perez <fperez@colorado.edu>
2986 2005-03-20 Fernando Perez <fperez@colorado.edu>
2983
2987
2984 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2988 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2985 for custom exception handling. This is quite powerful, and it
2989 for custom exception handling. This is quite powerful, and it
2986 allows for user-installable exception handlers which can trap
2990 allows for user-installable exception handlers which can trap
2987 custom exceptions at runtime and treat them separately from
2991 custom exceptions at runtime and treat them separately from
2988 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
2992 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
2989 Mantegazza <mantegazza-AT-ill.fr>.
2993 Mantegazza <mantegazza-AT-ill.fr>.
2990 (InteractiveShell.set_custom_completer): public API function to
2994 (InteractiveShell.set_custom_completer): public API function to
2991 add new completers at runtime.
2995 add new completers at runtime.
2992
2996
2993 2005-03-19 Fernando Perez <fperez@colorado.edu>
2997 2005-03-19 Fernando Perez <fperez@colorado.edu>
2994
2998
2995 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2999 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2996 allow objects which provide their docstrings via non-standard
3000 allow objects which provide their docstrings via non-standard
2997 mechanisms (like Pyro proxies) to still be inspected by ipython's
3001 mechanisms (like Pyro proxies) to still be inspected by ipython's
2998 ? system.
3002 ? system.
2999
3003
3000 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3004 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3001 automatic capture system. I tried quite hard to make it work
3005 automatic capture system. I tried quite hard to make it work
3002 reliably, and simply failed. I tried many combinations with the
3006 reliably, and simply failed. I tried many combinations with the
3003 subprocess module, but eventually nothing worked in all needed
3007 subprocess module, but eventually nothing worked in all needed
3004 cases (not blocking stdin for the child, duplicating stdout
3008 cases (not blocking stdin for the child, duplicating stdout
3005 without blocking, etc). The new %sc/%sx still do capture to these
3009 without blocking, etc). The new %sc/%sx still do capture to these
3006 magical list/string objects which make shell use much more
3010 magical list/string objects which make shell use much more
3007 conveninent, so not all is lost.
3011 conveninent, so not all is lost.
3008
3012
3009 XXX - FIX MANUAL for the change above!
3013 XXX - FIX MANUAL for the change above!
3010
3014
3011 (runsource): I copied code.py's runsource() into ipython to modify
3015 (runsource): I copied code.py's runsource() into ipython to modify
3012 it a bit. Now the code object and source to be executed are
3016 it a bit. Now the code object and source to be executed are
3013 stored in ipython. This makes this info accessible to third-party
3017 stored in ipython. This makes this info accessible to third-party
3014 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3018 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3015 Mantegazza <mantegazza-AT-ill.fr>.
3019 Mantegazza <mantegazza-AT-ill.fr>.
3016
3020
3017 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3021 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3018 history-search via readline (like C-p/C-n). I'd wanted this for a
3022 history-search via readline (like C-p/C-n). I'd wanted this for a
3019 long time, but only recently found out how to do it. For users
3023 long time, but only recently found out how to do it. For users
3020 who already have their ipythonrc files made and want this, just
3024 who already have their ipythonrc files made and want this, just
3021 add:
3025 add:
3022
3026
3023 readline_parse_and_bind "\e[A": history-search-backward
3027 readline_parse_and_bind "\e[A": history-search-backward
3024 readline_parse_and_bind "\e[B": history-search-forward
3028 readline_parse_and_bind "\e[B": history-search-forward
3025
3029
3026 2005-03-18 Fernando Perez <fperez@colorado.edu>
3030 2005-03-18 Fernando Perez <fperez@colorado.edu>
3027
3031
3028 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3032 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3029 LSString and SList classes which allow transparent conversions
3033 LSString and SList classes which allow transparent conversions
3030 between list mode and whitespace-separated string.
3034 between list mode and whitespace-separated string.
3031 (magic_r): Fix recursion problem in %r.
3035 (magic_r): Fix recursion problem in %r.
3032
3036
3033 * IPython/genutils.py (LSString): New class to be used for
3037 * IPython/genutils.py (LSString): New class to be used for
3034 automatic storage of the results of all alias/system calls in _o
3038 automatic storage of the results of all alias/system calls in _o
3035 and _e (stdout/err). These provide a .l/.list attribute which
3039 and _e (stdout/err). These provide a .l/.list attribute which
3036 does automatic splitting on newlines. This means that for most
3040 does automatic splitting on newlines. This means that for most
3037 uses, you'll never need to do capturing of output with %sc/%sx
3041 uses, you'll never need to do capturing of output with %sc/%sx
3038 anymore, since ipython keeps this always done for you. Note that
3042 anymore, since ipython keeps this always done for you. Note that
3039 only the LAST results are stored, the _o/e variables are
3043 only the LAST results are stored, the _o/e variables are
3040 overwritten on each call. If you need to save their contents
3044 overwritten on each call. If you need to save their contents
3041 further, simply bind them to any other name.
3045 further, simply bind them to any other name.
3042
3046
3043 2005-03-17 Fernando Perez <fperez@colorado.edu>
3047 2005-03-17 Fernando Perez <fperez@colorado.edu>
3044
3048
3045 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3049 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3046 prompt namespace handling.
3050 prompt namespace handling.
3047
3051
3048 2005-03-16 Fernando Perez <fperez@colorado.edu>
3052 2005-03-16 Fernando Perez <fperez@colorado.edu>
3049
3053
3050 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3054 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3051 classic prompts to be '>>> ' (final space was missing, and it
3055 classic prompts to be '>>> ' (final space was missing, and it
3052 trips the emacs python mode).
3056 trips the emacs python mode).
3053 (BasePrompt.__str__): Added safe support for dynamic prompt
3057 (BasePrompt.__str__): Added safe support for dynamic prompt
3054 strings. Now you can set your prompt string to be '$x', and the
3058 strings. Now you can set your prompt string to be '$x', and the
3055 value of x will be printed from your interactive namespace. The
3059 value of x will be printed from your interactive namespace. The
3056 interpolation syntax includes the full Itpl support, so
3060 interpolation syntax includes the full Itpl support, so
3057 ${foo()+x+bar()} is a valid prompt string now, and the function
3061 ${foo()+x+bar()} is a valid prompt string now, and the function
3058 calls will be made at runtime.
3062 calls will be made at runtime.
3059
3063
3060 2005-03-15 Fernando Perez <fperez@colorado.edu>
3064 2005-03-15 Fernando Perez <fperez@colorado.edu>
3061
3065
3062 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3066 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3063 avoid name clashes in pylab. %hist still works, it just forwards
3067 avoid name clashes in pylab. %hist still works, it just forwards
3064 the call to %history.
3068 the call to %history.
3065
3069
3066 2005-03-02 *** Released version 0.6.12
3070 2005-03-02 *** Released version 0.6.12
3067
3071
3068 2005-03-02 Fernando Perez <fperez@colorado.edu>
3072 2005-03-02 Fernando Perez <fperez@colorado.edu>
3069
3073
3070 * IPython/iplib.py (handle_magic): log magic calls properly as
3074 * IPython/iplib.py (handle_magic): log magic calls properly as
3071 ipmagic() function calls.
3075 ipmagic() function calls.
3072
3076
3073 * IPython/Magic.py (magic_time): Improved %time to support
3077 * IPython/Magic.py (magic_time): Improved %time to support
3074 statements and provide wall-clock as well as CPU time.
3078 statements and provide wall-clock as well as CPU time.
3075
3079
3076 2005-02-27 Fernando Perez <fperez@colorado.edu>
3080 2005-02-27 Fernando Perez <fperez@colorado.edu>
3077
3081
3078 * IPython/hooks.py: New hooks module, to expose user-modifiable
3082 * IPython/hooks.py: New hooks module, to expose user-modifiable
3079 IPython functionality in a clean manner. For now only the editor
3083 IPython functionality in a clean manner. For now only the editor
3080 hook is actually written, and other thigns which I intend to turn
3084 hook is actually written, and other thigns which I intend to turn
3081 into proper hooks aren't yet there. The display and prefilter
3085 into proper hooks aren't yet there. The display and prefilter
3082 stuff, for example, should be hooks. But at least now the
3086 stuff, for example, should be hooks. But at least now the
3083 framework is in place, and the rest can be moved here with more
3087 framework is in place, and the rest can be moved here with more
3084 time later. IPython had had a .hooks variable for a long time for
3088 time later. IPython had had a .hooks variable for a long time for
3085 this purpose, but I'd never actually used it for anything.
3089 this purpose, but I'd never actually used it for anything.
3086
3090
3087 2005-02-26 Fernando Perez <fperez@colorado.edu>
3091 2005-02-26 Fernando Perez <fperez@colorado.edu>
3088
3092
3089 * IPython/ipmaker.py (make_IPython): make the default ipython
3093 * IPython/ipmaker.py (make_IPython): make the default ipython
3090 directory be called _ipython under win32, to follow more the
3094 directory be called _ipython under win32, to follow more the
3091 naming peculiarities of that platform (where buggy software like
3095 naming peculiarities of that platform (where buggy software like
3092 Visual Sourcesafe breaks with .named directories). Reported by
3096 Visual Sourcesafe breaks with .named directories). Reported by
3093 Ville Vainio.
3097 Ville Vainio.
3094
3098
3095 2005-02-23 Fernando Perez <fperez@colorado.edu>
3099 2005-02-23 Fernando Perez <fperez@colorado.edu>
3096
3100
3097 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3101 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3098 auto_aliases for win32 which were causing problems. Users can
3102 auto_aliases for win32 which were causing problems. Users can
3099 define the ones they personally like.
3103 define the ones they personally like.
3100
3104
3101 2005-02-21 Fernando Perez <fperez@colorado.edu>
3105 2005-02-21 Fernando Perez <fperez@colorado.edu>
3102
3106
3103 * IPython/Magic.py (magic_time): new magic to time execution of
3107 * IPython/Magic.py (magic_time): new magic to time execution of
3104 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3108 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3105
3109
3106 2005-02-19 Fernando Perez <fperez@colorado.edu>
3110 2005-02-19 Fernando Perez <fperez@colorado.edu>
3107
3111
3108 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3112 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3109 into keys (for prompts, for example).
3113 into keys (for prompts, for example).
3110
3114
3111 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3115 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3112 prompts in case users want them. This introduces a small behavior
3116 prompts in case users want them. This introduces a small behavior
3113 change: ipython does not automatically add a space to all prompts
3117 change: ipython does not automatically add a space to all prompts
3114 anymore. To get the old prompts with a space, users should add it
3118 anymore. To get the old prompts with a space, users should add it
3115 manually to their ipythonrc file, so for example prompt_in1 should
3119 manually to their ipythonrc file, so for example prompt_in1 should
3116 now read 'In [\#]: ' instead of 'In [\#]:'.
3120 now read 'In [\#]: ' instead of 'In [\#]:'.
3117 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3121 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3118 file) to control left-padding of secondary prompts.
3122 file) to control left-padding of secondary prompts.
3119
3123
3120 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3124 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3121 the profiler can't be imported. Fix for Debian, which removed
3125 the profiler can't be imported. Fix for Debian, which removed
3122 profile.py because of License issues. I applied a slightly
3126 profile.py because of License issues. I applied a slightly
3123 modified version of the original Debian patch at
3127 modified version of the original Debian patch at
3124 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3128 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3125
3129
3126 2005-02-17 Fernando Perez <fperez@colorado.edu>
3130 2005-02-17 Fernando Perez <fperez@colorado.edu>
3127
3131
3128 * IPython/genutils.py (native_line_ends): Fix bug which would
3132 * IPython/genutils.py (native_line_ends): Fix bug which would
3129 cause improper line-ends under win32 b/c I was not opening files
3133 cause improper line-ends under win32 b/c I was not opening files
3130 in binary mode. Bug report and fix thanks to Ville.
3134 in binary mode. Bug report and fix thanks to Ville.
3131
3135
3132 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3136 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3133 trying to catch spurious foo[1] autocalls. My fix actually broke
3137 trying to catch spurious foo[1] autocalls. My fix actually broke
3134 ',/' autoquote/call with explicit escape (bad regexp).
3138 ',/' autoquote/call with explicit escape (bad regexp).
3135
3139
3136 2005-02-15 *** Released version 0.6.11
3140 2005-02-15 *** Released version 0.6.11
3137
3141
3138 2005-02-14 Fernando Perez <fperez@colorado.edu>
3142 2005-02-14 Fernando Perez <fperez@colorado.edu>
3139
3143
3140 * IPython/background_jobs.py: New background job management
3144 * IPython/background_jobs.py: New background job management
3141 subsystem. This is implemented via a new set of classes, and
3145 subsystem. This is implemented via a new set of classes, and
3142 IPython now provides a builtin 'jobs' object for background job
3146 IPython now provides a builtin 'jobs' object for background job
3143 execution. A convenience %bg magic serves as a lightweight
3147 execution. A convenience %bg magic serves as a lightweight
3144 frontend for starting the more common type of calls. This was
3148 frontend for starting the more common type of calls. This was
3145 inspired by discussions with B. Granger and the BackgroundCommand
3149 inspired by discussions with B. Granger and the BackgroundCommand
3146 class described in the book Python Scripting for Computational
3150 class described in the book Python Scripting for Computational
3147 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3151 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3148 (although ultimately no code from this text was used, as IPython's
3152 (although ultimately no code from this text was used, as IPython's
3149 system is a separate implementation).
3153 system is a separate implementation).
3150
3154
3151 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3155 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3152 to control the completion of single/double underscore names
3156 to control the completion of single/double underscore names
3153 separately. As documented in the example ipytonrc file, the
3157 separately. As documented in the example ipytonrc file, the
3154 readline_omit__names variable can now be set to 2, to omit even
3158 readline_omit__names variable can now be set to 2, to omit even
3155 single underscore names. Thanks to a patch by Brian Wong
3159 single underscore names. Thanks to a patch by Brian Wong
3156 <BrianWong-AT-AirgoNetworks.Com>.
3160 <BrianWong-AT-AirgoNetworks.Com>.
3157 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3161 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3158 be autocalled as foo([1]) if foo were callable. A problem for
3162 be autocalled as foo([1]) if foo were callable. A problem for
3159 things which are both callable and implement __getitem__.
3163 things which are both callable and implement __getitem__.
3160 (init_readline): Fix autoindentation for win32. Thanks to a patch
3164 (init_readline): Fix autoindentation for win32. Thanks to a patch
3161 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3165 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3162
3166
3163 2005-02-12 Fernando Perez <fperez@colorado.edu>
3167 2005-02-12 Fernando Perez <fperez@colorado.edu>
3164
3168
3165 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3169 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3166 which I had written long ago to sort out user error messages which
3170 which I had written long ago to sort out user error messages which
3167 may occur during startup. This seemed like a good idea initially,
3171 may occur during startup. This seemed like a good idea initially,
3168 but it has proven a disaster in retrospect. I don't want to
3172 but it has proven a disaster in retrospect. I don't want to
3169 change much code for now, so my fix is to set the internal 'debug'
3173 change much code for now, so my fix is to set the internal 'debug'
3170 flag to true everywhere, whose only job was precisely to control
3174 flag to true everywhere, whose only job was precisely to control
3171 this subsystem. This closes issue 28 (as well as avoiding all
3175 this subsystem. This closes issue 28 (as well as avoiding all
3172 sorts of strange hangups which occur from time to time).
3176 sorts of strange hangups which occur from time to time).
3173
3177
3174 2005-02-07 Fernando Perez <fperez@colorado.edu>
3178 2005-02-07 Fernando Perez <fperez@colorado.edu>
3175
3179
3176 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3180 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3177 previous call produced a syntax error.
3181 previous call produced a syntax error.
3178
3182
3179 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3183 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3180 classes without constructor.
3184 classes without constructor.
3181
3185
3182 2005-02-06 Fernando Perez <fperez@colorado.edu>
3186 2005-02-06 Fernando Perez <fperez@colorado.edu>
3183
3187
3184 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3188 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3185 completions with the results of each matcher, so we return results
3189 completions with the results of each matcher, so we return results
3186 to the user from all namespaces. This breaks with ipython
3190 to the user from all namespaces. This breaks with ipython
3187 tradition, but I think it's a nicer behavior. Now you get all
3191 tradition, but I think it's a nicer behavior. Now you get all
3188 possible completions listed, from all possible namespaces (python,
3192 possible completions listed, from all possible namespaces (python,
3189 filesystem, magics...) After a request by John Hunter
3193 filesystem, magics...) After a request by John Hunter
3190 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3194 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3191
3195
3192 2005-02-05 Fernando Perez <fperez@colorado.edu>
3196 2005-02-05 Fernando Perez <fperez@colorado.edu>
3193
3197
3194 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3198 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3195 the call had quote characters in it (the quotes were stripped).
3199 the call had quote characters in it (the quotes were stripped).
3196
3200
3197 2005-01-31 Fernando Perez <fperez@colorado.edu>
3201 2005-01-31 Fernando Perez <fperez@colorado.edu>
3198
3202
3199 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3203 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3200 Itpl.itpl() to make the code more robust against psyco
3204 Itpl.itpl() to make the code more robust against psyco
3201 optimizations.
3205 optimizations.
3202
3206
3203 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3207 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3204 of causing an exception. Quicker, cleaner.
3208 of causing an exception. Quicker, cleaner.
3205
3209
3206 2005-01-28 Fernando Perez <fperez@colorado.edu>
3210 2005-01-28 Fernando Perez <fperez@colorado.edu>
3207
3211
3208 * scripts/ipython_win_post_install.py (install): hardcode
3212 * scripts/ipython_win_post_install.py (install): hardcode
3209 sys.prefix+'python.exe' as the executable path. It turns out that
3213 sys.prefix+'python.exe' as the executable path. It turns out that
3210 during the post-installation run, sys.executable resolves to the
3214 during the post-installation run, sys.executable resolves to the
3211 name of the binary installer! I should report this as a distutils
3215 name of the binary installer! I should report this as a distutils
3212 bug, I think. I updated the .10 release with this tiny fix, to
3216 bug, I think. I updated the .10 release with this tiny fix, to
3213 avoid annoying the lists further.
3217 avoid annoying the lists further.
3214
3218
3215 2005-01-27 *** Released version 0.6.10
3219 2005-01-27 *** Released version 0.6.10
3216
3220
3217 2005-01-27 Fernando Perez <fperez@colorado.edu>
3221 2005-01-27 Fernando Perez <fperez@colorado.edu>
3218
3222
3219 * IPython/numutils.py (norm): Added 'inf' as optional name for
3223 * IPython/numutils.py (norm): Added 'inf' as optional name for
3220 L-infinity norm, included references to mathworld.com for vector
3224 L-infinity norm, included references to mathworld.com for vector
3221 norm definitions.
3225 norm definitions.
3222 (amin/amax): added amin/amax for array min/max. Similar to what
3226 (amin/amax): added amin/amax for array min/max. Similar to what
3223 pylab ships with after the recent reorganization of names.
3227 pylab ships with after the recent reorganization of names.
3224 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3228 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3225
3229
3226 * ipython.el: committed Alex's recent fixes and improvements.
3230 * ipython.el: committed Alex's recent fixes and improvements.
3227 Tested with python-mode from CVS, and it looks excellent. Since
3231 Tested with python-mode from CVS, and it looks excellent. Since
3228 python-mode hasn't released anything in a while, I'm temporarily
3232 python-mode hasn't released anything in a while, I'm temporarily
3229 putting a copy of today's CVS (v 4.70) of python-mode in:
3233 putting a copy of today's CVS (v 4.70) of python-mode in:
3230 http://ipython.scipy.org/tmp/python-mode.el
3234 http://ipython.scipy.org/tmp/python-mode.el
3231
3235
3232 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3236 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3233 sys.executable for the executable name, instead of assuming it's
3237 sys.executable for the executable name, instead of assuming it's
3234 called 'python.exe' (the post-installer would have produced broken
3238 called 'python.exe' (the post-installer would have produced broken
3235 setups on systems with a differently named python binary).
3239 setups on systems with a differently named python binary).
3236
3240
3237 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3241 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3238 references to os.linesep, to make the code more
3242 references to os.linesep, to make the code more
3239 platform-independent. This is also part of the win32 coloring
3243 platform-independent. This is also part of the win32 coloring
3240 fixes.
3244 fixes.
3241
3245
3242 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3246 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3243 lines, which actually cause coloring bugs because the length of
3247 lines, which actually cause coloring bugs because the length of
3244 the line is very difficult to correctly compute with embedded
3248 the line is very difficult to correctly compute with embedded
3245 escapes. This was the source of all the coloring problems under
3249 escapes. This was the source of all the coloring problems under
3246 Win32. I think that _finally_, Win32 users have a properly
3250 Win32. I think that _finally_, Win32 users have a properly
3247 working ipython in all respects. This would never have happened
3251 working ipython in all respects. This would never have happened
3248 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3252 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3249
3253
3250 2005-01-26 *** Released version 0.6.9
3254 2005-01-26 *** Released version 0.6.9
3251
3255
3252 2005-01-25 Fernando Perez <fperez@colorado.edu>
3256 2005-01-25 Fernando Perez <fperez@colorado.edu>
3253
3257
3254 * setup.py: finally, we have a true Windows installer, thanks to
3258 * setup.py: finally, we have a true Windows installer, thanks to
3255 the excellent work of Viktor Ransmayr
3259 the excellent work of Viktor Ransmayr
3256 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3260 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3257 Windows users. The setup routine is quite a bit cleaner thanks to
3261 Windows users. The setup routine is quite a bit cleaner thanks to
3258 this, and the post-install script uses the proper functions to
3262 this, and the post-install script uses the proper functions to
3259 allow a clean de-installation using the standard Windows Control
3263 allow a clean de-installation using the standard Windows Control
3260 Panel.
3264 Panel.
3261
3265
3262 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3266 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3263 environment variable under all OSes (including win32) if
3267 environment variable under all OSes (including win32) if
3264 available. This will give consistency to win32 users who have set
3268 available. This will give consistency to win32 users who have set
3265 this variable for any reason. If os.environ['HOME'] fails, the
3269 this variable for any reason. If os.environ['HOME'] fails, the
3266 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3270 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3267
3271
3268 2005-01-24 Fernando Perez <fperez@colorado.edu>
3272 2005-01-24 Fernando Perez <fperez@colorado.edu>
3269
3273
3270 * IPython/numutils.py (empty_like): add empty_like(), similar to
3274 * IPython/numutils.py (empty_like): add empty_like(), similar to
3271 zeros_like() but taking advantage of the new empty() Numeric routine.
3275 zeros_like() but taking advantage of the new empty() Numeric routine.
3272
3276
3273 2005-01-23 *** Released version 0.6.8
3277 2005-01-23 *** Released version 0.6.8
3274
3278
3275 2005-01-22 Fernando Perez <fperez@colorado.edu>
3279 2005-01-22 Fernando Perez <fperez@colorado.edu>
3276
3280
3277 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3281 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3278 automatic show() calls. After discussing things with JDH, it
3282 automatic show() calls. After discussing things with JDH, it
3279 turns out there are too many corner cases where this can go wrong.
3283 turns out there are too many corner cases where this can go wrong.
3280 It's best not to try to be 'too smart', and simply have ipython
3284 It's best not to try to be 'too smart', and simply have ipython
3281 reproduce as much as possible the default behavior of a normal
3285 reproduce as much as possible the default behavior of a normal
3282 python shell.
3286 python shell.
3283
3287
3284 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3288 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3285 line-splitting regexp and _prefilter() to avoid calling getattr()
3289 line-splitting regexp and _prefilter() to avoid calling getattr()
3286 on assignments. This closes
3290 on assignments. This closes
3287 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3291 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3288 readline uses getattr(), so a simple <TAB> keypress is still
3292 readline uses getattr(), so a simple <TAB> keypress is still
3289 enough to trigger getattr() calls on an object.
3293 enough to trigger getattr() calls on an object.
3290
3294
3291 2005-01-21 Fernando Perez <fperez@colorado.edu>
3295 2005-01-21 Fernando Perez <fperez@colorado.edu>
3292
3296
3293 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3297 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3294 docstring under pylab so it doesn't mask the original.
3298 docstring under pylab so it doesn't mask the original.
3295
3299
3296 2005-01-21 *** Released version 0.6.7
3300 2005-01-21 *** Released version 0.6.7
3297
3301
3298 2005-01-21 Fernando Perez <fperez@colorado.edu>
3302 2005-01-21 Fernando Perez <fperez@colorado.edu>
3299
3303
3300 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3304 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3301 signal handling for win32 users in multithreaded mode.
3305 signal handling for win32 users in multithreaded mode.
3302
3306
3303 2005-01-17 Fernando Perez <fperez@colorado.edu>
3307 2005-01-17 Fernando Perez <fperez@colorado.edu>
3304
3308
3305 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3309 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3306 instances with no __init__. After a crash report by Norbert Nemec
3310 instances with no __init__. After a crash report by Norbert Nemec
3307 <Norbert-AT-nemec-online.de>.
3311 <Norbert-AT-nemec-online.de>.
3308
3312
3309 2005-01-14 Fernando Perez <fperez@colorado.edu>
3313 2005-01-14 Fernando Perez <fperez@colorado.edu>
3310
3314
3311 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3315 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3312 names for verbose exceptions, when multiple dotted names and the
3316 names for verbose exceptions, when multiple dotted names and the
3313 'parent' object were present on the same line.
3317 'parent' object were present on the same line.
3314
3318
3315 2005-01-11 Fernando Perez <fperez@colorado.edu>
3319 2005-01-11 Fernando Perez <fperez@colorado.edu>
3316
3320
3317 * IPython/genutils.py (flag_calls): new utility to trap and flag
3321 * IPython/genutils.py (flag_calls): new utility to trap and flag
3318 calls in functions. I need it to clean up matplotlib support.
3322 calls in functions. I need it to clean up matplotlib support.
3319 Also removed some deprecated code in genutils.
3323 Also removed some deprecated code in genutils.
3320
3324
3321 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3325 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3322 that matplotlib scripts called with %run, which don't call show()
3326 that matplotlib scripts called with %run, which don't call show()
3323 themselves, still have their plotting windows open.
3327 themselves, still have their plotting windows open.
3324
3328
3325 2005-01-05 Fernando Perez <fperez@colorado.edu>
3329 2005-01-05 Fernando Perez <fperez@colorado.edu>
3326
3330
3327 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3331 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3328 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3332 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3329
3333
3330 2004-12-19 Fernando Perez <fperez@colorado.edu>
3334 2004-12-19 Fernando Perez <fperez@colorado.edu>
3331
3335
3332 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3336 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3333 parent_runcode, which was an eyesore. The same result can be
3337 parent_runcode, which was an eyesore. The same result can be
3334 obtained with Python's regular superclass mechanisms.
3338 obtained with Python's regular superclass mechanisms.
3335
3339
3336 2004-12-17 Fernando Perez <fperez@colorado.edu>
3340 2004-12-17 Fernando Perez <fperez@colorado.edu>
3337
3341
3338 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3342 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3339 reported by Prabhu.
3343 reported by Prabhu.
3340 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3344 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3341 sys.stderr) instead of explicitly calling sys.stderr. This helps
3345 sys.stderr) instead of explicitly calling sys.stderr. This helps
3342 maintain our I/O abstractions clean, for future GUI embeddings.
3346 maintain our I/O abstractions clean, for future GUI embeddings.
3343
3347
3344 * IPython/genutils.py (info): added new utility for sys.stderr
3348 * IPython/genutils.py (info): added new utility for sys.stderr
3345 unified info message handling (thin wrapper around warn()).
3349 unified info message handling (thin wrapper around warn()).
3346
3350
3347 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3351 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3348 composite (dotted) names on verbose exceptions.
3352 composite (dotted) names on verbose exceptions.
3349 (VerboseTB.nullrepr): harden against another kind of errors which
3353 (VerboseTB.nullrepr): harden against another kind of errors which
3350 Python's inspect module can trigger, and which were crashing
3354 Python's inspect module can trigger, and which were crashing
3351 IPython. Thanks to a report by Marco Lombardi
3355 IPython. Thanks to a report by Marco Lombardi
3352 <mlombard-AT-ma010192.hq.eso.org>.
3356 <mlombard-AT-ma010192.hq.eso.org>.
3353
3357
3354 2004-12-13 *** Released version 0.6.6
3358 2004-12-13 *** Released version 0.6.6
3355
3359
3356 2004-12-12 Fernando Perez <fperez@colorado.edu>
3360 2004-12-12 Fernando Perez <fperez@colorado.edu>
3357
3361
3358 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3362 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3359 generated by pygtk upon initialization if it was built without
3363 generated by pygtk upon initialization if it was built without
3360 threads (for matplotlib users). After a crash reported by
3364 threads (for matplotlib users). After a crash reported by
3361 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3365 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3362
3366
3363 * IPython/ipmaker.py (make_IPython): fix small bug in the
3367 * IPython/ipmaker.py (make_IPython): fix small bug in the
3364 import_some parameter for multiple imports.
3368 import_some parameter for multiple imports.
3365
3369
3366 * IPython/iplib.py (ipmagic): simplified the interface of
3370 * IPython/iplib.py (ipmagic): simplified the interface of
3367 ipmagic() to take a single string argument, just as it would be
3371 ipmagic() to take a single string argument, just as it would be
3368 typed at the IPython cmd line.
3372 typed at the IPython cmd line.
3369 (ipalias): Added new ipalias() with an interface identical to
3373 (ipalias): Added new ipalias() with an interface identical to
3370 ipmagic(). This completes exposing a pure python interface to the
3374 ipmagic(). This completes exposing a pure python interface to the
3371 alias and magic system, which can be used in loops or more complex
3375 alias and magic system, which can be used in loops or more complex
3372 code where IPython's automatic line mangling is not active.
3376 code where IPython's automatic line mangling is not active.
3373
3377
3374 * IPython/genutils.py (timing): changed interface of timing to
3378 * IPython/genutils.py (timing): changed interface of timing to
3375 simply run code once, which is the most common case. timings()
3379 simply run code once, which is the most common case. timings()
3376 remains unchanged, for the cases where you want multiple runs.
3380 remains unchanged, for the cases where you want multiple runs.
3377
3381
3378 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3382 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3379 bug where Python2.2 crashes with exec'ing code which does not end
3383 bug where Python2.2 crashes with exec'ing code which does not end
3380 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3384 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3381 before.
3385 before.
3382
3386
3383 2004-12-10 Fernando Perez <fperez@colorado.edu>
3387 2004-12-10 Fernando Perez <fperez@colorado.edu>
3384
3388
3385 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3389 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3386 -t to -T, to accomodate the new -t flag in %run (the %run and
3390 -t to -T, to accomodate the new -t flag in %run (the %run and
3387 %prun options are kind of intermixed, and it's not easy to change
3391 %prun options are kind of intermixed, and it's not easy to change
3388 this with the limitations of python's getopt).
3392 this with the limitations of python's getopt).
3389
3393
3390 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3394 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3391 the execution of scripts. It's not as fine-tuned as timeit.py,
3395 the execution of scripts. It's not as fine-tuned as timeit.py,
3392 but it works from inside ipython (and under 2.2, which lacks
3396 but it works from inside ipython (and under 2.2, which lacks
3393 timeit.py). Optionally a number of runs > 1 can be given for
3397 timeit.py). Optionally a number of runs > 1 can be given for
3394 timing very short-running code.
3398 timing very short-running code.
3395
3399
3396 * IPython/genutils.py (uniq_stable): new routine which returns a
3400 * IPython/genutils.py (uniq_stable): new routine which returns a
3397 list of unique elements in any iterable, but in stable order of
3401 list of unique elements in any iterable, but in stable order of
3398 appearance. I needed this for the ultraTB fixes, and it's a handy
3402 appearance. I needed this for the ultraTB fixes, and it's a handy
3399 utility.
3403 utility.
3400
3404
3401 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3405 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3402 dotted names in Verbose exceptions. This had been broken since
3406 dotted names in Verbose exceptions. This had been broken since
3403 the very start, now x.y will properly be printed in a Verbose
3407 the very start, now x.y will properly be printed in a Verbose
3404 traceback, instead of x being shown and y appearing always as an
3408 traceback, instead of x being shown and y appearing always as an
3405 'undefined global'. Getting this to work was a bit tricky,
3409 'undefined global'. Getting this to work was a bit tricky,
3406 because by default python tokenizers are stateless. Saved by
3410 because by default python tokenizers are stateless. Saved by
3407 python's ability to easily add a bit of state to an arbitrary
3411 python's ability to easily add a bit of state to an arbitrary
3408 function (without needing to build a full-blown callable object).
3412 function (without needing to build a full-blown callable object).
3409
3413
3410 Also big cleanup of this code, which had horrendous runtime
3414 Also big cleanup of this code, which had horrendous runtime
3411 lookups of zillions of attributes for colorization. Moved all
3415 lookups of zillions of attributes for colorization. Moved all
3412 this code into a few templates, which make it cleaner and quicker.
3416 this code into a few templates, which make it cleaner and quicker.
3413
3417
3414 Printout quality was also improved for Verbose exceptions: one
3418 Printout quality was also improved for Verbose exceptions: one
3415 variable per line, and memory addresses are printed (this can be
3419 variable per line, and memory addresses are printed (this can be
3416 quite handy in nasty debugging situations, which is what Verbose
3420 quite handy in nasty debugging situations, which is what Verbose
3417 is for).
3421 is for).
3418
3422
3419 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3423 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3420 the command line as scripts to be loaded by embedded instances.
3424 the command line as scripts to be loaded by embedded instances.
3421 Doing so has the potential for an infinite recursion if there are
3425 Doing so has the potential for an infinite recursion if there are
3422 exceptions thrown in the process. This fixes a strange crash
3426 exceptions thrown in the process. This fixes a strange crash
3423 reported by Philippe MULLER <muller-AT-irit.fr>.
3427 reported by Philippe MULLER <muller-AT-irit.fr>.
3424
3428
3425 2004-12-09 Fernando Perez <fperez@colorado.edu>
3429 2004-12-09 Fernando Perez <fperez@colorado.edu>
3426
3430
3427 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3431 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3428 to reflect new names in matplotlib, which now expose the
3432 to reflect new names in matplotlib, which now expose the
3429 matlab-compatible interface via a pylab module instead of the
3433 matlab-compatible interface via a pylab module instead of the
3430 'matlab' name. The new code is backwards compatible, so users of
3434 'matlab' name. The new code is backwards compatible, so users of
3431 all matplotlib versions are OK. Patch by J. Hunter.
3435 all matplotlib versions are OK. Patch by J. Hunter.
3432
3436
3433 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3437 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3434 of __init__ docstrings for instances (class docstrings are already
3438 of __init__ docstrings for instances (class docstrings are already
3435 automatically printed). Instances with customized docstrings
3439 automatically printed). Instances with customized docstrings
3436 (indep. of the class) are also recognized and all 3 separate
3440 (indep. of the class) are also recognized and all 3 separate
3437 docstrings are printed (instance, class, constructor). After some
3441 docstrings are printed (instance, class, constructor). After some
3438 comments/suggestions by J. Hunter.
3442 comments/suggestions by J. Hunter.
3439
3443
3440 2004-12-05 Fernando Perez <fperez@colorado.edu>
3444 2004-12-05 Fernando Perez <fperez@colorado.edu>
3441
3445
3442 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3446 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3443 warnings when tab-completion fails and triggers an exception.
3447 warnings when tab-completion fails and triggers an exception.
3444
3448
3445 2004-12-03 Fernando Perez <fperez@colorado.edu>
3449 2004-12-03 Fernando Perez <fperez@colorado.edu>
3446
3450
3447 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3451 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3448 be triggered when using 'run -p'. An incorrect option flag was
3452 be triggered when using 'run -p'. An incorrect option flag was
3449 being set ('d' instead of 'D').
3453 being set ('d' instead of 'D').
3450 (manpage): fix missing escaped \- sign.
3454 (manpage): fix missing escaped \- sign.
3451
3455
3452 2004-11-30 *** Released version 0.6.5
3456 2004-11-30 *** Released version 0.6.5
3453
3457
3454 2004-11-30 Fernando Perez <fperez@colorado.edu>
3458 2004-11-30 Fernando Perez <fperez@colorado.edu>
3455
3459
3456 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3460 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3457 setting with -d option.
3461 setting with -d option.
3458
3462
3459 * setup.py (docfiles): Fix problem where the doc glob I was using
3463 * setup.py (docfiles): Fix problem where the doc glob I was using
3460 was COMPLETELY BROKEN. It was giving the right files by pure
3464 was COMPLETELY BROKEN. It was giving the right files by pure
3461 accident, but failed once I tried to include ipython.el. Note:
3465 accident, but failed once I tried to include ipython.el. Note:
3462 glob() does NOT allow you to do exclusion on multiple endings!
3466 glob() does NOT allow you to do exclusion on multiple endings!
3463
3467
3464 2004-11-29 Fernando Perez <fperez@colorado.edu>
3468 2004-11-29 Fernando Perez <fperez@colorado.edu>
3465
3469
3466 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3470 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3467 the manpage as the source. Better formatting & consistency.
3471 the manpage as the source. Better formatting & consistency.
3468
3472
3469 * IPython/Magic.py (magic_run): Added new -d option, to run
3473 * IPython/Magic.py (magic_run): Added new -d option, to run
3470 scripts under the control of the python pdb debugger. Note that
3474 scripts under the control of the python pdb debugger. Note that
3471 this required changing the %prun option -d to -D, to avoid a clash
3475 this required changing the %prun option -d to -D, to avoid a clash
3472 (since %run must pass options to %prun, and getopt is too dumb to
3476 (since %run must pass options to %prun, and getopt is too dumb to
3473 handle options with string values with embedded spaces). Thanks
3477 handle options with string values with embedded spaces). Thanks
3474 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3478 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3475 (magic_who_ls): added type matching to %who and %whos, so that one
3479 (magic_who_ls): added type matching to %who and %whos, so that one
3476 can filter their output to only include variables of certain
3480 can filter their output to only include variables of certain
3477 types. Another suggestion by Matthew.
3481 types. Another suggestion by Matthew.
3478 (magic_whos): Added memory summaries in kb and Mb for arrays.
3482 (magic_whos): Added memory summaries in kb and Mb for arrays.
3479 (magic_who): Improve formatting (break lines every 9 vars).
3483 (magic_who): Improve formatting (break lines every 9 vars).
3480
3484
3481 2004-11-28 Fernando Perez <fperez@colorado.edu>
3485 2004-11-28 Fernando Perez <fperez@colorado.edu>
3482
3486
3483 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3487 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3484 cache when empty lines were present.
3488 cache when empty lines were present.
3485
3489
3486 2004-11-24 Fernando Perez <fperez@colorado.edu>
3490 2004-11-24 Fernando Perez <fperez@colorado.edu>
3487
3491
3488 * IPython/usage.py (__doc__): document the re-activated threading
3492 * IPython/usage.py (__doc__): document the re-activated threading
3489 options for WX and GTK.
3493 options for WX and GTK.
3490
3494
3491 2004-11-23 Fernando Perez <fperez@colorado.edu>
3495 2004-11-23 Fernando Perez <fperez@colorado.edu>
3492
3496
3493 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3497 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3494 the -wthread and -gthread options, along with a new -tk one to try
3498 the -wthread and -gthread options, along with a new -tk one to try
3495 and coordinate Tk threading with wx/gtk. The tk support is very
3499 and coordinate Tk threading with wx/gtk. The tk support is very
3496 platform dependent, since it seems to require Tcl and Tk to be
3500 platform dependent, since it seems to require Tcl and Tk to be
3497 built with threads (Fedora1/2 appears NOT to have it, but in
3501 built with threads (Fedora1/2 appears NOT to have it, but in
3498 Prabhu's Debian boxes it works OK). But even with some Tk
3502 Prabhu's Debian boxes it works OK). But even with some Tk
3499 limitations, this is a great improvement.
3503 limitations, this is a great improvement.
3500
3504
3501 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3505 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3502 info in user prompts. Patch by Prabhu.
3506 info in user prompts. Patch by Prabhu.
3503
3507
3504 2004-11-18 Fernando Perez <fperez@colorado.edu>
3508 2004-11-18 Fernando Perez <fperez@colorado.edu>
3505
3509
3506 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3510 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3507 EOFErrors and bail, to avoid infinite loops if a non-terminating
3511 EOFErrors and bail, to avoid infinite loops if a non-terminating
3508 file is fed into ipython. Patch submitted in issue 19 by user,
3512 file is fed into ipython. Patch submitted in issue 19 by user,
3509 many thanks.
3513 many thanks.
3510
3514
3511 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3515 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3512 autoquote/parens in continuation prompts, which can cause lots of
3516 autoquote/parens in continuation prompts, which can cause lots of
3513 problems. Closes roundup issue 20.
3517 problems. Closes roundup issue 20.
3514
3518
3515 2004-11-17 Fernando Perez <fperez@colorado.edu>
3519 2004-11-17 Fernando Perez <fperez@colorado.edu>
3516
3520
3517 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3521 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3518 reported as debian bug #280505. I'm not sure my local changelog
3522 reported as debian bug #280505. I'm not sure my local changelog
3519 entry has the proper debian format (Jack?).
3523 entry has the proper debian format (Jack?).
3520
3524
3521 2004-11-08 *** Released version 0.6.4
3525 2004-11-08 *** Released version 0.6.4
3522
3526
3523 2004-11-08 Fernando Perez <fperez@colorado.edu>
3527 2004-11-08 Fernando Perez <fperez@colorado.edu>
3524
3528
3525 * IPython/iplib.py (init_readline): Fix exit message for Windows
3529 * IPython/iplib.py (init_readline): Fix exit message for Windows
3526 when readline is active. Thanks to a report by Eric Jones
3530 when readline is active. Thanks to a report by Eric Jones
3527 <eric-AT-enthought.com>.
3531 <eric-AT-enthought.com>.
3528
3532
3529 2004-11-07 Fernando Perez <fperez@colorado.edu>
3533 2004-11-07 Fernando Perez <fperez@colorado.edu>
3530
3534
3531 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3535 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3532 sometimes seen by win2k/cygwin users.
3536 sometimes seen by win2k/cygwin users.
3533
3537
3534 2004-11-06 Fernando Perez <fperez@colorado.edu>
3538 2004-11-06 Fernando Perez <fperez@colorado.edu>
3535
3539
3536 * IPython/iplib.py (interact): Change the handling of %Exit from
3540 * IPython/iplib.py (interact): Change the handling of %Exit from
3537 trying to propagate a SystemExit to an internal ipython flag.
3541 trying to propagate a SystemExit to an internal ipython flag.
3538 This is less elegant than using Python's exception mechanism, but
3542 This is less elegant than using Python's exception mechanism, but
3539 I can't get that to work reliably with threads, so under -pylab
3543 I can't get that to work reliably with threads, so under -pylab
3540 %Exit was hanging IPython. Cross-thread exception handling is
3544 %Exit was hanging IPython. Cross-thread exception handling is
3541 really a bitch. Thaks to a bug report by Stephen Walton
3545 really a bitch. Thaks to a bug report by Stephen Walton
3542 <stephen.walton-AT-csun.edu>.
3546 <stephen.walton-AT-csun.edu>.
3543
3547
3544 2004-11-04 Fernando Perez <fperez@colorado.edu>
3548 2004-11-04 Fernando Perez <fperez@colorado.edu>
3545
3549
3546 * IPython/iplib.py (raw_input_original): store a pointer to the
3550 * IPython/iplib.py (raw_input_original): store a pointer to the
3547 true raw_input to harden against code which can modify it
3551 true raw_input to harden against code which can modify it
3548 (wx.py.PyShell does this and would otherwise crash ipython).
3552 (wx.py.PyShell does this and would otherwise crash ipython).
3549 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3553 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3550
3554
3551 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3555 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3552 Ctrl-C problem, which does not mess up the input line.
3556 Ctrl-C problem, which does not mess up the input line.
3553
3557
3554 2004-11-03 Fernando Perez <fperez@colorado.edu>
3558 2004-11-03 Fernando Perez <fperez@colorado.edu>
3555
3559
3556 * IPython/Release.py: Changed licensing to BSD, in all files.
3560 * IPython/Release.py: Changed licensing to BSD, in all files.
3557 (name): lowercase name for tarball/RPM release.
3561 (name): lowercase name for tarball/RPM release.
3558
3562
3559 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3563 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3560 use throughout ipython.
3564 use throughout ipython.
3561
3565
3562 * IPython/Magic.py (Magic._ofind): Switch to using the new
3566 * IPython/Magic.py (Magic._ofind): Switch to using the new
3563 OInspect.getdoc() function.
3567 OInspect.getdoc() function.
3564
3568
3565 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3569 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3566 of the line currently being canceled via Ctrl-C. It's extremely
3570 of the line currently being canceled via Ctrl-C. It's extremely
3567 ugly, but I don't know how to do it better (the problem is one of
3571 ugly, but I don't know how to do it better (the problem is one of
3568 handling cross-thread exceptions).
3572 handling cross-thread exceptions).
3569
3573
3570 2004-10-28 Fernando Perez <fperez@colorado.edu>
3574 2004-10-28 Fernando Perez <fperez@colorado.edu>
3571
3575
3572 * IPython/Shell.py (signal_handler): add signal handlers to trap
3576 * IPython/Shell.py (signal_handler): add signal handlers to trap
3573 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3577 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3574 report by Francesc Alted.
3578 report by Francesc Alted.
3575
3579
3576 2004-10-21 Fernando Perez <fperez@colorado.edu>
3580 2004-10-21 Fernando Perez <fperez@colorado.edu>
3577
3581
3578 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3582 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3579 to % for pysh syntax extensions.
3583 to % for pysh syntax extensions.
3580
3584
3581 2004-10-09 Fernando Perez <fperez@colorado.edu>
3585 2004-10-09 Fernando Perez <fperez@colorado.edu>
3582
3586
3583 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3587 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3584 arrays to print a more useful summary, without calling str(arr).
3588 arrays to print a more useful summary, without calling str(arr).
3585 This avoids the problem of extremely lengthy computations which
3589 This avoids the problem of extremely lengthy computations which
3586 occur if arr is large, and appear to the user as a system lockup
3590 occur if arr is large, and appear to the user as a system lockup
3587 with 100% cpu activity. After a suggestion by Kristian Sandberg
3591 with 100% cpu activity. After a suggestion by Kristian Sandberg
3588 <Kristian.Sandberg@colorado.edu>.
3592 <Kristian.Sandberg@colorado.edu>.
3589 (Magic.__init__): fix bug in global magic escapes not being
3593 (Magic.__init__): fix bug in global magic escapes not being
3590 correctly set.
3594 correctly set.
3591
3595
3592 2004-10-08 Fernando Perez <fperez@colorado.edu>
3596 2004-10-08 Fernando Perez <fperez@colorado.edu>
3593
3597
3594 * IPython/Magic.py (__license__): change to absolute imports of
3598 * IPython/Magic.py (__license__): change to absolute imports of
3595 ipython's own internal packages, to start adapting to the absolute
3599 ipython's own internal packages, to start adapting to the absolute
3596 import requirement of PEP-328.
3600 import requirement of PEP-328.
3597
3601
3598 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3602 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3599 files, and standardize author/license marks through the Release
3603 files, and standardize author/license marks through the Release
3600 module instead of having per/file stuff (except for files with
3604 module instead of having per/file stuff (except for files with
3601 particular licenses, like the MIT/PSF-licensed codes).
3605 particular licenses, like the MIT/PSF-licensed codes).
3602
3606
3603 * IPython/Debugger.py: remove dead code for python 2.1
3607 * IPython/Debugger.py: remove dead code for python 2.1
3604
3608
3605 2004-10-04 Fernando Perez <fperez@colorado.edu>
3609 2004-10-04 Fernando Perez <fperez@colorado.edu>
3606
3610
3607 * IPython/iplib.py (ipmagic): New function for accessing magics
3611 * IPython/iplib.py (ipmagic): New function for accessing magics
3608 via a normal python function call.
3612 via a normal python function call.
3609
3613
3610 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3614 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3611 from '@' to '%', to accomodate the new @decorator syntax of python
3615 from '@' to '%', to accomodate the new @decorator syntax of python
3612 2.4.
3616 2.4.
3613
3617
3614 2004-09-29 Fernando Perez <fperez@colorado.edu>
3618 2004-09-29 Fernando Perez <fperez@colorado.edu>
3615
3619
3616 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3620 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3617 matplotlib.use to prevent running scripts which try to switch
3621 matplotlib.use to prevent running scripts which try to switch
3618 interactive backends from within ipython. This will just crash
3622 interactive backends from within ipython. This will just crash
3619 the python interpreter, so we can't allow it (but a detailed error
3623 the python interpreter, so we can't allow it (but a detailed error
3620 is given to the user).
3624 is given to the user).
3621
3625
3622 2004-09-28 Fernando Perez <fperez@colorado.edu>
3626 2004-09-28 Fernando Perez <fperez@colorado.edu>
3623
3627
3624 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3628 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3625 matplotlib-related fixes so that using @run with non-matplotlib
3629 matplotlib-related fixes so that using @run with non-matplotlib
3626 scripts doesn't pop up spurious plot windows. This requires
3630 scripts doesn't pop up spurious plot windows. This requires
3627 matplotlib >= 0.63, where I had to make some changes as well.
3631 matplotlib >= 0.63, where I had to make some changes as well.
3628
3632
3629 * IPython/ipmaker.py (make_IPython): update version requirement to
3633 * IPython/ipmaker.py (make_IPython): update version requirement to
3630 python 2.2.
3634 python 2.2.
3631
3635
3632 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3636 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3633 banner arg for embedded customization.
3637 banner arg for embedded customization.
3634
3638
3635 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3639 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3636 explicit uses of __IP as the IPython's instance name. Now things
3640 explicit uses of __IP as the IPython's instance name. Now things
3637 are properly handled via the shell.name value. The actual code
3641 are properly handled via the shell.name value. The actual code
3638 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3642 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3639 is much better than before. I'll clean things completely when the
3643 is much better than before. I'll clean things completely when the
3640 magic stuff gets a real overhaul.
3644 magic stuff gets a real overhaul.
3641
3645
3642 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3646 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3643 minor changes to debian dir.
3647 minor changes to debian dir.
3644
3648
3645 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3649 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3646 pointer to the shell itself in the interactive namespace even when
3650 pointer to the shell itself in the interactive namespace even when
3647 a user-supplied dict is provided. This is needed for embedding
3651 a user-supplied dict is provided. This is needed for embedding
3648 purposes (found by tests with Michel Sanner).
3652 purposes (found by tests with Michel Sanner).
3649
3653
3650 2004-09-27 Fernando Perez <fperez@colorado.edu>
3654 2004-09-27 Fernando Perez <fperez@colorado.edu>
3651
3655
3652 * IPython/UserConfig/ipythonrc: remove []{} from
3656 * IPython/UserConfig/ipythonrc: remove []{} from
3653 readline_remove_delims, so that things like [modname.<TAB> do
3657 readline_remove_delims, so that things like [modname.<TAB> do
3654 proper completion. This disables [].TAB, but that's a less common
3658 proper completion. This disables [].TAB, but that's a less common
3655 case than module names in list comprehensions, for example.
3659 case than module names in list comprehensions, for example.
3656 Thanks to a report by Andrea Riciputi.
3660 Thanks to a report by Andrea Riciputi.
3657
3661
3658 2004-09-09 Fernando Perez <fperez@colorado.edu>
3662 2004-09-09 Fernando Perez <fperez@colorado.edu>
3659
3663
3660 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3664 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3661 blocking problems in win32 and osx. Fix by John.
3665 blocking problems in win32 and osx. Fix by John.
3662
3666
3663 2004-09-08 Fernando Perez <fperez@colorado.edu>
3667 2004-09-08 Fernando Perez <fperez@colorado.edu>
3664
3668
3665 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3669 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3666 for Win32 and OSX. Fix by John Hunter.
3670 for Win32 and OSX. Fix by John Hunter.
3667
3671
3668 2004-08-30 *** Released version 0.6.3
3672 2004-08-30 *** Released version 0.6.3
3669
3673
3670 2004-08-30 Fernando Perez <fperez@colorado.edu>
3674 2004-08-30 Fernando Perez <fperez@colorado.edu>
3671
3675
3672 * setup.py (isfile): Add manpages to list of dependent files to be
3676 * setup.py (isfile): Add manpages to list of dependent files to be
3673 updated.
3677 updated.
3674
3678
3675 2004-08-27 Fernando Perez <fperez@colorado.edu>
3679 2004-08-27 Fernando Perez <fperez@colorado.edu>
3676
3680
3677 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3681 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3678 for now. They don't really work with standalone WX/GTK code
3682 for now. They don't really work with standalone WX/GTK code
3679 (though matplotlib IS working fine with both of those backends).
3683 (though matplotlib IS working fine with both of those backends).
3680 This will neeed much more testing. I disabled most things with
3684 This will neeed much more testing. I disabled most things with
3681 comments, so turning it back on later should be pretty easy.
3685 comments, so turning it back on later should be pretty easy.
3682
3686
3683 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3687 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3684 autocalling of expressions like r'foo', by modifying the line
3688 autocalling of expressions like r'foo', by modifying the line
3685 split regexp. Closes
3689 split regexp. Closes
3686 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3690 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3687 Riley <ipythonbugs-AT-sabi.net>.
3691 Riley <ipythonbugs-AT-sabi.net>.
3688 (InteractiveShell.mainloop): honor --nobanner with banner
3692 (InteractiveShell.mainloop): honor --nobanner with banner
3689 extensions.
3693 extensions.
3690
3694
3691 * IPython/Shell.py: Significant refactoring of all classes, so
3695 * IPython/Shell.py: Significant refactoring of all classes, so
3692 that we can really support ALL matplotlib backends and threading
3696 that we can really support ALL matplotlib backends and threading
3693 models (John spotted a bug with Tk which required this). Now we
3697 models (John spotted a bug with Tk which required this). Now we
3694 should support single-threaded, WX-threads and GTK-threads, both
3698 should support single-threaded, WX-threads and GTK-threads, both
3695 for generic code and for matplotlib.
3699 for generic code and for matplotlib.
3696
3700
3697 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3701 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3698 -pylab, to simplify things for users. Will also remove the pylab
3702 -pylab, to simplify things for users. Will also remove the pylab
3699 profile, since now all of matplotlib configuration is directly
3703 profile, since now all of matplotlib configuration is directly
3700 handled here. This also reduces startup time.
3704 handled here. This also reduces startup time.
3701
3705
3702 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3706 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3703 shell wasn't being correctly called. Also in IPShellWX.
3707 shell wasn't being correctly called. Also in IPShellWX.
3704
3708
3705 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3709 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3706 fine-tune banner.
3710 fine-tune banner.
3707
3711
3708 * IPython/numutils.py (spike): Deprecate these spike functions,
3712 * IPython/numutils.py (spike): Deprecate these spike functions,
3709 delete (long deprecated) gnuplot_exec handler.
3713 delete (long deprecated) gnuplot_exec handler.
3710
3714
3711 2004-08-26 Fernando Perez <fperez@colorado.edu>
3715 2004-08-26 Fernando Perez <fperez@colorado.edu>
3712
3716
3713 * ipython.1: Update for threading options, plus some others which
3717 * ipython.1: Update for threading options, plus some others which
3714 were missing.
3718 were missing.
3715
3719
3716 * IPython/ipmaker.py (__call__): Added -wthread option for
3720 * IPython/ipmaker.py (__call__): Added -wthread option for
3717 wxpython thread handling. Make sure threading options are only
3721 wxpython thread handling. Make sure threading options are only
3718 valid at the command line.
3722 valid at the command line.
3719
3723
3720 * scripts/ipython: moved shell selection into a factory function
3724 * scripts/ipython: moved shell selection into a factory function
3721 in Shell.py, to keep the starter script to a minimum.
3725 in Shell.py, to keep the starter script to a minimum.
3722
3726
3723 2004-08-25 Fernando Perez <fperez@colorado.edu>
3727 2004-08-25 Fernando Perez <fperez@colorado.edu>
3724
3728
3725 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3729 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3726 John. Along with some recent changes he made to matplotlib, the
3730 John. Along with some recent changes he made to matplotlib, the
3727 next versions of both systems should work very well together.
3731 next versions of both systems should work very well together.
3728
3732
3729 2004-08-24 Fernando Perez <fperez@colorado.edu>
3733 2004-08-24 Fernando Perez <fperez@colorado.edu>
3730
3734
3731 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3735 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3732 tried to switch the profiling to using hotshot, but I'm getting
3736 tried to switch the profiling to using hotshot, but I'm getting
3733 strange errors from prof.runctx() there. I may be misreading the
3737 strange errors from prof.runctx() there. I may be misreading the
3734 docs, but it looks weird. For now the profiling code will
3738 docs, but it looks weird. For now the profiling code will
3735 continue to use the standard profiler.
3739 continue to use the standard profiler.
3736
3740
3737 2004-08-23 Fernando Perez <fperez@colorado.edu>
3741 2004-08-23 Fernando Perez <fperez@colorado.edu>
3738
3742
3739 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3743 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3740 threaded shell, by John Hunter. It's not quite ready yet, but
3744 threaded shell, by John Hunter. It's not quite ready yet, but
3741 close.
3745 close.
3742
3746
3743 2004-08-22 Fernando Perez <fperez@colorado.edu>
3747 2004-08-22 Fernando Perez <fperez@colorado.edu>
3744
3748
3745 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3749 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3746 in Magic and ultraTB.
3750 in Magic and ultraTB.
3747
3751
3748 * ipython.1: document threading options in manpage.
3752 * ipython.1: document threading options in manpage.
3749
3753
3750 * scripts/ipython: Changed name of -thread option to -gthread,
3754 * scripts/ipython: Changed name of -thread option to -gthread,
3751 since this is GTK specific. I want to leave the door open for a
3755 since this is GTK specific. I want to leave the door open for a
3752 -wthread option for WX, which will most likely be necessary. This
3756 -wthread option for WX, which will most likely be necessary. This
3753 change affects usage and ipmaker as well.
3757 change affects usage and ipmaker as well.
3754
3758
3755 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3759 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3756 handle the matplotlib shell issues. Code by John Hunter
3760 handle the matplotlib shell issues. Code by John Hunter
3757 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3761 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3758 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3762 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3759 broken (and disabled for end users) for now, but it puts the
3763 broken (and disabled for end users) for now, but it puts the
3760 infrastructure in place.
3764 infrastructure in place.
3761
3765
3762 2004-08-21 Fernando Perez <fperez@colorado.edu>
3766 2004-08-21 Fernando Perez <fperez@colorado.edu>
3763
3767
3764 * ipythonrc-pylab: Add matplotlib support.
3768 * ipythonrc-pylab: Add matplotlib support.
3765
3769
3766 * matplotlib_config.py: new files for matplotlib support, part of
3770 * matplotlib_config.py: new files for matplotlib support, part of
3767 the pylab profile.
3771 the pylab profile.
3768
3772
3769 * IPython/usage.py (__doc__): documented the threading options.
3773 * IPython/usage.py (__doc__): documented the threading options.
3770
3774
3771 2004-08-20 Fernando Perez <fperez@colorado.edu>
3775 2004-08-20 Fernando Perez <fperez@colorado.edu>
3772
3776
3773 * ipython: Modified the main calling routine to handle the -thread
3777 * ipython: Modified the main calling routine to handle the -thread
3774 and -mpthread options. This needs to be done as a top-level hack,
3778 and -mpthread options. This needs to be done as a top-level hack,
3775 because it determines which class to instantiate for IPython
3779 because it determines which class to instantiate for IPython
3776 itself.
3780 itself.
3777
3781
3778 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3782 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3779 classes to support multithreaded GTK operation without blocking,
3783 classes to support multithreaded GTK operation without blocking,
3780 and matplotlib with all backends. This is a lot of still very
3784 and matplotlib with all backends. This is a lot of still very
3781 experimental code, and threads are tricky. So it may still have a
3785 experimental code, and threads are tricky. So it may still have a
3782 few rough edges... This code owes a lot to
3786 few rough edges... This code owes a lot to
3783 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3787 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3784 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3788 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3785 to John Hunter for all the matplotlib work.
3789 to John Hunter for all the matplotlib work.
3786
3790
3787 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3791 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3788 options for gtk thread and matplotlib support.
3792 options for gtk thread and matplotlib support.
3789
3793
3790 2004-08-16 Fernando Perez <fperez@colorado.edu>
3794 2004-08-16 Fernando Perez <fperez@colorado.edu>
3791
3795
3792 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3796 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3793 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3797 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3794 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3798 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3795
3799
3796 2004-08-11 Fernando Perez <fperez@colorado.edu>
3800 2004-08-11 Fernando Perez <fperez@colorado.edu>
3797
3801
3798 * setup.py (isfile): Fix build so documentation gets updated for
3802 * setup.py (isfile): Fix build so documentation gets updated for
3799 rpms (it was only done for .tgz builds).
3803 rpms (it was only done for .tgz builds).
3800
3804
3801 2004-08-10 Fernando Perez <fperez@colorado.edu>
3805 2004-08-10 Fernando Perez <fperez@colorado.edu>
3802
3806
3803 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3807 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3804
3808
3805 * iplib.py : Silence syntax error exceptions in tab-completion.
3809 * iplib.py : Silence syntax error exceptions in tab-completion.
3806
3810
3807 2004-08-05 Fernando Perez <fperez@colorado.edu>
3811 2004-08-05 Fernando Perez <fperez@colorado.edu>
3808
3812
3809 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3813 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3810 'color off' mark for continuation prompts. This was causing long
3814 'color off' mark for continuation prompts. This was causing long
3811 continuation lines to mis-wrap.
3815 continuation lines to mis-wrap.
3812
3816
3813 2004-08-01 Fernando Perez <fperez@colorado.edu>
3817 2004-08-01 Fernando Perez <fperez@colorado.edu>
3814
3818
3815 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3819 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3816 for building ipython to be a parameter. All this is necessary
3820 for building ipython to be a parameter. All this is necessary
3817 right now to have a multithreaded version, but this insane
3821 right now to have a multithreaded version, but this insane
3818 non-design will be cleaned up soon. For now, it's a hack that
3822 non-design will be cleaned up soon. For now, it's a hack that
3819 works.
3823 works.
3820
3824
3821 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3825 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3822 args in various places. No bugs so far, but it's a dangerous
3826 args in various places. No bugs so far, but it's a dangerous
3823 practice.
3827 practice.
3824
3828
3825 2004-07-31 Fernando Perez <fperez@colorado.edu>
3829 2004-07-31 Fernando Perez <fperez@colorado.edu>
3826
3830
3827 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3831 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3828 fix completion of files with dots in their names under most
3832 fix completion of files with dots in their names under most
3829 profiles (pysh was OK because the completion order is different).
3833 profiles (pysh was OK because the completion order is different).
3830
3834
3831 2004-07-27 Fernando Perez <fperez@colorado.edu>
3835 2004-07-27 Fernando Perez <fperez@colorado.edu>
3832
3836
3833 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3837 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3834 keywords manually, b/c the one in keyword.py was removed in python
3838 keywords manually, b/c the one in keyword.py was removed in python
3835 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3839 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3836 This is NOT a bug under python 2.3 and earlier.
3840 This is NOT a bug under python 2.3 and earlier.
3837
3841
3838 2004-07-26 Fernando Perez <fperez@colorado.edu>
3842 2004-07-26 Fernando Perez <fperez@colorado.edu>
3839
3843
3840 * IPython/ultraTB.py (VerboseTB.text): Add another
3844 * IPython/ultraTB.py (VerboseTB.text): Add another
3841 linecache.checkcache() call to try to prevent inspect.py from
3845 linecache.checkcache() call to try to prevent inspect.py from
3842 crashing under python 2.3. I think this fixes
3846 crashing under python 2.3. I think this fixes
3843 http://www.scipy.net/roundup/ipython/issue17.
3847 http://www.scipy.net/roundup/ipython/issue17.
3844
3848
3845 2004-07-26 *** Released version 0.6.2
3849 2004-07-26 *** Released version 0.6.2
3846
3850
3847 2004-07-26 Fernando Perez <fperez@colorado.edu>
3851 2004-07-26 Fernando Perez <fperez@colorado.edu>
3848
3852
3849 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3853 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3850 fail for any number.
3854 fail for any number.
3851 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3855 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3852 empty bookmarks.
3856 empty bookmarks.
3853
3857
3854 2004-07-26 *** Released version 0.6.1
3858 2004-07-26 *** Released version 0.6.1
3855
3859
3856 2004-07-26 Fernando Perez <fperez@colorado.edu>
3860 2004-07-26 Fernando Perez <fperez@colorado.edu>
3857
3861
3858 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3862 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3859
3863
3860 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3864 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3861 escaping '()[]{}' in filenames.
3865 escaping '()[]{}' in filenames.
3862
3866
3863 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3867 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3864 Python 2.2 users who lack a proper shlex.split.
3868 Python 2.2 users who lack a proper shlex.split.
3865
3869
3866 2004-07-19 Fernando Perez <fperez@colorado.edu>
3870 2004-07-19 Fernando Perez <fperez@colorado.edu>
3867
3871
3868 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3872 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3869 for reading readline's init file. I follow the normal chain:
3873 for reading readline's init file. I follow the normal chain:
3870 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3874 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3871 report by Mike Heeter. This closes
3875 report by Mike Heeter. This closes
3872 http://www.scipy.net/roundup/ipython/issue16.
3876 http://www.scipy.net/roundup/ipython/issue16.
3873
3877
3874 2004-07-18 Fernando Perez <fperez@colorado.edu>
3878 2004-07-18 Fernando Perez <fperez@colorado.edu>
3875
3879
3876 * IPython/iplib.py (__init__): Add better handling of '\' under
3880 * IPython/iplib.py (__init__): Add better handling of '\' under
3877 Win32 for filenames. After a patch by Ville.
3881 Win32 for filenames. After a patch by Ville.
3878
3882
3879 2004-07-17 Fernando Perez <fperez@colorado.edu>
3883 2004-07-17 Fernando Perez <fperez@colorado.edu>
3880
3884
3881 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3885 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3882 autocalling would be triggered for 'foo is bar' if foo is
3886 autocalling would be triggered for 'foo is bar' if foo is
3883 callable. I also cleaned up the autocall detection code to use a
3887 callable. I also cleaned up the autocall detection code to use a
3884 regexp, which is faster. Bug reported by Alexander Schmolck.
3888 regexp, which is faster. Bug reported by Alexander Schmolck.
3885
3889
3886 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3890 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3887 '?' in them would confuse the help system. Reported by Alex
3891 '?' in them would confuse the help system. Reported by Alex
3888 Schmolck.
3892 Schmolck.
3889
3893
3890 2004-07-16 Fernando Perez <fperez@colorado.edu>
3894 2004-07-16 Fernando Perez <fperez@colorado.edu>
3891
3895
3892 * IPython/GnuplotInteractive.py (__all__): added plot2.
3896 * IPython/GnuplotInteractive.py (__all__): added plot2.
3893
3897
3894 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3898 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3895 plotting dictionaries, lists or tuples of 1d arrays.
3899 plotting dictionaries, lists or tuples of 1d arrays.
3896
3900
3897 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3901 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3898 optimizations.
3902 optimizations.
3899
3903
3900 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3904 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3901 the information which was there from Janko's original IPP code:
3905 the information which was there from Janko's original IPP code:
3902
3906
3903 03.05.99 20:53 porto.ifm.uni-kiel.de
3907 03.05.99 20:53 porto.ifm.uni-kiel.de
3904 --Started changelog.
3908 --Started changelog.
3905 --make clear do what it say it does
3909 --make clear do what it say it does
3906 --added pretty output of lines from inputcache
3910 --added pretty output of lines from inputcache
3907 --Made Logger a mixin class, simplifies handling of switches
3911 --Made Logger a mixin class, simplifies handling of switches
3908 --Added own completer class. .string<TAB> expands to last history
3912 --Added own completer class. .string<TAB> expands to last history
3909 line which starts with string. The new expansion is also present
3913 line which starts with string. The new expansion is also present
3910 with Ctrl-r from the readline library. But this shows, who this
3914 with Ctrl-r from the readline library. But this shows, who this
3911 can be done for other cases.
3915 can be done for other cases.
3912 --Added convention that all shell functions should accept a
3916 --Added convention that all shell functions should accept a
3913 parameter_string This opens the door for different behaviour for
3917 parameter_string This opens the door for different behaviour for
3914 each function. @cd is a good example of this.
3918 each function. @cd is a good example of this.
3915
3919
3916 04.05.99 12:12 porto.ifm.uni-kiel.de
3920 04.05.99 12:12 porto.ifm.uni-kiel.de
3917 --added logfile rotation
3921 --added logfile rotation
3918 --added new mainloop method which freezes first the namespace
3922 --added new mainloop method which freezes first the namespace
3919
3923
3920 07.05.99 21:24 porto.ifm.uni-kiel.de
3924 07.05.99 21:24 porto.ifm.uni-kiel.de
3921 --added the docreader classes. Now there is a help system.
3925 --added the docreader classes. Now there is a help system.
3922 -This is only a first try. Currently it's not easy to put new
3926 -This is only a first try. Currently it's not easy to put new
3923 stuff in the indices. But this is the way to go. Info would be
3927 stuff in the indices. But this is the way to go. Info would be
3924 better, but HTML is every where and not everybody has an info
3928 better, but HTML is every where and not everybody has an info
3925 system installed and it's not so easy to change html-docs to info.
3929 system installed and it's not so easy to change html-docs to info.
3926 --added global logfile option
3930 --added global logfile option
3927 --there is now a hook for object inspection method pinfo needs to
3931 --there is now a hook for object inspection method pinfo needs to
3928 be provided for this. Can be reached by two '??'.
3932 be provided for this. Can be reached by two '??'.
3929
3933
3930 08.05.99 20:51 porto.ifm.uni-kiel.de
3934 08.05.99 20:51 porto.ifm.uni-kiel.de
3931 --added a README
3935 --added a README
3932 --bug in rc file. Something has changed so functions in the rc
3936 --bug in rc file. Something has changed so functions in the rc
3933 file need to reference the shell and not self. Not clear if it's a
3937 file need to reference the shell and not self. Not clear if it's a
3934 bug or feature.
3938 bug or feature.
3935 --changed rc file for new behavior
3939 --changed rc file for new behavior
3936
3940
3937 2004-07-15 Fernando Perez <fperez@colorado.edu>
3941 2004-07-15 Fernando Perez <fperez@colorado.edu>
3938
3942
3939 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3943 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3940 cache was falling out of sync in bizarre manners when multi-line
3944 cache was falling out of sync in bizarre manners when multi-line
3941 input was present. Minor optimizations and cleanup.
3945 input was present. Minor optimizations and cleanup.
3942
3946
3943 (Logger): Remove old Changelog info for cleanup. This is the
3947 (Logger): Remove old Changelog info for cleanup. This is the
3944 information which was there from Janko's original code:
3948 information which was there from Janko's original code:
3945
3949
3946 Changes to Logger: - made the default log filename a parameter
3950 Changes to Logger: - made the default log filename a parameter
3947
3951
3948 - put a check for lines beginning with !@? in log(). Needed
3952 - put a check for lines beginning with !@? in log(). Needed
3949 (even if the handlers properly log their lines) for mid-session
3953 (even if the handlers properly log their lines) for mid-session
3950 logging activation to work properly. Without this, lines logged
3954 logging activation to work properly. Without this, lines logged
3951 in mid session, which get read from the cache, would end up
3955 in mid session, which get read from the cache, would end up
3952 'bare' (with !@? in the open) in the log. Now they are caught
3956 'bare' (with !@? in the open) in the log. Now they are caught
3953 and prepended with a #.
3957 and prepended with a #.
3954
3958
3955 * IPython/iplib.py (InteractiveShell.init_readline): added check
3959 * IPython/iplib.py (InteractiveShell.init_readline): added check
3956 in case MagicCompleter fails to be defined, so we don't crash.
3960 in case MagicCompleter fails to be defined, so we don't crash.
3957
3961
3958 2004-07-13 Fernando Perez <fperez@colorado.edu>
3962 2004-07-13 Fernando Perez <fperez@colorado.edu>
3959
3963
3960 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3964 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3961 of EPS if the requested filename ends in '.eps'.
3965 of EPS if the requested filename ends in '.eps'.
3962
3966
3963 2004-07-04 Fernando Perez <fperez@colorado.edu>
3967 2004-07-04 Fernando Perez <fperez@colorado.edu>
3964
3968
3965 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3969 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3966 escaping of quotes when calling the shell.
3970 escaping of quotes when calling the shell.
3967
3971
3968 2004-07-02 Fernando Perez <fperez@colorado.edu>
3972 2004-07-02 Fernando Perez <fperez@colorado.edu>
3969
3973
3970 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3974 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3971 gettext not working because we were clobbering '_'. Fixes
3975 gettext not working because we were clobbering '_'. Fixes
3972 http://www.scipy.net/roundup/ipython/issue6.
3976 http://www.scipy.net/roundup/ipython/issue6.
3973
3977
3974 2004-07-01 Fernando Perez <fperez@colorado.edu>
3978 2004-07-01 Fernando Perez <fperez@colorado.edu>
3975
3979
3976 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3980 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3977 into @cd. Patch by Ville.
3981 into @cd. Patch by Ville.
3978
3982
3979 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3983 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3980 new function to store things after ipmaker runs. Patch by Ville.
3984 new function to store things after ipmaker runs. Patch by Ville.
3981 Eventually this will go away once ipmaker is removed and the class
3985 Eventually this will go away once ipmaker is removed and the class
3982 gets cleaned up, but for now it's ok. Key functionality here is
3986 gets cleaned up, but for now it's ok. Key functionality here is
3983 the addition of the persistent storage mechanism, a dict for
3987 the addition of the persistent storage mechanism, a dict for
3984 keeping data across sessions (for now just bookmarks, but more can
3988 keeping data across sessions (for now just bookmarks, but more can
3985 be implemented later).
3989 be implemented later).
3986
3990
3987 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3991 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3988 persistent across sections. Patch by Ville, I modified it
3992 persistent across sections. Patch by Ville, I modified it
3989 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3993 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3990 added a '-l' option to list all bookmarks.
3994 added a '-l' option to list all bookmarks.
3991
3995
3992 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3996 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3993 center for cleanup. Registered with atexit.register(). I moved
3997 center for cleanup. Registered with atexit.register(). I moved
3994 here the old exit_cleanup(). After a patch by Ville.
3998 here the old exit_cleanup(). After a patch by Ville.
3995
3999
3996 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4000 * IPython/Magic.py (get_py_filename): added '~' to the accepted
3997 characters in the hacked shlex_split for python 2.2.
4001 characters in the hacked shlex_split for python 2.2.
3998
4002
3999 * IPython/iplib.py (file_matches): more fixes to filenames with
4003 * IPython/iplib.py (file_matches): more fixes to filenames with
4000 whitespace in them. It's not perfect, but limitations in python's
4004 whitespace in them. It's not perfect, but limitations in python's
4001 readline make it impossible to go further.
4005 readline make it impossible to go further.
4002
4006
4003 2004-06-29 Fernando Perez <fperez@colorado.edu>
4007 2004-06-29 Fernando Perez <fperez@colorado.edu>
4004
4008
4005 * IPython/iplib.py (file_matches): escape whitespace correctly in
4009 * IPython/iplib.py (file_matches): escape whitespace correctly in
4006 filename completions. Bug reported by Ville.
4010 filename completions. Bug reported by Ville.
4007
4011
4008 2004-06-28 Fernando Perez <fperez@colorado.edu>
4012 2004-06-28 Fernando Perez <fperez@colorado.edu>
4009
4013
4010 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4014 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4011 the history file will be called 'history-PROFNAME' (or just
4015 the history file will be called 'history-PROFNAME' (or just
4012 'history' if no profile is loaded). I was getting annoyed at
4016 'history' if no profile is loaded). I was getting annoyed at
4013 getting my Numerical work history clobbered by pysh sessions.
4017 getting my Numerical work history clobbered by pysh sessions.
4014
4018
4015 * IPython/iplib.py (InteractiveShell.__init__): Internal
4019 * IPython/iplib.py (InteractiveShell.__init__): Internal
4016 getoutputerror() function so that we can honor the system_verbose
4020 getoutputerror() function so that we can honor the system_verbose
4017 flag for _all_ system calls. I also added escaping of #
4021 flag for _all_ system calls. I also added escaping of #
4018 characters here to avoid confusing Itpl.
4022 characters here to avoid confusing Itpl.
4019
4023
4020 * IPython/Magic.py (shlex_split): removed call to shell in
4024 * IPython/Magic.py (shlex_split): removed call to shell in
4021 parse_options and replaced it with shlex.split(). The annoying
4025 parse_options and replaced it with shlex.split(). The annoying
4022 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4026 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4023 to backport it from 2.3, with several frail hacks (the shlex
4027 to backport it from 2.3, with several frail hacks (the shlex
4024 module is rather limited in 2.2). Thanks to a suggestion by Ville
4028 module is rather limited in 2.2). Thanks to a suggestion by Ville
4025 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4029 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4026 problem.
4030 problem.
4027
4031
4028 (Magic.magic_system_verbose): new toggle to print the actual
4032 (Magic.magic_system_verbose): new toggle to print the actual
4029 system calls made by ipython. Mainly for debugging purposes.
4033 system calls made by ipython. Mainly for debugging purposes.
4030
4034
4031 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4035 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4032 doesn't support persistence. Reported (and fix suggested) by
4036 doesn't support persistence. Reported (and fix suggested) by
4033 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4037 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4034
4038
4035 2004-06-26 Fernando Perez <fperez@colorado.edu>
4039 2004-06-26 Fernando Perez <fperez@colorado.edu>
4036
4040
4037 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4041 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4038 continue prompts.
4042 continue prompts.
4039
4043
4040 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4044 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4041 function (basically a big docstring) and a few more things here to
4045 function (basically a big docstring) and a few more things here to
4042 speedup startup. pysh.py is now very lightweight. We want because
4046 speedup startup. pysh.py is now very lightweight. We want because
4043 it gets execfile'd, while InterpreterExec gets imported, so
4047 it gets execfile'd, while InterpreterExec gets imported, so
4044 byte-compilation saves time.
4048 byte-compilation saves time.
4045
4049
4046 2004-06-25 Fernando Perez <fperez@colorado.edu>
4050 2004-06-25 Fernando Perez <fperez@colorado.edu>
4047
4051
4048 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4052 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4049 -NUM', which was recently broken.
4053 -NUM', which was recently broken.
4050
4054
4051 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4055 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4052 in multi-line input (but not !!, which doesn't make sense there).
4056 in multi-line input (but not !!, which doesn't make sense there).
4053
4057
4054 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4058 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4055 It's just too useful, and people can turn it off in the less
4059 It's just too useful, and people can turn it off in the less
4056 common cases where it's a problem.
4060 common cases where it's a problem.
4057
4061
4058 2004-06-24 Fernando Perez <fperez@colorado.edu>
4062 2004-06-24 Fernando Perez <fperez@colorado.edu>
4059
4063
4060 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4064 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4061 special syntaxes (like alias calling) is now allied in multi-line
4065 special syntaxes (like alias calling) is now allied in multi-line
4062 input. This is still _very_ experimental, but it's necessary for
4066 input. This is still _very_ experimental, but it's necessary for
4063 efficient shell usage combining python looping syntax with system
4067 efficient shell usage combining python looping syntax with system
4064 calls. For now it's restricted to aliases, I don't think it
4068 calls. For now it's restricted to aliases, I don't think it
4065 really even makes sense to have this for magics.
4069 really even makes sense to have this for magics.
4066
4070
4067 2004-06-23 Fernando Perez <fperez@colorado.edu>
4071 2004-06-23 Fernando Perez <fperez@colorado.edu>
4068
4072
4069 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4073 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4070 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4074 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4071
4075
4072 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4076 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4073 extensions under Windows (after code sent by Gary Bishop). The
4077 extensions under Windows (after code sent by Gary Bishop). The
4074 extensions considered 'executable' are stored in IPython's rc
4078 extensions considered 'executable' are stored in IPython's rc
4075 structure as win_exec_ext.
4079 structure as win_exec_ext.
4076
4080
4077 * IPython/genutils.py (shell): new function, like system() but
4081 * IPython/genutils.py (shell): new function, like system() but
4078 without return value. Very useful for interactive shell work.
4082 without return value. Very useful for interactive shell work.
4079
4083
4080 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4084 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4081 delete aliases.
4085 delete aliases.
4082
4086
4083 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4087 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4084 sure that the alias table doesn't contain python keywords.
4088 sure that the alias table doesn't contain python keywords.
4085
4089
4086 2004-06-21 Fernando Perez <fperez@colorado.edu>
4090 2004-06-21 Fernando Perez <fperez@colorado.edu>
4087
4091
4088 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4092 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4089 non-existent items are found in $PATH. Reported by Thorsten.
4093 non-existent items are found in $PATH. Reported by Thorsten.
4090
4094
4091 2004-06-20 Fernando Perez <fperez@colorado.edu>
4095 2004-06-20 Fernando Perez <fperez@colorado.edu>
4092
4096
4093 * IPython/iplib.py (complete): modified the completer so that the
4097 * IPython/iplib.py (complete): modified the completer so that the
4094 order of priorities can be easily changed at runtime.
4098 order of priorities can be easily changed at runtime.
4095
4099
4096 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4100 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4097 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4101 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4098
4102
4099 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4103 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4100 expand Python variables prepended with $ in all system calls. The
4104 expand Python variables prepended with $ in all system calls. The
4101 same was done to InteractiveShell.handle_shell_escape. Now all
4105 same was done to InteractiveShell.handle_shell_escape. Now all
4102 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4106 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4103 expansion of python variables and expressions according to the
4107 expansion of python variables and expressions according to the
4104 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4108 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4105
4109
4106 Though PEP-215 has been rejected, a similar (but simpler) one
4110 Though PEP-215 has been rejected, a similar (but simpler) one
4107 seems like it will go into Python 2.4, PEP-292 -
4111 seems like it will go into Python 2.4, PEP-292 -
4108 http://www.python.org/peps/pep-0292.html.
4112 http://www.python.org/peps/pep-0292.html.
4109
4113
4110 I'll keep the full syntax of PEP-215, since IPython has since the
4114 I'll keep the full syntax of PEP-215, since IPython has since the
4111 start used Ka-Ping Yee's reference implementation discussed there
4115 start used Ka-Ping Yee's reference implementation discussed there
4112 (Itpl), and I actually like the powerful semantics it offers.
4116 (Itpl), and I actually like the powerful semantics it offers.
4113
4117
4114 In order to access normal shell variables, the $ has to be escaped
4118 In order to access normal shell variables, the $ has to be escaped
4115 via an extra $. For example:
4119 via an extra $. For example:
4116
4120
4117 In [7]: PATH='a python variable'
4121 In [7]: PATH='a python variable'
4118
4122
4119 In [8]: !echo $PATH
4123 In [8]: !echo $PATH
4120 a python variable
4124 a python variable
4121
4125
4122 In [9]: !echo $$PATH
4126 In [9]: !echo $$PATH
4123 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4127 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4124
4128
4125 (Magic.parse_options): escape $ so the shell doesn't evaluate
4129 (Magic.parse_options): escape $ so the shell doesn't evaluate
4126 things prematurely.
4130 things prematurely.
4127
4131
4128 * IPython/iplib.py (InteractiveShell.call_alias): added the
4132 * IPython/iplib.py (InteractiveShell.call_alias): added the
4129 ability for aliases to expand python variables via $.
4133 ability for aliases to expand python variables via $.
4130
4134
4131 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4135 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4132 system, now there's a @rehash/@rehashx pair of magics. These work
4136 system, now there's a @rehash/@rehashx pair of magics. These work
4133 like the csh rehash command, and can be invoked at any time. They
4137 like the csh rehash command, and can be invoked at any time. They
4134 build a table of aliases to everything in the user's $PATH
4138 build a table of aliases to everything in the user's $PATH
4135 (@rehash uses everything, @rehashx is slower but only adds
4139 (@rehash uses everything, @rehashx is slower but only adds
4136 executable files). With this, the pysh.py-based shell profile can
4140 executable files). With this, the pysh.py-based shell profile can
4137 now simply call rehash upon startup, and full access to all
4141 now simply call rehash upon startup, and full access to all
4138 programs in the user's path is obtained.
4142 programs in the user's path is obtained.
4139
4143
4140 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4144 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4141 functionality is now fully in place. I removed the old dynamic
4145 functionality is now fully in place. I removed the old dynamic
4142 code generation based approach, in favor of a much lighter one
4146 code generation based approach, in favor of a much lighter one
4143 based on a simple dict. The advantage is that this allows me to
4147 based on a simple dict. The advantage is that this allows me to
4144 now have thousands of aliases with negligible cost (unthinkable
4148 now have thousands of aliases with negligible cost (unthinkable
4145 with the old system).
4149 with the old system).
4146
4150
4147 2004-06-19 Fernando Perez <fperez@colorado.edu>
4151 2004-06-19 Fernando Perez <fperez@colorado.edu>
4148
4152
4149 * IPython/iplib.py (__init__): extended MagicCompleter class to
4153 * IPython/iplib.py (__init__): extended MagicCompleter class to
4150 also complete (last in priority) on user aliases.
4154 also complete (last in priority) on user aliases.
4151
4155
4152 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4156 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4153 call to eval.
4157 call to eval.
4154 (ItplNS.__init__): Added a new class which functions like Itpl,
4158 (ItplNS.__init__): Added a new class which functions like Itpl,
4155 but allows configuring the namespace for the evaluation to occur
4159 but allows configuring the namespace for the evaluation to occur
4156 in.
4160 in.
4157
4161
4158 2004-06-18 Fernando Perez <fperez@colorado.edu>
4162 2004-06-18 Fernando Perez <fperez@colorado.edu>
4159
4163
4160 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4164 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4161 better message when 'exit' or 'quit' are typed (a common newbie
4165 better message when 'exit' or 'quit' are typed (a common newbie
4162 confusion).
4166 confusion).
4163
4167
4164 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4168 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4165 check for Windows users.
4169 check for Windows users.
4166
4170
4167 * IPython/iplib.py (InteractiveShell.user_setup): removed
4171 * IPython/iplib.py (InteractiveShell.user_setup): removed
4168 disabling of colors for Windows. I'll test at runtime and issue a
4172 disabling of colors for Windows. I'll test at runtime and issue a
4169 warning if Gary's readline isn't found, as to nudge users to
4173 warning if Gary's readline isn't found, as to nudge users to
4170 download it.
4174 download it.
4171
4175
4172 2004-06-16 Fernando Perez <fperez@colorado.edu>
4176 2004-06-16 Fernando Perez <fperez@colorado.edu>
4173
4177
4174 * IPython/genutils.py (Stream.__init__): changed to print errors
4178 * IPython/genutils.py (Stream.__init__): changed to print errors
4175 to sys.stderr. I had a circular dependency here. Now it's
4179 to sys.stderr. I had a circular dependency here. Now it's
4176 possible to run ipython as IDLE's shell (consider this pre-alpha,
4180 possible to run ipython as IDLE's shell (consider this pre-alpha,
4177 since true stdout things end up in the starting terminal instead
4181 since true stdout things end up in the starting terminal instead
4178 of IDLE's out).
4182 of IDLE's out).
4179
4183
4180 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4184 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4181 users who haven't # updated their prompt_in2 definitions. Remove
4185 users who haven't # updated their prompt_in2 definitions. Remove
4182 eventually.
4186 eventually.
4183 (multiple_replace): added credit to original ASPN recipe.
4187 (multiple_replace): added credit to original ASPN recipe.
4184
4188
4185 2004-06-15 Fernando Perez <fperez@colorado.edu>
4189 2004-06-15 Fernando Perez <fperez@colorado.edu>
4186
4190
4187 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4191 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4188 list of auto-defined aliases.
4192 list of auto-defined aliases.
4189
4193
4190 2004-06-13 Fernando Perez <fperez@colorado.edu>
4194 2004-06-13 Fernando Perez <fperez@colorado.edu>
4191
4195
4192 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4196 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4193 install was really requested (so setup.py can be used for other
4197 install was really requested (so setup.py can be used for other
4194 things under Windows).
4198 things under Windows).
4195
4199
4196 2004-06-10 Fernando Perez <fperez@colorado.edu>
4200 2004-06-10 Fernando Perez <fperez@colorado.edu>
4197
4201
4198 * IPython/Logger.py (Logger.create_log): Manually remove any old
4202 * IPython/Logger.py (Logger.create_log): Manually remove any old
4199 backup, since os.remove may fail under Windows. Fixes bug
4203 backup, since os.remove may fail under Windows. Fixes bug
4200 reported by Thorsten.
4204 reported by Thorsten.
4201
4205
4202 2004-06-09 Fernando Perez <fperez@colorado.edu>
4206 2004-06-09 Fernando Perez <fperez@colorado.edu>
4203
4207
4204 * examples/example-embed.py: fixed all references to %n (replaced
4208 * examples/example-embed.py: fixed all references to %n (replaced
4205 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4209 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4206 for all examples and the manual as well.
4210 for all examples and the manual as well.
4207
4211
4208 2004-06-08 Fernando Perez <fperez@colorado.edu>
4212 2004-06-08 Fernando Perez <fperez@colorado.edu>
4209
4213
4210 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4214 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4211 alignment and color management. All 3 prompt subsystems now
4215 alignment and color management. All 3 prompt subsystems now
4212 inherit from BasePrompt.
4216 inherit from BasePrompt.
4213
4217
4214 * tools/release: updates for windows installer build and tag rpms
4218 * tools/release: updates for windows installer build and tag rpms
4215 with python version (since paths are fixed).
4219 with python version (since paths are fixed).
4216
4220
4217 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4221 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4218 which will become eventually obsolete. Also fixed the default
4222 which will become eventually obsolete. Also fixed the default
4219 prompt_in2 to use \D, so at least new users start with the correct
4223 prompt_in2 to use \D, so at least new users start with the correct
4220 defaults.
4224 defaults.
4221 WARNING: Users with existing ipythonrc files will need to apply
4225 WARNING: Users with existing ipythonrc files will need to apply
4222 this fix manually!
4226 this fix manually!
4223
4227
4224 * setup.py: make windows installer (.exe). This is finally the
4228 * setup.py: make windows installer (.exe). This is finally the
4225 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4229 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4226 which I hadn't included because it required Python 2.3 (or recent
4230 which I hadn't included because it required Python 2.3 (or recent
4227 distutils).
4231 distutils).
4228
4232
4229 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4233 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4230 usage of new '\D' escape.
4234 usage of new '\D' escape.
4231
4235
4232 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4236 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4233 lacks os.getuid())
4237 lacks os.getuid())
4234 (CachedOutput.set_colors): Added the ability to turn coloring
4238 (CachedOutput.set_colors): Added the ability to turn coloring
4235 on/off with @colors even for manually defined prompt colors. It
4239 on/off with @colors even for manually defined prompt colors. It
4236 uses a nasty global, but it works safely and via the generic color
4240 uses a nasty global, but it works safely and via the generic color
4237 handling mechanism.
4241 handling mechanism.
4238 (Prompt2.__init__): Introduced new escape '\D' for continuation
4242 (Prompt2.__init__): Introduced new escape '\D' for continuation
4239 prompts. It represents the counter ('\#') as dots.
4243 prompts. It represents the counter ('\#') as dots.
4240 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4244 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4241 need to update their ipythonrc files and replace '%n' with '\D' in
4245 need to update their ipythonrc files and replace '%n' with '\D' in
4242 their prompt_in2 settings everywhere. Sorry, but there's
4246 their prompt_in2 settings everywhere. Sorry, but there's
4243 otherwise no clean way to get all prompts to properly align. The
4247 otherwise no clean way to get all prompts to properly align. The
4244 ipythonrc shipped with IPython has been updated.
4248 ipythonrc shipped with IPython has been updated.
4245
4249
4246 2004-06-07 Fernando Perez <fperez@colorado.edu>
4250 2004-06-07 Fernando Perez <fperez@colorado.edu>
4247
4251
4248 * setup.py (isfile): Pass local_icons option to latex2html, so the
4252 * setup.py (isfile): Pass local_icons option to latex2html, so the
4249 resulting HTML file is self-contained. Thanks to
4253 resulting HTML file is self-contained. Thanks to
4250 dryice-AT-liu.com.cn for the tip.
4254 dryice-AT-liu.com.cn for the tip.
4251
4255
4252 * pysh.py: I created a new profile 'shell', which implements a
4256 * pysh.py: I created a new profile 'shell', which implements a
4253 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4257 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4254 system shell, nor will it become one anytime soon. It's mainly
4258 system shell, nor will it become one anytime soon. It's mainly
4255 meant to illustrate the use of the new flexible bash-like prompts.
4259 meant to illustrate the use of the new flexible bash-like prompts.
4256 I guess it could be used by hardy souls for true shell management,
4260 I guess it could be used by hardy souls for true shell management,
4257 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4261 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4258 profile. This uses the InterpreterExec extension provided by
4262 profile. This uses the InterpreterExec extension provided by
4259 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4263 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4260
4264
4261 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4265 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4262 auto-align itself with the length of the previous input prompt
4266 auto-align itself with the length of the previous input prompt
4263 (taking into account the invisible color escapes).
4267 (taking into account the invisible color escapes).
4264 (CachedOutput.__init__): Large restructuring of this class. Now
4268 (CachedOutput.__init__): Large restructuring of this class. Now
4265 all three prompts (primary1, primary2, output) are proper objects,
4269 all three prompts (primary1, primary2, output) are proper objects,
4266 managed by the 'parent' CachedOutput class. The code is still a
4270 managed by the 'parent' CachedOutput class. The code is still a
4267 bit hackish (all prompts share state via a pointer to the cache),
4271 bit hackish (all prompts share state via a pointer to the cache),
4268 but it's overall far cleaner than before.
4272 but it's overall far cleaner than before.
4269
4273
4270 * IPython/genutils.py (getoutputerror): modified to add verbose,
4274 * IPython/genutils.py (getoutputerror): modified to add verbose,
4271 debug and header options. This makes the interface of all getout*
4275 debug and header options. This makes the interface of all getout*
4272 functions uniform.
4276 functions uniform.
4273 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4277 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4274
4278
4275 * IPython/Magic.py (Magic.default_option): added a function to
4279 * IPython/Magic.py (Magic.default_option): added a function to
4276 allow registering default options for any magic command. This
4280 allow registering default options for any magic command. This
4277 makes it easy to have profiles which customize the magics globally
4281 makes it easy to have profiles which customize the magics globally
4278 for a certain use. The values set through this function are
4282 for a certain use. The values set through this function are
4279 picked up by the parse_options() method, which all magics should
4283 picked up by the parse_options() method, which all magics should
4280 use to parse their options.
4284 use to parse their options.
4281
4285
4282 * IPython/genutils.py (warn): modified the warnings framework to
4286 * IPython/genutils.py (warn): modified the warnings framework to
4283 use the Term I/O class. I'm trying to slowly unify all of
4287 use the Term I/O class. I'm trying to slowly unify all of
4284 IPython's I/O operations to pass through Term.
4288 IPython's I/O operations to pass through Term.
4285
4289
4286 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4290 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4287 the secondary prompt to correctly match the length of the primary
4291 the secondary prompt to correctly match the length of the primary
4288 one for any prompt. Now multi-line code will properly line up
4292 one for any prompt. Now multi-line code will properly line up
4289 even for path dependent prompts, such as the new ones available
4293 even for path dependent prompts, such as the new ones available
4290 via the prompt_specials.
4294 via the prompt_specials.
4291
4295
4292 2004-06-06 Fernando Perez <fperez@colorado.edu>
4296 2004-06-06 Fernando Perez <fperez@colorado.edu>
4293
4297
4294 * IPython/Prompts.py (prompt_specials): Added the ability to have
4298 * IPython/Prompts.py (prompt_specials): Added the ability to have
4295 bash-like special sequences in the prompts, which get
4299 bash-like special sequences in the prompts, which get
4296 automatically expanded. Things like hostname, current working
4300 automatically expanded. Things like hostname, current working
4297 directory and username are implemented already, but it's easy to
4301 directory and username are implemented already, but it's easy to
4298 add more in the future. Thanks to a patch by W.J. van der Laan
4302 add more in the future. Thanks to a patch by W.J. van der Laan
4299 <gnufnork-AT-hetdigitalegat.nl>
4303 <gnufnork-AT-hetdigitalegat.nl>
4300 (prompt_specials): Added color support for prompt strings, so
4304 (prompt_specials): Added color support for prompt strings, so
4301 users can define arbitrary color setups for their prompts.
4305 users can define arbitrary color setups for their prompts.
4302
4306
4303 2004-06-05 Fernando Perez <fperez@colorado.edu>
4307 2004-06-05 Fernando Perez <fperez@colorado.edu>
4304
4308
4305 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4309 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4306 code to load Gary Bishop's readline and configure it
4310 code to load Gary Bishop's readline and configure it
4307 automatically. Thanks to Gary for help on this.
4311 automatically. Thanks to Gary for help on this.
4308
4312
4309 2004-06-01 Fernando Perez <fperez@colorado.edu>
4313 2004-06-01 Fernando Perez <fperez@colorado.edu>
4310
4314
4311 * IPython/Logger.py (Logger.create_log): fix bug for logging
4315 * IPython/Logger.py (Logger.create_log): fix bug for logging
4312 with no filename (previous fix was incomplete).
4316 with no filename (previous fix was incomplete).
4313
4317
4314 2004-05-25 Fernando Perez <fperez@colorado.edu>
4318 2004-05-25 Fernando Perez <fperez@colorado.edu>
4315
4319
4316 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4320 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4317 parens would get passed to the shell.
4321 parens would get passed to the shell.
4318
4322
4319 2004-05-20 Fernando Perez <fperez@colorado.edu>
4323 2004-05-20 Fernando Perez <fperez@colorado.edu>
4320
4324
4321 * IPython/Magic.py (Magic.magic_prun): changed default profile
4325 * IPython/Magic.py (Magic.magic_prun): changed default profile
4322 sort order to 'time' (the more common profiling need).
4326 sort order to 'time' (the more common profiling need).
4323
4327
4324 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4328 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4325 so that source code shown is guaranteed in sync with the file on
4329 so that source code shown is guaranteed in sync with the file on
4326 disk (also changed in psource). Similar fix to the one for
4330 disk (also changed in psource). Similar fix to the one for
4327 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4331 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4328 <yann.ledu-AT-noos.fr>.
4332 <yann.ledu-AT-noos.fr>.
4329
4333
4330 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4334 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4331 with a single option would not be correctly parsed. Closes
4335 with a single option would not be correctly parsed. Closes
4332 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4336 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4333 introduced in 0.6.0 (on 2004-05-06).
4337 introduced in 0.6.0 (on 2004-05-06).
4334
4338
4335 2004-05-13 *** Released version 0.6.0
4339 2004-05-13 *** Released version 0.6.0
4336
4340
4337 2004-05-13 Fernando Perez <fperez@colorado.edu>
4341 2004-05-13 Fernando Perez <fperez@colorado.edu>
4338
4342
4339 * debian/: Added debian/ directory to CVS, so that debian support
4343 * debian/: Added debian/ directory to CVS, so that debian support
4340 is publicly accessible. The debian package is maintained by Jack
4344 is publicly accessible. The debian package is maintained by Jack
4341 Moffit <jack-AT-xiph.org>.
4345 Moffit <jack-AT-xiph.org>.
4342
4346
4343 * Documentation: included the notes about an ipython-based system
4347 * Documentation: included the notes about an ipython-based system
4344 shell (the hypothetical 'pysh') into the new_design.pdf document,
4348 shell (the hypothetical 'pysh') into the new_design.pdf document,
4345 so that these ideas get distributed to users along with the
4349 so that these ideas get distributed to users along with the
4346 official documentation.
4350 official documentation.
4347
4351
4348 2004-05-10 Fernando Perez <fperez@colorado.edu>
4352 2004-05-10 Fernando Perez <fperez@colorado.edu>
4349
4353
4350 * IPython/Logger.py (Logger.create_log): fix recently introduced
4354 * IPython/Logger.py (Logger.create_log): fix recently introduced
4351 bug (misindented line) where logstart would fail when not given an
4355 bug (misindented line) where logstart would fail when not given an
4352 explicit filename.
4356 explicit filename.
4353
4357
4354 2004-05-09 Fernando Perez <fperez@colorado.edu>
4358 2004-05-09 Fernando Perez <fperez@colorado.edu>
4355
4359
4356 * IPython/Magic.py (Magic.parse_options): skip system call when
4360 * IPython/Magic.py (Magic.parse_options): skip system call when
4357 there are no options to look for. Faster, cleaner for the common
4361 there are no options to look for. Faster, cleaner for the common
4358 case.
4362 case.
4359
4363
4360 * Documentation: many updates to the manual: describing Windows
4364 * Documentation: many updates to the manual: describing Windows
4361 support better, Gnuplot updates, credits, misc small stuff. Also
4365 support better, Gnuplot updates, credits, misc small stuff. Also
4362 updated the new_design doc a bit.
4366 updated the new_design doc a bit.
4363
4367
4364 2004-05-06 *** Released version 0.6.0.rc1
4368 2004-05-06 *** Released version 0.6.0.rc1
4365
4369
4366 2004-05-06 Fernando Perez <fperez@colorado.edu>
4370 2004-05-06 Fernando Perez <fperez@colorado.edu>
4367
4371
4368 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4372 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4369 operations to use the vastly more efficient list/''.join() method.
4373 operations to use the vastly more efficient list/''.join() method.
4370 (FormattedTB.text): Fix
4374 (FormattedTB.text): Fix
4371 http://www.scipy.net/roundup/ipython/issue12 - exception source
4375 http://www.scipy.net/roundup/ipython/issue12 - exception source
4372 extract not updated after reload. Thanks to Mike Salib
4376 extract not updated after reload. Thanks to Mike Salib
4373 <msalib-AT-mit.edu> for pinning the source of the problem.
4377 <msalib-AT-mit.edu> for pinning the source of the problem.
4374 Fortunately, the solution works inside ipython and doesn't require
4378 Fortunately, the solution works inside ipython and doesn't require
4375 any changes to python proper.
4379 any changes to python proper.
4376
4380
4377 * IPython/Magic.py (Magic.parse_options): Improved to process the
4381 * IPython/Magic.py (Magic.parse_options): Improved to process the
4378 argument list as a true shell would (by actually using the
4382 argument list as a true shell would (by actually using the
4379 underlying system shell). This way, all @magics automatically get
4383 underlying system shell). This way, all @magics automatically get
4380 shell expansion for variables. Thanks to a comment by Alex
4384 shell expansion for variables. Thanks to a comment by Alex
4381 Schmolck.
4385 Schmolck.
4382
4386
4383 2004-04-04 Fernando Perez <fperez@colorado.edu>
4387 2004-04-04 Fernando Perez <fperez@colorado.edu>
4384
4388
4385 * IPython/iplib.py (InteractiveShell.interact): Added a special
4389 * IPython/iplib.py (InteractiveShell.interact): Added a special
4386 trap for a debugger quit exception, which is basically impossible
4390 trap for a debugger quit exception, which is basically impossible
4387 to handle by normal mechanisms, given what pdb does to the stack.
4391 to handle by normal mechanisms, given what pdb does to the stack.
4388 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4392 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4389
4393
4390 2004-04-03 Fernando Perez <fperez@colorado.edu>
4394 2004-04-03 Fernando Perez <fperez@colorado.edu>
4391
4395
4392 * IPython/genutils.py (Term): Standardized the names of the Term
4396 * IPython/genutils.py (Term): Standardized the names of the Term
4393 class streams to cin/cout/cerr, following C++ naming conventions
4397 class streams to cin/cout/cerr, following C++ naming conventions
4394 (I can't use in/out/err because 'in' is not a valid attribute
4398 (I can't use in/out/err because 'in' is not a valid attribute
4395 name).
4399 name).
4396
4400
4397 * IPython/iplib.py (InteractiveShell.interact): don't increment
4401 * IPython/iplib.py (InteractiveShell.interact): don't increment
4398 the prompt if there's no user input. By Daniel 'Dang' Griffith
4402 the prompt if there's no user input. By Daniel 'Dang' Griffith
4399 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4403 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4400 Francois Pinard.
4404 Francois Pinard.
4401
4405
4402 2004-04-02 Fernando Perez <fperez@colorado.edu>
4406 2004-04-02 Fernando Perez <fperez@colorado.edu>
4403
4407
4404 * IPython/genutils.py (Stream.__init__): Modified to survive at
4408 * IPython/genutils.py (Stream.__init__): Modified to survive at
4405 least importing in contexts where stdin/out/err aren't true file
4409 least importing in contexts where stdin/out/err aren't true file
4406 objects, such as PyCrust (they lack fileno() and mode). However,
4410 objects, such as PyCrust (they lack fileno() and mode). However,
4407 the recovery facilities which rely on these things existing will
4411 the recovery facilities which rely on these things existing will
4408 not work.
4412 not work.
4409
4413
4410 2004-04-01 Fernando Perez <fperez@colorado.edu>
4414 2004-04-01 Fernando Perez <fperez@colorado.edu>
4411
4415
4412 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4416 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4413 use the new getoutputerror() function, so it properly
4417 use the new getoutputerror() function, so it properly
4414 distinguishes stdout/err.
4418 distinguishes stdout/err.
4415
4419
4416 * IPython/genutils.py (getoutputerror): added a function to
4420 * IPython/genutils.py (getoutputerror): added a function to
4417 capture separately the standard output and error of a command.
4421 capture separately the standard output and error of a command.
4418 After a comment from dang on the mailing lists. This code is
4422 After a comment from dang on the mailing lists. This code is
4419 basically a modified version of commands.getstatusoutput(), from
4423 basically a modified version of commands.getstatusoutput(), from
4420 the standard library.
4424 the standard library.
4421
4425
4422 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4426 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4423 '!!' as a special syntax (shorthand) to access @sx.
4427 '!!' as a special syntax (shorthand) to access @sx.
4424
4428
4425 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4429 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4426 command and return its output as a list split on '\n'.
4430 command and return its output as a list split on '\n'.
4427
4431
4428 2004-03-31 Fernando Perez <fperez@colorado.edu>
4432 2004-03-31 Fernando Perez <fperez@colorado.edu>
4429
4433
4430 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4434 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4431 method to dictionaries used as FakeModule instances if they lack
4435 method to dictionaries used as FakeModule instances if they lack
4432 it. At least pydoc in python2.3 breaks for runtime-defined
4436 it. At least pydoc in python2.3 breaks for runtime-defined
4433 functions without this hack. At some point I need to _really_
4437 functions without this hack. At some point I need to _really_
4434 understand what FakeModule is doing, because it's a gross hack.
4438 understand what FakeModule is doing, because it's a gross hack.
4435 But it solves Arnd's problem for now...
4439 But it solves Arnd's problem for now...
4436
4440
4437 2004-02-27 Fernando Perez <fperez@colorado.edu>
4441 2004-02-27 Fernando Perez <fperez@colorado.edu>
4438
4442
4439 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4443 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4440 mode would behave erratically. Also increased the number of
4444 mode would behave erratically. Also increased the number of
4441 possible logs in rotate mod to 999. Thanks to Rod Holland
4445 possible logs in rotate mod to 999. Thanks to Rod Holland
4442 <rhh@StructureLABS.com> for the report and fixes.
4446 <rhh@StructureLABS.com> for the report and fixes.
4443
4447
4444 2004-02-26 Fernando Perez <fperez@colorado.edu>
4448 2004-02-26 Fernando Perez <fperez@colorado.edu>
4445
4449
4446 * IPython/genutils.py (page): Check that the curses module really
4450 * IPython/genutils.py (page): Check that the curses module really
4447 has the initscr attribute before trying to use it. For some
4451 has the initscr attribute before trying to use it. For some
4448 reason, the Solaris curses module is missing this. I think this
4452 reason, the Solaris curses module is missing this. I think this
4449 should be considered a Solaris python bug, but I'm not sure.
4453 should be considered a Solaris python bug, but I'm not sure.
4450
4454
4451 2004-01-17 Fernando Perez <fperez@colorado.edu>
4455 2004-01-17 Fernando Perez <fperez@colorado.edu>
4452
4456
4453 * IPython/genutils.py (Stream.__init__): Changes to try to make
4457 * IPython/genutils.py (Stream.__init__): Changes to try to make
4454 ipython robust against stdin/out/err being closed by the user.
4458 ipython robust against stdin/out/err being closed by the user.
4455 This is 'user error' (and blocks a normal python session, at least
4459 This is 'user error' (and blocks a normal python session, at least
4456 the stdout case). However, Ipython should be able to survive such
4460 the stdout case). However, Ipython should be able to survive such
4457 instances of abuse as gracefully as possible. To simplify the
4461 instances of abuse as gracefully as possible. To simplify the
4458 coding and maintain compatibility with Gary Bishop's Term
4462 coding and maintain compatibility with Gary Bishop's Term
4459 contributions, I've made use of classmethods for this. I think
4463 contributions, I've made use of classmethods for this. I think
4460 this introduces a dependency on python 2.2.
4464 this introduces a dependency on python 2.2.
4461
4465
4462 2004-01-13 Fernando Perez <fperez@colorado.edu>
4466 2004-01-13 Fernando Perez <fperez@colorado.edu>
4463
4467
4464 * IPython/numutils.py (exp_safe): simplified the code a bit and
4468 * IPython/numutils.py (exp_safe): simplified the code a bit and
4465 removed the need for importing the kinds module altogether.
4469 removed the need for importing the kinds module altogether.
4466
4470
4467 2004-01-06 Fernando Perez <fperez@colorado.edu>
4471 2004-01-06 Fernando Perez <fperez@colorado.edu>
4468
4472
4469 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4473 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4470 a magic function instead, after some community feedback. No
4474 a magic function instead, after some community feedback. No
4471 special syntax will exist for it, but its name is deliberately
4475 special syntax will exist for it, but its name is deliberately
4472 very short.
4476 very short.
4473
4477
4474 2003-12-20 Fernando Perez <fperez@colorado.edu>
4478 2003-12-20 Fernando Perez <fperez@colorado.edu>
4475
4479
4476 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4480 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4477 new functionality, to automagically assign the result of a shell
4481 new functionality, to automagically assign the result of a shell
4478 command to a variable. I'll solicit some community feedback on
4482 command to a variable. I'll solicit some community feedback on
4479 this before making it permanent.
4483 this before making it permanent.
4480
4484
4481 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4485 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4482 requested about callables for which inspect couldn't obtain a
4486 requested about callables for which inspect couldn't obtain a
4483 proper argspec. Thanks to a crash report sent by Etienne
4487 proper argspec. Thanks to a crash report sent by Etienne
4484 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4488 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4485
4489
4486 2003-12-09 Fernando Perez <fperez@colorado.edu>
4490 2003-12-09 Fernando Perez <fperez@colorado.edu>
4487
4491
4488 * IPython/genutils.py (page): patch for the pager to work across
4492 * IPython/genutils.py (page): patch for the pager to work across
4489 various versions of Windows. By Gary Bishop.
4493 various versions of Windows. By Gary Bishop.
4490
4494
4491 2003-12-04 Fernando Perez <fperez@colorado.edu>
4495 2003-12-04 Fernando Perez <fperez@colorado.edu>
4492
4496
4493 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4497 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4494 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4498 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4495 While I tested this and it looks ok, there may still be corner
4499 While I tested this and it looks ok, there may still be corner
4496 cases I've missed.
4500 cases I've missed.
4497
4501
4498 2003-12-01 Fernando Perez <fperez@colorado.edu>
4502 2003-12-01 Fernando Perez <fperez@colorado.edu>
4499
4503
4500 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4504 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4501 where a line like 'p,q=1,2' would fail because the automagic
4505 where a line like 'p,q=1,2' would fail because the automagic
4502 system would be triggered for @p.
4506 system would be triggered for @p.
4503
4507
4504 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4508 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4505 cleanups, code unmodified.
4509 cleanups, code unmodified.
4506
4510
4507 * IPython/genutils.py (Term): added a class for IPython to handle
4511 * IPython/genutils.py (Term): added a class for IPython to handle
4508 output. In most cases it will just be a proxy for stdout/err, but
4512 output. In most cases it will just be a proxy for stdout/err, but
4509 having this allows modifications to be made for some platforms,
4513 having this allows modifications to be made for some platforms,
4510 such as handling color escapes under Windows. All of this code
4514 such as handling color escapes under Windows. All of this code
4511 was contributed by Gary Bishop, with minor modifications by me.
4515 was contributed by Gary Bishop, with minor modifications by me.
4512 The actual changes affect many files.
4516 The actual changes affect many files.
4513
4517
4514 2003-11-30 Fernando Perez <fperez@colorado.edu>
4518 2003-11-30 Fernando Perez <fperez@colorado.edu>
4515
4519
4516 * IPython/iplib.py (file_matches): new completion code, courtesy
4520 * IPython/iplib.py (file_matches): new completion code, courtesy
4517 of Jeff Collins. This enables filename completion again under
4521 of Jeff Collins. This enables filename completion again under
4518 python 2.3, which disabled it at the C level.
4522 python 2.3, which disabled it at the C level.
4519
4523
4520 2003-11-11 Fernando Perez <fperez@colorado.edu>
4524 2003-11-11 Fernando Perez <fperez@colorado.edu>
4521
4525
4522 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4526 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4523 for Numeric.array(map(...)), but often convenient.
4527 for Numeric.array(map(...)), but often convenient.
4524
4528
4525 2003-11-05 Fernando Perez <fperez@colorado.edu>
4529 2003-11-05 Fernando Perez <fperez@colorado.edu>
4526
4530
4527 * IPython/numutils.py (frange): Changed a call from int() to
4531 * IPython/numutils.py (frange): Changed a call from int() to
4528 int(round()) to prevent a problem reported with arange() in the
4532 int(round()) to prevent a problem reported with arange() in the
4529 numpy list.
4533 numpy list.
4530
4534
4531 2003-10-06 Fernando Perez <fperez@colorado.edu>
4535 2003-10-06 Fernando Perez <fperez@colorado.edu>
4532
4536
4533 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4537 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4534 prevent crashes if sys lacks an argv attribute (it happens with
4538 prevent crashes if sys lacks an argv attribute (it happens with
4535 embedded interpreters which build a bare-bones sys module).
4539 embedded interpreters which build a bare-bones sys module).
4536 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4540 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4537
4541
4538 2003-09-24 Fernando Perez <fperez@colorado.edu>
4542 2003-09-24 Fernando Perez <fperez@colorado.edu>
4539
4543
4540 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4544 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4541 to protect against poorly written user objects where __getattr__
4545 to protect against poorly written user objects where __getattr__
4542 raises exceptions other than AttributeError. Thanks to a bug
4546 raises exceptions other than AttributeError. Thanks to a bug
4543 report by Oliver Sander <osander-AT-gmx.de>.
4547 report by Oliver Sander <osander-AT-gmx.de>.
4544
4548
4545 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4549 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4546 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4550 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4547
4551
4548 2003-09-09 Fernando Perez <fperez@colorado.edu>
4552 2003-09-09 Fernando Perez <fperez@colorado.edu>
4549
4553
4550 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4554 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4551 unpacking a list whith a callable as first element would
4555 unpacking a list whith a callable as first element would
4552 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4556 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4553 Collins.
4557 Collins.
4554
4558
4555 2003-08-25 *** Released version 0.5.0
4559 2003-08-25 *** Released version 0.5.0
4556
4560
4557 2003-08-22 Fernando Perez <fperez@colorado.edu>
4561 2003-08-22 Fernando Perez <fperez@colorado.edu>
4558
4562
4559 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4563 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4560 improperly defined user exceptions. Thanks to feedback from Mark
4564 improperly defined user exceptions. Thanks to feedback from Mark
4561 Russell <mrussell-AT-verio.net>.
4565 Russell <mrussell-AT-verio.net>.
4562
4566
4563 2003-08-20 Fernando Perez <fperez@colorado.edu>
4567 2003-08-20 Fernando Perez <fperez@colorado.edu>
4564
4568
4565 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4569 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4566 printing so that it would print multi-line string forms starting
4570 printing so that it would print multi-line string forms starting
4567 with a new line. This way the formatting is better respected for
4571 with a new line. This way the formatting is better respected for
4568 objects which work hard to make nice string forms.
4572 objects which work hard to make nice string forms.
4569
4573
4570 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4574 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4571 autocall would overtake data access for objects with both
4575 autocall would overtake data access for objects with both
4572 __getitem__ and __call__.
4576 __getitem__ and __call__.
4573
4577
4574 2003-08-19 *** Released version 0.5.0-rc1
4578 2003-08-19 *** Released version 0.5.0-rc1
4575
4579
4576 2003-08-19 Fernando Perez <fperez@colorado.edu>
4580 2003-08-19 Fernando Perez <fperez@colorado.edu>
4577
4581
4578 * IPython/deep_reload.py (load_tail): single tiny change here
4582 * IPython/deep_reload.py (load_tail): single tiny change here
4579 seems to fix the long-standing bug of dreload() failing to work
4583 seems to fix the long-standing bug of dreload() failing to work
4580 for dotted names. But this module is pretty tricky, so I may have
4584 for dotted names. But this module is pretty tricky, so I may have
4581 missed some subtlety. Needs more testing!.
4585 missed some subtlety. Needs more testing!.
4582
4586
4583 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4587 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4584 exceptions which have badly implemented __str__ methods.
4588 exceptions which have badly implemented __str__ methods.
4585 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4589 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4586 which I've been getting reports about from Python 2.3 users. I
4590 which I've been getting reports about from Python 2.3 users. I
4587 wish I had a simple test case to reproduce the problem, so I could
4591 wish I had a simple test case to reproduce the problem, so I could
4588 either write a cleaner workaround or file a bug report if
4592 either write a cleaner workaround or file a bug report if
4589 necessary.
4593 necessary.
4590
4594
4591 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4595 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4592 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4596 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4593 a bug report by Tjabo Kloppenburg.
4597 a bug report by Tjabo Kloppenburg.
4594
4598
4595 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4599 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4596 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4600 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4597 seems rather unstable. Thanks to a bug report by Tjabo
4601 seems rather unstable. Thanks to a bug report by Tjabo
4598 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4602 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4599
4603
4600 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4604 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4601 this out soon because of the critical fixes in the inner loop for
4605 this out soon because of the critical fixes in the inner loop for
4602 generators.
4606 generators.
4603
4607
4604 * IPython/Magic.py (Magic.getargspec): removed. This (and
4608 * IPython/Magic.py (Magic.getargspec): removed. This (and
4605 _get_def) have been obsoleted by OInspect for a long time, I
4609 _get_def) have been obsoleted by OInspect for a long time, I
4606 hadn't noticed that they were dead code.
4610 hadn't noticed that they were dead code.
4607 (Magic._ofind): restored _ofind functionality for a few literals
4611 (Magic._ofind): restored _ofind functionality for a few literals
4608 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4612 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4609 for things like "hello".capitalize?, since that would require a
4613 for things like "hello".capitalize?, since that would require a
4610 potentially dangerous eval() again.
4614 potentially dangerous eval() again.
4611
4615
4612 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4616 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4613 logic a bit more to clean up the escapes handling and minimize the
4617 logic a bit more to clean up the escapes handling and minimize the
4614 use of _ofind to only necessary cases. The interactive 'feel' of
4618 use of _ofind to only necessary cases. The interactive 'feel' of
4615 IPython should have improved quite a bit with the changes in
4619 IPython should have improved quite a bit with the changes in
4616 _prefilter and _ofind (besides being far safer than before).
4620 _prefilter and _ofind (besides being far safer than before).
4617
4621
4618 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4622 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4619 obscure, never reported). Edit would fail to find the object to
4623 obscure, never reported). Edit would fail to find the object to
4620 edit under some circumstances.
4624 edit under some circumstances.
4621 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4625 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4622 which were causing double-calling of generators. Those eval calls
4626 which were causing double-calling of generators. Those eval calls
4623 were _very_ dangerous, since code with side effects could be
4627 were _very_ dangerous, since code with side effects could be
4624 triggered. As they say, 'eval is evil'... These were the
4628 triggered. As they say, 'eval is evil'... These were the
4625 nastiest evals in IPython. Besides, _ofind is now far simpler,
4629 nastiest evals in IPython. Besides, _ofind is now far simpler,
4626 and it should also be quite a bit faster. Its use of inspect is
4630 and it should also be quite a bit faster. Its use of inspect is
4627 also safer, so perhaps some of the inspect-related crashes I've
4631 also safer, so perhaps some of the inspect-related crashes I've
4628 seen lately with Python 2.3 might be taken care of. That will
4632 seen lately with Python 2.3 might be taken care of. That will
4629 need more testing.
4633 need more testing.
4630
4634
4631 2003-08-17 Fernando Perez <fperez@colorado.edu>
4635 2003-08-17 Fernando Perez <fperez@colorado.edu>
4632
4636
4633 * IPython/iplib.py (InteractiveShell._prefilter): significant
4637 * IPython/iplib.py (InteractiveShell._prefilter): significant
4634 simplifications to the logic for handling user escapes. Faster
4638 simplifications to the logic for handling user escapes. Faster
4635 and simpler code.
4639 and simpler code.
4636
4640
4637 2003-08-14 Fernando Perez <fperez@colorado.edu>
4641 2003-08-14 Fernando Perez <fperez@colorado.edu>
4638
4642
4639 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4643 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4640 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4644 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4641 but it should be quite a bit faster. And the recursive version
4645 but it should be quite a bit faster. And the recursive version
4642 generated O(log N) intermediate storage for all rank>1 arrays,
4646 generated O(log N) intermediate storage for all rank>1 arrays,
4643 even if they were contiguous.
4647 even if they were contiguous.
4644 (l1norm): Added this function.
4648 (l1norm): Added this function.
4645 (norm): Added this function for arbitrary norms (including
4649 (norm): Added this function for arbitrary norms (including
4646 l-infinity). l1 and l2 are still special cases for convenience
4650 l-infinity). l1 and l2 are still special cases for convenience
4647 and speed.
4651 and speed.
4648
4652
4649 2003-08-03 Fernando Perez <fperez@colorado.edu>
4653 2003-08-03 Fernando Perez <fperez@colorado.edu>
4650
4654
4651 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4655 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4652 exceptions, which now raise PendingDeprecationWarnings in Python
4656 exceptions, which now raise PendingDeprecationWarnings in Python
4653 2.3. There were some in Magic and some in Gnuplot2.
4657 2.3. There were some in Magic and some in Gnuplot2.
4654
4658
4655 2003-06-30 Fernando Perez <fperez@colorado.edu>
4659 2003-06-30 Fernando Perez <fperez@colorado.edu>
4656
4660
4657 * IPython/genutils.py (page): modified to call curses only for
4661 * IPython/genutils.py (page): modified to call curses only for
4658 terminals where TERM=='xterm'. After problems under many other
4662 terminals where TERM=='xterm'. After problems under many other
4659 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4663 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4660
4664
4661 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4665 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4662 would be triggered when readline was absent. This was just an old
4666 would be triggered when readline was absent. This was just an old
4663 debugging statement I'd forgotten to take out.
4667 debugging statement I'd forgotten to take out.
4664
4668
4665 2003-06-20 Fernando Perez <fperez@colorado.edu>
4669 2003-06-20 Fernando Perez <fperez@colorado.edu>
4666
4670
4667 * IPython/genutils.py (clock): modified to return only user time
4671 * IPython/genutils.py (clock): modified to return only user time
4668 (not counting system time), after a discussion on scipy. While
4672 (not counting system time), after a discussion on scipy. While
4669 system time may be a useful quantity occasionally, it may much
4673 system time may be a useful quantity occasionally, it may much
4670 more easily be skewed by occasional swapping or other similar
4674 more easily be skewed by occasional swapping or other similar
4671 activity.
4675 activity.
4672
4676
4673 2003-06-05 Fernando Perez <fperez@colorado.edu>
4677 2003-06-05 Fernando Perez <fperez@colorado.edu>
4674
4678
4675 * IPython/numutils.py (identity): new function, for building
4679 * IPython/numutils.py (identity): new function, for building
4676 arbitrary rank Kronecker deltas (mostly backwards compatible with
4680 arbitrary rank Kronecker deltas (mostly backwards compatible with
4677 Numeric.identity)
4681 Numeric.identity)
4678
4682
4679 2003-06-03 Fernando Perez <fperez@colorado.edu>
4683 2003-06-03 Fernando Perez <fperez@colorado.edu>
4680
4684
4681 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4685 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4682 arguments passed to magics with spaces, to allow trailing '\' to
4686 arguments passed to magics with spaces, to allow trailing '\' to
4683 work normally (mainly for Windows users).
4687 work normally (mainly for Windows users).
4684
4688
4685 2003-05-29 Fernando Perez <fperez@colorado.edu>
4689 2003-05-29 Fernando Perez <fperez@colorado.edu>
4686
4690
4687 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4691 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4688 instead of pydoc.help. This fixes a bizarre behavior where
4692 instead of pydoc.help. This fixes a bizarre behavior where
4689 printing '%s' % locals() would trigger the help system. Now
4693 printing '%s' % locals() would trigger the help system. Now
4690 ipython behaves like normal python does.
4694 ipython behaves like normal python does.
4691
4695
4692 Note that if one does 'from pydoc import help', the bizarre
4696 Note that if one does 'from pydoc import help', the bizarre
4693 behavior returns, but this will also happen in normal python, so
4697 behavior returns, but this will also happen in normal python, so
4694 it's not an ipython bug anymore (it has to do with how pydoc.help
4698 it's not an ipython bug anymore (it has to do with how pydoc.help
4695 is implemented).
4699 is implemented).
4696
4700
4697 2003-05-22 Fernando Perez <fperez@colorado.edu>
4701 2003-05-22 Fernando Perez <fperez@colorado.edu>
4698
4702
4699 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4703 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4700 return [] instead of None when nothing matches, also match to end
4704 return [] instead of None when nothing matches, also match to end
4701 of line. Patch by Gary Bishop.
4705 of line. Patch by Gary Bishop.
4702
4706
4703 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4707 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4704 protection as before, for files passed on the command line. This
4708 protection as before, for files passed on the command line. This
4705 prevents the CrashHandler from kicking in if user files call into
4709 prevents the CrashHandler from kicking in if user files call into
4706 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4710 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4707 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4711 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4708
4712
4709 2003-05-20 *** Released version 0.4.0
4713 2003-05-20 *** Released version 0.4.0
4710
4714
4711 2003-05-20 Fernando Perez <fperez@colorado.edu>
4715 2003-05-20 Fernando Perez <fperez@colorado.edu>
4712
4716
4713 * setup.py: added support for manpages. It's a bit hackish b/c of
4717 * setup.py: added support for manpages. It's a bit hackish b/c of
4714 a bug in the way the bdist_rpm distutils target handles gzipped
4718 a bug in the way the bdist_rpm distutils target handles gzipped
4715 manpages, but it works. After a patch by Jack.
4719 manpages, but it works. After a patch by Jack.
4716
4720
4717 2003-05-19 Fernando Perez <fperez@colorado.edu>
4721 2003-05-19 Fernando Perez <fperez@colorado.edu>
4718
4722
4719 * IPython/numutils.py: added a mockup of the kinds module, since
4723 * IPython/numutils.py: added a mockup of the kinds module, since
4720 it was recently removed from Numeric. This way, numutils will
4724 it was recently removed from Numeric. This way, numutils will
4721 work for all users even if they are missing kinds.
4725 work for all users even if they are missing kinds.
4722
4726
4723 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4727 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4724 failure, which can occur with SWIG-wrapped extensions. After a
4728 failure, which can occur with SWIG-wrapped extensions. After a
4725 crash report from Prabhu.
4729 crash report from Prabhu.
4726
4730
4727 2003-05-16 Fernando Perez <fperez@colorado.edu>
4731 2003-05-16 Fernando Perez <fperez@colorado.edu>
4728
4732
4729 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4733 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4730 protect ipython from user code which may call directly
4734 protect ipython from user code which may call directly
4731 sys.excepthook (this looks like an ipython crash to the user, even
4735 sys.excepthook (this looks like an ipython crash to the user, even
4732 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4736 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4733 This is especially important to help users of WxWindows, but may
4737 This is especially important to help users of WxWindows, but may
4734 also be useful in other cases.
4738 also be useful in other cases.
4735
4739
4736 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4740 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4737 an optional tb_offset to be specified, and to preserve exception
4741 an optional tb_offset to be specified, and to preserve exception
4738 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4742 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4739
4743
4740 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4744 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4741
4745
4742 2003-05-15 Fernando Perez <fperez@colorado.edu>
4746 2003-05-15 Fernando Perez <fperez@colorado.edu>
4743
4747
4744 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4748 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4745 installing for a new user under Windows.
4749 installing for a new user under Windows.
4746
4750
4747 2003-05-12 Fernando Perez <fperez@colorado.edu>
4751 2003-05-12 Fernando Perez <fperez@colorado.edu>
4748
4752
4749 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4753 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4750 handler for Emacs comint-based lines. Currently it doesn't do
4754 handler for Emacs comint-based lines. Currently it doesn't do
4751 much (but importantly, it doesn't update the history cache). In
4755 much (but importantly, it doesn't update the history cache). In
4752 the future it may be expanded if Alex needs more functionality
4756 the future it may be expanded if Alex needs more functionality
4753 there.
4757 there.
4754
4758
4755 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4759 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4756 info to crash reports.
4760 info to crash reports.
4757
4761
4758 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4762 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4759 just like Python's -c. Also fixed crash with invalid -color
4763 just like Python's -c. Also fixed crash with invalid -color
4760 option value at startup. Thanks to Will French
4764 option value at startup. Thanks to Will French
4761 <wfrench-AT-bestweb.net> for the bug report.
4765 <wfrench-AT-bestweb.net> for the bug report.
4762
4766
4763 2003-05-09 Fernando Perez <fperez@colorado.edu>
4767 2003-05-09 Fernando Perez <fperez@colorado.edu>
4764
4768
4765 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4769 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4766 to EvalDict (it's a mapping, after all) and simplified its code
4770 to EvalDict (it's a mapping, after all) and simplified its code
4767 quite a bit, after a nice discussion on c.l.py where Gustavo
4771 quite a bit, after a nice discussion on c.l.py where Gustavo
4768 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4772 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4769
4773
4770 2003-04-30 Fernando Perez <fperez@colorado.edu>
4774 2003-04-30 Fernando Perez <fperez@colorado.edu>
4771
4775
4772 * IPython/genutils.py (timings_out): modified it to reduce its
4776 * IPython/genutils.py (timings_out): modified it to reduce its
4773 overhead in the common reps==1 case.
4777 overhead in the common reps==1 case.
4774
4778
4775 2003-04-29 Fernando Perez <fperez@colorado.edu>
4779 2003-04-29 Fernando Perez <fperez@colorado.edu>
4776
4780
4777 * IPython/genutils.py (timings_out): Modified to use the resource
4781 * IPython/genutils.py (timings_out): Modified to use the resource
4778 module, which avoids the wraparound problems of time.clock().
4782 module, which avoids the wraparound problems of time.clock().
4779
4783
4780 2003-04-17 *** Released version 0.2.15pre4
4784 2003-04-17 *** Released version 0.2.15pre4
4781
4785
4782 2003-04-17 Fernando Perez <fperez@colorado.edu>
4786 2003-04-17 Fernando Perez <fperez@colorado.edu>
4783
4787
4784 * setup.py (scriptfiles): Split windows-specific stuff over to a
4788 * setup.py (scriptfiles): Split windows-specific stuff over to a
4785 separate file, in an attempt to have a Windows GUI installer.
4789 separate file, in an attempt to have a Windows GUI installer.
4786 That didn't work, but part of the groundwork is done.
4790 That didn't work, but part of the groundwork is done.
4787
4791
4788 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4792 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4789 indent/unindent with 4 spaces. Particularly useful in combination
4793 indent/unindent with 4 spaces. Particularly useful in combination
4790 with the new auto-indent option.
4794 with the new auto-indent option.
4791
4795
4792 2003-04-16 Fernando Perez <fperez@colorado.edu>
4796 2003-04-16 Fernando Perez <fperez@colorado.edu>
4793
4797
4794 * IPython/Magic.py: various replacements of self.rc for
4798 * IPython/Magic.py: various replacements of self.rc for
4795 self.shell.rc. A lot more remains to be done to fully disentangle
4799 self.shell.rc. A lot more remains to be done to fully disentangle
4796 this class from the main Shell class.
4800 this class from the main Shell class.
4797
4801
4798 * IPython/GnuplotRuntime.py: added checks for mouse support so
4802 * IPython/GnuplotRuntime.py: added checks for mouse support so
4799 that we don't try to enable it if the current gnuplot doesn't
4803 that we don't try to enable it if the current gnuplot doesn't
4800 really support it. Also added checks so that we don't try to
4804 really support it. Also added checks so that we don't try to
4801 enable persist under Windows (where Gnuplot doesn't recognize the
4805 enable persist under Windows (where Gnuplot doesn't recognize the
4802 option).
4806 option).
4803
4807
4804 * IPython/iplib.py (InteractiveShell.interact): Added optional
4808 * IPython/iplib.py (InteractiveShell.interact): Added optional
4805 auto-indenting code, after a patch by King C. Shu
4809 auto-indenting code, after a patch by King C. Shu
4806 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4810 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4807 get along well with pasting indented code. If I ever figure out
4811 get along well with pasting indented code. If I ever figure out
4808 how to make that part go well, it will become on by default.
4812 how to make that part go well, it will become on by default.
4809
4813
4810 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4814 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4811 crash ipython if there was an unmatched '%' in the user's prompt
4815 crash ipython if there was an unmatched '%' in the user's prompt
4812 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4816 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4813
4817
4814 * IPython/iplib.py (InteractiveShell.interact): removed the
4818 * IPython/iplib.py (InteractiveShell.interact): removed the
4815 ability to ask the user whether he wants to crash or not at the
4819 ability to ask the user whether he wants to crash or not at the
4816 'last line' exception handler. Calling functions at that point
4820 'last line' exception handler. Calling functions at that point
4817 changes the stack, and the error reports would have incorrect
4821 changes the stack, and the error reports would have incorrect
4818 tracebacks.
4822 tracebacks.
4819
4823
4820 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4824 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4821 pass through a peger a pretty-printed form of any object. After a
4825 pass through a peger a pretty-printed form of any object. After a
4822 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4826 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4823
4827
4824 2003-04-14 Fernando Perez <fperez@colorado.edu>
4828 2003-04-14 Fernando Perez <fperez@colorado.edu>
4825
4829
4826 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4830 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4827 all files in ~ would be modified at first install (instead of
4831 all files in ~ would be modified at first install (instead of
4828 ~/.ipython). This could be potentially disastrous, as the
4832 ~/.ipython). This could be potentially disastrous, as the
4829 modification (make line-endings native) could damage binary files.
4833 modification (make line-endings native) could damage binary files.
4830
4834
4831 2003-04-10 Fernando Perez <fperez@colorado.edu>
4835 2003-04-10 Fernando Perez <fperez@colorado.edu>
4832
4836
4833 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4837 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4834 handle only lines which are invalid python. This now means that
4838 handle only lines which are invalid python. This now means that
4835 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4839 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4836 for the bug report.
4840 for the bug report.
4837
4841
4838 2003-04-01 Fernando Perez <fperez@colorado.edu>
4842 2003-04-01 Fernando Perez <fperez@colorado.edu>
4839
4843
4840 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4844 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4841 where failing to set sys.last_traceback would crash pdb.pm().
4845 where failing to set sys.last_traceback would crash pdb.pm().
4842 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4846 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4843 report.
4847 report.
4844
4848
4845 2003-03-25 Fernando Perez <fperez@colorado.edu>
4849 2003-03-25 Fernando Perez <fperez@colorado.edu>
4846
4850
4847 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4851 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4848 before printing it (it had a lot of spurious blank lines at the
4852 before printing it (it had a lot of spurious blank lines at the
4849 end).
4853 end).
4850
4854
4851 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4855 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4852 output would be sent 21 times! Obviously people don't use this
4856 output would be sent 21 times! Obviously people don't use this
4853 too often, or I would have heard about it.
4857 too often, or I would have heard about it.
4854
4858
4855 2003-03-24 Fernando Perez <fperez@colorado.edu>
4859 2003-03-24 Fernando Perez <fperez@colorado.edu>
4856
4860
4857 * setup.py (scriptfiles): renamed the data_files parameter from
4861 * setup.py (scriptfiles): renamed the data_files parameter from
4858 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4862 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4859 for the patch.
4863 for the patch.
4860
4864
4861 2003-03-20 Fernando Perez <fperez@colorado.edu>
4865 2003-03-20 Fernando Perez <fperez@colorado.edu>
4862
4866
4863 * IPython/genutils.py (error): added error() and fatal()
4867 * IPython/genutils.py (error): added error() and fatal()
4864 functions.
4868 functions.
4865
4869
4866 2003-03-18 *** Released version 0.2.15pre3
4870 2003-03-18 *** Released version 0.2.15pre3
4867
4871
4868 2003-03-18 Fernando Perez <fperez@colorado.edu>
4872 2003-03-18 Fernando Perez <fperez@colorado.edu>
4869
4873
4870 * setupext/install_data_ext.py
4874 * setupext/install_data_ext.py
4871 (install_data_ext.initialize_options): Class contributed by Jack
4875 (install_data_ext.initialize_options): Class contributed by Jack
4872 Moffit for fixing the old distutils hack. He is sending this to
4876 Moffit for fixing the old distutils hack. He is sending this to
4873 the distutils folks so in the future we may not need it as a
4877 the distutils folks so in the future we may not need it as a
4874 private fix.
4878 private fix.
4875
4879
4876 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4880 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4877 changes for Debian packaging. See his patch for full details.
4881 changes for Debian packaging. See his patch for full details.
4878 The old distutils hack of making the ipythonrc* files carry a
4882 The old distutils hack of making the ipythonrc* files carry a
4879 bogus .py extension is gone, at last. Examples were moved to a
4883 bogus .py extension is gone, at last. Examples were moved to a
4880 separate subdir under doc/, and the separate executable scripts
4884 separate subdir under doc/, and the separate executable scripts
4881 now live in their own directory. Overall a great cleanup. The
4885 now live in their own directory. Overall a great cleanup. The
4882 manual was updated to use the new files, and setup.py has been
4886 manual was updated to use the new files, and setup.py has been
4883 fixed for this setup.
4887 fixed for this setup.
4884
4888
4885 * IPython/PyColorize.py (Parser.usage): made non-executable and
4889 * IPython/PyColorize.py (Parser.usage): made non-executable and
4886 created a pycolor wrapper around it to be included as a script.
4890 created a pycolor wrapper around it to be included as a script.
4887
4891
4888 2003-03-12 *** Released version 0.2.15pre2
4892 2003-03-12 *** Released version 0.2.15pre2
4889
4893
4890 2003-03-12 Fernando Perez <fperez@colorado.edu>
4894 2003-03-12 Fernando Perez <fperez@colorado.edu>
4891
4895
4892 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4896 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4893 long-standing problem with garbage characters in some terminals.
4897 long-standing problem with garbage characters in some terminals.
4894 The issue was really that the \001 and \002 escapes must _only_ be
4898 The issue was really that the \001 and \002 escapes must _only_ be
4895 passed to input prompts (which call readline), but _never_ to
4899 passed to input prompts (which call readline), but _never_ to
4896 normal text to be printed on screen. I changed ColorANSI to have
4900 normal text to be printed on screen. I changed ColorANSI to have
4897 two classes: TermColors and InputTermColors, each with the
4901 two classes: TermColors and InputTermColors, each with the
4898 appropriate escapes for input prompts or normal text. The code in
4902 appropriate escapes for input prompts or normal text. The code in
4899 Prompts.py got slightly more complicated, but this very old and
4903 Prompts.py got slightly more complicated, but this very old and
4900 annoying bug is finally fixed.
4904 annoying bug is finally fixed.
4901
4905
4902 All the credit for nailing down the real origin of this problem
4906 All the credit for nailing down the real origin of this problem
4903 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4907 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4904 *Many* thanks to him for spending quite a bit of effort on this.
4908 *Many* thanks to him for spending quite a bit of effort on this.
4905
4909
4906 2003-03-05 *** Released version 0.2.15pre1
4910 2003-03-05 *** Released version 0.2.15pre1
4907
4911
4908 2003-03-03 Fernando Perez <fperez@colorado.edu>
4912 2003-03-03 Fernando Perez <fperez@colorado.edu>
4909
4913
4910 * IPython/FakeModule.py: Moved the former _FakeModule to a
4914 * IPython/FakeModule.py: Moved the former _FakeModule to a
4911 separate file, because it's also needed by Magic (to fix a similar
4915 separate file, because it's also needed by Magic (to fix a similar
4912 pickle-related issue in @run).
4916 pickle-related issue in @run).
4913
4917
4914 2003-03-02 Fernando Perez <fperez@colorado.edu>
4918 2003-03-02 Fernando Perez <fperez@colorado.edu>
4915
4919
4916 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4920 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4917 the autocall option at runtime.
4921 the autocall option at runtime.
4918 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4922 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4919 across Magic.py to start separating Magic from InteractiveShell.
4923 across Magic.py to start separating Magic from InteractiveShell.
4920 (Magic._ofind): Fixed to return proper namespace for dotted
4924 (Magic._ofind): Fixed to return proper namespace for dotted
4921 names. Before, a dotted name would always return 'not currently
4925 names. Before, a dotted name would always return 'not currently
4922 defined', because it would find the 'parent'. s.x would be found,
4926 defined', because it would find the 'parent'. s.x would be found,
4923 but since 'x' isn't defined by itself, it would get confused.
4927 but since 'x' isn't defined by itself, it would get confused.
4924 (Magic.magic_run): Fixed pickling problems reported by Ralf
4928 (Magic.magic_run): Fixed pickling problems reported by Ralf
4925 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4929 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4926 that I'd used when Mike Heeter reported similar issues at the
4930 that I'd used when Mike Heeter reported similar issues at the
4927 top-level, but now for @run. It boils down to injecting the
4931 top-level, but now for @run. It boils down to injecting the
4928 namespace where code is being executed with something that looks
4932 namespace where code is being executed with something that looks
4929 enough like a module to fool pickle.dump(). Since a pickle stores
4933 enough like a module to fool pickle.dump(). Since a pickle stores
4930 a named reference to the importing module, we need this for
4934 a named reference to the importing module, we need this for
4931 pickles to save something sensible.
4935 pickles to save something sensible.
4932
4936
4933 * IPython/ipmaker.py (make_IPython): added an autocall option.
4937 * IPython/ipmaker.py (make_IPython): added an autocall option.
4934
4938
4935 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4939 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4936 the auto-eval code. Now autocalling is an option, and the code is
4940 the auto-eval code. Now autocalling is an option, and the code is
4937 also vastly safer. There is no more eval() involved at all.
4941 also vastly safer. There is no more eval() involved at all.
4938
4942
4939 2003-03-01 Fernando Perez <fperez@colorado.edu>
4943 2003-03-01 Fernando Perez <fperez@colorado.edu>
4940
4944
4941 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4945 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4942 dict with named keys instead of a tuple.
4946 dict with named keys instead of a tuple.
4943
4947
4944 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4948 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4945
4949
4946 * setup.py (make_shortcut): Fixed message about directories
4950 * setup.py (make_shortcut): Fixed message about directories
4947 created during Windows installation (the directories were ok, just
4951 created during Windows installation (the directories were ok, just
4948 the printed message was misleading). Thanks to Chris Liechti
4952 the printed message was misleading). Thanks to Chris Liechti
4949 <cliechti-AT-gmx.net> for the heads up.
4953 <cliechti-AT-gmx.net> for the heads up.
4950
4954
4951 2003-02-21 Fernando Perez <fperez@colorado.edu>
4955 2003-02-21 Fernando Perez <fperez@colorado.edu>
4952
4956
4953 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4957 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4954 of ValueError exception when checking for auto-execution. This
4958 of ValueError exception when checking for auto-execution. This
4955 one is raised by things like Numeric arrays arr.flat when the
4959 one is raised by things like Numeric arrays arr.flat when the
4956 array is non-contiguous.
4960 array is non-contiguous.
4957
4961
4958 2003-01-31 Fernando Perez <fperez@colorado.edu>
4962 2003-01-31 Fernando Perez <fperez@colorado.edu>
4959
4963
4960 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4964 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4961 not return any value at all (even though the command would get
4965 not return any value at all (even though the command would get
4962 executed).
4966 executed).
4963 (xsys): Flush stdout right after printing the command to ensure
4967 (xsys): Flush stdout right after printing the command to ensure
4964 proper ordering of commands and command output in the total
4968 proper ordering of commands and command output in the total
4965 output.
4969 output.
4966 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4970 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4967 system/getoutput as defaults. The old ones are kept for
4971 system/getoutput as defaults. The old ones are kept for
4968 compatibility reasons, so no code which uses this library needs
4972 compatibility reasons, so no code which uses this library needs
4969 changing.
4973 changing.
4970
4974
4971 2003-01-27 *** Released version 0.2.14
4975 2003-01-27 *** Released version 0.2.14
4972
4976
4973 2003-01-25 Fernando Perez <fperez@colorado.edu>
4977 2003-01-25 Fernando Perez <fperez@colorado.edu>
4974
4978
4975 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4979 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4976 functions defined in previous edit sessions could not be re-edited
4980 functions defined in previous edit sessions could not be re-edited
4977 (because the temp files were immediately removed). Now temp files
4981 (because the temp files were immediately removed). Now temp files
4978 are removed only at IPython's exit.
4982 are removed only at IPython's exit.
4979 (Magic.magic_run): Improved @run to perform shell-like expansions
4983 (Magic.magic_run): Improved @run to perform shell-like expansions
4980 on its arguments (~users and $VARS). With this, @run becomes more
4984 on its arguments (~users and $VARS). With this, @run becomes more
4981 like a normal command-line.
4985 like a normal command-line.
4982
4986
4983 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4987 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4984 bugs related to embedding and cleaned up that code. A fairly
4988 bugs related to embedding and cleaned up that code. A fairly
4985 important one was the impossibility to access the global namespace
4989 important one was the impossibility to access the global namespace
4986 through the embedded IPython (only local variables were visible).
4990 through the embedded IPython (only local variables were visible).
4987
4991
4988 2003-01-14 Fernando Perez <fperez@colorado.edu>
4992 2003-01-14 Fernando Perez <fperez@colorado.edu>
4989
4993
4990 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4994 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4991 auto-calling to be a bit more conservative. Now it doesn't get
4995 auto-calling to be a bit more conservative. Now it doesn't get
4992 triggered if any of '!=()<>' are in the rest of the input line, to
4996 triggered if any of '!=()<>' are in the rest of the input line, to
4993 allow comparing callables. Thanks to Alex for the heads up.
4997 allow comparing callables. Thanks to Alex for the heads up.
4994
4998
4995 2003-01-07 Fernando Perez <fperez@colorado.edu>
4999 2003-01-07 Fernando Perez <fperez@colorado.edu>
4996
5000
4997 * IPython/genutils.py (page): fixed estimation of the number of
5001 * IPython/genutils.py (page): fixed estimation of the number of
4998 lines in a string to be paged to simply count newlines. This
5002 lines in a string to be paged to simply count newlines. This
4999 prevents over-guessing due to embedded escape sequences. A better
5003 prevents over-guessing due to embedded escape sequences. A better
5000 long-term solution would involve stripping out the control chars
5004 long-term solution would involve stripping out the control chars
5001 for the count, but it's potentially so expensive I just don't
5005 for the count, but it's potentially so expensive I just don't
5002 think it's worth doing.
5006 think it's worth doing.
5003
5007
5004 2002-12-19 *** Released version 0.2.14pre50
5008 2002-12-19 *** Released version 0.2.14pre50
5005
5009
5006 2002-12-19 Fernando Perez <fperez@colorado.edu>
5010 2002-12-19 Fernando Perez <fperez@colorado.edu>
5007
5011
5008 * tools/release (version): Changed release scripts to inform
5012 * tools/release (version): Changed release scripts to inform
5009 Andrea and build a NEWS file with a list of recent changes.
5013 Andrea and build a NEWS file with a list of recent changes.
5010
5014
5011 * IPython/ColorANSI.py (__all__): changed terminal detection
5015 * IPython/ColorANSI.py (__all__): changed terminal detection
5012 code. Seems to work better for xterms without breaking
5016 code. Seems to work better for xterms without breaking
5013 konsole. Will need more testing to determine if WinXP and Mac OSX
5017 konsole. Will need more testing to determine if WinXP and Mac OSX
5014 also work ok.
5018 also work ok.
5015
5019
5016 2002-12-18 *** Released version 0.2.14pre49
5020 2002-12-18 *** Released version 0.2.14pre49
5017
5021
5018 2002-12-18 Fernando Perez <fperez@colorado.edu>
5022 2002-12-18 Fernando Perez <fperez@colorado.edu>
5019
5023
5020 * Docs: added new info about Mac OSX, from Andrea.
5024 * Docs: added new info about Mac OSX, from Andrea.
5021
5025
5022 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5026 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5023 allow direct plotting of python strings whose format is the same
5027 allow direct plotting of python strings whose format is the same
5024 of gnuplot data files.
5028 of gnuplot data files.
5025
5029
5026 2002-12-16 Fernando Perez <fperez@colorado.edu>
5030 2002-12-16 Fernando Perez <fperez@colorado.edu>
5027
5031
5028 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5032 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5029 value of exit question to be acknowledged.
5033 value of exit question to be acknowledged.
5030
5034
5031 2002-12-03 Fernando Perez <fperez@colorado.edu>
5035 2002-12-03 Fernando Perez <fperez@colorado.edu>
5032
5036
5033 * IPython/ipmaker.py: removed generators, which had been added
5037 * IPython/ipmaker.py: removed generators, which had been added
5034 by mistake in an earlier debugging run. This was causing trouble
5038 by mistake in an earlier debugging run. This was causing trouble
5035 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5039 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5036 for pointing this out.
5040 for pointing this out.
5037
5041
5038 2002-11-17 Fernando Perez <fperez@colorado.edu>
5042 2002-11-17 Fernando Perez <fperez@colorado.edu>
5039
5043
5040 * Manual: updated the Gnuplot section.
5044 * Manual: updated the Gnuplot section.
5041
5045
5042 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5046 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5043 a much better split of what goes in Runtime and what goes in
5047 a much better split of what goes in Runtime and what goes in
5044 Interactive.
5048 Interactive.
5045
5049
5046 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5050 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5047 being imported from iplib.
5051 being imported from iplib.
5048
5052
5049 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5053 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5050 for command-passing. Now the global Gnuplot instance is called
5054 for command-passing. Now the global Gnuplot instance is called
5051 'gp' instead of 'g', which was really a far too fragile and
5055 'gp' instead of 'g', which was really a far too fragile and
5052 common name.
5056 common name.
5053
5057
5054 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5058 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5055 bounding boxes generated by Gnuplot for square plots.
5059 bounding boxes generated by Gnuplot for square plots.
5056
5060
5057 * IPython/genutils.py (popkey): new function added. I should
5061 * IPython/genutils.py (popkey): new function added. I should
5058 suggest this on c.l.py as a dict method, it seems useful.
5062 suggest this on c.l.py as a dict method, it seems useful.
5059
5063
5060 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5064 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5061 to transparently handle PostScript generation. MUCH better than
5065 to transparently handle PostScript generation. MUCH better than
5062 the previous plot_eps/replot_eps (which I removed now). The code
5066 the previous plot_eps/replot_eps (which I removed now). The code
5063 is also fairly clean and well documented now (including
5067 is also fairly clean and well documented now (including
5064 docstrings).
5068 docstrings).
5065
5069
5066 2002-11-13 Fernando Perez <fperez@colorado.edu>
5070 2002-11-13 Fernando Perez <fperez@colorado.edu>
5067
5071
5068 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5072 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5069 (inconsistent with options).
5073 (inconsistent with options).
5070
5074
5071 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5075 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5072 manually disabled, I don't know why. Fixed it.
5076 manually disabled, I don't know why. Fixed it.
5073 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5077 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5074 eps output.
5078 eps output.
5075
5079
5076 2002-11-12 Fernando Perez <fperez@colorado.edu>
5080 2002-11-12 Fernando Perez <fperez@colorado.edu>
5077
5081
5078 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5082 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5079 don't propagate up to caller. Fixes crash reported by François
5083 don't propagate up to caller. Fixes crash reported by François
5080 Pinard.
5084 Pinard.
5081
5085
5082 2002-11-09 Fernando Perez <fperez@colorado.edu>
5086 2002-11-09 Fernando Perez <fperez@colorado.edu>
5083
5087
5084 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5088 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5085 history file for new users.
5089 history file for new users.
5086 (make_IPython): fixed bug where initial install would leave the
5090 (make_IPython): fixed bug where initial install would leave the
5087 user running in the .ipython dir.
5091 user running in the .ipython dir.
5088 (make_IPython): fixed bug where config dir .ipython would be
5092 (make_IPython): fixed bug where config dir .ipython would be
5089 created regardless of the given -ipythondir option. Thanks to Cory
5093 created regardless of the given -ipythondir option. Thanks to Cory
5090 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5094 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5091
5095
5092 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5096 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5093 type confirmations. Will need to use it in all of IPython's code
5097 type confirmations. Will need to use it in all of IPython's code
5094 consistently.
5098 consistently.
5095
5099
5096 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5100 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5097 context to print 31 lines instead of the default 5. This will make
5101 context to print 31 lines instead of the default 5. This will make
5098 the crash reports extremely detailed in case the problem is in
5102 the crash reports extremely detailed in case the problem is in
5099 libraries I don't have access to.
5103 libraries I don't have access to.
5100
5104
5101 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5105 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5102 line of defense' code to still crash, but giving users fair
5106 line of defense' code to still crash, but giving users fair
5103 warning. I don't want internal errors to go unreported: if there's
5107 warning. I don't want internal errors to go unreported: if there's
5104 an internal problem, IPython should crash and generate a full
5108 an internal problem, IPython should crash and generate a full
5105 report.
5109 report.
5106
5110
5107 2002-11-08 Fernando Perez <fperez@colorado.edu>
5111 2002-11-08 Fernando Perez <fperez@colorado.edu>
5108
5112
5109 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5113 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5110 otherwise uncaught exceptions which can appear if people set
5114 otherwise uncaught exceptions which can appear if people set
5111 sys.stdout to something badly broken. Thanks to a crash report
5115 sys.stdout to something badly broken. Thanks to a crash report
5112 from henni-AT-mail.brainbot.com.
5116 from henni-AT-mail.brainbot.com.
5113
5117
5114 2002-11-04 Fernando Perez <fperez@colorado.edu>
5118 2002-11-04 Fernando Perez <fperez@colorado.edu>
5115
5119
5116 * IPython/iplib.py (InteractiveShell.interact): added
5120 * IPython/iplib.py (InteractiveShell.interact): added
5117 __IPYTHON__active to the builtins. It's a flag which goes on when
5121 __IPYTHON__active to the builtins. It's a flag which goes on when
5118 the interaction starts and goes off again when it stops. This
5122 the interaction starts and goes off again when it stops. This
5119 allows embedding code to detect being inside IPython. Before this
5123 allows embedding code to detect being inside IPython. Before this
5120 was done via __IPYTHON__, but that only shows that an IPython
5124 was done via __IPYTHON__, but that only shows that an IPython
5121 instance has been created.
5125 instance has been created.
5122
5126
5123 * IPython/Magic.py (Magic.magic_env): I realized that in a
5127 * IPython/Magic.py (Magic.magic_env): I realized that in a
5124 UserDict, instance.data holds the data as a normal dict. So I
5128 UserDict, instance.data holds the data as a normal dict. So I
5125 modified @env to return os.environ.data instead of rebuilding a
5129 modified @env to return os.environ.data instead of rebuilding a
5126 dict by hand.
5130 dict by hand.
5127
5131
5128 2002-11-02 Fernando Perez <fperez@colorado.edu>
5132 2002-11-02 Fernando Perez <fperez@colorado.edu>
5129
5133
5130 * IPython/genutils.py (warn): changed so that level 1 prints no
5134 * IPython/genutils.py (warn): changed so that level 1 prints no
5131 header. Level 2 is now the default (with 'WARNING' header, as
5135 header. Level 2 is now the default (with 'WARNING' header, as
5132 before). I think I tracked all places where changes were needed in
5136 before). I think I tracked all places where changes were needed in
5133 IPython, but outside code using the old level numbering may have
5137 IPython, but outside code using the old level numbering may have
5134 broken.
5138 broken.
5135
5139
5136 * IPython/iplib.py (InteractiveShell.runcode): added this to
5140 * IPython/iplib.py (InteractiveShell.runcode): added this to
5137 handle the tracebacks in SystemExit traps correctly. The previous
5141 handle the tracebacks in SystemExit traps correctly. The previous
5138 code (through interact) was printing more of the stack than
5142 code (through interact) was printing more of the stack than
5139 necessary, showing IPython internal code to the user.
5143 necessary, showing IPython internal code to the user.
5140
5144
5141 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5145 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5142 default. Now that the default at the confirmation prompt is yes,
5146 default. Now that the default at the confirmation prompt is yes,
5143 it's not so intrusive. François' argument that ipython sessions
5147 it's not so intrusive. François' argument that ipython sessions
5144 tend to be complex enough not to lose them from an accidental C-d,
5148 tend to be complex enough not to lose them from an accidental C-d,
5145 is a valid one.
5149 is a valid one.
5146
5150
5147 * IPython/iplib.py (InteractiveShell.interact): added a
5151 * IPython/iplib.py (InteractiveShell.interact): added a
5148 showtraceback() call to the SystemExit trap, and modified the exit
5152 showtraceback() call to the SystemExit trap, and modified the exit
5149 confirmation to have yes as the default.
5153 confirmation to have yes as the default.
5150
5154
5151 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5155 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5152 this file. It's been gone from the code for a long time, this was
5156 this file. It's been gone from the code for a long time, this was
5153 simply leftover junk.
5157 simply leftover junk.
5154
5158
5155 2002-11-01 Fernando Perez <fperez@colorado.edu>
5159 2002-11-01 Fernando Perez <fperez@colorado.edu>
5156
5160
5157 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5161 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5158 added. If set, IPython now traps EOF and asks for
5162 added. If set, IPython now traps EOF and asks for
5159 confirmation. After a request by François Pinard.
5163 confirmation. After a request by François Pinard.
5160
5164
5161 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5165 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5162 of @abort, and with a new (better) mechanism for handling the
5166 of @abort, and with a new (better) mechanism for handling the
5163 exceptions.
5167 exceptions.
5164
5168
5165 2002-10-27 Fernando Perez <fperez@colorado.edu>
5169 2002-10-27 Fernando Perez <fperez@colorado.edu>
5166
5170
5167 * IPython/usage.py (__doc__): updated the --help information and
5171 * IPython/usage.py (__doc__): updated the --help information and
5168 the ipythonrc file to indicate that -log generates
5172 the ipythonrc file to indicate that -log generates
5169 ./ipython.log. Also fixed the corresponding info in @logstart.
5173 ./ipython.log. Also fixed the corresponding info in @logstart.
5170 This and several other fixes in the manuals thanks to reports by
5174 This and several other fixes in the manuals thanks to reports by
5171 François Pinard <pinard-AT-iro.umontreal.ca>.
5175 François Pinard <pinard-AT-iro.umontreal.ca>.
5172
5176
5173 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5177 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5174 refer to @logstart (instead of @log, which doesn't exist).
5178 refer to @logstart (instead of @log, which doesn't exist).
5175
5179
5176 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5180 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5177 AttributeError crash. Thanks to Christopher Armstrong
5181 AttributeError crash. Thanks to Christopher Armstrong
5178 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5182 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5179 introduced recently (in 0.2.14pre37) with the fix to the eval
5183 introduced recently (in 0.2.14pre37) with the fix to the eval
5180 problem mentioned below.
5184 problem mentioned below.
5181
5185
5182 2002-10-17 Fernando Perez <fperez@colorado.edu>
5186 2002-10-17 Fernando Perez <fperez@colorado.edu>
5183
5187
5184 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5188 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5185 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5189 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5186
5190
5187 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5191 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5188 this function to fix a problem reported by Alex Schmolck. He saw
5192 this function to fix a problem reported by Alex Schmolck. He saw
5189 it with list comprehensions and generators, which were getting
5193 it with list comprehensions and generators, which were getting
5190 called twice. The real problem was an 'eval' call in testing for
5194 called twice. The real problem was an 'eval' call in testing for
5191 automagic which was evaluating the input line silently.
5195 automagic which was evaluating the input line silently.
5192
5196
5193 This is a potentially very nasty bug, if the input has side
5197 This is a potentially very nasty bug, if the input has side
5194 effects which must not be repeated. The code is much cleaner now,
5198 effects which must not be repeated. The code is much cleaner now,
5195 without any blanket 'except' left and with a regexp test for
5199 without any blanket 'except' left and with a regexp test for
5196 actual function names.
5200 actual function names.
5197
5201
5198 But an eval remains, which I'm not fully comfortable with. I just
5202 But an eval remains, which I'm not fully comfortable with. I just
5199 don't know how to find out if an expression could be a callable in
5203 don't know how to find out if an expression could be a callable in
5200 the user's namespace without doing an eval on the string. However
5204 the user's namespace without doing an eval on the string. However
5201 that string is now much more strictly checked so that no code
5205 that string is now much more strictly checked so that no code
5202 slips by, so the eval should only happen for things that can
5206 slips by, so the eval should only happen for things that can
5203 really be only function/method names.
5207 really be only function/method names.
5204
5208
5205 2002-10-15 Fernando Perez <fperez@colorado.edu>
5209 2002-10-15 Fernando Perez <fperez@colorado.edu>
5206
5210
5207 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5211 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5208 OSX information to main manual, removed README_Mac_OSX file from
5212 OSX information to main manual, removed README_Mac_OSX file from
5209 distribution. Also updated credits for recent additions.
5213 distribution. Also updated credits for recent additions.
5210
5214
5211 2002-10-10 Fernando Perez <fperez@colorado.edu>
5215 2002-10-10 Fernando Perez <fperez@colorado.edu>
5212
5216
5213 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5217 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5214 terminal-related issues. Many thanks to Andrea Riciputi
5218 terminal-related issues. Many thanks to Andrea Riciputi
5215 <andrea.riciputi-AT-libero.it> for writing it.
5219 <andrea.riciputi-AT-libero.it> for writing it.
5216
5220
5217 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5221 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5218 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5222 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5219
5223
5220 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5224 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5221 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5225 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5222 <syver-en-AT-online.no> who both submitted patches for this problem.
5226 <syver-en-AT-online.no> who both submitted patches for this problem.
5223
5227
5224 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5228 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5225 global embedding to make sure that things don't overwrite user
5229 global embedding to make sure that things don't overwrite user
5226 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5230 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5227
5231
5228 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5232 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5229 compatibility. Thanks to Hayden Callow
5233 compatibility. Thanks to Hayden Callow
5230 <h.callow-AT-elec.canterbury.ac.nz>
5234 <h.callow-AT-elec.canterbury.ac.nz>
5231
5235
5232 2002-10-04 Fernando Perez <fperez@colorado.edu>
5236 2002-10-04 Fernando Perez <fperez@colorado.edu>
5233
5237
5234 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5238 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5235 Gnuplot.File objects.
5239 Gnuplot.File objects.
5236
5240
5237 2002-07-23 Fernando Perez <fperez@colorado.edu>
5241 2002-07-23 Fernando Perez <fperez@colorado.edu>
5238
5242
5239 * IPython/genutils.py (timing): Added timings() and timing() for
5243 * IPython/genutils.py (timing): Added timings() and timing() for
5240 quick access to the most commonly needed data, the execution
5244 quick access to the most commonly needed data, the execution
5241 times. Old timing() renamed to timings_out().
5245 times. Old timing() renamed to timings_out().
5242
5246
5243 2002-07-18 Fernando Perez <fperez@colorado.edu>
5247 2002-07-18 Fernando Perez <fperez@colorado.edu>
5244
5248
5245 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5249 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5246 bug with nested instances disrupting the parent's tab completion.
5250 bug with nested instances disrupting the parent's tab completion.
5247
5251
5248 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5252 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5249 all_completions code to begin the emacs integration.
5253 all_completions code to begin the emacs integration.
5250
5254
5251 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5255 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5252 argument to allow titling individual arrays when plotting.
5256 argument to allow titling individual arrays when plotting.
5253
5257
5254 2002-07-15 Fernando Perez <fperez@colorado.edu>
5258 2002-07-15 Fernando Perez <fperez@colorado.edu>
5255
5259
5256 * setup.py (make_shortcut): changed to retrieve the value of
5260 * setup.py (make_shortcut): changed to retrieve the value of
5257 'Program Files' directory from the registry (this value changes in
5261 'Program Files' directory from the registry (this value changes in
5258 non-english versions of Windows). Thanks to Thomas Fanslau
5262 non-english versions of Windows). Thanks to Thomas Fanslau
5259 <tfanslau-AT-gmx.de> for the report.
5263 <tfanslau-AT-gmx.de> for the report.
5260
5264
5261 2002-07-10 Fernando Perez <fperez@colorado.edu>
5265 2002-07-10 Fernando Perez <fperez@colorado.edu>
5262
5266
5263 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5267 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5264 a bug in pdb, which crashes if a line with only whitespace is
5268 a bug in pdb, which crashes if a line with only whitespace is
5265 entered. Bug report submitted to sourceforge.
5269 entered. Bug report submitted to sourceforge.
5266
5270
5267 2002-07-09 Fernando Perez <fperez@colorado.edu>
5271 2002-07-09 Fernando Perez <fperez@colorado.edu>
5268
5272
5269 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5273 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5270 reporting exceptions (it's a bug in inspect.py, I just set a
5274 reporting exceptions (it's a bug in inspect.py, I just set a
5271 workaround).
5275 workaround).
5272
5276
5273 2002-07-08 Fernando Perez <fperez@colorado.edu>
5277 2002-07-08 Fernando Perez <fperez@colorado.edu>
5274
5278
5275 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5279 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5276 __IPYTHON__ in __builtins__ to show up in user_ns.
5280 __IPYTHON__ in __builtins__ to show up in user_ns.
5277
5281
5278 2002-07-03 Fernando Perez <fperez@colorado.edu>
5282 2002-07-03 Fernando Perez <fperez@colorado.edu>
5279
5283
5280 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5284 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5281 name from @gp_set_instance to @gp_set_default.
5285 name from @gp_set_instance to @gp_set_default.
5282
5286
5283 * IPython/ipmaker.py (make_IPython): default editor value set to
5287 * IPython/ipmaker.py (make_IPython): default editor value set to
5284 '0' (a string), to match the rc file. Otherwise will crash when
5288 '0' (a string), to match the rc file. Otherwise will crash when
5285 .strip() is called on it.
5289 .strip() is called on it.
5286
5290
5287
5291
5288 2002-06-28 Fernando Perez <fperez@colorado.edu>
5292 2002-06-28 Fernando Perez <fperez@colorado.edu>
5289
5293
5290 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5294 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5291 of files in current directory when a file is executed via
5295 of files in current directory when a file is executed via
5292 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5296 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5293
5297
5294 * setup.py (manfiles): fix for rpm builds, submitted by RA
5298 * setup.py (manfiles): fix for rpm builds, submitted by RA
5295 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5299 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5296
5300
5297 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5301 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5298 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5302 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5299 string!). A. Schmolck caught this one.
5303 string!). A. Schmolck caught this one.
5300
5304
5301 2002-06-27 Fernando Perez <fperez@colorado.edu>
5305 2002-06-27 Fernando Perez <fperez@colorado.edu>
5302
5306
5303 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5307 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5304 defined files at the cmd line. __name__ wasn't being set to
5308 defined files at the cmd line. __name__ wasn't being set to
5305 __main__.
5309 __main__.
5306
5310
5307 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5311 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5308 regular lists and tuples besides Numeric arrays.
5312 regular lists and tuples besides Numeric arrays.
5309
5313
5310 * IPython/Prompts.py (CachedOutput.__call__): Added output
5314 * IPython/Prompts.py (CachedOutput.__call__): Added output
5311 supression for input ending with ';'. Similar to Mathematica and
5315 supression for input ending with ';'. Similar to Mathematica and
5312 Matlab. The _* vars and Out[] list are still updated, just like
5316 Matlab. The _* vars and Out[] list are still updated, just like
5313 Mathematica behaves.
5317 Mathematica behaves.
5314
5318
5315 2002-06-25 Fernando Perez <fperez@colorado.edu>
5319 2002-06-25 Fernando Perez <fperez@colorado.edu>
5316
5320
5317 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5321 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5318 .ini extensions for profiels under Windows.
5322 .ini extensions for profiels under Windows.
5319
5323
5320 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5324 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5321 string form. Fix contributed by Alexander Schmolck
5325 string form. Fix contributed by Alexander Schmolck
5322 <a.schmolck-AT-gmx.net>
5326 <a.schmolck-AT-gmx.net>
5323
5327
5324 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5328 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5325 pre-configured Gnuplot instance.
5329 pre-configured Gnuplot instance.
5326
5330
5327 2002-06-21 Fernando Perez <fperez@colorado.edu>
5331 2002-06-21 Fernando Perez <fperez@colorado.edu>
5328
5332
5329 * IPython/numutils.py (exp_safe): new function, works around the
5333 * IPython/numutils.py (exp_safe): new function, works around the
5330 underflow problems in Numeric.
5334 underflow problems in Numeric.
5331 (log2): New fn. Safe log in base 2: returns exact integer answer
5335 (log2): New fn. Safe log in base 2: returns exact integer answer
5332 for exact integer powers of 2.
5336 for exact integer powers of 2.
5333
5337
5334 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5338 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5335 properly.
5339 properly.
5336
5340
5337 2002-06-20 Fernando Perez <fperez@colorado.edu>
5341 2002-06-20 Fernando Perez <fperez@colorado.edu>
5338
5342
5339 * IPython/genutils.py (timing): new function like
5343 * IPython/genutils.py (timing): new function like
5340 Mathematica's. Similar to time_test, but returns more info.
5344 Mathematica's. Similar to time_test, but returns more info.
5341
5345
5342 2002-06-18 Fernando Perez <fperez@colorado.edu>
5346 2002-06-18 Fernando Perez <fperez@colorado.edu>
5343
5347
5344 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5348 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5345 according to Mike Heeter's suggestions.
5349 according to Mike Heeter's suggestions.
5346
5350
5347 2002-06-16 Fernando Perez <fperez@colorado.edu>
5351 2002-06-16 Fernando Perez <fperez@colorado.edu>
5348
5352
5349 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5353 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5350 system. GnuplotMagic is gone as a user-directory option. New files
5354 system. GnuplotMagic is gone as a user-directory option. New files
5351 make it easier to use all the gnuplot stuff both from external
5355 make it easier to use all the gnuplot stuff both from external
5352 programs as well as from IPython. Had to rewrite part of
5356 programs as well as from IPython. Had to rewrite part of
5353 hardcopy() b/c of a strange bug: often the ps files simply don't
5357 hardcopy() b/c of a strange bug: often the ps files simply don't
5354 get created, and require a repeat of the command (often several
5358 get created, and require a repeat of the command (often several
5355 times).
5359 times).
5356
5360
5357 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5361 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5358 resolve output channel at call time, so that if sys.stderr has
5362 resolve output channel at call time, so that if sys.stderr has
5359 been redirected by user this gets honored.
5363 been redirected by user this gets honored.
5360
5364
5361 2002-06-13 Fernando Perez <fperez@colorado.edu>
5365 2002-06-13 Fernando Perez <fperez@colorado.edu>
5362
5366
5363 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5367 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5364 IPShell. Kept a copy with the old names to avoid breaking people's
5368 IPShell. Kept a copy with the old names to avoid breaking people's
5365 embedded code.
5369 embedded code.
5366
5370
5367 * IPython/ipython: simplified it to the bare minimum after
5371 * IPython/ipython: simplified it to the bare minimum after
5368 Holger's suggestions. Added info about how to use it in
5372 Holger's suggestions. Added info about how to use it in
5369 PYTHONSTARTUP.
5373 PYTHONSTARTUP.
5370
5374
5371 * IPython/Shell.py (IPythonShell): changed the options passing
5375 * IPython/Shell.py (IPythonShell): changed the options passing
5372 from a string with funky %s replacements to a straight list. Maybe
5376 from a string with funky %s replacements to a straight list. Maybe
5373 a bit more typing, but it follows sys.argv conventions, so there's
5377 a bit more typing, but it follows sys.argv conventions, so there's
5374 less special-casing to remember.
5378 less special-casing to remember.
5375
5379
5376 2002-06-12 Fernando Perez <fperez@colorado.edu>
5380 2002-06-12 Fernando Perez <fperez@colorado.edu>
5377
5381
5378 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5382 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5379 command. Thanks to a suggestion by Mike Heeter.
5383 command. Thanks to a suggestion by Mike Heeter.
5380 (Magic.magic_pfile): added behavior to look at filenames if given
5384 (Magic.magic_pfile): added behavior to look at filenames if given
5381 arg is not a defined object.
5385 arg is not a defined object.
5382 (Magic.magic_save): New @save function to save code snippets. Also
5386 (Magic.magic_save): New @save function to save code snippets. Also
5383 a Mike Heeter idea.
5387 a Mike Heeter idea.
5384
5388
5385 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5389 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5386 plot() and replot(). Much more convenient now, especially for
5390 plot() and replot(). Much more convenient now, especially for
5387 interactive use.
5391 interactive use.
5388
5392
5389 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5393 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5390 filenames.
5394 filenames.
5391
5395
5392 2002-06-02 Fernando Perez <fperez@colorado.edu>
5396 2002-06-02 Fernando Perez <fperez@colorado.edu>
5393
5397
5394 * IPython/Struct.py (Struct.__init__): modified to admit
5398 * IPython/Struct.py (Struct.__init__): modified to admit
5395 initialization via another struct.
5399 initialization via another struct.
5396
5400
5397 * IPython/genutils.py (SystemExec.__init__): New stateful
5401 * IPython/genutils.py (SystemExec.__init__): New stateful
5398 interface to xsys and bq. Useful for writing system scripts.
5402 interface to xsys and bq. Useful for writing system scripts.
5399
5403
5400 2002-05-30 Fernando Perez <fperez@colorado.edu>
5404 2002-05-30 Fernando Perez <fperez@colorado.edu>
5401
5405
5402 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5406 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5403 documents. This will make the user download smaller (it's getting
5407 documents. This will make the user download smaller (it's getting
5404 too big).
5408 too big).
5405
5409
5406 2002-05-29 Fernando Perez <fperez@colorado.edu>
5410 2002-05-29 Fernando Perez <fperez@colorado.edu>
5407
5411
5408 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5412 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5409 fix problems with shelve and pickle. Seems to work, but I don't
5413 fix problems with shelve and pickle. Seems to work, but I don't
5410 know if corner cases break it. Thanks to Mike Heeter
5414 know if corner cases break it. Thanks to Mike Heeter
5411 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5415 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5412
5416
5413 2002-05-24 Fernando Perez <fperez@colorado.edu>
5417 2002-05-24 Fernando Perez <fperez@colorado.edu>
5414
5418
5415 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5419 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5416 macros having broken.
5420 macros having broken.
5417
5421
5418 2002-05-21 Fernando Perez <fperez@colorado.edu>
5422 2002-05-21 Fernando Perez <fperez@colorado.edu>
5419
5423
5420 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5424 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5421 introduced logging bug: all history before logging started was
5425 introduced logging bug: all history before logging started was
5422 being written one character per line! This came from the redesign
5426 being written one character per line! This came from the redesign
5423 of the input history as a special list which slices to strings,
5427 of the input history as a special list which slices to strings,
5424 not to lists.
5428 not to lists.
5425
5429
5426 2002-05-20 Fernando Perez <fperez@colorado.edu>
5430 2002-05-20 Fernando Perez <fperez@colorado.edu>
5427
5431
5428 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5432 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5429 be an attribute of all classes in this module. The design of these
5433 be an attribute of all classes in this module. The design of these
5430 classes needs some serious overhauling.
5434 classes needs some serious overhauling.
5431
5435
5432 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5436 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5433 which was ignoring '_' in option names.
5437 which was ignoring '_' in option names.
5434
5438
5435 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5439 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5436 'Verbose_novars' to 'Context' and made it the new default. It's a
5440 'Verbose_novars' to 'Context' and made it the new default. It's a
5437 bit more readable and also safer than verbose.
5441 bit more readable and also safer than verbose.
5438
5442
5439 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5443 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5440 triple-quoted strings.
5444 triple-quoted strings.
5441
5445
5442 * IPython/OInspect.py (__all__): new module exposing the object
5446 * IPython/OInspect.py (__all__): new module exposing the object
5443 introspection facilities. Now the corresponding magics are dummy
5447 introspection facilities. Now the corresponding magics are dummy
5444 wrappers around this. Having this module will make it much easier
5448 wrappers around this. Having this module will make it much easier
5445 to put these functions into our modified pdb.
5449 to put these functions into our modified pdb.
5446 This new object inspector system uses the new colorizing module,
5450 This new object inspector system uses the new colorizing module,
5447 so source code and other things are nicely syntax highlighted.
5451 so source code and other things are nicely syntax highlighted.
5448
5452
5449 2002-05-18 Fernando Perez <fperez@colorado.edu>
5453 2002-05-18 Fernando Perez <fperez@colorado.edu>
5450
5454
5451 * IPython/ColorANSI.py: Split the coloring tools into a separate
5455 * IPython/ColorANSI.py: Split the coloring tools into a separate
5452 module so I can use them in other code easier (they were part of
5456 module so I can use them in other code easier (they were part of
5453 ultraTB).
5457 ultraTB).
5454
5458
5455 2002-05-17 Fernando Perez <fperez@colorado.edu>
5459 2002-05-17 Fernando Perez <fperez@colorado.edu>
5456
5460
5457 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5461 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5458 fixed it to set the global 'g' also to the called instance, as
5462 fixed it to set the global 'g' also to the called instance, as
5459 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5463 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5460 user's 'g' variables).
5464 user's 'g' variables).
5461
5465
5462 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5466 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5463 global variables (aliases to _ih,_oh) so that users which expect
5467 global variables (aliases to _ih,_oh) so that users which expect
5464 In[5] or Out[7] to work aren't unpleasantly surprised.
5468 In[5] or Out[7] to work aren't unpleasantly surprised.
5465 (InputList.__getslice__): new class to allow executing slices of
5469 (InputList.__getslice__): new class to allow executing slices of
5466 input history directly. Very simple class, complements the use of
5470 input history directly. Very simple class, complements the use of
5467 macros.
5471 macros.
5468
5472
5469 2002-05-16 Fernando Perez <fperez@colorado.edu>
5473 2002-05-16 Fernando Perez <fperez@colorado.edu>
5470
5474
5471 * setup.py (docdirbase): make doc directory be just doc/IPython
5475 * setup.py (docdirbase): make doc directory be just doc/IPython
5472 without version numbers, it will reduce clutter for users.
5476 without version numbers, it will reduce clutter for users.
5473
5477
5474 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5478 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5475 execfile call to prevent possible memory leak. See for details:
5479 execfile call to prevent possible memory leak. See for details:
5476 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5480 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5477
5481
5478 2002-05-15 Fernando Perez <fperez@colorado.edu>
5482 2002-05-15 Fernando Perez <fperez@colorado.edu>
5479
5483
5480 * IPython/Magic.py (Magic.magic_psource): made the object
5484 * IPython/Magic.py (Magic.magic_psource): made the object
5481 introspection names be more standard: pdoc, pdef, pfile and
5485 introspection names be more standard: pdoc, pdef, pfile and
5482 psource. They all print/page their output, and it makes
5486 psource. They all print/page their output, and it makes
5483 remembering them easier. Kept old names for compatibility as
5487 remembering them easier. Kept old names for compatibility as
5484 aliases.
5488 aliases.
5485
5489
5486 2002-05-14 Fernando Perez <fperez@colorado.edu>
5490 2002-05-14 Fernando Perez <fperez@colorado.edu>
5487
5491
5488 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5492 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5489 what the mouse problem was. The trick is to use gnuplot with temp
5493 what the mouse problem was. The trick is to use gnuplot with temp
5490 files and NOT with pipes (for data communication), because having
5494 files and NOT with pipes (for data communication), because having
5491 both pipes and the mouse on is bad news.
5495 both pipes and the mouse on is bad news.
5492
5496
5493 2002-05-13 Fernando Perez <fperez@colorado.edu>
5497 2002-05-13 Fernando Perez <fperez@colorado.edu>
5494
5498
5495 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5499 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5496 bug. Information would be reported about builtins even when
5500 bug. Information would be reported about builtins even when
5497 user-defined functions overrode them.
5501 user-defined functions overrode them.
5498
5502
5499 2002-05-11 Fernando Perez <fperez@colorado.edu>
5503 2002-05-11 Fernando Perez <fperez@colorado.edu>
5500
5504
5501 * IPython/__init__.py (__all__): removed FlexCompleter from
5505 * IPython/__init__.py (__all__): removed FlexCompleter from
5502 __all__ so that things don't fail in platforms without readline.
5506 __all__ so that things don't fail in platforms without readline.
5503
5507
5504 2002-05-10 Fernando Perez <fperez@colorado.edu>
5508 2002-05-10 Fernando Perez <fperez@colorado.edu>
5505
5509
5506 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5510 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5507 it requires Numeric, effectively making Numeric a dependency for
5511 it requires Numeric, effectively making Numeric a dependency for
5508 IPython.
5512 IPython.
5509
5513
5510 * Released 0.2.13
5514 * Released 0.2.13
5511
5515
5512 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5516 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5513 profiler interface. Now all the major options from the profiler
5517 profiler interface. Now all the major options from the profiler
5514 module are directly supported in IPython, both for single
5518 module are directly supported in IPython, both for single
5515 expressions (@prun) and for full programs (@run -p).
5519 expressions (@prun) and for full programs (@run -p).
5516
5520
5517 2002-05-09 Fernando Perez <fperez@colorado.edu>
5521 2002-05-09 Fernando Perez <fperez@colorado.edu>
5518
5522
5519 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5523 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5520 magic properly formatted for screen.
5524 magic properly formatted for screen.
5521
5525
5522 * setup.py (make_shortcut): Changed things to put pdf version in
5526 * setup.py (make_shortcut): Changed things to put pdf version in
5523 doc/ instead of doc/manual (had to change lyxport a bit).
5527 doc/ instead of doc/manual (had to change lyxport a bit).
5524
5528
5525 * IPython/Magic.py (Profile.string_stats): made profile runs go
5529 * IPython/Magic.py (Profile.string_stats): made profile runs go
5526 through pager (they are long and a pager allows searching, saving,
5530 through pager (they are long and a pager allows searching, saving,
5527 etc.)
5531 etc.)
5528
5532
5529 2002-05-08 Fernando Perez <fperez@colorado.edu>
5533 2002-05-08 Fernando Perez <fperez@colorado.edu>
5530
5534
5531 * Released 0.2.12
5535 * Released 0.2.12
5532
5536
5533 2002-05-06 Fernando Perez <fperez@colorado.edu>
5537 2002-05-06 Fernando Perez <fperez@colorado.edu>
5534
5538
5535 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5539 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5536 introduced); 'hist n1 n2' was broken.
5540 introduced); 'hist n1 n2' was broken.
5537 (Magic.magic_pdb): added optional on/off arguments to @pdb
5541 (Magic.magic_pdb): added optional on/off arguments to @pdb
5538 (Magic.magic_run): added option -i to @run, which executes code in
5542 (Magic.magic_run): added option -i to @run, which executes code in
5539 the IPython namespace instead of a clean one. Also added @irun as
5543 the IPython namespace instead of a clean one. Also added @irun as
5540 an alias to @run -i.
5544 an alias to @run -i.
5541
5545
5542 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5546 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5543 fixed (it didn't really do anything, the namespaces were wrong).
5547 fixed (it didn't really do anything, the namespaces were wrong).
5544
5548
5545 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5549 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5546
5550
5547 * IPython/__init__.py (__all__): Fixed package namespace, now
5551 * IPython/__init__.py (__all__): Fixed package namespace, now
5548 'import IPython' does give access to IPython.<all> as
5552 'import IPython' does give access to IPython.<all> as
5549 expected. Also renamed __release__ to Release.
5553 expected. Also renamed __release__ to Release.
5550
5554
5551 * IPython/Debugger.py (__license__): created new Pdb class which
5555 * IPython/Debugger.py (__license__): created new Pdb class which
5552 functions like a drop-in for the normal pdb.Pdb but does NOT
5556 functions like a drop-in for the normal pdb.Pdb but does NOT
5553 import readline by default. This way it doesn't muck up IPython's
5557 import readline by default. This way it doesn't muck up IPython's
5554 readline handling, and now tab-completion finally works in the
5558 readline handling, and now tab-completion finally works in the
5555 debugger -- sort of. It completes things globally visible, but the
5559 debugger -- sort of. It completes things globally visible, but the
5556 completer doesn't track the stack as pdb walks it. That's a bit
5560 completer doesn't track the stack as pdb walks it. That's a bit
5557 tricky, and I'll have to implement it later.
5561 tricky, and I'll have to implement it later.
5558
5562
5559 2002-05-05 Fernando Perez <fperez@colorado.edu>
5563 2002-05-05 Fernando Perez <fperez@colorado.edu>
5560
5564
5561 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5565 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5562 magic docstrings when printed via ? (explicit \'s were being
5566 magic docstrings when printed via ? (explicit \'s were being
5563 printed).
5567 printed).
5564
5568
5565 * IPython/ipmaker.py (make_IPython): fixed namespace
5569 * IPython/ipmaker.py (make_IPython): fixed namespace
5566 identification bug. Now variables loaded via logs or command-line
5570 identification bug. Now variables loaded via logs or command-line
5567 files are recognized in the interactive namespace by @who.
5571 files are recognized in the interactive namespace by @who.
5568
5572
5569 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5573 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5570 log replay system stemming from the string form of Structs.
5574 log replay system stemming from the string form of Structs.
5571
5575
5572 * IPython/Magic.py (Macro.__init__): improved macros to properly
5576 * IPython/Magic.py (Macro.__init__): improved macros to properly
5573 handle magic commands in them.
5577 handle magic commands in them.
5574 (Magic.magic_logstart): usernames are now expanded so 'logstart
5578 (Magic.magic_logstart): usernames are now expanded so 'logstart
5575 ~/mylog' now works.
5579 ~/mylog' now works.
5576
5580
5577 * IPython/iplib.py (complete): fixed bug where paths starting with
5581 * IPython/iplib.py (complete): fixed bug where paths starting with
5578 '/' would be completed as magic names.
5582 '/' would be completed as magic names.
5579
5583
5580 2002-05-04 Fernando Perez <fperez@colorado.edu>
5584 2002-05-04 Fernando Perez <fperez@colorado.edu>
5581
5585
5582 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5586 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5583 allow running full programs under the profiler's control.
5587 allow running full programs under the profiler's control.
5584
5588
5585 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5589 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5586 mode to report exceptions verbosely but without formatting
5590 mode to report exceptions verbosely but without formatting
5587 variables. This addresses the issue of ipython 'freezing' (it's
5591 variables. This addresses the issue of ipython 'freezing' (it's
5588 not frozen, but caught in an expensive formatting loop) when huge
5592 not frozen, but caught in an expensive formatting loop) when huge
5589 variables are in the context of an exception.
5593 variables are in the context of an exception.
5590 (VerboseTB.text): Added '--->' markers at line where exception was
5594 (VerboseTB.text): Added '--->' markers at line where exception was
5591 triggered. Much clearer to read, especially in NoColor modes.
5595 triggered. Much clearer to read, especially in NoColor modes.
5592
5596
5593 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5597 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5594 implemented in reverse when changing to the new parse_options().
5598 implemented in reverse when changing to the new parse_options().
5595
5599
5596 2002-05-03 Fernando Perez <fperez@colorado.edu>
5600 2002-05-03 Fernando Perez <fperez@colorado.edu>
5597
5601
5598 * IPython/Magic.py (Magic.parse_options): new function so that
5602 * IPython/Magic.py (Magic.parse_options): new function so that
5599 magics can parse options easier.
5603 magics can parse options easier.
5600 (Magic.magic_prun): new function similar to profile.run(),
5604 (Magic.magic_prun): new function similar to profile.run(),
5601 suggested by Chris Hart.
5605 suggested by Chris Hart.
5602 (Magic.magic_cd): fixed behavior so that it only changes if
5606 (Magic.magic_cd): fixed behavior so that it only changes if
5603 directory actually is in history.
5607 directory actually is in history.
5604
5608
5605 * IPython/usage.py (__doc__): added information about potential
5609 * IPython/usage.py (__doc__): added information about potential
5606 slowness of Verbose exception mode when there are huge data
5610 slowness of Verbose exception mode when there are huge data
5607 structures to be formatted (thanks to Archie Paulson).
5611 structures to be formatted (thanks to Archie Paulson).
5608
5612
5609 * IPython/ipmaker.py (make_IPython): Changed default logging
5613 * IPython/ipmaker.py (make_IPython): Changed default logging
5610 (when simply called with -log) to use curr_dir/ipython.log in
5614 (when simply called with -log) to use curr_dir/ipython.log in
5611 rotate mode. Fixed crash which was occuring with -log before
5615 rotate mode. Fixed crash which was occuring with -log before
5612 (thanks to Jim Boyle).
5616 (thanks to Jim Boyle).
5613
5617
5614 2002-05-01 Fernando Perez <fperez@colorado.edu>
5618 2002-05-01 Fernando Perez <fperez@colorado.edu>
5615
5619
5616 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5620 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5617 was nasty -- though somewhat of a corner case).
5621 was nasty -- though somewhat of a corner case).
5618
5622
5619 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5623 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5620 text (was a bug).
5624 text (was a bug).
5621
5625
5622 2002-04-30 Fernando Perez <fperez@colorado.edu>
5626 2002-04-30 Fernando Perez <fperez@colorado.edu>
5623
5627
5624 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5628 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5625 a print after ^D or ^C from the user so that the In[] prompt
5629 a print after ^D or ^C from the user so that the In[] prompt
5626 doesn't over-run the gnuplot one.
5630 doesn't over-run the gnuplot one.
5627
5631
5628 2002-04-29 Fernando Perez <fperez@colorado.edu>
5632 2002-04-29 Fernando Perez <fperez@colorado.edu>
5629
5633
5630 * Released 0.2.10
5634 * Released 0.2.10
5631
5635
5632 * IPython/__release__.py (version): get date dynamically.
5636 * IPython/__release__.py (version): get date dynamically.
5633
5637
5634 * Misc. documentation updates thanks to Arnd's comments. Also ran
5638 * Misc. documentation updates thanks to Arnd's comments. Also ran
5635 a full spellcheck on the manual (hadn't been done in a while).
5639 a full spellcheck on the manual (hadn't been done in a while).
5636
5640
5637 2002-04-27 Fernando Perez <fperez@colorado.edu>
5641 2002-04-27 Fernando Perez <fperez@colorado.edu>
5638
5642
5639 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5643 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5640 starting a log in mid-session would reset the input history list.
5644 starting a log in mid-session would reset the input history list.
5641
5645
5642 2002-04-26 Fernando Perez <fperez@colorado.edu>
5646 2002-04-26 Fernando Perez <fperez@colorado.edu>
5643
5647
5644 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5648 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5645 all files were being included in an update. Now anything in
5649 all files were being included in an update. Now anything in
5646 UserConfig that matches [A-Za-z]*.py will go (this excludes
5650 UserConfig that matches [A-Za-z]*.py will go (this excludes
5647 __init__.py)
5651 __init__.py)
5648
5652
5649 2002-04-25 Fernando Perez <fperez@colorado.edu>
5653 2002-04-25 Fernando Perez <fperez@colorado.edu>
5650
5654
5651 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5655 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5652 to __builtins__ so that any form of embedded or imported code can
5656 to __builtins__ so that any form of embedded or imported code can
5653 test for being inside IPython.
5657 test for being inside IPython.
5654
5658
5655 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5659 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5656 changed to GnuplotMagic because it's now an importable module,
5660 changed to GnuplotMagic because it's now an importable module,
5657 this makes the name follow that of the standard Gnuplot module.
5661 this makes the name follow that of the standard Gnuplot module.
5658 GnuplotMagic can now be loaded at any time in mid-session.
5662 GnuplotMagic can now be loaded at any time in mid-session.
5659
5663
5660 2002-04-24 Fernando Perez <fperez@colorado.edu>
5664 2002-04-24 Fernando Perez <fperez@colorado.edu>
5661
5665
5662 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5666 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5663 the globals (IPython has its own namespace) and the
5667 the globals (IPython has its own namespace) and the
5664 PhysicalQuantity stuff is much better anyway.
5668 PhysicalQuantity stuff is much better anyway.
5665
5669
5666 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5670 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5667 embedding example to standard user directory for
5671 embedding example to standard user directory for
5668 distribution. Also put it in the manual.
5672 distribution. Also put it in the manual.
5669
5673
5670 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5674 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5671 instance as first argument (so it doesn't rely on some obscure
5675 instance as first argument (so it doesn't rely on some obscure
5672 hidden global).
5676 hidden global).
5673
5677
5674 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5678 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5675 delimiters. While it prevents ().TAB from working, it allows
5679 delimiters. While it prevents ().TAB from working, it allows
5676 completions in open (... expressions. This is by far a more common
5680 completions in open (... expressions. This is by far a more common
5677 case.
5681 case.
5678
5682
5679 2002-04-23 Fernando Perez <fperez@colorado.edu>
5683 2002-04-23 Fernando Perez <fperez@colorado.edu>
5680
5684
5681 * IPython/Extensions/InterpreterPasteInput.py: new
5685 * IPython/Extensions/InterpreterPasteInput.py: new
5682 syntax-processing module for pasting lines with >>> or ... at the
5686 syntax-processing module for pasting lines with >>> or ... at the
5683 start.
5687 start.
5684
5688
5685 * IPython/Extensions/PhysicalQ_Interactive.py
5689 * IPython/Extensions/PhysicalQ_Interactive.py
5686 (PhysicalQuantityInteractive.__int__): fixed to work with either
5690 (PhysicalQuantityInteractive.__int__): fixed to work with either
5687 Numeric or math.
5691 Numeric or math.
5688
5692
5689 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5693 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5690 provided profiles. Now we have:
5694 provided profiles. Now we have:
5691 -math -> math module as * and cmath with its own namespace.
5695 -math -> math module as * and cmath with its own namespace.
5692 -numeric -> Numeric as *, plus gnuplot & grace
5696 -numeric -> Numeric as *, plus gnuplot & grace
5693 -physics -> same as before
5697 -physics -> same as before
5694
5698
5695 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5699 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5696 user-defined magics wouldn't be found by @magic if they were
5700 user-defined magics wouldn't be found by @magic if they were
5697 defined as class methods. Also cleaned up the namespace search
5701 defined as class methods. Also cleaned up the namespace search
5698 logic and the string building (to use %s instead of many repeated
5702 logic and the string building (to use %s instead of many repeated
5699 string adds).
5703 string adds).
5700
5704
5701 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5705 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5702 of user-defined magics to operate with class methods (cleaner, in
5706 of user-defined magics to operate with class methods (cleaner, in
5703 line with the gnuplot code).
5707 line with the gnuplot code).
5704
5708
5705 2002-04-22 Fernando Perez <fperez@colorado.edu>
5709 2002-04-22 Fernando Perez <fperez@colorado.edu>
5706
5710
5707 * setup.py: updated dependency list so that manual is updated when
5711 * setup.py: updated dependency list so that manual is updated when
5708 all included files change.
5712 all included files change.
5709
5713
5710 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5714 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5711 the delimiter removal option (the fix is ugly right now).
5715 the delimiter removal option (the fix is ugly right now).
5712
5716
5713 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5717 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5714 all of the math profile (quicker loading, no conflict between
5718 all of the math profile (quicker loading, no conflict between
5715 g-9.8 and g-gnuplot).
5719 g-9.8 and g-gnuplot).
5716
5720
5717 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5721 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5718 name of post-mortem files to IPython_crash_report.txt.
5722 name of post-mortem files to IPython_crash_report.txt.
5719
5723
5720 * Cleanup/update of the docs. Added all the new readline info and
5724 * Cleanup/update of the docs. Added all the new readline info and
5721 formatted all lists as 'real lists'.
5725 formatted all lists as 'real lists'.
5722
5726
5723 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5727 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5724 tab-completion options, since the full readline parse_and_bind is
5728 tab-completion options, since the full readline parse_and_bind is
5725 now accessible.
5729 now accessible.
5726
5730
5727 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5731 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5728 handling of readline options. Now users can specify any string to
5732 handling of readline options. Now users can specify any string to
5729 be passed to parse_and_bind(), as well as the delimiters to be
5733 be passed to parse_and_bind(), as well as the delimiters to be
5730 removed.
5734 removed.
5731 (InteractiveShell.__init__): Added __name__ to the global
5735 (InteractiveShell.__init__): Added __name__ to the global
5732 namespace so that things like Itpl which rely on its existence
5736 namespace so that things like Itpl which rely on its existence
5733 don't crash.
5737 don't crash.
5734 (InteractiveShell._prefilter): Defined the default with a _ so
5738 (InteractiveShell._prefilter): Defined the default with a _ so
5735 that prefilter() is easier to override, while the default one
5739 that prefilter() is easier to override, while the default one
5736 remains available.
5740 remains available.
5737
5741
5738 2002-04-18 Fernando Perez <fperez@colorado.edu>
5742 2002-04-18 Fernando Perez <fperez@colorado.edu>
5739
5743
5740 * Added information about pdb in the docs.
5744 * Added information about pdb in the docs.
5741
5745
5742 2002-04-17 Fernando Perez <fperez@colorado.edu>
5746 2002-04-17 Fernando Perez <fperez@colorado.edu>
5743
5747
5744 * IPython/ipmaker.py (make_IPython): added rc_override option to
5748 * IPython/ipmaker.py (make_IPython): added rc_override option to
5745 allow passing config options at creation time which may override
5749 allow passing config options at creation time which may override
5746 anything set in the config files or command line. This is
5750 anything set in the config files or command line. This is
5747 particularly useful for configuring embedded instances.
5751 particularly useful for configuring embedded instances.
5748
5752
5749 2002-04-15 Fernando Perez <fperez@colorado.edu>
5753 2002-04-15 Fernando Perez <fperez@colorado.edu>
5750
5754
5751 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5755 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5752 crash embedded instances because of the input cache falling out of
5756 crash embedded instances because of the input cache falling out of
5753 sync with the output counter.
5757 sync with the output counter.
5754
5758
5755 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5759 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5756 mode which calls pdb after an uncaught exception in IPython itself.
5760 mode which calls pdb after an uncaught exception in IPython itself.
5757
5761
5758 2002-04-14 Fernando Perez <fperez@colorado.edu>
5762 2002-04-14 Fernando Perez <fperez@colorado.edu>
5759
5763
5760 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5764 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5761 readline, fix it back after each call.
5765 readline, fix it back after each call.
5762
5766
5763 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5767 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5764 method to force all access via __call__(), which guarantees that
5768 method to force all access via __call__(), which guarantees that
5765 traceback references are properly deleted.
5769 traceback references are properly deleted.
5766
5770
5767 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5771 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5768 improve printing when pprint is in use.
5772 improve printing when pprint is in use.
5769
5773
5770 2002-04-13 Fernando Perez <fperez@colorado.edu>
5774 2002-04-13 Fernando Perez <fperez@colorado.edu>
5771
5775
5772 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5776 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5773 exceptions aren't caught anymore. If the user triggers one, he
5777 exceptions aren't caught anymore. If the user triggers one, he
5774 should know why he's doing it and it should go all the way up,
5778 should know why he's doing it and it should go all the way up,
5775 just like any other exception. So now @abort will fully kill the
5779 just like any other exception. So now @abort will fully kill the
5776 embedded interpreter and the embedding code (unless that happens
5780 embedded interpreter and the embedding code (unless that happens
5777 to catch SystemExit).
5781 to catch SystemExit).
5778
5782
5779 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5783 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5780 and a debugger() method to invoke the interactive pdb debugger
5784 and a debugger() method to invoke the interactive pdb debugger
5781 after printing exception information. Also added the corresponding
5785 after printing exception information. Also added the corresponding
5782 -pdb option and @pdb magic to control this feature, and updated
5786 -pdb option and @pdb magic to control this feature, and updated
5783 the docs. After a suggestion from Christopher Hart
5787 the docs. After a suggestion from Christopher Hart
5784 (hart-AT-caltech.edu).
5788 (hart-AT-caltech.edu).
5785
5789
5786 2002-04-12 Fernando Perez <fperez@colorado.edu>
5790 2002-04-12 Fernando Perez <fperez@colorado.edu>
5787
5791
5788 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5792 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5789 the exception handlers defined by the user (not the CrashHandler)
5793 the exception handlers defined by the user (not the CrashHandler)
5790 so that user exceptions don't trigger an ipython bug report.
5794 so that user exceptions don't trigger an ipython bug report.
5791
5795
5792 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5796 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5793 configurable (it should have always been so).
5797 configurable (it should have always been so).
5794
5798
5795 2002-03-26 Fernando Perez <fperez@colorado.edu>
5799 2002-03-26 Fernando Perez <fperez@colorado.edu>
5796
5800
5797 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5801 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5798 and there to fix embedding namespace issues. This should all be
5802 and there to fix embedding namespace issues. This should all be
5799 done in a more elegant way.
5803 done in a more elegant way.
5800
5804
5801 2002-03-25 Fernando Perez <fperez@colorado.edu>
5805 2002-03-25 Fernando Perez <fperez@colorado.edu>
5802
5806
5803 * IPython/genutils.py (get_home_dir): Try to make it work under
5807 * IPython/genutils.py (get_home_dir): Try to make it work under
5804 win9x also.
5808 win9x also.
5805
5809
5806 2002-03-20 Fernando Perez <fperez@colorado.edu>
5810 2002-03-20 Fernando Perez <fperez@colorado.edu>
5807
5811
5808 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5812 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5809 sys.displayhook untouched upon __init__.
5813 sys.displayhook untouched upon __init__.
5810
5814
5811 2002-03-19 Fernando Perez <fperez@colorado.edu>
5815 2002-03-19 Fernando Perez <fperez@colorado.edu>
5812
5816
5813 * Released 0.2.9 (for embedding bug, basically).
5817 * Released 0.2.9 (for embedding bug, basically).
5814
5818
5815 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5819 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5816 exceptions so that enclosing shell's state can be restored.
5820 exceptions so that enclosing shell's state can be restored.
5817
5821
5818 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5822 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5819 naming conventions in the .ipython/ dir.
5823 naming conventions in the .ipython/ dir.
5820
5824
5821 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5825 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5822 from delimiters list so filenames with - in them get expanded.
5826 from delimiters list so filenames with - in them get expanded.
5823
5827
5824 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5828 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5825 sys.displayhook not being properly restored after an embedded call.
5829 sys.displayhook not being properly restored after an embedded call.
5826
5830
5827 2002-03-18 Fernando Perez <fperez@colorado.edu>
5831 2002-03-18 Fernando Perez <fperez@colorado.edu>
5828
5832
5829 * Released 0.2.8
5833 * Released 0.2.8
5830
5834
5831 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5835 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5832 some files weren't being included in a -upgrade.
5836 some files weren't being included in a -upgrade.
5833 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5837 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5834 on' so that the first tab completes.
5838 on' so that the first tab completes.
5835 (InteractiveShell.handle_magic): fixed bug with spaces around
5839 (InteractiveShell.handle_magic): fixed bug with spaces around
5836 quotes breaking many magic commands.
5840 quotes breaking many magic commands.
5837
5841
5838 * setup.py: added note about ignoring the syntax error messages at
5842 * setup.py: added note about ignoring the syntax error messages at
5839 installation.
5843 installation.
5840
5844
5841 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5845 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5842 streamlining the gnuplot interface, now there's only one magic @gp.
5846 streamlining the gnuplot interface, now there's only one magic @gp.
5843
5847
5844 2002-03-17 Fernando Perez <fperez@colorado.edu>
5848 2002-03-17 Fernando Perez <fperez@colorado.edu>
5845
5849
5846 * IPython/UserConfig/magic_gnuplot.py: new name for the
5850 * IPython/UserConfig/magic_gnuplot.py: new name for the
5847 example-magic_pm.py file. Much enhanced system, now with a shell
5851 example-magic_pm.py file. Much enhanced system, now with a shell
5848 for communicating directly with gnuplot, one command at a time.
5852 for communicating directly with gnuplot, one command at a time.
5849
5853
5850 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5854 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5851 setting __name__=='__main__'.
5855 setting __name__=='__main__'.
5852
5856
5853 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5857 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5854 mini-shell for accessing gnuplot from inside ipython. Should
5858 mini-shell for accessing gnuplot from inside ipython. Should
5855 extend it later for grace access too. Inspired by Arnd's
5859 extend it later for grace access too. Inspired by Arnd's
5856 suggestion.
5860 suggestion.
5857
5861
5858 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5862 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5859 calling magic functions with () in their arguments. Thanks to Arnd
5863 calling magic functions with () in their arguments. Thanks to Arnd
5860 Baecker for pointing this to me.
5864 Baecker for pointing this to me.
5861
5865
5862 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5866 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5863 infinitely for integer or complex arrays (only worked with floats).
5867 infinitely for integer or complex arrays (only worked with floats).
5864
5868
5865 2002-03-16 Fernando Perez <fperez@colorado.edu>
5869 2002-03-16 Fernando Perez <fperez@colorado.edu>
5866
5870
5867 * setup.py: Merged setup and setup_windows into a single script
5871 * setup.py: Merged setup and setup_windows into a single script
5868 which properly handles things for windows users.
5872 which properly handles things for windows users.
5869
5873
5870 2002-03-15 Fernando Perez <fperez@colorado.edu>
5874 2002-03-15 Fernando Perez <fperez@colorado.edu>
5871
5875
5872 * Big change to the manual: now the magics are all automatically
5876 * Big change to the manual: now the magics are all automatically
5873 documented. This information is generated from their docstrings
5877 documented. This information is generated from their docstrings
5874 and put in a latex file included by the manual lyx file. This way
5878 and put in a latex file included by the manual lyx file. This way
5875 we get always up to date information for the magics. The manual
5879 we get always up to date information for the magics. The manual
5876 now also has proper version information, also auto-synced.
5880 now also has proper version information, also auto-synced.
5877
5881
5878 For this to work, an undocumented --magic_docstrings option was added.
5882 For this to work, an undocumented --magic_docstrings option was added.
5879
5883
5880 2002-03-13 Fernando Perez <fperez@colorado.edu>
5884 2002-03-13 Fernando Perez <fperez@colorado.edu>
5881
5885
5882 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5886 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5883 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5887 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5884
5888
5885 2002-03-12 Fernando Perez <fperez@colorado.edu>
5889 2002-03-12 Fernando Perez <fperez@colorado.edu>
5886
5890
5887 * IPython/ultraTB.py (TermColors): changed color escapes again to
5891 * IPython/ultraTB.py (TermColors): changed color escapes again to
5888 fix the (old, reintroduced) line-wrapping bug. Basically, if
5892 fix the (old, reintroduced) line-wrapping bug. Basically, if
5889 \001..\002 aren't given in the color escapes, lines get wrapped
5893 \001..\002 aren't given in the color escapes, lines get wrapped
5890 weirdly. But giving those screws up old xterms and emacs terms. So
5894 weirdly. But giving those screws up old xterms and emacs terms. So
5891 I added some logic for emacs terms to be ok, but I can't identify old
5895 I added some logic for emacs terms to be ok, but I can't identify old
5892 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5896 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5893
5897
5894 2002-03-10 Fernando Perez <fperez@colorado.edu>
5898 2002-03-10 Fernando Perez <fperez@colorado.edu>
5895
5899
5896 * IPython/usage.py (__doc__): Various documentation cleanups and
5900 * IPython/usage.py (__doc__): Various documentation cleanups and
5897 updates, both in usage docstrings and in the manual.
5901 updates, both in usage docstrings and in the manual.
5898
5902
5899 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5903 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5900 handling of caching. Set minimum acceptabe value for having a
5904 handling of caching. Set minimum acceptabe value for having a
5901 cache at 20 values.
5905 cache at 20 values.
5902
5906
5903 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5907 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5904 install_first_time function to a method, renamed it and added an
5908 install_first_time function to a method, renamed it and added an
5905 'upgrade' mode. Now people can update their config directory with
5909 'upgrade' mode. Now people can update their config directory with
5906 a simple command line switch (-upgrade, also new).
5910 a simple command line switch (-upgrade, also new).
5907
5911
5908 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5912 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5909 @file (convenient for automagic users under Python >= 2.2).
5913 @file (convenient for automagic users under Python >= 2.2).
5910 Removed @files (it seemed more like a plural than an abbrev. of
5914 Removed @files (it seemed more like a plural than an abbrev. of
5911 'file show').
5915 'file show').
5912
5916
5913 * IPython/iplib.py (install_first_time): Fixed crash if there were
5917 * IPython/iplib.py (install_first_time): Fixed crash if there were
5914 backup files ('~') in .ipython/ install directory.
5918 backup files ('~') in .ipython/ install directory.
5915
5919
5916 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5920 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5917 system. Things look fine, but these changes are fairly
5921 system. Things look fine, but these changes are fairly
5918 intrusive. Test them for a few days.
5922 intrusive. Test them for a few days.
5919
5923
5920 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5924 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5921 the prompts system. Now all in/out prompt strings are user
5925 the prompts system. Now all in/out prompt strings are user
5922 controllable. This is particularly useful for embedding, as one
5926 controllable. This is particularly useful for embedding, as one
5923 can tag embedded instances with particular prompts.
5927 can tag embedded instances with particular prompts.
5924
5928
5925 Also removed global use of sys.ps1/2, which now allows nested
5929 Also removed global use of sys.ps1/2, which now allows nested
5926 embeddings without any problems. Added command-line options for
5930 embeddings without any problems. Added command-line options for
5927 the prompt strings.
5931 the prompt strings.
5928
5932
5929 2002-03-08 Fernando Perez <fperez@colorado.edu>
5933 2002-03-08 Fernando Perez <fperez@colorado.edu>
5930
5934
5931 * IPython/UserConfig/example-embed-short.py (ipshell): added
5935 * IPython/UserConfig/example-embed-short.py (ipshell): added
5932 example file with the bare minimum code for embedding.
5936 example file with the bare minimum code for embedding.
5933
5937
5934 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5938 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5935 functionality for the embeddable shell to be activated/deactivated
5939 functionality for the embeddable shell to be activated/deactivated
5936 either globally or at each call.
5940 either globally or at each call.
5937
5941
5938 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5942 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5939 rewriting the prompt with '--->' for auto-inputs with proper
5943 rewriting the prompt with '--->' for auto-inputs with proper
5940 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5944 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5941 this is handled by the prompts class itself, as it should.
5945 this is handled by the prompts class itself, as it should.
5942
5946
5943 2002-03-05 Fernando Perez <fperez@colorado.edu>
5947 2002-03-05 Fernando Perez <fperez@colorado.edu>
5944
5948
5945 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5949 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5946 @logstart to avoid name clashes with the math log function.
5950 @logstart to avoid name clashes with the math log function.
5947
5951
5948 * Big updates to X/Emacs section of the manual.
5952 * Big updates to X/Emacs section of the manual.
5949
5953
5950 * Removed ipython_emacs. Milan explained to me how to pass
5954 * Removed ipython_emacs. Milan explained to me how to pass
5951 arguments to ipython through Emacs. Some day I'm going to end up
5955 arguments to ipython through Emacs. Some day I'm going to end up
5952 learning some lisp...
5956 learning some lisp...
5953
5957
5954 2002-03-04 Fernando Perez <fperez@colorado.edu>
5958 2002-03-04 Fernando Perez <fperez@colorado.edu>
5955
5959
5956 * IPython/ipython_emacs: Created script to be used as the
5960 * IPython/ipython_emacs: Created script to be used as the
5957 py-python-command Emacs variable so we can pass IPython
5961 py-python-command Emacs variable so we can pass IPython
5958 parameters. I can't figure out how to tell Emacs directly to pass
5962 parameters. I can't figure out how to tell Emacs directly to pass
5959 parameters to IPython, so a dummy shell script will do it.
5963 parameters to IPython, so a dummy shell script will do it.
5960
5964
5961 Other enhancements made for things to work better under Emacs'
5965 Other enhancements made for things to work better under Emacs'
5962 various types of terminals. Many thanks to Milan Zamazal
5966 various types of terminals. Many thanks to Milan Zamazal
5963 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5967 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5964
5968
5965 2002-03-01 Fernando Perez <fperez@colorado.edu>
5969 2002-03-01 Fernando Perez <fperez@colorado.edu>
5966
5970
5967 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5971 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5968 that loading of readline is now optional. This gives better
5972 that loading of readline is now optional. This gives better
5969 control to emacs users.
5973 control to emacs users.
5970
5974
5971 * IPython/ultraTB.py (__date__): Modified color escape sequences
5975 * IPython/ultraTB.py (__date__): Modified color escape sequences
5972 and now things work fine under xterm and in Emacs' term buffers
5976 and now things work fine under xterm and in Emacs' term buffers
5973 (though not shell ones). Well, in emacs you get colors, but all
5977 (though not shell ones). Well, in emacs you get colors, but all
5974 seem to be 'light' colors (no difference between dark and light
5978 seem to be 'light' colors (no difference between dark and light
5975 ones). But the garbage chars are gone, and also in xterms. It
5979 ones). But the garbage chars are gone, and also in xterms. It
5976 seems that now I'm using 'cleaner' ansi sequences.
5980 seems that now I'm using 'cleaner' ansi sequences.
5977
5981
5978 2002-02-21 Fernando Perez <fperez@colorado.edu>
5982 2002-02-21 Fernando Perez <fperez@colorado.edu>
5979
5983
5980 * Released 0.2.7 (mainly to publish the scoping fix).
5984 * Released 0.2.7 (mainly to publish the scoping fix).
5981
5985
5982 * IPython/Logger.py (Logger.logstate): added. A corresponding
5986 * IPython/Logger.py (Logger.logstate): added. A corresponding
5983 @logstate magic was created.
5987 @logstate magic was created.
5984
5988
5985 * IPython/Magic.py: fixed nested scoping problem under Python
5989 * IPython/Magic.py: fixed nested scoping problem under Python
5986 2.1.x (automagic wasn't working).
5990 2.1.x (automagic wasn't working).
5987
5991
5988 2002-02-20 Fernando Perez <fperez@colorado.edu>
5992 2002-02-20 Fernando Perez <fperez@colorado.edu>
5989
5993
5990 * Released 0.2.6.
5994 * Released 0.2.6.
5991
5995
5992 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5996 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5993 option so that logs can come out without any headers at all.
5997 option so that logs can come out without any headers at all.
5994
5998
5995 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5999 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5996 SciPy.
6000 SciPy.
5997
6001
5998 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6002 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
5999 that embedded IPython calls don't require vars() to be explicitly
6003 that embedded IPython calls don't require vars() to be explicitly
6000 passed. Now they are extracted from the caller's frame (code
6004 passed. Now they are extracted from the caller's frame (code
6001 snatched from Eric Jones' weave). Added better documentation to
6005 snatched from Eric Jones' weave). Added better documentation to
6002 the section on embedding and the example file.
6006 the section on embedding and the example file.
6003
6007
6004 * IPython/genutils.py (page): Changed so that under emacs, it just
6008 * IPython/genutils.py (page): Changed so that under emacs, it just
6005 prints the string. You can then page up and down in the emacs
6009 prints the string. You can then page up and down in the emacs
6006 buffer itself. This is how the builtin help() works.
6010 buffer itself. This is how the builtin help() works.
6007
6011
6008 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6012 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6009 macro scoping: macros need to be executed in the user's namespace
6013 macro scoping: macros need to be executed in the user's namespace
6010 to work as if they had been typed by the user.
6014 to work as if they had been typed by the user.
6011
6015
6012 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6016 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6013 execute automatically (no need to type 'exec...'). They then
6017 execute automatically (no need to type 'exec...'). They then
6014 behave like 'true macros'. The printing system was also modified
6018 behave like 'true macros'. The printing system was also modified
6015 for this to work.
6019 for this to work.
6016
6020
6017 2002-02-19 Fernando Perez <fperez@colorado.edu>
6021 2002-02-19 Fernando Perez <fperez@colorado.edu>
6018
6022
6019 * IPython/genutils.py (page_file): new function for paging files
6023 * IPython/genutils.py (page_file): new function for paging files
6020 in an OS-independent way. Also necessary for file viewing to work
6024 in an OS-independent way. Also necessary for file viewing to work
6021 well inside Emacs buffers.
6025 well inside Emacs buffers.
6022 (page): Added checks for being in an emacs buffer.
6026 (page): Added checks for being in an emacs buffer.
6023 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6027 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6024 same bug in iplib.
6028 same bug in iplib.
6025
6029
6026 2002-02-18 Fernando Perez <fperez@colorado.edu>
6030 2002-02-18 Fernando Perez <fperez@colorado.edu>
6027
6031
6028 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6032 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6029 of readline so that IPython can work inside an Emacs buffer.
6033 of readline so that IPython can work inside an Emacs buffer.
6030
6034
6031 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6035 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6032 method signatures (they weren't really bugs, but it looks cleaner
6036 method signatures (they weren't really bugs, but it looks cleaner
6033 and keeps PyChecker happy).
6037 and keeps PyChecker happy).
6034
6038
6035 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6039 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6036 for implementing various user-defined hooks. Currently only
6040 for implementing various user-defined hooks. Currently only
6037 display is done.
6041 display is done.
6038
6042
6039 * IPython/Prompts.py (CachedOutput._display): changed display
6043 * IPython/Prompts.py (CachedOutput._display): changed display
6040 functions so that they can be dynamically changed by users easily.
6044 functions so that they can be dynamically changed by users easily.
6041
6045
6042 * IPython/Extensions/numeric_formats.py (num_display): added an
6046 * IPython/Extensions/numeric_formats.py (num_display): added an
6043 extension for printing NumPy arrays in flexible manners. It
6047 extension for printing NumPy arrays in flexible manners. It
6044 doesn't do anything yet, but all the structure is in
6048 doesn't do anything yet, but all the structure is in
6045 place. Ultimately the plan is to implement output format control
6049 place. Ultimately the plan is to implement output format control
6046 like in Octave.
6050 like in Octave.
6047
6051
6048 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6052 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6049 methods are found at run-time by all the automatic machinery.
6053 methods are found at run-time by all the automatic machinery.
6050
6054
6051 2002-02-17 Fernando Perez <fperez@colorado.edu>
6055 2002-02-17 Fernando Perez <fperez@colorado.edu>
6052
6056
6053 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6057 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6054 whole file a little.
6058 whole file a little.
6055
6059
6056 * ToDo: closed this document. Now there's a new_design.lyx
6060 * ToDo: closed this document. Now there's a new_design.lyx
6057 document for all new ideas. Added making a pdf of it for the
6061 document for all new ideas. Added making a pdf of it for the
6058 end-user distro.
6062 end-user distro.
6059
6063
6060 * IPython/Logger.py (Logger.switch_log): Created this to replace
6064 * IPython/Logger.py (Logger.switch_log): Created this to replace
6061 logon() and logoff(). It also fixes a nasty crash reported by
6065 logon() and logoff(). It also fixes a nasty crash reported by
6062 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6066 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6063
6067
6064 * IPython/iplib.py (complete): got auto-completion to work with
6068 * IPython/iplib.py (complete): got auto-completion to work with
6065 automagic (I had wanted this for a long time).
6069 automagic (I had wanted this for a long time).
6066
6070
6067 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6071 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6068 to @file, since file() is now a builtin and clashes with automagic
6072 to @file, since file() is now a builtin and clashes with automagic
6069 for @file.
6073 for @file.
6070
6074
6071 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6075 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6072 of this was previously in iplib, which had grown to more than 2000
6076 of this was previously in iplib, which had grown to more than 2000
6073 lines, way too long. No new functionality, but it makes managing
6077 lines, way too long. No new functionality, but it makes managing
6074 the code a bit easier.
6078 the code a bit easier.
6075
6079
6076 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6080 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6077 information to crash reports.
6081 information to crash reports.
6078
6082
6079 2002-02-12 Fernando Perez <fperez@colorado.edu>
6083 2002-02-12 Fernando Perez <fperez@colorado.edu>
6080
6084
6081 * Released 0.2.5.
6085 * Released 0.2.5.
6082
6086
6083 2002-02-11 Fernando Perez <fperez@colorado.edu>
6087 2002-02-11 Fernando Perez <fperez@colorado.edu>
6084
6088
6085 * Wrote a relatively complete Windows installer. It puts
6089 * Wrote a relatively complete Windows installer. It puts
6086 everything in place, creates Start Menu entries and fixes the
6090 everything in place, creates Start Menu entries and fixes the
6087 color issues. Nothing fancy, but it works.
6091 color issues. Nothing fancy, but it works.
6088
6092
6089 2002-02-10 Fernando Perez <fperez@colorado.edu>
6093 2002-02-10 Fernando Perez <fperez@colorado.edu>
6090
6094
6091 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6095 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6092 os.path.expanduser() call so that we can type @run ~/myfile.py and
6096 os.path.expanduser() call so that we can type @run ~/myfile.py and
6093 have thigs work as expected.
6097 have thigs work as expected.
6094
6098
6095 * IPython/genutils.py (page): fixed exception handling so things
6099 * IPython/genutils.py (page): fixed exception handling so things
6096 work both in Unix and Windows correctly. Quitting a pager triggers
6100 work both in Unix and Windows correctly. Quitting a pager triggers
6097 an IOError/broken pipe in Unix, and in windows not finding a pager
6101 an IOError/broken pipe in Unix, and in windows not finding a pager
6098 is also an IOError, so I had to actually look at the return value
6102 is also an IOError, so I had to actually look at the return value
6099 of the exception, not just the exception itself. Should be ok now.
6103 of the exception, not just the exception itself. Should be ok now.
6100
6104
6101 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6105 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6102 modified to allow case-insensitive color scheme changes.
6106 modified to allow case-insensitive color scheme changes.
6103
6107
6104 2002-02-09 Fernando Perez <fperez@colorado.edu>
6108 2002-02-09 Fernando Perez <fperez@colorado.edu>
6105
6109
6106 * IPython/genutils.py (native_line_ends): new function to leave
6110 * IPython/genutils.py (native_line_ends): new function to leave
6107 user config files with os-native line-endings.
6111 user config files with os-native line-endings.
6108
6112
6109 * README and manual updates.
6113 * README and manual updates.
6110
6114
6111 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6115 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6112 instead of StringType to catch Unicode strings.
6116 instead of StringType to catch Unicode strings.
6113
6117
6114 * IPython/genutils.py (filefind): fixed bug for paths with
6118 * IPython/genutils.py (filefind): fixed bug for paths with
6115 embedded spaces (very common in Windows).
6119 embedded spaces (very common in Windows).
6116
6120
6117 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6121 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6118 files under Windows, so that they get automatically associated
6122 files under Windows, so that they get automatically associated
6119 with a text editor. Windows makes it a pain to handle
6123 with a text editor. Windows makes it a pain to handle
6120 extension-less files.
6124 extension-less files.
6121
6125
6122 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6126 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6123 warning about readline only occur for Posix. In Windows there's no
6127 warning about readline only occur for Posix. In Windows there's no
6124 way to get readline, so why bother with the warning.
6128 way to get readline, so why bother with the warning.
6125
6129
6126 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6130 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6127 for __str__ instead of dir(self), since dir() changed in 2.2.
6131 for __str__ instead of dir(self), since dir() changed in 2.2.
6128
6132
6129 * Ported to Windows! Tested on XP, I suspect it should work fine
6133 * Ported to Windows! Tested on XP, I suspect it should work fine
6130 on NT/2000, but I don't think it will work on 98 et al. That
6134 on NT/2000, but I don't think it will work on 98 et al. That
6131 series of Windows is such a piece of junk anyway that I won't try
6135 series of Windows is such a piece of junk anyway that I won't try
6132 porting it there. The XP port was straightforward, showed a few
6136 porting it there. The XP port was straightforward, showed a few
6133 bugs here and there (fixed all), in particular some string
6137 bugs here and there (fixed all), in particular some string
6134 handling stuff which required considering Unicode strings (which
6138 handling stuff which required considering Unicode strings (which
6135 Windows uses). This is good, but hasn't been too tested :) No
6139 Windows uses). This is good, but hasn't been too tested :) No
6136 fancy installer yet, I'll put a note in the manual so people at
6140 fancy installer yet, I'll put a note in the manual so people at
6137 least make manually a shortcut.
6141 least make manually a shortcut.
6138
6142
6139 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6143 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6140 into a single one, "colors". This now controls both prompt and
6144 into a single one, "colors". This now controls both prompt and
6141 exception color schemes, and can be changed both at startup
6145 exception color schemes, and can be changed both at startup
6142 (either via command-line switches or via ipythonrc files) and at
6146 (either via command-line switches or via ipythonrc files) and at
6143 runtime, with @colors.
6147 runtime, with @colors.
6144 (Magic.magic_run): renamed @prun to @run and removed the old
6148 (Magic.magic_run): renamed @prun to @run and removed the old
6145 @run. The two were too similar to warrant keeping both.
6149 @run. The two were too similar to warrant keeping both.
6146
6150
6147 2002-02-03 Fernando Perez <fperez@colorado.edu>
6151 2002-02-03 Fernando Perez <fperez@colorado.edu>
6148
6152
6149 * IPython/iplib.py (install_first_time): Added comment on how to
6153 * IPython/iplib.py (install_first_time): Added comment on how to
6150 configure the color options for first-time users. Put a <return>
6154 configure the color options for first-time users. Put a <return>
6151 request at the end so that small-terminal users get a chance to
6155 request at the end so that small-terminal users get a chance to
6152 read the startup info.
6156 read the startup info.
6153
6157
6154 2002-01-23 Fernando Perez <fperez@colorado.edu>
6158 2002-01-23 Fernando Perez <fperez@colorado.edu>
6155
6159
6156 * IPython/iplib.py (CachedOutput.update): Changed output memory
6160 * IPython/iplib.py (CachedOutput.update): Changed output memory
6157 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6161 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6158 input history we still use _i. Did this b/c these variable are
6162 input history we still use _i. Did this b/c these variable are
6159 very commonly used in interactive work, so the less we need to
6163 very commonly used in interactive work, so the less we need to
6160 type the better off we are.
6164 type the better off we are.
6161 (Magic.magic_prun): updated @prun to better handle the namespaces
6165 (Magic.magic_prun): updated @prun to better handle the namespaces
6162 the file will run in, including a fix for __name__ not being set
6166 the file will run in, including a fix for __name__ not being set
6163 before.
6167 before.
6164
6168
6165 2002-01-20 Fernando Perez <fperez@colorado.edu>
6169 2002-01-20 Fernando Perez <fperez@colorado.edu>
6166
6170
6167 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6171 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6168 extra garbage for Python 2.2. Need to look more carefully into
6172 extra garbage for Python 2.2. Need to look more carefully into
6169 this later.
6173 this later.
6170
6174
6171 2002-01-19 Fernando Perez <fperez@colorado.edu>
6175 2002-01-19 Fernando Perez <fperez@colorado.edu>
6172
6176
6173 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6177 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6174 display SyntaxError exceptions properly formatted when they occur
6178 display SyntaxError exceptions properly formatted when they occur
6175 (they can be triggered by imported code).
6179 (they can be triggered by imported code).
6176
6180
6177 2002-01-18 Fernando Perez <fperez@colorado.edu>
6181 2002-01-18 Fernando Perez <fperez@colorado.edu>
6178
6182
6179 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6183 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6180 SyntaxError exceptions are reported nicely formatted, instead of
6184 SyntaxError exceptions are reported nicely formatted, instead of
6181 spitting out only offset information as before.
6185 spitting out only offset information as before.
6182 (Magic.magic_prun): Added the @prun function for executing
6186 (Magic.magic_prun): Added the @prun function for executing
6183 programs with command line args inside IPython.
6187 programs with command line args inside IPython.
6184
6188
6185 2002-01-16 Fernando Perez <fperez@colorado.edu>
6189 2002-01-16 Fernando Perez <fperez@colorado.edu>
6186
6190
6187 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6191 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6188 to *not* include the last item given in a range. This brings their
6192 to *not* include the last item given in a range. This brings their
6189 behavior in line with Python's slicing:
6193 behavior in line with Python's slicing:
6190 a[n1:n2] -> a[n1]...a[n2-1]
6194 a[n1:n2] -> a[n1]...a[n2-1]
6191 It may be a bit less convenient, but I prefer to stick to Python's
6195 It may be a bit less convenient, but I prefer to stick to Python's
6192 conventions *everywhere*, so users never have to wonder.
6196 conventions *everywhere*, so users never have to wonder.
6193 (Magic.magic_macro): Added @macro function to ease the creation of
6197 (Magic.magic_macro): Added @macro function to ease the creation of
6194 macros.
6198 macros.
6195
6199
6196 2002-01-05 Fernando Perez <fperez@colorado.edu>
6200 2002-01-05 Fernando Perez <fperez@colorado.edu>
6197
6201
6198 * Released 0.2.4.
6202 * Released 0.2.4.
6199
6203
6200 * IPython/iplib.py (Magic.magic_pdef):
6204 * IPython/iplib.py (Magic.magic_pdef):
6201 (InteractiveShell.safe_execfile): report magic lines and error
6205 (InteractiveShell.safe_execfile): report magic lines and error
6202 lines without line numbers so one can easily copy/paste them for
6206 lines without line numbers so one can easily copy/paste them for
6203 re-execution.
6207 re-execution.
6204
6208
6205 * Updated manual with recent changes.
6209 * Updated manual with recent changes.
6206
6210
6207 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6211 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6208 docstring printing when class? is called. Very handy for knowing
6212 docstring printing when class? is called. Very handy for knowing
6209 how to create class instances (as long as __init__ is well
6213 how to create class instances (as long as __init__ is well
6210 documented, of course :)
6214 documented, of course :)
6211 (Magic.magic_doc): print both class and constructor docstrings.
6215 (Magic.magic_doc): print both class and constructor docstrings.
6212 (Magic.magic_pdef): give constructor info if passed a class and
6216 (Magic.magic_pdef): give constructor info if passed a class and
6213 __call__ info for callable object instances.
6217 __call__ info for callable object instances.
6214
6218
6215 2002-01-04 Fernando Perez <fperez@colorado.edu>
6219 2002-01-04 Fernando Perez <fperez@colorado.edu>
6216
6220
6217 * Made deep_reload() off by default. It doesn't always work
6221 * Made deep_reload() off by default. It doesn't always work
6218 exactly as intended, so it's probably safer to have it off. It's
6222 exactly as intended, so it's probably safer to have it off. It's
6219 still available as dreload() anyway, so nothing is lost.
6223 still available as dreload() anyway, so nothing is lost.
6220
6224
6221 2002-01-02 Fernando Perez <fperez@colorado.edu>
6225 2002-01-02 Fernando Perez <fperez@colorado.edu>
6222
6226
6223 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6227 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6224 so I wanted an updated release).
6228 so I wanted an updated release).
6225
6229
6226 2001-12-27 Fernando Perez <fperez@colorado.edu>
6230 2001-12-27 Fernando Perez <fperez@colorado.edu>
6227
6231
6228 * IPython/iplib.py (InteractiveShell.interact): Added the original
6232 * IPython/iplib.py (InteractiveShell.interact): Added the original
6229 code from 'code.py' for this module in order to change the
6233 code from 'code.py' for this module in order to change the
6230 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6234 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6231 the history cache would break when the user hit Ctrl-C, and
6235 the history cache would break when the user hit Ctrl-C, and
6232 interact() offers no way to add any hooks to it.
6236 interact() offers no way to add any hooks to it.
6233
6237
6234 2001-12-23 Fernando Perez <fperez@colorado.edu>
6238 2001-12-23 Fernando Perez <fperez@colorado.edu>
6235
6239
6236 * setup.py: added check for 'MANIFEST' before trying to remove
6240 * setup.py: added check for 'MANIFEST' before trying to remove
6237 it. Thanks to Sean Reifschneider.
6241 it. Thanks to Sean Reifschneider.
6238
6242
6239 2001-12-22 Fernando Perez <fperez@colorado.edu>
6243 2001-12-22 Fernando Perez <fperez@colorado.edu>
6240
6244
6241 * Released 0.2.2.
6245 * Released 0.2.2.
6242
6246
6243 * Finished (reasonably) writing the manual. Later will add the
6247 * Finished (reasonably) writing the manual. Later will add the
6244 python-standard navigation stylesheets, but for the time being
6248 python-standard navigation stylesheets, but for the time being
6245 it's fairly complete. Distribution will include html and pdf
6249 it's fairly complete. Distribution will include html and pdf
6246 versions.
6250 versions.
6247
6251
6248 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6252 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6249 (MayaVi author).
6253 (MayaVi author).
6250
6254
6251 2001-12-21 Fernando Perez <fperez@colorado.edu>
6255 2001-12-21 Fernando Perez <fperez@colorado.edu>
6252
6256
6253 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6257 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6254 good public release, I think (with the manual and the distutils
6258 good public release, I think (with the manual and the distutils
6255 installer). The manual can use some work, but that can go
6259 installer). The manual can use some work, but that can go
6256 slowly. Otherwise I think it's quite nice for end users. Next
6260 slowly. Otherwise I think it's quite nice for end users. Next
6257 summer, rewrite the guts of it...
6261 summer, rewrite the guts of it...
6258
6262
6259 * Changed format of ipythonrc files to use whitespace as the
6263 * Changed format of ipythonrc files to use whitespace as the
6260 separator instead of an explicit '='. Cleaner.
6264 separator instead of an explicit '='. Cleaner.
6261
6265
6262 2001-12-20 Fernando Perez <fperez@colorado.edu>
6266 2001-12-20 Fernando Perez <fperez@colorado.edu>
6263
6267
6264 * Started a manual in LyX. For now it's just a quick merge of the
6268 * Started a manual in LyX. For now it's just a quick merge of the
6265 various internal docstrings and READMEs. Later it may grow into a
6269 various internal docstrings and READMEs. Later it may grow into a
6266 nice, full-blown manual.
6270 nice, full-blown manual.
6267
6271
6268 * Set up a distutils based installer. Installation should now be
6272 * Set up a distutils based installer. Installation should now be
6269 trivially simple for end-users.
6273 trivially simple for end-users.
6270
6274
6271 2001-12-11 Fernando Perez <fperez@colorado.edu>
6275 2001-12-11 Fernando Perez <fperez@colorado.edu>
6272
6276
6273 * Released 0.2.0. First public release, announced it at
6277 * Released 0.2.0. First public release, announced it at
6274 comp.lang.python. From now on, just bugfixes...
6278 comp.lang.python. From now on, just bugfixes...
6275
6279
6276 * Went through all the files, set copyright/license notices and
6280 * Went through all the files, set copyright/license notices and
6277 cleaned up things. Ready for release.
6281 cleaned up things. Ready for release.
6278
6282
6279 2001-12-10 Fernando Perez <fperez@colorado.edu>
6283 2001-12-10 Fernando Perez <fperez@colorado.edu>
6280
6284
6281 * Changed the first-time installer not to use tarfiles. It's more
6285 * Changed the first-time installer not to use tarfiles. It's more
6282 robust now and less unix-dependent. Also makes it easier for
6286 robust now and less unix-dependent. Also makes it easier for
6283 people to later upgrade versions.
6287 people to later upgrade versions.
6284
6288
6285 * Changed @exit to @abort to reflect the fact that it's pretty
6289 * Changed @exit to @abort to reflect the fact that it's pretty
6286 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6290 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6287 becomes significant only when IPyhton is embedded: in that case,
6291 becomes significant only when IPyhton is embedded: in that case,
6288 C-D closes IPython only, but @abort kills the enclosing program
6292 C-D closes IPython only, but @abort kills the enclosing program
6289 too (unless it had called IPython inside a try catching
6293 too (unless it had called IPython inside a try catching
6290 SystemExit).
6294 SystemExit).
6291
6295
6292 * Created Shell module which exposes the actuall IPython Shell
6296 * Created Shell module which exposes the actuall IPython Shell
6293 classes, currently the normal and the embeddable one. This at
6297 classes, currently the normal and the embeddable one. This at
6294 least offers a stable interface we won't need to change when
6298 least offers a stable interface we won't need to change when
6295 (later) the internals are rewritten. That rewrite will be confined
6299 (later) the internals are rewritten. That rewrite will be confined
6296 to iplib and ipmaker, but the Shell interface should remain as is.
6300 to iplib and ipmaker, but the Shell interface should remain as is.
6297
6301
6298 * Added embed module which offers an embeddable IPShell object,
6302 * Added embed module which offers an embeddable IPShell object,
6299 useful to fire up IPython *inside* a running program. Great for
6303 useful to fire up IPython *inside* a running program. Great for
6300 debugging or dynamical data analysis.
6304 debugging or dynamical data analysis.
6301
6305
6302 2001-12-08 Fernando Perez <fperez@colorado.edu>
6306 2001-12-08 Fernando Perez <fperez@colorado.edu>
6303
6307
6304 * Fixed small bug preventing seeing info from methods of defined
6308 * Fixed small bug preventing seeing info from methods of defined
6305 objects (incorrect namespace in _ofind()).
6309 objects (incorrect namespace in _ofind()).
6306
6310
6307 * Documentation cleanup. Moved the main usage docstrings to a
6311 * Documentation cleanup. Moved the main usage docstrings to a
6308 separate file, usage.py (cleaner to maintain, and hopefully in the
6312 separate file, usage.py (cleaner to maintain, and hopefully in the
6309 future some perlpod-like way of producing interactive, man and
6313 future some perlpod-like way of producing interactive, man and
6310 html docs out of it will be found).
6314 html docs out of it will be found).
6311
6315
6312 * Added @profile to see your profile at any time.
6316 * Added @profile to see your profile at any time.
6313
6317
6314 * Added @p as an alias for 'print'. It's especially convenient if
6318 * Added @p as an alias for 'print'. It's especially convenient if
6315 using automagic ('p x' prints x).
6319 using automagic ('p x' prints x).
6316
6320
6317 * Small cleanups and fixes after a pychecker run.
6321 * Small cleanups and fixes after a pychecker run.
6318
6322
6319 * Changed the @cd command to handle @cd - and @cd -<n> for
6323 * Changed the @cd command to handle @cd - and @cd -<n> for
6320 visiting any directory in _dh.
6324 visiting any directory in _dh.
6321
6325
6322 * Introduced _dh, a history of visited directories. @dhist prints
6326 * Introduced _dh, a history of visited directories. @dhist prints
6323 it out with numbers.
6327 it out with numbers.
6324
6328
6325 2001-12-07 Fernando Perez <fperez@colorado.edu>
6329 2001-12-07 Fernando Perez <fperez@colorado.edu>
6326
6330
6327 * Released 0.1.22
6331 * Released 0.1.22
6328
6332
6329 * Made initialization a bit more robust against invalid color
6333 * Made initialization a bit more robust against invalid color
6330 options in user input (exit, not traceback-crash).
6334 options in user input (exit, not traceback-crash).
6331
6335
6332 * Changed the bug crash reporter to write the report only in the
6336 * Changed the bug crash reporter to write the report only in the
6333 user's .ipython directory. That way IPython won't litter people's
6337 user's .ipython directory. That way IPython won't litter people's
6334 hard disks with crash files all over the place. Also print on
6338 hard disks with crash files all over the place. Also print on
6335 screen the necessary mail command.
6339 screen the necessary mail command.
6336
6340
6337 * With the new ultraTB, implemented LightBG color scheme for light
6341 * With the new ultraTB, implemented LightBG color scheme for light
6338 background terminals. A lot of people like white backgrounds, so I
6342 background terminals. A lot of people like white backgrounds, so I
6339 guess we should at least give them something readable.
6343 guess we should at least give them something readable.
6340
6344
6341 2001-12-06 Fernando Perez <fperez@colorado.edu>
6345 2001-12-06 Fernando Perez <fperez@colorado.edu>
6342
6346
6343 * Modified the structure of ultraTB. Now there's a proper class
6347 * Modified the structure of ultraTB. Now there's a proper class
6344 for tables of color schemes which allow adding schemes easily and
6348 for tables of color schemes which allow adding schemes easily and
6345 switching the active scheme without creating a new instance every
6349 switching the active scheme without creating a new instance every
6346 time (which was ridiculous). The syntax for creating new schemes
6350 time (which was ridiculous). The syntax for creating new schemes
6347 is also cleaner. I think ultraTB is finally done, with a clean
6351 is also cleaner. I think ultraTB is finally done, with a clean
6348 class structure. Names are also much cleaner (now there's proper
6352 class structure. Names are also much cleaner (now there's proper
6349 color tables, no need for every variable to also have 'color' in
6353 color tables, no need for every variable to also have 'color' in
6350 its name).
6354 its name).
6351
6355
6352 * Broke down genutils into separate files. Now genutils only
6356 * Broke down genutils into separate files. Now genutils only
6353 contains utility functions, and classes have been moved to their
6357 contains utility functions, and classes have been moved to their
6354 own files (they had enough independent functionality to warrant
6358 own files (they had enough independent functionality to warrant
6355 it): ConfigLoader, OutputTrap, Struct.
6359 it): ConfigLoader, OutputTrap, Struct.
6356
6360
6357 2001-12-05 Fernando Perez <fperez@colorado.edu>
6361 2001-12-05 Fernando Perez <fperez@colorado.edu>
6358
6362
6359 * IPython turns 21! Released version 0.1.21, as a candidate for
6363 * IPython turns 21! Released version 0.1.21, as a candidate for
6360 public consumption. If all goes well, release in a few days.
6364 public consumption. If all goes well, release in a few days.
6361
6365
6362 * Fixed path bug (files in Extensions/ directory wouldn't be found
6366 * Fixed path bug (files in Extensions/ directory wouldn't be found
6363 unless IPython/ was explicitly in sys.path).
6367 unless IPython/ was explicitly in sys.path).
6364
6368
6365 * Extended the FlexCompleter class as MagicCompleter to allow
6369 * Extended the FlexCompleter class as MagicCompleter to allow
6366 completion of @-starting lines.
6370 completion of @-starting lines.
6367
6371
6368 * Created __release__.py file as a central repository for release
6372 * Created __release__.py file as a central repository for release
6369 info that other files can read from.
6373 info that other files can read from.
6370
6374
6371 * Fixed small bug in logging: when logging was turned on in
6375 * Fixed small bug in logging: when logging was turned on in
6372 mid-session, old lines with special meanings (!@?) were being
6376 mid-session, old lines with special meanings (!@?) were being
6373 logged without the prepended comment, which is necessary since
6377 logged without the prepended comment, which is necessary since
6374 they are not truly valid python syntax. This should make session
6378 they are not truly valid python syntax. This should make session
6375 restores produce less errors.
6379 restores produce less errors.
6376
6380
6377 * The namespace cleanup forced me to make a FlexCompleter class
6381 * The namespace cleanup forced me to make a FlexCompleter class
6378 which is nothing but a ripoff of rlcompleter, but with selectable
6382 which is nothing but a ripoff of rlcompleter, but with selectable
6379 namespace (rlcompleter only works in __main__.__dict__). I'll try
6383 namespace (rlcompleter only works in __main__.__dict__). I'll try
6380 to submit a note to the authors to see if this change can be
6384 to submit a note to the authors to see if this change can be
6381 incorporated in future rlcompleter releases (Dec.6: done)
6385 incorporated in future rlcompleter releases (Dec.6: done)
6382
6386
6383 * More fixes to namespace handling. It was a mess! Now all
6387 * More fixes to namespace handling. It was a mess! Now all
6384 explicit references to __main__.__dict__ are gone (except when
6388 explicit references to __main__.__dict__ are gone (except when
6385 really needed) and everything is handled through the namespace
6389 really needed) and everything is handled through the namespace
6386 dicts in the IPython instance. We seem to be getting somewhere
6390 dicts in the IPython instance. We seem to be getting somewhere
6387 with this, finally...
6391 with this, finally...
6388
6392
6389 * Small documentation updates.
6393 * Small documentation updates.
6390
6394
6391 * Created the Extensions directory under IPython (with an
6395 * Created the Extensions directory under IPython (with an
6392 __init__.py). Put the PhysicalQ stuff there. This directory should
6396 __init__.py). Put the PhysicalQ stuff there. This directory should
6393 be used for all special-purpose extensions.
6397 be used for all special-purpose extensions.
6394
6398
6395 * File renaming:
6399 * File renaming:
6396 ipythonlib --> ipmaker
6400 ipythonlib --> ipmaker
6397 ipplib --> iplib
6401 ipplib --> iplib
6398 This makes a bit more sense in terms of what these files actually do.
6402 This makes a bit more sense in terms of what these files actually do.
6399
6403
6400 * Moved all the classes and functions in ipythonlib to ipplib, so
6404 * Moved all the classes and functions in ipythonlib to ipplib, so
6401 now ipythonlib only has make_IPython(). This will ease up its
6405 now ipythonlib only has make_IPython(). This will ease up its
6402 splitting in smaller functional chunks later.
6406 splitting in smaller functional chunks later.
6403
6407
6404 * Cleaned up (done, I think) output of @whos. Better column
6408 * Cleaned up (done, I think) output of @whos. Better column
6405 formatting, and now shows str(var) for as much as it can, which is
6409 formatting, and now shows str(var) for as much as it can, which is
6406 typically what one gets with a 'print var'.
6410 typically what one gets with a 'print var'.
6407
6411
6408 2001-12-04 Fernando Perez <fperez@colorado.edu>
6412 2001-12-04 Fernando Perez <fperez@colorado.edu>
6409
6413
6410 * Fixed namespace problems. Now builtin/IPyhton/user names get
6414 * Fixed namespace problems. Now builtin/IPyhton/user names get
6411 properly reported in their namespace. Internal namespace handling
6415 properly reported in their namespace. Internal namespace handling
6412 is finally getting decent (not perfect yet, but much better than
6416 is finally getting decent (not perfect yet, but much better than
6413 the ad-hoc mess we had).
6417 the ad-hoc mess we had).
6414
6418
6415 * Removed -exit option. If people just want to run a python
6419 * Removed -exit option. If people just want to run a python
6416 script, that's what the normal interpreter is for. Less
6420 script, that's what the normal interpreter is for. Less
6417 unnecessary options, less chances for bugs.
6421 unnecessary options, less chances for bugs.
6418
6422
6419 * Added a crash handler which generates a complete post-mortem if
6423 * Added a crash handler which generates a complete post-mortem if
6420 IPython crashes. This will help a lot in tracking bugs down the
6424 IPython crashes. This will help a lot in tracking bugs down the
6421 road.
6425 road.
6422
6426
6423 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6427 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6424 which were boud to functions being reassigned would bypass the
6428 which were boud to functions being reassigned would bypass the
6425 logger, breaking the sync of _il with the prompt counter. This
6429 logger, breaking the sync of _il with the prompt counter. This
6426 would then crash IPython later when a new line was logged.
6430 would then crash IPython later when a new line was logged.
6427
6431
6428 2001-12-02 Fernando Perez <fperez@colorado.edu>
6432 2001-12-02 Fernando Perez <fperez@colorado.edu>
6429
6433
6430 * Made IPython a package. This means people don't have to clutter
6434 * Made IPython a package. This means people don't have to clutter
6431 their sys.path with yet another directory. Changed the INSTALL
6435 their sys.path with yet another directory. Changed the INSTALL
6432 file accordingly.
6436 file accordingly.
6433
6437
6434 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6438 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6435 sorts its output (so @who shows it sorted) and @whos formats the
6439 sorts its output (so @who shows it sorted) and @whos formats the
6436 table according to the width of the first column. Nicer, easier to
6440 table according to the width of the first column. Nicer, easier to
6437 read. Todo: write a generic table_format() which takes a list of
6441 read. Todo: write a generic table_format() which takes a list of
6438 lists and prints it nicely formatted, with optional row/column
6442 lists and prints it nicely formatted, with optional row/column
6439 separators and proper padding and justification.
6443 separators and proper padding and justification.
6440
6444
6441 * Released 0.1.20
6445 * Released 0.1.20
6442
6446
6443 * Fixed bug in @log which would reverse the inputcache list (a
6447 * Fixed bug in @log which would reverse the inputcache list (a
6444 copy operation was missing).
6448 copy operation was missing).
6445
6449
6446 * Code cleanup. @config was changed to use page(). Better, since
6450 * Code cleanup. @config was changed to use page(). Better, since
6447 its output is always quite long.
6451 its output is always quite long.
6448
6452
6449 * Itpl is back as a dependency. I was having too many problems
6453 * Itpl is back as a dependency. I was having too many problems
6450 getting the parametric aliases to work reliably, and it's just
6454 getting the parametric aliases to work reliably, and it's just
6451 easier to code weird string operations with it than playing %()s
6455 easier to code weird string operations with it than playing %()s
6452 games. It's only ~6k, so I don't think it's too big a deal.
6456 games. It's only ~6k, so I don't think it's too big a deal.
6453
6457
6454 * Found (and fixed) a very nasty bug with history. !lines weren't
6458 * Found (and fixed) a very nasty bug with history. !lines weren't
6455 getting cached, and the out of sync caches would crash
6459 getting cached, and the out of sync caches would crash
6456 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6460 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6457 division of labor a bit better. Bug fixed, cleaner structure.
6461 division of labor a bit better. Bug fixed, cleaner structure.
6458
6462
6459 2001-12-01 Fernando Perez <fperez@colorado.edu>
6463 2001-12-01 Fernando Perez <fperez@colorado.edu>
6460
6464
6461 * Released 0.1.19
6465 * Released 0.1.19
6462
6466
6463 * Added option -n to @hist to prevent line number printing. Much
6467 * Added option -n to @hist to prevent line number printing. Much
6464 easier to copy/paste code this way.
6468 easier to copy/paste code this way.
6465
6469
6466 * Created global _il to hold the input list. Allows easy
6470 * Created global _il to hold the input list. Allows easy
6467 re-execution of blocks of code by slicing it (inspired by Janko's
6471 re-execution of blocks of code by slicing it (inspired by Janko's
6468 comment on 'macros').
6472 comment on 'macros').
6469
6473
6470 * Small fixes and doc updates.
6474 * Small fixes and doc updates.
6471
6475
6472 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6476 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6473 much too fragile with automagic. Handles properly multi-line
6477 much too fragile with automagic. Handles properly multi-line
6474 statements and takes parameters.
6478 statements and takes parameters.
6475
6479
6476 2001-11-30 Fernando Perez <fperez@colorado.edu>
6480 2001-11-30 Fernando Perez <fperez@colorado.edu>
6477
6481
6478 * Version 0.1.18 released.
6482 * Version 0.1.18 released.
6479
6483
6480 * Fixed nasty namespace bug in initial module imports.
6484 * Fixed nasty namespace bug in initial module imports.
6481
6485
6482 * Added copyright/license notes to all code files (except
6486 * Added copyright/license notes to all code files (except
6483 DPyGetOpt). For the time being, LGPL. That could change.
6487 DPyGetOpt). For the time being, LGPL. That could change.
6484
6488
6485 * Rewrote a much nicer README, updated INSTALL, cleaned up
6489 * Rewrote a much nicer README, updated INSTALL, cleaned up
6486 ipythonrc-* samples.
6490 ipythonrc-* samples.
6487
6491
6488 * Overall code/documentation cleanup. Basically ready for
6492 * Overall code/documentation cleanup. Basically ready for
6489 release. Only remaining thing: licence decision (LGPL?).
6493 release. Only remaining thing: licence decision (LGPL?).
6490
6494
6491 * Converted load_config to a class, ConfigLoader. Now recursion
6495 * Converted load_config to a class, ConfigLoader. Now recursion
6492 control is better organized. Doesn't include the same file twice.
6496 control is better organized. Doesn't include the same file twice.
6493
6497
6494 2001-11-29 Fernando Perez <fperez@colorado.edu>
6498 2001-11-29 Fernando Perez <fperez@colorado.edu>
6495
6499
6496 * Got input history working. Changed output history variables from
6500 * Got input history working. Changed output history variables from
6497 _p to _o so that _i is for input and _o for output. Just cleaner
6501 _p to _o so that _i is for input and _o for output. Just cleaner
6498 convention.
6502 convention.
6499
6503
6500 * Implemented parametric aliases. This pretty much allows the
6504 * Implemented parametric aliases. This pretty much allows the
6501 alias system to offer full-blown shell convenience, I think.
6505 alias system to offer full-blown shell convenience, I think.
6502
6506
6503 * Version 0.1.17 released, 0.1.18 opened.
6507 * Version 0.1.17 released, 0.1.18 opened.
6504
6508
6505 * dot_ipython/ipythonrc (alias): added documentation.
6509 * dot_ipython/ipythonrc (alias): added documentation.
6506 (xcolor): Fixed small bug (xcolors -> xcolor)
6510 (xcolor): Fixed small bug (xcolors -> xcolor)
6507
6511
6508 * Changed the alias system. Now alias is a magic command to define
6512 * Changed the alias system. Now alias is a magic command to define
6509 aliases just like the shell. Rationale: the builtin magics should
6513 aliases just like the shell. Rationale: the builtin magics should
6510 be there for things deeply connected to IPython's
6514 be there for things deeply connected to IPython's
6511 architecture. And this is a much lighter system for what I think
6515 architecture. And this is a much lighter system for what I think
6512 is the really important feature: allowing users to define quickly
6516 is the really important feature: allowing users to define quickly
6513 magics that will do shell things for them, so they can customize
6517 magics that will do shell things for them, so they can customize
6514 IPython easily to match their work habits. If someone is really
6518 IPython easily to match their work habits. If someone is really
6515 desperate to have another name for a builtin alias, they can
6519 desperate to have another name for a builtin alias, they can
6516 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6520 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6517 works.
6521 works.
6518
6522
6519 2001-11-28 Fernando Perez <fperez@colorado.edu>
6523 2001-11-28 Fernando Perez <fperez@colorado.edu>
6520
6524
6521 * Changed @file so that it opens the source file at the proper
6525 * Changed @file so that it opens the source file at the proper
6522 line. Since it uses less, if your EDITOR environment is
6526 line. Since it uses less, if your EDITOR environment is
6523 configured, typing v will immediately open your editor of choice
6527 configured, typing v will immediately open your editor of choice
6524 right at the line where the object is defined. Not as quick as
6528 right at the line where the object is defined. Not as quick as
6525 having a direct @edit command, but for all intents and purposes it
6529 having a direct @edit command, but for all intents and purposes it
6526 works. And I don't have to worry about writing @edit to deal with
6530 works. And I don't have to worry about writing @edit to deal with
6527 all the editors, less does that.
6531 all the editors, less does that.
6528
6532
6529 * Version 0.1.16 released, 0.1.17 opened.
6533 * Version 0.1.16 released, 0.1.17 opened.
6530
6534
6531 * Fixed some nasty bugs in the page/page_dumb combo that could
6535 * Fixed some nasty bugs in the page/page_dumb combo that could
6532 crash IPython.
6536 crash IPython.
6533
6537
6534 2001-11-27 Fernando Perez <fperez@colorado.edu>
6538 2001-11-27 Fernando Perez <fperez@colorado.edu>
6535
6539
6536 * Version 0.1.15 released, 0.1.16 opened.
6540 * Version 0.1.15 released, 0.1.16 opened.
6537
6541
6538 * Finally got ? and ?? to work for undefined things: now it's
6542 * Finally got ? and ?? to work for undefined things: now it's
6539 possible to type {}.get? and get information about the get method
6543 possible to type {}.get? and get information about the get method
6540 of dicts, or os.path? even if only os is defined (so technically
6544 of dicts, or os.path? even if only os is defined (so technically
6541 os.path isn't). Works at any level. For example, after import os,
6545 os.path isn't). Works at any level. For example, after import os,
6542 os?, os.path?, os.path.abspath? all work. This is great, took some
6546 os?, os.path?, os.path.abspath? all work. This is great, took some
6543 work in _ofind.
6547 work in _ofind.
6544
6548
6545 * Fixed more bugs with logging. The sanest way to do it was to add
6549 * Fixed more bugs with logging. The sanest way to do it was to add
6546 to @log a 'mode' parameter. Killed two in one shot (this mode
6550 to @log a 'mode' parameter. Killed two in one shot (this mode
6547 option was a request of Janko's). I think it's finally clean
6551 option was a request of Janko's). I think it's finally clean
6548 (famous last words).
6552 (famous last words).
6549
6553
6550 * Added a page_dumb() pager which does a decent job of paging on
6554 * Added a page_dumb() pager which does a decent job of paging on
6551 screen, if better things (like less) aren't available. One less
6555 screen, if better things (like less) aren't available. One less
6552 unix dependency (someday maybe somebody will port this to
6556 unix dependency (someday maybe somebody will port this to
6553 windows).
6557 windows).
6554
6558
6555 * Fixed problem in magic_log: would lock of logging out if log
6559 * Fixed problem in magic_log: would lock of logging out if log
6556 creation failed (because it would still think it had succeeded).
6560 creation failed (because it would still think it had succeeded).
6557
6561
6558 * Improved the page() function using curses to auto-detect screen
6562 * Improved the page() function using curses to auto-detect screen
6559 size. Now it can make a much better decision on whether to print
6563 size. Now it can make a much better decision on whether to print
6560 or page a string. Option screen_length was modified: a value 0
6564 or page a string. Option screen_length was modified: a value 0
6561 means auto-detect, and that's the default now.
6565 means auto-detect, and that's the default now.
6562
6566
6563 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6567 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6564 go out. I'll test it for a few days, then talk to Janko about
6568 go out. I'll test it for a few days, then talk to Janko about
6565 licences and announce it.
6569 licences and announce it.
6566
6570
6567 * Fixed the length of the auto-generated ---> prompt which appears
6571 * Fixed the length of the auto-generated ---> prompt which appears
6568 for auto-parens and auto-quotes. Getting this right isn't trivial,
6572 for auto-parens and auto-quotes. Getting this right isn't trivial,
6569 with all the color escapes, different prompt types and optional
6573 with all the color escapes, different prompt types and optional
6570 separators. But it seems to be working in all the combinations.
6574 separators. But it seems to be working in all the combinations.
6571
6575
6572 2001-11-26 Fernando Perez <fperez@colorado.edu>
6576 2001-11-26 Fernando Perez <fperez@colorado.edu>
6573
6577
6574 * Wrote a regexp filter to get option types from the option names
6578 * Wrote a regexp filter to get option types from the option names
6575 string. This eliminates the need to manually keep two duplicate
6579 string. This eliminates the need to manually keep two duplicate
6576 lists.
6580 lists.
6577
6581
6578 * Removed the unneeded check_option_names. Now options are handled
6582 * Removed the unneeded check_option_names. Now options are handled
6579 in a much saner manner and it's easy to visually check that things
6583 in a much saner manner and it's easy to visually check that things
6580 are ok.
6584 are ok.
6581
6585
6582 * Updated version numbers on all files I modified to carry a
6586 * Updated version numbers on all files I modified to carry a
6583 notice so Janko and Nathan have clear version markers.
6587 notice so Janko and Nathan have clear version markers.
6584
6588
6585 * Updated docstring for ultraTB with my changes. I should send
6589 * Updated docstring for ultraTB with my changes. I should send
6586 this to Nathan.
6590 this to Nathan.
6587
6591
6588 * Lots of small fixes. Ran everything through pychecker again.
6592 * Lots of small fixes. Ran everything through pychecker again.
6589
6593
6590 * Made loading of deep_reload an cmd line option. If it's not too
6594 * Made loading of deep_reload an cmd line option. If it's not too
6591 kosher, now people can just disable it. With -nodeep_reload it's
6595 kosher, now people can just disable it. With -nodeep_reload it's
6592 still available as dreload(), it just won't overwrite reload().
6596 still available as dreload(), it just won't overwrite reload().
6593
6597
6594 * Moved many options to the no| form (-opt and -noopt
6598 * Moved many options to the no| form (-opt and -noopt
6595 accepted). Cleaner.
6599 accepted). Cleaner.
6596
6600
6597 * Changed magic_log so that if called with no parameters, it uses
6601 * Changed magic_log so that if called with no parameters, it uses
6598 'rotate' mode. That way auto-generated logs aren't automatically
6602 'rotate' mode. That way auto-generated logs aren't automatically
6599 over-written. For normal logs, now a backup is made if it exists
6603 over-written. For normal logs, now a backup is made if it exists
6600 (only 1 level of backups). A new 'backup' mode was added to the
6604 (only 1 level of backups). A new 'backup' mode was added to the
6601 Logger class to support this. This was a request by Janko.
6605 Logger class to support this. This was a request by Janko.
6602
6606
6603 * Added @logoff/@logon to stop/restart an active log.
6607 * Added @logoff/@logon to stop/restart an active log.
6604
6608
6605 * Fixed a lot of bugs in log saving/replay. It was pretty
6609 * Fixed a lot of bugs in log saving/replay. It was pretty
6606 broken. Now special lines (!@,/) appear properly in the command
6610 broken. Now special lines (!@,/) appear properly in the command
6607 history after a log replay.
6611 history after a log replay.
6608
6612
6609 * Tried and failed to implement full session saving via pickle. My
6613 * Tried and failed to implement full session saving via pickle. My
6610 idea was to pickle __main__.__dict__, but modules can't be
6614 idea was to pickle __main__.__dict__, but modules can't be
6611 pickled. This would be a better alternative to replaying logs, but
6615 pickled. This would be a better alternative to replaying logs, but
6612 seems quite tricky to get to work. Changed -session to be called
6616 seems quite tricky to get to work. Changed -session to be called
6613 -logplay, which more accurately reflects what it does. And if we
6617 -logplay, which more accurately reflects what it does. And if we
6614 ever get real session saving working, -session is now available.
6618 ever get real session saving working, -session is now available.
6615
6619
6616 * Implemented color schemes for prompts also. As for tracebacks,
6620 * Implemented color schemes for prompts also. As for tracebacks,
6617 currently only NoColor and Linux are supported. But now the
6621 currently only NoColor and Linux are supported. But now the
6618 infrastructure is in place, based on a generic ColorScheme
6622 infrastructure is in place, based on a generic ColorScheme
6619 class. So writing and activating new schemes both for the prompts
6623 class. So writing and activating new schemes both for the prompts
6620 and the tracebacks should be straightforward.
6624 and the tracebacks should be straightforward.
6621
6625
6622 * Version 0.1.13 released, 0.1.14 opened.
6626 * Version 0.1.13 released, 0.1.14 opened.
6623
6627
6624 * Changed handling of options for output cache. Now counter is
6628 * Changed handling of options for output cache. Now counter is
6625 hardwired starting at 1 and one specifies the maximum number of
6629 hardwired starting at 1 and one specifies the maximum number of
6626 entries *in the outcache* (not the max prompt counter). This is
6630 entries *in the outcache* (not the max prompt counter). This is
6627 much better, since many statements won't increase the cache
6631 much better, since many statements won't increase the cache
6628 count. It also eliminated some confusing options, now there's only
6632 count. It also eliminated some confusing options, now there's only
6629 one: cache_size.
6633 one: cache_size.
6630
6634
6631 * Added 'alias' magic function and magic_alias option in the
6635 * Added 'alias' magic function and magic_alias option in the
6632 ipythonrc file. Now the user can easily define whatever names he
6636 ipythonrc file. Now the user can easily define whatever names he
6633 wants for the magic functions without having to play weird
6637 wants for the magic functions without having to play weird
6634 namespace games. This gives IPython a real shell-like feel.
6638 namespace games. This gives IPython a real shell-like feel.
6635
6639
6636 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6640 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6637 @ or not).
6641 @ or not).
6638
6642
6639 This was one of the last remaining 'visible' bugs (that I know
6643 This was one of the last remaining 'visible' bugs (that I know
6640 of). I think if I can clean up the session loading so it works
6644 of). I think if I can clean up the session loading so it works
6641 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6645 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6642 about licensing).
6646 about licensing).
6643
6647
6644 2001-11-25 Fernando Perez <fperez@colorado.edu>
6648 2001-11-25 Fernando Perez <fperez@colorado.edu>
6645
6649
6646 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6650 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6647 there's a cleaner distinction between what ? and ?? show.
6651 there's a cleaner distinction between what ? and ?? show.
6648
6652
6649 * Added screen_length option. Now the user can define his own
6653 * Added screen_length option. Now the user can define his own
6650 screen size for page() operations.
6654 screen size for page() operations.
6651
6655
6652 * Implemented magic shell-like functions with automatic code
6656 * Implemented magic shell-like functions with automatic code
6653 generation. Now adding another function is just a matter of adding
6657 generation. Now adding another function is just a matter of adding
6654 an entry to a dict, and the function is dynamically generated at
6658 an entry to a dict, and the function is dynamically generated at
6655 run-time. Python has some really cool features!
6659 run-time. Python has some really cool features!
6656
6660
6657 * Renamed many options to cleanup conventions a little. Now all
6661 * Renamed many options to cleanup conventions a little. Now all
6658 are lowercase, and only underscores where needed. Also in the code
6662 are lowercase, and only underscores where needed. Also in the code
6659 option name tables are clearer.
6663 option name tables are clearer.
6660
6664
6661 * Changed prompts a little. Now input is 'In [n]:' instead of
6665 * Changed prompts a little. Now input is 'In [n]:' instead of
6662 'In[n]:='. This allows it the numbers to be aligned with the
6666 'In[n]:='. This allows it the numbers to be aligned with the
6663 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6667 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6664 Python (it was a Mathematica thing). The '...' continuation prompt
6668 Python (it was a Mathematica thing). The '...' continuation prompt
6665 was also changed a little to align better.
6669 was also changed a little to align better.
6666
6670
6667 * Fixed bug when flushing output cache. Not all _p<n> variables
6671 * Fixed bug when flushing output cache. Not all _p<n> variables
6668 exist, so their deletion needs to be wrapped in a try:
6672 exist, so their deletion needs to be wrapped in a try:
6669
6673
6670 * Figured out how to properly use inspect.formatargspec() (it
6674 * Figured out how to properly use inspect.formatargspec() (it
6671 requires the args preceded by *). So I removed all the code from
6675 requires the args preceded by *). So I removed all the code from
6672 _get_pdef in Magic, which was just replicating that.
6676 _get_pdef in Magic, which was just replicating that.
6673
6677
6674 * Added test to prefilter to allow redefining magic function names
6678 * Added test to prefilter to allow redefining magic function names
6675 as variables. This is ok, since the @ form is always available,
6679 as variables. This is ok, since the @ form is always available,
6676 but whe should allow the user to define a variable called 'ls' if
6680 but whe should allow the user to define a variable called 'ls' if
6677 he needs it.
6681 he needs it.
6678
6682
6679 * Moved the ToDo information from README into a separate ToDo.
6683 * Moved the ToDo information from README into a separate ToDo.
6680
6684
6681 * General code cleanup and small bugfixes. I think it's close to a
6685 * General code cleanup and small bugfixes. I think it's close to a
6682 state where it can be released, obviously with a big 'beta'
6686 state where it can be released, obviously with a big 'beta'
6683 warning on it.
6687 warning on it.
6684
6688
6685 * Got the magic function split to work. Now all magics are defined
6689 * Got the magic function split to work. Now all magics are defined
6686 in a separate class. It just organizes things a bit, and now
6690 in a separate class. It just organizes things a bit, and now
6687 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6691 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6688 was too long).
6692 was too long).
6689
6693
6690 * Changed @clear to @reset to avoid potential confusions with
6694 * Changed @clear to @reset to avoid potential confusions with
6691 the shell command clear. Also renamed @cl to @clear, which does
6695 the shell command clear. Also renamed @cl to @clear, which does
6692 exactly what people expect it to from their shell experience.
6696 exactly what people expect it to from their shell experience.
6693
6697
6694 Added a check to the @reset command (since it's so
6698 Added a check to the @reset command (since it's so
6695 destructive, it's probably a good idea to ask for confirmation).
6699 destructive, it's probably a good idea to ask for confirmation).
6696 But now reset only works for full namespace resetting. Since the
6700 But now reset only works for full namespace resetting. Since the
6697 del keyword is already there for deleting a few specific
6701 del keyword is already there for deleting a few specific
6698 variables, I don't see the point of having a redundant magic
6702 variables, I don't see the point of having a redundant magic
6699 function for the same task.
6703 function for the same task.
6700
6704
6701 2001-11-24 Fernando Perez <fperez@colorado.edu>
6705 2001-11-24 Fernando Perez <fperez@colorado.edu>
6702
6706
6703 * Updated the builtin docs (esp. the ? ones).
6707 * Updated the builtin docs (esp. the ? ones).
6704
6708
6705 * Ran all the code through pychecker. Not terribly impressed with
6709 * Ran all the code through pychecker. Not terribly impressed with
6706 it: lots of spurious warnings and didn't really find anything of
6710 it: lots of spurious warnings and didn't really find anything of
6707 substance (just a few modules being imported and not used).
6711 substance (just a few modules being imported and not used).
6708
6712
6709 * Implemented the new ultraTB functionality into IPython. New
6713 * Implemented the new ultraTB functionality into IPython. New
6710 option: xcolors. This chooses color scheme. xmode now only selects
6714 option: xcolors. This chooses color scheme. xmode now only selects
6711 between Plain and Verbose. Better orthogonality.
6715 between Plain and Verbose. Better orthogonality.
6712
6716
6713 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6717 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6714 mode and color scheme for the exception handlers. Now it's
6718 mode and color scheme for the exception handlers. Now it's
6715 possible to have the verbose traceback with no coloring.
6719 possible to have the verbose traceback with no coloring.
6716
6720
6717 2001-11-23 Fernando Perez <fperez@colorado.edu>
6721 2001-11-23 Fernando Perez <fperez@colorado.edu>
6718
6722
6719 * Version 0.1.12 released, 0.1.13 opened.
6723 * Version 0.1.12 released, 0.1.13 opened.
6720
6724
6721 * Removed option to set auto-quote and auto-paren escapes by
6725 * Removed option to set auto-quote and auto-paren escapes by
6722 user. The chances of breaking valid syntax are just too high. If
6726 user. The chances of breaking valid syntax are just too high. If
6723 someone *really* wants, they can always dig into the code.
6727 someone *really* wants, they can always dig into the code.
6724
6728
6725 * Made prompt separators configurable.
6729 * Made prompt separators configurable.
6726
6730
6727 2001-11-22 Fernando Perez <fperez@colorado.edu>
6731 2001-11-22 Fernando Perez <fperez@colorado.edu>
6728
6732
6729 * Small bugfixes in many places.
6733 * Small bugfixes in many places.
6730
6734
6731 * Removed the MyCompleter class from ipplib. It seemed redundant
6735 * Removed the MyCompleter class from ipplib. It seemed redundant
6732 with the C-p,C-n history search functionality. Less code to
6736 with the C-p,C-n history search functionality. Less code to
6733 maintain.
6737 maintain.
6734
6738
6735 * Moved all the original ipython.py code into ipythonlib.py. Right
6739 * Moved all the original ipython.py code into ipythonlib.py. Right
6736 now it's just one big dump into a function called make_IPython, so
6740 now it's just one big dump into a function called make_IPython, so
6737 no real modularity has been gained. But at least it makes the
6741 no real modularity has been gained. But at least it makes the
6738 wrapper script tiny, and since ipythonlib is a module, it gets
6742 wrapper script tiny, and since ipythonlib is a module, it gets
6739 compiled and startup is much faster.
6743 compiled and startup is much faster.
6740
6744
6741 This is a reasobably 'deep' change, so we should test it for a
6745 This is a reasobably 'deep' change, so we should test it for a
6742 while without messing too much more with the code.
6746 while without messing too much more with the code.
6743
6747
6744 2001-11-21 Fernando Perez <fperez@colorado.edu>
6748 2001-11-21 Fernando Perez <fperez@colorado.edu>
6745
6749
6746 * Version 0.1.11 released, 0.1.12 opened for further work.
6750 * Version 0.1.11 released, 0.1.12 opened for further work.
6747
6751
6748 * Removed dependency on Itpl. It was only needed in one place. It
6752 * Removed dependency on Itpl. It was only needed in one place. It
6749 would be nice if this became part of python, though. It makes life
6753 would be nice if this became part of python, though. It makes life
6750 *a lot* easier in some cases.
6754 *a lot* easier in some cases.
6751
6755
6752 * Simplified the prefilter code a bit. Now all handlers are
6756 * Simplified the prefilter code a bit. Now all handlers are
6753 expected to explicitly return a value (at least a blank string).
6757 expected to explicitly return a value (at least a blank string).
6754
6758
6755 * Heavy edits in ipplib. Removed the help system altogether. Now
6759 * Heavy edits in ipplib. Removed the help system altogether. Now
6756 obj?/?? is used for inspecting objects, a magic @doc prints
6760 obj?/?? is used for inspecting objects, a magic @doc prints
6757 docstrings, and full-blown Python help is accessed via the 'help'
6761 docstrings, and full-blown Python help is accessed via the 'help'
6758 keyword. This cleans up a lot of code (less to maintain) and does
6762 keyword. This cleans up a lot of code (less to maintain) and does
6759 the job. Since 'help' is now a standard Python component, might as
6763 the job. Since 'help' is now a standard Python component, might as
6760 well use it and remove duplicate functionality.
6764 well use it and remove duplicate functionality.
6761
6765
6762 Also removed the option to use ipplib as a standalone program. By
6766 Also removed the option to use ipplib as a standalone program. By
6763 now it's too dependent on other parts of IPython to function alone.
6767 now it's too dependent on other parts of IPython to function alone.
6764
6768
6765 * Fixed bug in genutils.pager. It would crash if the pager was
6769 * Fixed bug in genutils.pager. It would crash if the pager was
6766 exited immediately after opening (broken pipe).
6770 exited immediately after opening (broken pipe).
6767
6771
6768 * Trimmed down the VerboseTB reporting a little. The header is
6772 * Trimmed down the VerboseTB reporting a little. The header is
6769 much shorter now and the repeated exception arguments at the end
6773 much shorter now and the repeated exception arguments at the end
6770 have been removed. For interactive use the old header seemed a bit
6774 have been removed. For interactive use the old header seemed a bit
6771 excessive.
6775 excessive.
6772
6776
6773 * Fixed small bug in output of @whos for variables with multi-word
6777 * Fixed small bug in output of @whos for variables with multi-word
6774 types (only first word was displayed).
6778 types (only first word was displayed).
6775
6779
6776 2001-11-17 Fernando Perez <fperez@colorado.edu>
6780 2001-11-17 Fernando Perez <fperez@colorado.edu>
6777
6781
6778 * Version 0.1.10 released, 0.1.11 opened for further work.
6782 * Version 0.1.10 released, 0.1.11 opened for further work.
6779
6783
6780 * Modified dirs and friends. dirs now *returns* the stack (not
6784 * Modified dirs and friends. dirs now *returns* the stack (not
6781 prints), so one can manipulate it as a variable. Convenient to
6785 prints), so one can manipulate it as a variable. Convenient to
6782 travel along many directories.
6786 travel along many directories.
6783
6787
6784 * Fixed bug in magic_pdef: would only work with functions with
6788 * Fixed bug in magic_pdef: would only work with functions with
6785 arguments with default values.
6789 arguments with default values.
6786
6790
6787 2001-11-14 Fernando Perez <fperez@colorado.edu>
6791 2001-11-14 Fernando Perez <fperez@colorado.edu>
6788
6792
6789 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6793 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6790 example with IPython. Various other minor fixes and cleanups.
6794 example with IPython. Various other minor fixes and cleanups.
6791
6795
6792 * Version 0.1.9 released, 0.1.10 opened for further work.
6796 * Version 0.1.9 released, 0.1.10 opened for further work.
6793
6797
6794 * Added sys.path to the list of directories searched in the
6798 * Added sys.path to the list of directories searched in the
6795 execfile= option. It used to be the current directory and the
6799 execfile= option. It used to be the current directory and the
6796 user's IPYTHONDIR only.
6800 user's IPYTHONDIR only.
6797
6801
6798 2001-11-13 Fernando Perez <fperez@colorado.edu>
6802 2001-11-13 Fernando Perez <fperez@colorado.edu>
6799
6803
6800 * Reinstated the raw_input/prefilter separation that Janko had
6804 * Reinstated the raw_input/prefilter separation that Janko had
6801 initially. This gives a more convenient setup for extending the
6805 initially. This gives a more convenient setup for extending the
6802 pre-processor from the outside: raw_input always gets a string,
6806 pre-processor from the outside: raw_input always gets a string,
6803 and prefilter has to process it. We can then redefine prefilter
6807 and prefilter has to process it. We can then redefine prefilter
6804 from the outside and implement extensions for special
6808 from the outside and implement extensions for special
6805 purposes.
6809 purposes.
6806
6810
6807 Today I got one for inputting PhysicalQuantity objects
6811 Today I got one for inputting PhysicalQuantity objects
6808 (from Scientific) without needing any function calls at
6812 (from Scientific) without needing any function calls at
6809 all. Extremely convenient, and it's all done as a user-level
6813 all. Extremely convenient, and it's all done as a user-level
6810 extension (no IPython code was touched). Now instead of:
6814 extension (no IPython code was touched). Now instead of:
6811 a = PhysicalQuantity(4.2,'m/s**2')
6815 a = PhysicalQuantity(4.2,'m/s**2')
6812 one can simply say
6816 one can simply say
6813 a = 4.2 m/s**2
6817 a = 4.2 m/s**2
6814 or even
6818 or even
6815 a = 4.2 m/s^2
6819 a = 4.2 m/s^2
6816
6820
6817 I use this, but it's also a proof of concept: IPython really is
6821 I use this, but it's also a proof of concept: IPython really is
6818 fully user-extensible, even at the level of the parsing of the
6822 fully user-extensible, even at the level of the parsing of the
6819 command line. It's not trivial, but it's perfectly doable.
6823 command line. It's not trivial, but it's perfectly doable.
6820
6824
6821 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6825 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6822 the problem of modules being loaded in the inverse order in which
6826 the problem of modules being loaded in the inverse order in which
6823 they were defined in
6827 they were defined in
6824
6828
6825 * Version 0.1.8 released, 0.1.9 opened for further work.
6829 * Version 0.1.8 released, 0.1.9 opened for further work.
6826
6830
6827 * Added magics pdef, source and file. They respectively show the
6831 * Added magics pdef, source and file. They respectively show the
6828 definition line ('prototype' in C), source code and full python
6832 definition line ('prototype' in C), source code and full python
6829 file for any callable object. The object inspector oinfo uses
6833 file for any callable object. The object inspector oinfo uses
6830 these to show the same information.
6834 these to show the same information.
6831
6835
6832 * Version 0.1.7 released, 0.1.8 opened for further work.
6836 * Version 0.1.7 released, 0.1.8 opened for further work.
6833
6837
6834 * Separated all the magic functions into a class called Magic. The
6838 * Separated all the magic functions into a class called Magic. The
6835 InteractiveShell class was becoming too big for Xemacs to handle
6839 InteractiveShell class was becoming too big for Xemacs to handle
6836 (de-indenting a line would lock it up for 10 seconds while it
6840 (de-indenting a line would lock it up for 10 seconds while it
6837 backtracked on the whole class!)
6841 backtracked on the whole class!)
6838
6842
6839 FIXME: didn't work. It can be done, but right now namespaces are
6843 FIXME: didn't work. It can be done, but right now namespaces are
6840 all messed up. Do it later (reverted it for now, so at least
6844 all messed up. Do it later (reverted it for now, so at least
6841 everything works as before).
6845 everything works as before).
6842
6846
6843 * Got the object introspection system (magic_oinfo) working! I
6847 * Got the object introspection system (magic_oinfo) working! I
6844 think this is pretty much ready for release to Janko, so he can
6848 think this is pretty much ready for release to Janko, so he can
6845 test it for a while and then announce it. Pretty much 100% of what
6849 test it for a while and then announce it. Pretty much 100% of what
6846 I wanted for the 'phase 1' release is ready. Happy, tired.
6850 I wanted for the 'phase 1' release is ready. Happy, tired.
6847
6851
6848 2001-11-12 Fernando Perez <fperez@colorado.edu>
6852 2001-11-12 Fernando Perez <fperez@colorado.edu>
6849
6853
6850 * Version 0.1.6 released, 0.1.7 opened for further work.
6854 * Version 0.1.6 released, 0.1.7 opened for further work.
6851
6855
6852 * Fixed bug in printing: it used to test for truth before
6856 * Fixed bug in printing: it used to test for truth before
6853 printing, so 0 wouldn't print. Now checks for None.
6857 printing, so 0 wouldn't print. Now checks for None.
6854
6858
6855 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6859 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6856 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6860 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6857 reaches by hand into the outputcache. Think of a better way to do
6861 reaches by hand into the outputcache. Think of a better way to do
6858 this later.
6862 this later.
6859
6863
6860 * Various small fixes thanks to Nathan's comments.
6864 * Various small fixes thanks to Nathan's comments.
6861
6865
6862 * Changed magic_pprint to magic_Pprint. This way it doesn't
6866 * Changed magic_pprint to magic_Pprint. This way it doesn't
6863 collide with pprint() and the name is consistent with the command
6867 collide with pprint() and the name is consistent with the command
6864 line option.
6868 line option.
6865
6869
6866 * Changed prompt counter behavior to be fully like
6870 * Changed prompt counter behavior to be fully like
6867 Mathematica's. That is, even input that doesn't return a result
6871 Mathematica's. That is, even input that doesn't return a result
6868 raises the prompt counter. The old behavior was kind of confusing
6872 raises the prompt counter. The old behavior was kind of confusing
6869 (getting the same prompt number several times if the operation
6873 (getting the same prompt number several times if the operation
6870 didn't return a result).
6874 didn't return a result).
6871
6875
6872 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6876 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6873
6877
6874 * Fixed -Classic mode (wasn't working anymore).
6878 * Fixed -Classic mode (wasn't working anymore).
6875
6879
6876 * Added colored prompts using Nathan's new code. Colors are
6880 * Added colored prompts using Nathan's new code. Colors are
6877 currently hardwired, they can be user-configurable. For
6881 currently hardwired, they can be user-configurable. For
6878 developers, they can be chosen in file ipythonlib.py, at the
6882 developers, they can be chosen in file ipythonlib.py, at the
6879 beginning of the CachedOutput class def.
6883 beginning of the CachedOutput class def.
6880
6884
6881 2001-11-11 Fernando Perez <fperez@colorado.edu>
6885 2001-11-11 Fernando Perez <fperez@colorado.edu>
6882
6886
6883 * Version 0.1.5 released, 0.1.6 opened for further work.
6887 * Version 0.1.5 released, 0.1.6 opened for further work.
6884
6888
6885 * Changed magic_env to *return* the environment as a dict (not to
6889 * Changed magic_env to *return* the environment as a dict (not to
6886 print it). This way it prints, but it can also be processed.
6890 print it). This way it prints, but it can also be processed.
6887
6891
6888 * Added Verbose exception reporting to interactive
6892 * Added Verbose exception reporting to interactive
6889 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6893 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6890 traceback. Had to make some changes to the ultraTB file. This is
6894 traceback. Had to make some changes to the ultraTB file. This is
6891 probably the last 'big' thing in my mental todo list. This ties
6895 probably the last 'big' thing in my mental todo list. This ties
6892 in with the next entry:
6896 in with the next entry:
6893
6897
6894 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6898 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6895 has to specify is Plain, Color or Verbose for all exception
6899 has to specify is Plain, Color or Verbose for all exception
6896 handling.
6900 handling.
6897
6901
6898 * Removed ShellServices option. All this can really be done via
6902 * Removed ShellServices option. All this can really be done via
6899 the magic system. It's easier to extend, cleaner and has automatic
6903 the magic system. It's easier to extend, cleaner and has automatic
6900 namespace protection and documentation.
6904 namespace protection and documentation.
6901
6905
6902 2001-11-09 Fernando Perez <fperez@colorado.edu>
6906 2001-11-09 Fernando Perez <fperez@colorado.edu>
6903
6907
6904 * Fixed bug in output cache flushing (missing parameter to
6908 * Fixed bug in output cache flushing (missing parameter to
6905 __init__). Other small bugs fixed (found using pychecker).
6909 __init__). Other small bugs fixed (found using pychecker).
6906
6910
6907 * Version 0.1.4 opened for bugfixing.
6911 * Version 0.1.4 opened for bugfixing.
6908
6912
6909 2001-11-07 Fernando Perez <fperez@colorado.edu>
6913 2001-11-07 Fernando Perez <fperez@colorado.edu>
6910
6914
6911 * Version 0.1.3 released, mainly because of the raw_input bug.
6915 * Version 0.1.3 released, mainly because of the raw_input bug.
6912
6916
6913 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6917 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6914 and when testing for whether things were callable, a call could
6918 and when testing for whether things were callable, a call could
6915 actually be made to certain functions. They would get called again
6919 actually be made to certain functions. They would get called again
6916 once 'really' executed, with a resulting double call. A disaster
6920 once 'really' executed, with a resulting double call. A disaster
6917 in many cases (list.reverse() would never work!).
6921 in many cases (list.reverse() would never work!).
6918
6922
6919 * Removed prefilter() function, moved its code to raw_input (which
6923 * Removed prefilter() function, moved its code to raw_input (which
6920 after all was just a near-empty caller for prefilter). This saves
6924 after all was just a near-empty caller for prefilter). This saves
6921 a function call on every prompt, and simplifies the class a tiny bit.
6925 a function call on every prompt, and simplifies the class a tiny bit.
6922
6926
6923 * Fix _ip to __ip name in magic example file.
6927 * Fix _ip to __ip name in magic example file.
6924
6928
6925 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6929 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6926 work with non-gnu versions of tar.
6930 work with non-gnu versions of tar.
6927
6931
6928 2001-11-06 Fernando Perez <fperez@colorado.edu>
6932 2001-11-06 Fernando Perez <fperez@colorado.edu>
6929
6933
6930 * Version 0.1.2. Just to keep track of the recent changes.
6934 * Version 0.1.2. Just to keep track of the recent changes.
6931
6935
6932 * Fixed nasty bug in output prompt routine. It used to check 'if
6936 * Fixed nasty bug in output prompt routine. It used to check 'if
6933 arg != None...'. Problem is, this fails if arg implements a
6937 arg != None...'. Problem is, this fails if arg implements a
6934 special comparison (__cmp__) which disallows comparing to
6938 special comparison (__cmp__) which disallows comparing to
6935 None. Found it when trying to use the PhysicalQuantity module from
6939 None. Found it when trying to use the PhysicalQuantity module from
6936 ScientificPython.
6940 ScientificPython.
6937
6941
6938 2001-11-05 Fernando Perez <fperez@colorado.edu>
6942 2001-11-05 Fernando Perez <fperez@colorado.edu>
6939
6943
6940 * Also added dirs. Now the pushd/popd/dirs family functions
6944 * Also added dirs. Now the pushd/popd/dirs family functions
6941 basically like the shell, with the added convenience of going home
6945 basically like the shell, with the added convenience of going home
6942 when called with no args.
6946 when called with no args.
6943
6947
6944 * pushd/popd slightly modified to mimic shell behavior more
6948 * pushd/popd slightly modified to mimic shell behavior more
6945 closely.
6949 closely.
6946
6950
6947 * Added env,pushd,popd from ShellServices as magic functions. I
6951 * Added env,pushd,popd from ShellServices as magic functions. I
6948 think the cleanest will be to port all desired functions from
6952 think the cleanest will be to port all desired functions from
6949 ShellServices as magics and remove ShellServices altogether. This
6953 ShellServices as magics and remove ShellServices altogether. This
6950 will provide a single, clean way of adding functionality
6954 will provide a single, clean way of adding functionality
6951 (shell-type or otherwise) to IP.
6955 (shell-type or otherwise) to IP.
6952
6956
6953 2001-11-04 Fernando Perez <fperez@colorado.edu>
6957 2001-11-04 Fernando Perez <fperez@colorado.edu>
6954
6958
6955 * Added .ipython/ directory to sys.path. This way users can keep
6959 * Added .ipython/ directory to sys.path. This way users can keep
6956 customizations there and access them via import.
6960 customizations there and access them via import.
6957
6961
6958 2001-11-03 Fernando Perez <fperez@colorado.edu>
6962 2001-11-03 Fernando Perez <fperez@colorado.edu>
6959
6963
6960 * Opened version 0.1.1 for new changes.
6964 * Opened version 0.1.1 for new changes.
6961
6965
6962 * Changed version number to 0.1.0: first 'public' release, sent to
6966 * Changed version number to 0.1.0: first 'public' release, sent to
6963 Nathan and Janko.
6967 Nathan and Janko.
6964
6968
6965 * Lots of small fixes and tweaks.
6969 * Lots of small fixes and tweaks.
6966
6970
6967 * Minor changes to whos format. Now strings are shown, snipped if
6971 * Minor changes to whos format. Now strings are shown, snipped if
6968 too long.
6972 too long.
6969
6973
6970 * Changed ShellServices to work on __main__ so they show up in @who
6974 * Changed ShellServices to work on __main__ so they show up in @who
6971
6975
6972 * Help also works with ? at the end of a line:
6976 * Help also works with ? at the end of a line:
6973 ?sin and sin?
6977 ?sin and sin?
6974 both produce the same effect. This is nice, as often I use the
6978 both produce the same effect. This is nice, as often I use the
6975 tab-complete to find the name of a method, but I used to then have
6979 tab-complete to find the name of a method, but I used to then have
6976 to go to the beginning of the line to put a ? if I wanted more
6980 to go to the beginning of the line to put a ? if I wanted more
6977 info. Now I can just add the ? and hit return. Convenient.
6981 info. Now I can just add the ? and hit return. Convenient.
6978
6982
6979 2001-11-02 Fernando Perez <fperez@colorado.edu>
6983 2001-11-02 Fernando Perez <fperez@colorado.edu>
6980
6984
6981 * Python version check (>=2.1) added.
6985 * Python version check (>=2.1) added.
6982
6986
6983 * Added LazyPython documentation. At this point the docs are quite
6987 * Added LazyPython documentation. At this point the docs are quite
6984 a mess. A cleanup is in order.
6988 a mess. A cleanup is in order.
6985
6989
6986 * Auto-installer created. For some bizarre reason, the zipfiles
6990 * Auto-installer created. For some bizarre reason, the zipfiles
6987 module isn't working on my system. So I made a tar version
6991 module isn't working on my system. So I made a tar version
6988 (hopefully the command line options in various systems won't kill
6992 (hopefully the command line options in various systems won't kill
6989 me).
6993 me).
6990
6994
6991 * Fixes to Struct in genutils. Now all dictionary-like methods are
6995 * Fixes to Struct in genutils. Now all dictionary-like methods are
6992 protected (reasonably).
6996 protected (reasonably).
6993
6997
6994 * Added pager function to genutils and changed ? to print usage
6998 * Added pager function to genutils and changed ? to print usage
6995 note through it (it was too long).
6999 note through it (it was too long).
6996
7000
6997 * Added the LazyPython functionality. Works great! I changed the
7001 * Added the LazyPython functionality. Works great! I changed the
6998 auto-quote escape to ';', it's on home row and next to '. But
7002 auto-quote escape to ';', it's on home row and next to '. But
6999 both auto-quote and auto-paren (still /) escapes are command-line
7003 both auto-quote and auto-paren (still /) escapes are command-line
7000 parameters.
7004 parameters.
7001
7005
7002
7006
7003 2001-11-01 Fernando Perez <fperez@colorado.edu>
7007 2001-11-01 Fernando Perez <fperez@colorado.edu>
7004
7008
7005 * Version changed to 0.0.7. Fairly large change: configuration now
7009 * Version changed to 0.0.7. Fairly large change: configuration now
7006 is all stored in a directory, by default .ipython. There, all
7010 is all stored in a directory, by default .ipython. There, all
7007 config files have normal looking names (not .names)
7011 config files have normal looking names (not .names)
7008
7012
7009 * Version 0.0.6 Released first to Lucas and Archie as a test
7013 * Version 0.0.6 Released first to Lucas and Archie as a test
7010 run. Since it's the first 'semi-public' release, change version to
7014 run. Since it's the first 'semi-public' release, change version to
7011 > 0.0.6 for any changes now.
7015 > 0.0.6 for any changes now.
7012
7016
7013 * Stuff I had put in the ipplib.py changelog:
7017 * Stuff I had put in the ipplib.py changelog:
7014
7018
7015 Changes to InteractiveShell:
7019 Changes to InteractiveShell:
7016
7020
7017 - Made the usage message a parameter.
7021 - Made the usage message a parameter.
7018
7022
7019 - Require the name of the shell variable to be given. It's a bit
7023 - Require the name of the shell variable to be given. It's a bit
7020 of a hack, but allows the name 'shell' not to be hardwired in the
7024 of a hack, but allows the name 'shell' not to be hardwired in the
7021 magic (@) handler, which is problematic b/c it requires
7025 magic (@) handler, which is problematic b/c it requires
7022 polluting the global namespace with 'shell'. This in turn is
7026 polluting the global namespace with 'shell'. This in turn is
7023 fragile: if a user redefines a variable called shell, things
7027 fragile: if a user redefines a variable called shell, things
7024 break.
7028 break.
7025
7029
7026 - magic @: all functions available through @ need to be defined
7030 - magic @: all functions available through @ need to be defined
7027 as magic_<name>, even though they can be called simply as
7031 as magic_<name>, even though they can be called simply as
7028 @<name>. This allows the special command @magic to gather
7032 @<name>. This allows the special command @magic to gather
7029 information automatically about all existing magic functions,
7033 information automatically about all existing magic functions,
7030 even if they are run-time user extensions, by parsing the shell
7034 even if they are run-time user extensions, by parsing the shell
7031 instance __dict__ looking for special magic_ names.
7035 instance __dict__ looking for special magic_ names.
7032
7036
7033 - mainloop: added *two* local namespace parameters. This allows
7037 - mainloop: added *two* local namespace parameters. This allows
7034 the class to differentiate between parameters which were there
7038 the class to differentiate between parameters which were there
7035 before and after command line initialization was processed. This
7039 before and after command line initialization was processed. This
7036 way, later @who can show things loaded at startup by the
7040 way, later @who can show things loaded at startup by the
7037 user. This trick was necessary to make session saving/reloading
7041 user. This trick was necessary to make session saving/reloading
7038 really work: ideally after saving/exiting/reloading a session,
7042 really work: ideally after saving/exiting/reloading a session,
7039 *everything* should look the same, including the output of @who. I
7043 *everything* should look the same, including the output of @who. I
7040 was only able to make this work with this double namespace
7044 was only able to make this work with this double namespace
7041 trick.
7045 trick.
7042
7046
7043 - added a header to the logfile which allows (almost) full
7047 - added a header to the logfile which allows (almost) full
7044 session restoring.
7048 session restoring.
7045
7049
7046 - prepend lines beginning with @ or !, with a and log
7050 - prepend lines beginning with @ or !, with a and log
7047 them. Why? !lines: may be useful to know what you did @lines:
7051 them. Why? !lines: may be useful to know what you did @lines:
7048 they may affect session state. So when restoring a session, at
7052 they may affect session state. So when restoring a session, at
7049 least inform the user of their presence. I couldn't quite get
7053 least inform the user of their presence. I couldn't quite get
7050 them to properly re-execute, but at least the user is warned.
7054 them to properly re-execute, but at least the user is warned.
7051
7055
7052 * Started ChangeLog.
7056 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now