##// END OF EJS Templates
Provide "realistic" sys.argv for scripts run via ipython...
vivainio -
Show More
@@ -1,716 +1,719 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 1041 2006-01-21 09:29:14Z vivainio $"""
9 $Id: ipmaker.py 1086 2006-01-27 16:02:38Z 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 credits._Printer__data = """
23 credits._Printer__data = """
24 Python: %s
24 Python: %s
25
25
26 IPython: Fernando Perez, Janko Hauser, Nathan Gray, and many users.
26 IPython: Fernando Perez, Janko Hauser, Nathan Gray, and many users.
27 See http://ipython.scipy.org for more information.""" \
27 See http://ipython.scipy.org for more information.""" \
28 % credits._Printer__data
28 % credits._Printer__data
29
29
30 copyright._Printer__data += """
30 copyright._Printer__data += """
31
31
32 Copyright (c) 2001-2004 Fernando Perez, Janko Hauser, Nathan Gray.
32 Copyright (c) 2001-2004 Fernando Perez, Janko Hauser, Nathan Gray.
33 All Rights Reserved."""
33 All Rights Reserved."""
34
34
35 #****************************************************************************
35 #****************************************************************************
36 # Required modules
36 # Required modules
37
37
38 # From the standard library
38 # From the standard library
39 import __main__
39 import __main__
40 import __builtin__
40 import __builtin__
41 import os
41 import os
42 import re
42 import re
43 import sys
43 import sys
44 import types
44 import types
45 from pprint import pprint,pformat
45 from pprint import pprint,pformat
46
46
47 # Our own
47 # Our own
48 from IPython import DPyGetOpt
48 from IPython import DPyGetOpt
49 from IPython.ipstruct import Struct
49 from IPython.ipstruct import Struct
50 from IPython.OutputTrap import OutputTrap
50 from IPython.OutputTrap import OutputTrap
51 from IPython.ConfigLoader import ConfigLoader
51 from IPython.ConfigLoader import ConfigLoader
52 from IPython.iplib import InteractiveShell
52 from IPython.iplib import InteractiveShell
53 from IPython.usage import cmd_line_usage,interactive_usage
53 from IPython.usage import cmd_line_usage,interactive_usage
54 from IPython.genutils import *
54 from IPython.genutils import *
55
55
56 #-----------------------------------------------------------------------------
56 #-----------------------------------------------------------------------------
57 def make_IPython(argv=None,user_ns=None,user_global_ns=None,debug=1,
57 def make_IPython(argv=None,user_ns=None,user_global_ns=None,debug=1,
58 rc_override=None,shell_class=InteractiveShell,
58 rc_override=None,shell_class=InteractiveShell,
59 embedded=False,**kw):
59 embedded=False,**kw):
60 """This is a dump of IPython into a single function.
60 """This is a dump of IPython into a single function.
61
61
62 Later it will have to be broken up in a sensible manner.
62 Later it will have to be broken up in a sensible manner.
63
63
64 Arguments:
64 Arguments:
65
65
66 - argv: a list similar to sys.argv[1:]. It should NOT contain the desired
66 - argv: a list similar to sys.argv[1:]. It should NOT contain the desired
67 script name, b/c DPyGetOpt strips the first argument only for the real
67 script name, b/c DPyGetOpt strips the first argument only for the real
68 sys.argv.
68 sys.argv.
69
69
70 - user_ns: a dict to be used as the user's namespace."""
70 - user_ns: a dict to be used as the user's namespace."""
71
71
72 #----------------------------------------------------------------------
72 #----------------------------------------------------------------------
73 # Defaults and initialization
73 # Defaults and initialization
74
74
75 # For developer debugging, deactivates crash handler and uses pdb.
75 # For developer debugging, deactivates crash handler and uses pdb.
76 DEVDEBUG = False
76 DEVDEBUG = False
77
77
78 if argv is None:
78 if argv is None:
79 argv = sys.argv
79 argv = sys.argv
80
80
81 # __IP is the main global that lives throughout and represents the whole
81 # __IP is the main global that lives throughout and represents the whole
82 # application. If the user redefines it, all bets are off as to what
82 # application. If the user redefines it, all bets are off as to what
83 # happens.
83 # happens.
84
84
85 # __IP is the name of he global which the caller will have accessible as
85 # __IP is the name of he global which the caller will have accessible as
86 # __IP.name. We set its name via the first parameter passed to
86 # __IP.name. We set its name via the first parameter passed to
87 # InteractiveShell:
87 # InteractiveShell:
88
88
89 IP = shell_class('__IP',user_ns=user_ns,user_global_ns=user_global_ns,
89 IP = shell_class('__IP',user_ns=user_ns,user_global_ns=user_global_ns,
90 embedded=embedded,**kw)
90 embedded=embedded,**kw)
91
91
92 # Put 'help' in the user namespace
92 # Put 'help' in the user namespace
93 from site import _Helper
93 from site import _Helper
94 IP.user_ns['help'] = _Helper()
94 IP.user_ns['help'] = _Helper()
95
95
96
96
97 if DEVDEBUG:
97 if DEVDEBUG:
98 # For developer debugging only (global flag)
98 # For developer debugging only (global flag)
99 from IPython import ultraTB
99 from IPython import ultraTB
100 sys.excepthook = ultraTB.VerboseTB(call_pdb=1)
100 sys.excepthook = ultraTB.VerboseTB(call_pdb=1)
101
101
102 IP.BANNER_PARTS = ['Python %s\n'
102 IP.BANNER_PARTS = ['Python %s\n'
103 'Type "copyright", "credits" or "license" '
103 'Type "copyright", "credits" or "license" '
104 'for more information.\n'
104 'for more information.\n'
105 % (sys.version.split('\n')[0],),
105 % (sys.version.split('\n')[0],),
106 "IPython %s -- An enhanced Interactive Python."
106 "IPython %s -- An enhanced Interactive Python."
107 % (__version__,),
107 % (__version__,),
108 """? -> Introduction to IPython's features.
108 """? -> Introduction to IPython's features.
109 %magic -> Information about IPython's 'magic' % functions.
109 %magic -> Information about IPython's 'magic' % functions.
110 help -> Python's own help system.
110 help -> Python's own help system.
111 object? -> Details about 'object'. ?object also works, ?? prints more.
111 object? -> Details about 'object'. ?object also works, ?? prints more.
112 """ ]
112 """ ]
113
113
114 IP.usage = interactive_usage
114 IP.usage = interactive_usage
115
115
116 # Platform-dependent suffix and directory names. We use _ipython instead
116 # Platform-dependent suffix and directory names. We use _ipython instead
117 # of .ipython under win32 b/c there's software that breaks with .named
117 # of .ipython under win32 b/c there's software that breaks with .named
118 # directories on that platform.
118 # directories on that platform.
119 if os.name == 'posix':
119 if os.name == 'posix':
120 rc_suffix = ''
120 rc_suffix = ''
121 ipdir_def = '.ipython'
121 ipdir_def = '.ipython'
122 else:
122 else:
123 rc_suffix = '.ini'
123 rc_suffix = '.ini'
124 ipdir_def = '_ipython'
124 ipdir_def = '_ipython'
125
125
126 # default directory for configuration
126 # default directory for configuration
127 ipythondir = os.path.abspath(os.environ.get('IPYTHONDIR',
127 ipythondir = os.path.abspath(os.environ.get('IPYTHONDIR',
128 os.path.join(IP.home_dir,ipdir_def)))
128 os.path.join(IP.home_dir,ipdir_def)))
129
129
130 # we need the directory where IPython itself is installed
130 # we need the directory where IPython itself is installed
131 import IPython
131 import IPython
132 IPython_dir = os.path.dirname(IPython.__file__)
132 IPython_dir = os.path.dirname(IPython.__file__)
133 del IPython
133 del IPython
134
134
135 #-------------------------------------------------------------------------
135 #-------------------------------------------------------------------------
136 # Command line handling
136 # Command line handling
137
137
138 # Valid command line options (uses DPyGetOpt syntax, like Perl's
138 # Valid command line options (uses DPyGetOpt syntax, like Perl's
139 # GetOpt::Long)
139 # GetOpt::Long)
140
140
141 # Any key not listed here gets deleted even if in the file (like session
141 # Any key not listed here gets deleted even if in the file (like session
142 # or profile). That's deliberate, to maintain the rc namespace clean.
142 # or profile). That's deliberate, to maintain the rc namespace clean.
143
143
144 # Each set of options appears twice: under _conv only the names are
144 # Each set of options appears twice: under _conv only the names are
145 # listed, indicating which type they must be converted to when reading the
145 # listed, indicating which type they must be converted to when reading the
146 # ipythonrc file. And under DPyGetOpt they are listed with the regular
146 # ipythonrc file. And under DPyGetOpt they are listed with the regular
147 # DPyGetOpt syntax (=s,=i,:f,etc).
147 # DPyGetOpt syntax (=s,=i,:f,etc).
148
148
149 # Make sure there's a space before each end of line (they get auto-joined!)
149 # Make sure there's a space before each end of line (they get auto-joined!)
150 cmdline_opts = ('autocall=i autoindent! automagic! banner! cache_size|cs=i '
150 cmdline_opts = ('autocall=i autoindent! automagic! banner! cache_size|cs=i '
151 'c=s classic|cl color_info! colors=s confirm_exit! '
151 'c=s classic|cl color_info! colors=s confirm_exit! '
152 'debug! deep_reload! editor=s log|l messages! nosep pdb! '
152 'debug! deep_reload! editor=s log|l messages! nosep pdb! '
153 'pprint! prompt_in1|pi1=s prompt_in2|pi2=s prompt_out|po=s '
153 'pprint! prompt_in1|pi1=s prompt_in2|pi2=s prompt_out|po=s '
154 'quick screen_length|sl=i prompts_pad_left=i '
154 'quick screen_length|sl=i prompts_pad_left=i '
155 'logfile|lf=s logplay|lp=s profile|p=s '
155 'logfile|lf=s logplay|lp=s profile|p=s '
156 'readline! readline_merge_completions! '
156 'readline! readline_merge_completions! '
157 'readline_omit__names! '
157 'readline_omit__names! '
158 'rcfile=s separate_in|si=s separate_out|so=s '
158 'rcfile=s separate_in|si=s separate_out|so=s '
159 'separate_out2|so2=s xmode=s wildcards_case_sensitive! '
159 'separate_out2|so2=s xmode=s wildcards_case_sensitive! '
160 'magic_docstrings system_verbose! '
160 'magic_docstrings system_verbose! '
161 'multi_line_specials! '
161 'multi_line_specials! '
162 'wxversion=s '
162 'wxversion=s '
163 'autoedit_syntax!')
163 'autoedit_syntax!')
164
164
165 # Options that can *only* appear at the cmd line (not in rcfiles).
165 # Options that can *only* appear at the cmd line (not in rcfiles).
166
166
167 # The "ignore" option is a kludge so that Emacs buffers don't crash, since
167 # The "ignore" option is a kludge so that Emacs buffers don't crash, since
168 # the 'C-c !' command in emacs automatically appends a -i option at the end.
168 # the 'C-c !' command in emacs automatically appends a -i option at the end.
169 cmdline_only = ('help ignore|i ipythondir=s Version upgrade '
169 cmdline_only = ('help ignore|i ipythondir=s Version upgrade '
170 'gthread! qthread! wthread! pylab! tk!')
170 'gthread! qthread! wthread! pylab! tk!')
171
171
172 # Build the actual name list to be used by DPyGetOpt
172 # Build the actual name list to be used by DPyGetOpt
173 opts_names = qw(cmdline_opts) + qw(cmdline_only)
173 opts_names = qw(cmdline_opts) + qw(cmdline_only)
174
174
175 # Set sensible command line defaults.
175 # Set sensible command line defaults.
176 # This should have everything from cmdline_opts and cmdline_only
176 # This should have everything from cmdline_opts and cmdline_only
177 opts_def = Struct(autocall = 1,
177 opts_def = Struct(autocall = 1,
178 autoedit_syntax = 1,
178 autoedit_syntax = 1,
179 autoindent=0,
179 autoindent=0,
180 automagic = 1,
180 automagic = 1,
181 banner = 1,
181 banner = 1,
182 cache_size = 1000,
182 cache_size = 1000,
183 c = '',
183 c = '',
184 classic = 0,
184 classic = 0,
185 colors = 'NoColor',
185 colors = 'NoColor',
186 color_info = 0,
186 color_info = 0,
187 confirm_exit = 1,
187 confirm_exit = 1,
188 debug = 0,
188 debug = 0,
189 deep_reload = 0,
189 deep_reload = 0,
190 editor = '0',
190 editor = '0',
191 help = 0,
191 help = 0,
192 ignore = 0,
192 ignore = 0,
193 ipythondir = ipythondir,
193 ipythondir = ipythondir,
194 log = 0,
194 log = 0,
195 logfile = '',
195 logfile = '',
196 logplay = '',
196 logplay = '',
197 multi_line_specials = 1,
197 multi_line_specials = 1,
198 messages = 1,
198 messages = 1,
199 nosep = 0,
199 nosep = 0,
200 pdb = 0,
200 pdb = 0,
201 pprint = 0,
201 pprint = 0,
202 profile = '',
202 profile = '',
203 prompt_in1 = 'In [\\#]: ',
203 prompt_in1 = 'In [\\#]: ',
204 prompt_in2 = ' .\\D.: ',
204 prompt_in2 = ' .\\D.: ',
205 prompt_out = 'Out[\\#]: ',
205 prompt_out = 'Out[\\#]: ',
206 prompts_pad_left = 1,
206 prompts_pad_left = 1,
207 quick = 0,
207 quick = 0,
208 readline = 1,
208 readline = 1,
209 readline_merge_completions = 1,
209 readline_merge_completions = 1,
210 readline_omit__names = 0,
210 readline_omit__names = 0,
211 rcfile = 'ipythonrc' + rc_suffix,
211 rcfile = 'ipythonrc' + rc_suffix,
212 screen_length = 0,
212 screen_length = 0,
213 separate_in = '\n',
213 separate_in = '\n',
214 separate_out = '\n',
214 separate_out = '\n',
215 separate_out2 = '',
215 separate_out2 = '',
216 system_verbose = 0,
216 system_verbose = 0,
217 gthread = 0,
217 gthread = 0,
218 qthread = 0,
218 qthread = 0,
219 wthread = 0,
219 wthread = 0,
220 pylab = 0,
220 pylab = 0,
221 tk = 0,
221 tk = 0,
222 upgrade = 0,
222 upgrade = 0,
223 Version = 0,
223 Version = 0,
224 xmode = 'Verbose',
224 xmode = 'Verbose',
225 wildcards_case_sensitive = 1,
225 wildcards_case_sensitive = 1,
226 wxversion = '0',
226 wxversion = '0',
227 magic_docstrings = 0, # undocumented, for doc generation
227 magic_docstrings = 0, # undocumented, for doc generation
228 )
228 )
229
229
230 # Things that will *only* appear in rcfiles (not at the command line).
230 # Things that will *only* appear in rcfiles (not at the command line).
231 # Make sure there's a space before each end of line (they get auto-joined!)
231 # Make sure there's a space before each end of line (they get auto-joined!)
232 rcfile_opts = { qwflat: 'include import_mod import_all execfile ',
232 rcfile_opts = { qwflat: 'include import_mod import_all execfile ',
233 qw_lol: 'import_some ',
233 qw_lol: 'import_some ',
234 # for things with embedded whitespace:
234 # for things with embedded whitespace:
235 list_strings:'execute alias readline_parse_and_bind ',
235 list_strings:'execute alias readline_parse_and_bind ',
236 # Regular strings need no conversion:
236 # Regular strings need no conversion:
237 None:'readline_remove_delims ',
237 None:'readline_remove_delims ',
238 }
238 }
239 # Default values for these
239 # Default values for these
240 rc_def = Struct(include = [],
240 rc_def = Struct(include = [],
241 import_mod = [],
241 import_mod = [],
242 import_all = [],
242 import_all = [],
243 import_some = [[]],
243 import_some = [[]],
244 execute = [],
244 execute = [],
245 execfile = [],
245 execfile = [],
246 alias = [],
246 alias = [],
247 readline_parse_and_bind = [],
247 readline_parse_and_bind = [],
248 readline_remove_delims = '',
248 readline_remove_delims = '',
249 )
249 )
250
250
251 # Build the type conversion dictionary from the above tables:
251 # Build the type conversion dictionary from the above tables:
252 typeconv = rcfile_opts.copy()
252 typeconv = rcfile_opts.copy()
253 typeconv.update(optstr2types(cmdline_opts))
253 typeconv.update(optstr2types(cmdline_opts))
254
254
255 # FIXME: the None key appears in both, put that back together by hand. Ugly!
255 # FIXME: the None key appears in both, put that back together by hand. Ugly!
256 typeconv[None] += ' ' + rcfile_opts[None]
256 typeconv[None] += ' ' + rcfile_opts[None]
257
257
258 # Remove quotes at ends of all strings (used to protect spaces)
258 # Remove quotes at ends of all strings (used to protect spaces)
259 typeconv[unquote_ends] = typeconv[None]
259 typeconv[unquote_ends] = typeconv[None]
260 del typeconv[None]
260 del typeconv[None]
261
261
262 # Build the list we'll use to make all config decisions with defaults:
262 # Build the list we'll use to make all config decisions with defaults:
263 opts_all = opts_def.copy()
263 opts_all = opts_def.copy()
264 opts_all.update(rc_def)
264 opts_all.update(rc_def)
265
265
266 # Build conflict resolver for recursive loading of config files:
266 # Build conflict resolver for recursive loading of config files:
267 # - preserve means the outermost file maintains the value, it is not
267 # - preserve means the outermost file maintains the value, it is not
268 # overwritten if an included file has the same key.
268 # overwritten if an included file has the same key.
269 # - add_flip applies + to the two values, so it better make sense to add
269 # - add_flip applies + to the two values, so it better make sense to add
270 # those types of keys. But it flips them first so that things loaded
270 # those types of keys. But it flips them first so that things loaded
271 # deeper in the inclusion chain have lower precedence.
271 # deeper in the inclusion chain have lower precedence.
272 conflict = {'preserve': ' '.join([ typeconv[int],
272 conflict = {'preserve': ' '.join([ typeconv[int],
273 typeconv[unquote_ends] ]),
273 typeconv[unquote_ends] ]),
274 'add_flip': ' '.join([ typeconv[qwflat],
274 'add_flip': ' '.join([ typeconv[qwflat],
275 typeconv[qw_lol],
275 typeconv[qw_lol],
276 typeconv[list_strings] ])
276 typeconv[list_strings] ])
277 }
277 }
278
278
279 # Now actually process the command line
279 # Now actually process the command line
280 getopt = DPyGetOpt.DPyGetOpt()
280 getopt = DPyGetOpt.DPyGetOpt()
281 getopt.setIgnoreCase(0)
281 getopt.setIgnoreCase(0)
282
282
283 getopt.parseConfiguration(opts_names)
283 getopt.parseConfiguration(opts_names)
284
284
285 try:
285 try:
286 getopt.processArguments(argv)
286 getopt.processArguments(argv)
287 except:
287 except:
288 print cmd_line_usage
288 print cmd_line_usage
289 warn('\nError in Arguments: ' + `sys.exc_value`)
289 warn('\nError in Arguments: ' + `sys.exc_value`)
290 sys.exit(1)
290 sys.exit(1)
291
291
292 # convert the options dict to a struct for much lighter syntax later
292 # convert the options dict to a struct for much lighter syntax later
293 opts = Struct(getopt.optionValues)
293 opts = Struct(getopt.optionValues)
294 args = getopt.freeValues
294 args = getopt.freeValues
295
295
296 # this is the struct (which has default values at this point) with which
296 # this is the struct (which has default values at this point) with which
297 # we make all decisions:
297 # we make all decisions:
298 opts_all.update(opts)
298 opts_all.update(opts)
299
299
300 # Options that force an immediate exit
300 # Options that force an immediate exit
301 if opts_all.help:
301 if opts_all.help:
302 page(cmd_line_usage)
302 page(cmd_line_usage)
303 sys.exit()
303 sys.exit()
304
304
305 if opts_all.Version:
305 if opts_all.Version:
306 print __version__
306 print __version__
307 sys.exit()
307 sys.exit()
308
308
309 if opts_all.magic_docstrings:
309 if opts_all.magic_docstrings:
310 IP.magic_magic('-latex')
310 IP.magic_magic('-latex')
311 sys.exit()
311 sys.exit()
312
312
313 # Create user config directory if it doesn't exist. This must be done
313 # Create user config directory if it doesn't exist. This must be done
314 # *after* getting the cmd line options.
314 # *after* getting the cmd line options.
315 if not os.path.isdir(opts_all.ipythondir):
315 if not os.path.isdir(opts_all.ipythondir):
316 IP.user_setup(opts_all.ipythondir,rc_suffix,'install')
316 IP.user_setup(opts_all.ipythondir,rc_suffix,'install')
317
317
318 # upgrade user config files while preserving a copy of the originals
318 # upgrade user config files while preserving a copy of the originals
319 if opts_all.upgrade:
319 if opts_all.upgrade:
320 IP.user_setup(opts_all.ipythondir,rc_suffix,'upgrade')
320 IP.user_setup(opts_all.ipythondir,rc_suffix,'upgrade')
321
321
322 # check mutually exclusive options in the *original* command line
322 # check mutually exclusive options in the *original* command line
323 mutex_opts(opts,[qw('log logfile'),qw('rcfile profile'),
323 mutex_opts(opts,[qw('log logfile'),qw('rcfile profile'),
324 qw('classic profile'),qw('classic rcfile')])
324 qw('classic profile'),qw('classic rcfile')])
325
325
326 #---------------------------------------------------------------------------
326 #---------------------------------------------------------------------------
327 # Log replay
327 # Log replay
328
328
329 # if -logplay, we need to 'become' the other session. That basically means
329 # if -logplay, we need to 'become' the other session. That basically means
330 # replacing the current command line environment with that of the old
330 # replacing the current command line environment with that of the old
331 # session and moving on.
331 # session and moving on.
332
332
333 # this is needed so that later we know we're in session reload mode, as
333 # this is needed so that later we know we're in session reload mode, as
334 # opts_all will get overwritten:
334 # opts_all will get overwritten:
335 load_logplay = 0
335 load_logplay = 0
336
336
337 if opts_all.logplay:
337 if opts_all.logplay:
338 load_logplay = opts_all.logplay
338 load_logplay = opts_all.logplay
339 opts_debug_save = opts_all.debug
339 opts_debug_save = opts_all.debug
340 try:
340 try:
341 logplay = open(opts_all.logplay)
341 logplay = open(opts_all.logplay)
342 except IOError:
342 except IOError:
343 if opts_all.debug: IP.InteractiveTB()
343 if opts_all.debug: IP.InteractiveTB()
344 warn('Could not open logplay file '+`opts_all.logplay`)
344 warn('Could not open logplay file '+`opts_all.logplay`)
345 # restore state as if nothing had happened and move on, but make
345 # restore state as if nothing had happened and move on, but make
346 # sure that later we don't try to actually load the session file
346 # sure that later we don't try to actually load the session file
347 logplay = None
347 logplay = None
348 load_logplay = 0
348 load_logplay = 0
349 del opts_all.logplay
349 del opts_all.logplay
350 else:
350 else:
351 try:
351 try:
352 logplay.readline()
352 logplay.readline()
353 logplay.readline();
353 logplay.readline();
354 # this reloads that session's command line
354 # this reloads that session's command line
355 cmd = logplay.readline()[6:]
355 cmd = logplay.readline()[6:]
356 exec cmd
356 exec cmd
357 # restore the true debug flag given so that the process of
357 # restore the true debug flag given so that the process of
358 # session loading itself can be monitored.
358 # session loading itself can be monitored.
359 opts.debug = opts_debug_save
359 opts.debug = opts_debug_save
360 # save the logplay flag so later we don't overwrite the log
360 # save the logplay flag so later we don't overwrite the log
361 opts.logplay = load_logplay
361 opts.logplay = load_logplay
362 # now we must update our own structure with defaults
362 # now we must update our own structure with defaults
363 opts_all.update(opts)
363 opts_all.update(opts)
364 # now load args
364 # now load args
365 cmd = logplay.readline()[6:]
365 cmd = logplay.readline()[6:]
366 exec cmd
366 exec cmd
367 logplay.close()
367 logplay.close()
368 except:
368 except:
369 logplay.close()
369 logplay.close()
370 if opts_all.debug: IP.InteractiveTB()
370 if opts_all.debug: IP.InteractiveTB()
371 warn("Logplay file lacking full configuration information.\n"
371 warn("Logplay file lacking full configuration information.\n"
372 "I'll try to read it, but some things may not work.")
372 "I'll try to read it, but some things may not work.")
373
373
374 #-------------------------------------------------------------------------
374 #-------------------------------------------------------------------------
375 # set up output traps: catch all output from files, being run, modules
375 # set up output traps: catch all output from files, being run, modules
376 # loaded, etc. Then give it to the user in a clean form at the end.
376 # loaded, etc. Then give it to the user in a clean form at the end.
377
377
378 msg_out = 'Output messages. '
378 msg_out = 'Output messages. '
379 msg_err = 'Error messages. '
379 msg_err = 'Error messages. '
380 msg_sep = '\n'
380 msg_sep = '\n'
381 msg = Struct(config = OutputTrap('Configuration Loader',msg_out,
381 msg = Struct(config = OutputTrap('Configuration Loader',msg_out,
382 msg_err,msg_sep,debug,
382 msg_err,msg_sep,debug,
383 quiet_out=1),
383 quiet_out=1),
384 user_exec = OutputTrap('User File Execution',msg_out,
384 user_exec = OutputTrap('User File Execution',msg_out,
385 msg_err,msg_sep,debug),
385 msg_err,msg_sep,debug),
386 logplay = OutputTrap('Log Loader',msg_out,
386 logplay = OutputTrap('Log Loader',msg_out,
387 msg_err,msg_sep,debug),
387 msg_err,msg_sep,debug),
388 summary = ''
388 summary = ''
389 )
389 )
390
390
391 #-------------------------------------------------------------------------
391 #-------------------------------------------------------------------------
392 # Process user ipythonrc-type configuration files
392 # Process user ipythonrc-type configuration files
393
393
394 # turn on output trapping and log to msg.config
394 # turn on output trapping and log to msg.config
395 # remember that with debug on, trapping is actually disabled
395 # remember that with debug on, trapping is actually disabled
396 msg.config.trap_all()
396 msg.config.trap_all()
397
397
398 # look for rcfile in current or default directory
398 # look for rcfile in current or default directory
399 try:
399 try:
400 opts_all.rcfile = filefind(opts_all.rcfile,opts_all.ipythondir)
400 opts_all.rcfile = filefind(opts_all.rcfile,opts_all.ipythondir)
401 except IOError:
401 except IOError:
402 if opts_all.debug: IP.InteractiveTB()
402 if opts_all.debug: IP.InteractiveTB()
403 warn('Configuration file %s not found. Ignoring request.'
403 warn('Configuration file %s not found. Ignoring request.'
404 % (opts_all.rcfile) )
404 % (opts_all.rcfile) )
405
405
406 # 'profiles' are a shorthand notation for config filenames
406 # 'profiles' are a shorthand notation for config filenames
407 if opts_all.profile:
407 if opts_all.profile:
408 try:
408 try:
409 opts_all.rcfile = filefind('ipythonrc-' + opts_all.profile
409 opts_all.rcfile = filefind('ipythonrc-' + opts_all.profile
410 + rc_suffix,
410 + rc_suffix,
411 opts_all.ipythondir)
411 opts_all.ipythondir)
412 except IOError:
412 except IOError:
413 if opts_all.debug: IP.InteractiveTB()
413 if opts_all.debug: IP.InteractiveTB()
414 opts.profile = '' # remove profile from options if invalid
414 opts.profile = '' # remove profile from options if invalid
415 warn('Profile configuration file %s not found. Ignoring request.'
415 warn('Profile configuration file %s not found. Ignoring request.'
416 % (opts_all.profile) )
416 % (opts_all.profile) )
417
417
418
418
419 # load the config file
419 # load the config file
420 rcfiledata = None
420 rcfiledata = None
421 if opts_all.quick:
421 if opts_all.quick:
422 print 'Launching IPython in quick mode. No config file read.'
422 print 'Launching IPython in quick mode. No config file read.'
423 elif opts_all.classic:
423 elif opts_all.classic:
424 print 'Launching IPython in classic mode. No config file read.'
424 print 'Launching IPython in classic mode. No config file read.'
425 elif opts_all.rcfile:
425 elif opts_all.rcfile:
426 try:
426 try:
427 cfg_loader = ConfigLoader(conflict)
427 cfg_loader = ConfigLoader(conflict)
428 rcfiledata = cfg_loader.load(opts_all.rcfile,typeconv,
428 rcfiledata = cfg_loader.load(opts_all.rcfile,typeconv,
429 'include',opts_all.ipythondir,
429 'include',opts_all.ipythondir,
430 purge = 1,
430 purge = 1,
431 unique = conflict['preserve'])
431 unique = conflict['preserve'])
432 except:
432 except:
433 IP.InteractiveTB()
433 IP.InteractiveTB()
434 warn('Problems loading configuration file '+
434 warn('Problems loading configuration file '+
435 `opts_all.rcfile`+
435 `opts_all.rcfile`+
436 '\nStarting with default -bare bones- configuration.')
436 '\nStarting with default -bare bones- configuration.')
437 else:
437 else:
438 warn('No valid configuration file found in either currrent directory\n'+
438 warn('No valid configuration file found in either currrent directory\n'+
439 'or in the IPython config. directory: '+`opts_all.ipythondir`+
439 'or in the IPython config. directory: '+`opts_all.ipythondir`+
440 '\nProceeding with internal defaults.')
440 '\nProceeding with internal defaults.')
441
441
442 #------------------------------------------------------------------------
442 #------------------------------------------------------------------------
443 # Set exception handlers in mode requested by user.
443 # Set exception handlers in mode requested by user.
444 otrap = OutputTrap(trap_out=1) # trap messages from magic_xmode
444 otrap = OutputTrap(trap_out=1) # trap messages from magic_xmode
445 IP.magic_xmode(opts_all.xmode)
445 IP.magic_xmode(opts_all.xmode)
446 otrap.release_out()
446 otrap.release_out()
447
447
448 #------------------------------------------------------------------------
448 #------------------------------------------------------------------------
449 # Execute user config
449 # Execute user config
450
450
451 # Create a valid config structure with the right precedence order:
451 # Create a valid config structure with the right precedence order:
452 # defaults < rcfile < command line. This needs to be in the instance, so
452 # defaults < rcfile < command line. This needs to be in the instance, so
453 # that method calls below that rely on it find it.
453 # that method calls below that rely on it find it.
454 IP.rc = rc_def.copy()
454 IP.rc = rc_def.copy()
455
455
456 # Work with a local alias inside this routine to avoid unnecessary
456 # Work with a local alias inside this routine to avoid unnecessary
457 # attribute lookups.
457 # attribute lookups.
458 IP_rc = IP.rc
458 IP_rc = IP.rc
459
459
460 IP_rc.update(opts_def)
460 IP_rc.update(opts_def)
461 if rcfiledata:
461 if rcfiledata:
462 # now we can update
462 # now we can update
463 IP_rc.update(rcfiledata)
463 IP_rc.update(rcfiledata)
464 IP_rc.update(opts)
464 IP_rc.update(opts)
465 IP_rc.update(rc_override)
465 IP_rc.update(rc_override)
466
466
467 # Store the original cmd line for reference:
467 # Store the original cmd line for reference:
468 IP_rc.opts = opts
468 IP_rc.opts = opts
469 IP_rc.args = args
469 IP_rc.args = args
470
470
471 # create a *runtime* Struct like rc for holding parameters which may be
471 # create a *runtime* Struct like rc for holding parameters which may be
472 # created and/or modified by runtime user extensions.
472 # created and/or modified by runtime user extensions.
473 IP.runtime_rc = Struct()
473 IP.runtime_rc = Struct()
474
474
475 # from this point on, all config should be handled through IP_rc,
475 # from this point on, all config should be handled through IP_rc,
476 # opts* shouldn't be used anymore.
476 # opts* shouldn't be used anymore.
477
477
478 # add personal .ipython dir to sys.path so that users can put things in
478 # add personal .ipython dir to sys.path so that users can put things in
479 # there for customization
479 # there for customization
480 sys.path.append(IP_rc.ipythondir)
480 sys.path.append(IP_rc.ipythondir)
481
481
482 sys.path.insert(0, '') # add . to sys.path. Fix from Prabhu Ramachandran
482 sys.path.insert(0, '') # add . to sys.path. Fix from Prabhu Ramachandran
483
483
484 # update IP_rc with some special things that need manual
484 # update IP_rc with some special things that need manual
485 # tweaks. Basically options which affect other options. I guess this
485 # tweaks. Basically options which affect other options. I guess this
486 # should just be written so that options are fully orthogonal and we
486 # should just be written so that options are fully orthogonal and we
487 # wouldn't worry about this stuff!
487 # wouldn't worry about this stuff!
488
488
489 if IP_rc.classic:
489 if IP_rc.classic:
490 IP_rc.quick = 1
490 IP_rc.quick = 1
491 IP_rc.cache_size = 0
491 IP_rc.cache_size = 0
492 IP_rc.pprint = 0
492 IP_rc.pprint = 0
493 IP_rc.prompt_in1 = '>>> '
493 IP_rc.prompt_in1 = '>>> '
494 IP_rc.prompt_in2 = '... '
494 IP_rc.prompt_in2 = '... '
495 IP_rc.prompt_out = ''
495 IP_rc.prompt_out = ''
496 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
496 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
497 IP_rc.colors = 'NoColor'
497 IP_rc.colors = 'NoColor'
498 IP_rc.xmode = 'Plain'
498 IP_rc.xmode = 'Plain'
499
499
500 # configure readline
500 # configure readline
501 # Define the history file for saving commands in between sessions
501 # Define the history file for saving commands in between sessions
502 if IP_rc.profile:
502 if IP_rc.profile:
503 histfname = 'history-%s' % IP_rc.profile
503 histfname = 'history-%s' % IP_rc.profile
504 else:
504 else:
505 histfname = 'history'
505 histfname = 'history'
506 IP.histfile = os.path.join(opts_all.ipythondir,histfname)
506 IP.histfile = os.path.join(opts_all.ipythondir,histfname)
507
507
508 # update exception handlers with rc file status
508 # update exception handlers with rc file status
509 otrap.trap_out() # I don't want these messages ever.
509 otrap.trap_out() # I don't want these messages ever.
510 IP.magic_xmode(IP_rc.xmode)
510 IP.magic_xmode(IP_rc.xmode)
511 otrap.release_out()
511 otrap.release_out()
512
512
513 # activate logging if requested and not reloading a log
513 # activate logging if requested and not reloading a log
514 if IP_rc.logplay:
514 if IP_rc.logplay:
515 IP.magic_logstart(IP_rc.logplay + ' append')
515 IP.magic_logstart(IP_rc.logplay + ' append')
516 elif IP_rc.logfile:
516 elif IP_rc.logfile:
517 IP.magic_logstart(IP_rc.logfile)
517 IP.magic_logstart(IP_rc.logfile)
518 elif IP_rc.log:
518 elif IP_rc.log:
519 IP.magic_logstart()
519 IP.magic_logstart()
520
520
521 # find user editor so that it we don't have to look it up constantly
521 # find user editor so that it we don't have to look it up constantly
522 if IP_rc.editor.strip()=='0':
522 if IP_rc.editor.strip()=='0':
523 try:
523 try:
524 ed = os.environ['EDITOR']
524 ed = os.environ['EDITOR']
525 except KeyError:
525 except KeyError:
526 if os.name == 'posix':
526 if os.name == 'posix':
527 ed = 'vi' # the only one guaranteed to be there!
527 ed = 'vi' # the only one guaranteed to be there!
528 else:
528 else:
529 ed = 'notepad' # same in Windows!
529 ed = 'notepad' # same in Windows!
530 IP_rc.editor = ed
530 IP_rc.editor = ed
531
531
532 # Keep track of whether this is an embedded instance or not (useful for
532 # Keep track of whether this is an embedded instance or not (useful for
533 # post-mortems).
533 # post-mortems).
534 IP_rc.embedded = IP.embedded
534 IP_rc.embedded = IP.embedded
535
535
536 # Recursive reload
536 # Recursive reload
537 try:
537 try:
538 from IPython import deep_reload
538 from IPython import deep_reload
539 if IP_rc.deep_reload:
539 if IP_rc.deep_reload:
540 __builtin__.reload = deep_reload.reload
540 __builtin__.reload = deep_reload.reload
541 else:
541 else:
542 __builtin__.dreload = deep_reload.reload
542 __builtin__.dreload = deep_reload.reload
543 del deep_reload
543 del deep_reload
544 except ImportError:
544 except ImportError:
545 pass
545 pass
546
546
547 # Save the current state of our namespace so that the interactive shell
547 # Save the current state of our namespace so that the interactive shell
548 # can later know which variables have been created by us from config files
548 # can later know which variables have been created by us from config files
549 # and loading. This way, loading a file (in any way) is treated just like
549 # and loading. This way, loading a file (in any way) is treated just like
550 # defining things on the command line, and %who works as expected.
550 # defining things on the command line, and %who works as expected.
551
551
552 # DON'T do anything that affects the namespace beyond this point!
552 # DON'T do anything that affects the namespace beyond this point!
553 IP.internal_ns.update(__main__.__dict__)
553 IP.internal_ns.update(__main__.__dict__)
554
554
555 #IP.internal_ns.update(locals()) # so our stuff doesn't show up in %who
555 #IP.internal_ns.update(locals()) # so our stuff doesn't show up in %who
556
556
557 # Now run through the different sections of the users's config
557 # Now run through the different sections of the users's config
558 if IP_rc.debug:
558 if IP_rc.debug:
559 print 'Trying to execute the following configuration structure:'
559 print 'Trying to execute the following configuration structure:'
560 print '(Things listed first are deeper in the inclusion tree and get'
560 print '(Things listed first are deeper in the inclusion tree and get'
561 print 'loaded first).\n'
561 print 'loaded first).\n'
562 pprint(IP_rc.__dict__)
562 pprint(IP_rc.__dict__)
563
563
564 # Make it easy to import extensions
564 # Make it easy to import extensions
565 sys.path.append(os.path.join(IPython_dir,"Extensions"))
565 sys.path.append(os.path.join(IPython_dir,"Extensions"))
566 for mod in IP_rc.import_mod:
566 for mod in IP_rc.import_mod:
567 try:
567 try:
568 exec 'import '+mod in IP.user_ns
568 exec 'import '+mod in IP.user_ns
569 except :
569 except :
570 IP.InteractiveTB()
570 IP.InteractiveTB()
571 import_fail_info(mod)
571 import_fail_info(mod)
572
572
573 for mod_fn in IP_rc.import_some:
573 for mod_fn in IP_rc.import_some:
574 if mod_fn == []: break
574 if mod_fn == []: break
575 mod,fn = mod_fn[0],','.join(mod_fn[1:])
575 mod,fn = mod_fn[0],','.join(mod_fn[1:])
576 try:
576 try:
577 exec 'from '+mod+' import '+fn in IP.user_ns
577 exec 'from '+mod+' import '+fn in IP.user_ns
578 except :
578 except :
579 IP.InteractiveTB()
579 IP.InteractiveTB()
580 import_fail_info(mod,fn)
580 import_fail_info(mod,fn)
581
581
582 for mod in IP_rc.import_all:
582 for mod in IP_rc.import_all:
583 try:
583 try:
584 exec 'from '+mod+' import *' in IP.user_ns
584 exec 'from '+mod+' import *' in IP.user_ns
585 except :
585 except :
586 IP.InteractiveTB()
586 IP.InteractiveTB()
587 import_fail_info(mod)
587 import_fail_info(mod)
588
588
589 for code in IP_rc.execute:
589 for code in IP_rc.execute:
590 try:
590 try:
591 exec code in IP.user_ns
591 exec code in IP.user_ns
592 except:
592 except:
593 IP.InteractiveTB()
593 IP.InteractiveTB()
594 warn('Failure executing code: ' + `code`)
594 warn('Failure executing code: ' + `code`)
595
595
596 # Execute the files the user wants in ipythonrc
596 # Execute the files the user wants in ipythonrc
597 for file in IP_rc.execfile:
597 for file in IP_rc.execfile:
598 try:
598 try:
599 file = filefind(file,sys.path+[IPython_dir])
599 file = filefind(file,sys.path+[IPython_dir])
600 except IOError:
600 except IOError:
601 warn(itpl('File $file not found. Skipping it.'))
601 warn(itpl('File $file not found. Skipping it.'))
602 else:
602 else:
603 IP.safe_execfile(os.path.expanduser(file),IP.user_ns)
603 IP.safe_execfile(os.path.expanduser(file),IP.user_ns)
604
604
605 # finally, try importing ipy_*_conf for final configuration
605 # finally, try importing ipy_*_conf for final configuration
606 try:
606 try:
607 import ipy_system_conf
607 import ipy_system_conf
608 import ipy_user_conf
608 import ipy_user_conf
609
609
610 except ImportError:
610 except ImportError:
611 pass
611 pass
612 #IP.InteractiveTB() XXX uncomment in a later release
612 #IP.InteractiveTB() XXX uncomment in a later release
613
613
614 # release stdout and stderr and save config log into a global summary
614 # release stdout and stderr and save config log into a global summary
615 msg.config.release_all()
615 msg.config.release_all()
616 if IP_rc.messages:
616 if IP_rc.messages:
617 msg.summary += msg.config.summary_all()
617 msg.summary += msg.config.summary_all()
618
618
619 #------------------------------------------------------------------------
619 #------------------------------------------------------------------------
620 # Setup interactive session
620 # Setup interactive session
621
621
622 # Now we should be fully configured. We can then execute files or load
622 # Now we should be fully configured. We can then execute files or load
623 # things only needed for interactive use. Then we'll open the shell.
623 # things only needed for interactive use. Then we'll open the shell.
624
624
625 # Take a snapshot of the user namespace before opening the shell. That way
625 # Take a snapshot of the user namespace before opening the shell. That way
626 # we'll be able to identify which things were interactively defined and
626 # we'll be able to identify which things were interactively defined and
627 # which were defined through config files.
627 # which were defined through config files.
628 IP.user_config_ns = IP.user_ns.copy()
628 IP.user_config_ns = IP.user_ns.copy()
629
629
630 # Force reading a file as if it were a session log. Slower but safer.
630 # Force reading a file as if it were a session log. Slower but safer.
631 if load_logplay:
631 if load_logplay:
632 print 'Replaying log...'
632 print 'Replaying log...'
633 try:
633 try:
634 if IP_rc.debug:
634 if IP_rc.debug:
635 logplay_quiet = 0
635 logplay_quiet = 0
636 else:
636 else:
637 logplay_quiet = 1
637 logplay_quiet = 1
638
638
639 msg.logplay.trap_all()
639 msg.logplay.trap_all()
640 IP.safe_execfile(load_logplay,IP.user_ns,
640 IP.safe_execfile(load_logplay,IP.user_ns,
641 islog = 1, quiet = logplay_quiet)
641 islog = 1, quiet = logplay_quiet)
642 msg.logplay.release_all()
642 msg.logplay.release_all()
643 if IP_rc.messages:
643 if IP_rc.messages:
644 msg.summary += msg.logplay.summary_all()
644 msg.summary += msg.logplay.summary_all()
645 except:
645 except:
646 warn('Problems replaying logfile %s.' % load_logplay)
646 warn('Problems replaying logfile %s.' % load_logplay)
647 IP.InteractiveTB()
647 IP.InteractiveTB()
648
648
649 # Load remaining files in command line
649 # Load remaining files in command line
650 msg.user_exec.trap_all()
650 msg.user_exec.trap_all()
651
651
652 # Do NOT execute files named in the command line as scripts to be loaded
652 # Do NOT execute files named in the command line as scripts to be loaded
653 # by embedded instances. Doing so has the potential for an infinite
653 # by embedded instances. Doing so has the potential for an infinite
654 # recursion if there are exceptions thrown in the process.
654 # recursion if there are exceptions thrown in the process.
655
655
656 # XXX FIXME: the execution of user files should be moved out to after
656 # XXX FIXME: the execution of user files should be moved out to after
657 # ipython is fully initialized, just as if they were run via %run at the
657 # ipython is fully initialized, just as if they were run via %run at the
658 # ipython prompt. This would also give them the benefit of ipython's
658 # ipython prompt. This would also give them the benefit of ipython's
659 # nice tracebacks.
659 # nice tracebacks.
660
660
661 if not embedded and IP_rc.args:
661 if not embedded and IP_rc.args:
662 name_save = IP.user_ns['__name__']
662 name_save = IP.user_ns['__name__']
663 IP.user_ns['__name__'] = '__main__'
663 IP.user_ns['__name__'] = '__main__'
664 # Set our own excepthook in case the user code tries to call it
665 # directly. This prevents triggering the IPython crash handler.
666 old_excepthook,sys.excepthook = sys.excepthook, IP.excepthook
667
668 save_argv = sys.argv[:] # save it for later restoring
669 sys.argv.pop(0) # the first arg is 'ipython'
670
664 try:
671 try:
665 # Set our own excepthook in case the user code tries to call it
672 IP.safe_execfile(args[0], IP.user_ns)
666 # directly. This prevents triggering the IPython crash handler.
667 old_excepthook,sys.excepthook = sys.excepthook, IP.excepthook
668 for run in args:
669 IP.safe_execfile(run,IP.user_ns)
670 finally:
673 finally:
671 # Reset our crash handler in place
674 # Reset our crash handler in place
672 sys.excepthook = old_excepthook
675 sys.excepthook = old_excepthook
673
676 sys.argv = save_argv
674 IP.user_ns['__name__'] = name_save
677 IP.user_ns['__name__'] = name_save
675
678
676 msg.user_exec.release_all()
679 msg.user_exec.release_all()
677 if IP_rc.messages:
680 if IP_rc.messages:
678 msg.summary += msg.user_exec.summary_all()
681 msg.summary += msg.user_exec.summary_all()
679
682
680 # since we can't specify a null string on the cmd line, 0 is the equivalent:
683 # since we can't specify a null string on the cmd line, 0 is the equivalent:
681 if IP_rc.nosep:
684 if IP_rc.nosep:
682 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
685 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
683 if IP_rc.separate_in == '0': IP_rc.separate_in = ''
686 if IP_rc.separate_in == '0': IP_rc.separate_in = ''
684 if IP_rc.separate_out == '0': IP_rc.separate_out = ''
687 if IP_rc.separate_out == '0': IP_rc.separate_out = ''
685 if IP_rc.separate_out2 == '0': IP_rc.separate_out2 = ''
688 if IP_rc.separate_out2 == '0': IP_rc.separate_out2 = ''
686 IP_rc.separate_in = IP_rc.separate_in.replace('\\n','\n')
689 IP_rc.separate_in = IP_rc.separate_in.replace('\\n','\n')
687 IP_rc.separate_out = IP_rc.separate_out.replace('\\n','\n')
690 IP_rc.separate_out = IP_rc.separate_out.replace('\\n','\n')
688 IP_rc.separate_out2 = IP_rc.separate_out2.replace('\\n','\n')
691 IP_rc.separate_out2 = IP_rc.separate_out2.replace('\\n','\n')
689
692
690 # Determine how many lines at the bottom of the screen are needed for
693 # Determine how many lines at the bottom of the screen are needed for
691 # showing prompts, so we can know wheter long strings are to be printed or
694 # showing prompts, so we can know wheter long strings are to be printed or
692 # paged:
695 # paged:
693 num_lines_bot = IP_rc.separate_in.count('\n')+1
696 num_lines_bot = IP_rc.separate_in.count('\n')+1
694 IP_rc.screen_length = IP_rc.screen_length - num_lines_bot
697 IP_rc.screen_length = IP_rc.screen_length - num_lines_bot
695
698
696 # configure startup banner
699 # configure startup banner
697 if IP_rc.c: # regular python doesn't print the banner with -c
700 if IP_rc.c: # regular python doesn't print the banner with -c
698 IP_rc.banner = 0
701 IP_rc.banner = 0
699 if IP_rc.banner:
702 if IP_rc.banner:
700 BANN_P = IP.BANNER_PARTS
703 BANN_P = IP.BANNER_PARTS
701 else:
704 else:
702 BANN_P = []
705 BANN_P = []
703
706
704 if IP_rc.profile: BANN_P.append('IPython profile: %s\n' % IP_rc.profile)
707 if IP_rc.profile: BANN_P.append('IPython profile: %s\n' % IP_rc.profile)
705
708
706 # add message log (possibly empty)
709 # add message log (possibly empty)
707 if msg.summary: BANN_P.append(msg.summary)
710 if msg.summary: BANN_P.append(msg.summary)
708 # Final banner is a string
711 # Final banner is a string
709 IP.BANNER = '\n'.join(BANN_P)
712 IP.BANNER = '\n'.join(BANN_P)
710
713
711 # Finalize the IPython instance. This assumes the rc structure is fully
714 # Finalize the IPython instance. This assumes the rc structure is fully
712 # in place.
715 # in place.
713 IP.post_config_initialization()
716 IP.post_config_initialization()
714
717
715 return IP
718 return IP
716 #************************ end of file <ipmaker.py> **************************
719 #************************ end of file <ipmaker.py> **************************
@@ -1,5072 +1,5079 b''
1 2006-01-27 Ville Vainio <vivainio@gmail.com>
2
3 * ipmaker.py: Give "realistic" sys.argv for scripts (without
4 'ipython' at argv[0]) executed through command line.
5 NOTE: this DEPRECATES calling ipython with multiple scripts
6 ("ipython a.py b.py c.py")
7
1 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
8 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
2
9
3 * IPython/demo.py (Demo.show): Flush stdout after each block, so
10 * IPython/demo.py (Demo.show): Flush stdout after each block, so
4 computationally intensive blocks don't appear to stall the demo.
11 computationally intensive blocks don't appear to stall the demo.
5
12
6 2006-01-24 Ville Vainio <vivainio@gmail.com>
13 2006-01-24 Ville Vainio <vivainio@gmail.com>
7
14
8 * iplib.py, hooks.py: 'result_display' hook can return a non-None
15 * iplib.py, hooks.py: 'result_display' hook can return a non-None
9 value to manipulate resulting history entry.
16 value to manipulate resulting history entry.
10
17
11 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
18 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
12 to instance methods of IPApi class, to make extending an embedded
19 to instance methods of IPApi class, to make extending an embedded
13 IPython feasible. See ext_rehashdir.py for example usage.
20 IPython feasible. See ext_rehashdir.py for example usage.
14
21
15 * Merged 1071-1076 from banches/0.7.1
22 * Merged 1071-1076 from banches/0.7.1
16
23
17
24
18 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
25 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
19
26
20 * tools/release (daystamp): Fix build tools to use the new
27 * tools/release (daystamp): Fix build tools to use the new
21 eggsetup.py script to build lightweight eggs.
28 eggsetup.py script to build lightweight eggs.
22
29
23 * Applied changesets 1062 and 1064 before 0.7.1 release.
30 * Applied changesets 1062 and 1064 before 0.7.1 release.
24
31
25 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
32 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
26 see the raw input history (without conversions like %ls ->
33 see the raw input history (without conversions like %ls ->
27 ipmagic("ls")). After a request from W. Stein, SAGE
34 ipmagic("ls")). After a request from W. Stein, SAGE
28 (http://modular.ucsd.edu/sage) developer. This information is
35 (http://modular.ucsd.edu/sage) developer. This information is
29 stored in the input_hist_raw attribute of the IPython instance, so
36 stored in the input_hist_raw attribute of the IPython instance, so
30 developers can access it if needed (it's an InputList instance).
37 developers can access it if needed (it's an InputList instance).
31
38
32 * Versionstring = 0.7.2.svn
39 * Versionstring = 0.7.2.svn
33
40
34 * eggsetup.py: A separate script for constructing eggs, creates
41 * eggsetup.py: A separate script for constructing eggs, creates
35 proper launch scripts even on Windows (an .exe file in
42 proper launch scripts even on Windows (an .exe file in
36 \python24\scripts).
43 \python24\scripts).
37
44
38 * ipapi.py: launch_new_instance, launch entry point needed for the
45 * ipapi.py: launch_new_instance, launch entry point needed for the
39 egg.
46 egg.
40
47
41 2006-01-23 Ville Vainio <vivainio@gmail.com>
48 2006-01-23 Ville Vainio <vivainio@gmail.com>
42
49
43 * Added %cpaste magic for pasting python code
50 * Added %cpaste magic for pasting python code
44
51
45 2006-01-22 Ville Vainio <vivainio@gmail.com>
52 2006-01-22 Ville Vainio <vivainio@gmail.com>
46
53
47 * Merge from branches/0.7.1 into trunk, revs 1052-1057
54 * Merge from branches/0.7.1 into trunk, revs 1052-1057
48
55
49 * Versionstring = 0.7.2.svn
56 * Versionstring = 0.7.2.svn
50
57
51 * eggsetup.py: A separate script for constructing eggs, creates
58 * eggsetup.py: A separate script for constructing eggs, creates
52 proper launch scripts even on Windows (an .exe file in
59 proper launch scripts even on Windows (an .exe file in
53 \python24\scripts).
60 \python24\scripts).
54
61
55 * ipapi.py: launch_new_instance, launch entry point needed for the
62 * ipapi.py: launch_new_instance, launch entry point needed for the
56 egg.
63 egg.
57
64
58 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
65 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
59
66
60 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
67 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
61 %pfile foo would print the file for foo even if it was a binary.
68 %pfile foo would print the file for foo even if it was a binary.
62 Now, extensions '.so' and '.dll' are skipped.
69 Now, extensions '.so' and '.dll' are skipped.
63
70
64 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
71 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
65 bug, where macros would fail in all threaded modes. I'm not 100%
72 bug, where macros would fail in all threaded modes. I'm not 100%
66 sure, so I'm going to put out an rc instead of making a release
73 sure, so I'm going to put out an rc instead of making a release
67 today, and wait for feedback for at least a few days.
74 today, and wait for feedback for at least a few days.
68
75
69 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
76 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
70 it...) the handling of pasting external code with autoindent on.
77 it...) the handling of pasting external code with autoindent on.
71 To get out of a multiline input, the rule will appear for most
78 To get out of a multiline input, the rule will appear for most
72 users unchanged: two blank lines or change the indent level
79 users unchanged: two blank lines or change the indent level
73 proposed by IPython. But there is a twist now: you can
80 proposed by IPython. But there is a twist now: you can
74 add/subtract only *one or two spaces*. If you add/subtract three
81 add/subtract only *one or two spaces*. If you add/subtract three
75 or more (unless you completely delete the line), IPython will
82 or more (unless you completely delete the line), IPython will
76 accept that line, and you'll need to enter a second one of pure
83 accept that line, and you'll need to enter a second one of pure
77 whitespace. I know it sounds complicated, but I can't find a
84 whitespace. I know it sounds complicated, but I can't find a
78 different solution that covers all the cases, with the right
85 different solution that covers all the cases, with the right
79 heuristics. Hopefully in actual use, nobody will really notice
86 heuristics. Hopefully in actual use, nobody will really notice
80 all these strange rules and things will 'just work'.
87 all these strange rules and things will 'just work'.
81
88
82 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
89 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
83
90
84 * IPython/iplib.py (interact): catch exceptions which can be
91 * IPython/iplib.py (interact): catch exceptions which can be
85 triggered asynchronously by signal handlers. Thanks to an
92 triggered asynchronously by signal handlers. Thanks to an
86 automatic crash report, submitted by Colin Kingsley
93 automatic crash report, submitted by Colin Kingsley
87 <tercel-AT-gentoo.org>.
94 <tercel-AT-gentoo.org>.
88
95
89 2006-01-20 Ville Vainio <vivainio@gmail.com>
96 2006-01-20 Ville Vainio <vivainio@gmail.com>
90
97
91 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
98 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
92 (%rehashdir, very useful, try it out) of how to extend ipython
99 (%rehashdir, very useful, try it out) of how to extend ipython
93 with new magics. Also added Extensions dir to pythonpath to make
100 with new magics. Also added Extensions dir to pythonpath to make
94 importing extensions easy.
101 importing extensions easy.
95
102
96 * %store now complains when trying to store interactively declared
103 * %store now complains when trying to store interactively declared
97 classes / instances of those classes.
104 classes / instances of those classes.
98
105
99 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
106 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
100 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
107 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
101 if they exist, and ipy_user_conf.py with some defaults is created for
108 if they exist, and ipy_user_conf.py with some defaults is created for
102 the user.
109 the user.
103
110
104 * Startup rehashing done by the config file, not InterpreterExec.
111 * Startup rehashing done by the config file, not InterpreterExec.
105 This means system commands are available even without selecting the
112 This means system commands are available even without selecting the
106 pysh profile. It's the sensible default after all.
113 pysh profile. It's the sensible default after all.
107
114
108 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
115 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
109
116
110 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
117 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
111 multiline code with autoindent on working. But I am really not
118 multiline code with autoindent on working. But I am really not
112 sure, so this needs more testing. Will commit a debug-enabled
119 sure, so this needs more testing. Will commit a debug-enabled
113 version for now, while I test it some more, so that Ville and
120 version for now, while I test it some more, so that Ville and
114 others may also catch any problems. Also made
121 others may also catch any problems. Also made
115 self.indent_current_str() a method, to ensure that there's no
122 self.indent_current_str() a method, to ensure that there's no
116 chance of the indent space count and the corresponding string
123 chance of the indent space count and the corresponding string
117 falling out of sync. All code needing the string should just call
124 falling out of sync. All code needing the string should just call
118 the method.
125 the method.
119
126
120 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
127 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
121
128
122 * IPython/Magic.py (magic_edit): fix check for when users don't
129 * IPython/Magic.py (magic_edit): fix check for when users don't
123 save their output files, the try/except was in the wrong section.
130 save their output files, the try/except was in the wrong section.
124
131
125 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
132 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
126
133
127 * IPython/Magic.py (magic_run): fix __file__ global missing from
134 * IPython/Magic.py (magic_run): fix __file__ global missing from
128 script's namespace when executed via %run. After a report by
135 script's namespace when executed via %run. After a report by
129 Vivian.
136 Vivian.
130
137
131 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
138 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
132 when using python 2.4. The parent constructor changed in 2.4, and
139 when using python 2.4. The parent constructor changed in 2.4, and
133 we need to track it directly (we can't call it, as it messes up
140 we need to track it directly (we can't call it, as it messes up
134 readline and tab-completion inside our pdb would stop working).
141 readline and tab-completion inside our pdb would stop working).
135 After a bug report by R. Bernstein <rocky-AT-panix.com>.
142 After a bug report by R. Bernstein <rocky-AT-panix.com>.
136
143
137 2006-01-16 Ville Vainio <vivainio@gmail.com>
144 2006-01-16 Ville Vainio <vivainio@gmail.com>
138
145
139 * Ipython/magic.py:Reverted back to old %edit functionality
146 * Ipython/magic.py:Reverted back to old %edit functionality
140 that returns file contents on exit.
147 that returns file contents on exit.
141
148
142 * IPython/path.py: Added Jason Orendorff's "path" module to
149 * IPython/path.py: Added Jason Orendorff's "path" module to
143 IPython tree, http://www.jorendorff.com/articles/python/path/.
150 IPython tree, http://www.jorendorff.com/articles/python/path/.
144 You can get path objects conveniently through %sc, and !!, e.g.:
151 You can get path objects conveniently through %sc, and !!, e.g.:
145 sc files=ls
152 sc files=ls
146 for p in files.paths: # or files.p
153 for p in files.paths: # or files.p
147 print p,p.mtime
154 print p,p.mtime
148
155
149 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
156 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
150 now work again without considering the exclusion regexp -
157 now work again without considering the exclusion regexp -
151 hence, things like ',foo my/path' turn to 'foo("my/path")'
158 hence, things like ',foo my/path' turn to 'foo("my/path")'
152 instead of syntax error.
159 instead of syntax error.
153
160
154
161
155 2006-01-14 Ville Vainio <vivainio@gmail.com>
162 2006-01-14 Ville Vainio <vivainio@gmail.com>
156
163
157 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
164 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
158 ipapi decorators for python 2.4 users, options() provides access to rc
165 ipapi decorators for python 2.4 users, options() provides access to rc
159 data.
166 data.
160
167
161 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
168 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
162 as path separators (even on Linux ;-). Space character after
169 as path separators (even on Linux ;-). Space character after
163 backslash (as yielded by tab completer) is still space;
170 backslash (as yielded by tab completer) is still space;
164 "%cd long\ name" works as expected.
171 "%cd long\ name" works as expected.
165
172
166 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
173 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
167 as "chain of command", with priority. API stays the same,
174 as "chain of command", with priority. API stays the same,
168 TryNext exception raised by a hook function signals that
175 TryNext exception raised by a hook function signals that
169 current hook failed and next hook should try handling it, as
176 current hook failed and next hook should try handling it, as
170 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
177 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
171 requested configurable display hook, which is now implemented.
178 requested configurable display hook, which is now implemented.
172
179
173 2006-01-13 Ville Vainio <vivainio@gmail.com>
180 2006-01-13 Ville Vainio <vivainio@gmail.com>
174
181
175 * IPython/platutils*.py: platform specific utility functions,
182 * IPython/platutils*.py: platform specific utility functions,
176 so far only set_term_title is implemented (change terminal
183 so far only set_term_title is implemented (change terminal
177 label in windowing systems). %cd now changes the title to
184 label in windowing systems). %cd now changes the title to
178 current dir.
185 current dir.
179
186
180 * IPython/Release.py: Added myself to "authors" list,
187 * IPython/Release.py: Added myself to "authors" list,
181 had to create new files.
188 had to create new files.
182
189
183 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
190 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
184 shell escape; not a known bug but had potential to be one in the
191 shell escape; not a known bug but had potential to be one in the
185 future.
192 future.
186
193
187 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
194 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
188 extension API for IPython! See the module for usage example. Fix
195 extension API for IPython! See the module for usage example. Fix
189 OInspect for docstring-less magic functions.
196 OInspect for docstring-less magic functions.
190
197
191
198
192 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
199 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
193
200
194 * IPython/iplib.py (raw_input): temporarily deactivate all
201 * IPython/iplib.py (raw_input): temporarily deactivate all
195 attempts at allowing pasting of code with autoindent on. It
202 attempts at allowing pasting of code with autoindent on. It
196 introduced bugs (reported by Prabhu) and I can't seem to find a
203 introduced bugs (reported by Prabhu) and I can't seem to find a
197 robust combination which works in all cases. Will have to revisit
204 robust combination which works in all cases. Will have to revisit
198 later.
205 later.
199
206
200 * IPython/genutils.py: remove isspace() function. We've dropped
207 * IPython/genutils.py: remove isspace() function. We've dropped
201 2.2 compatibility, so it's OK to use the string method.
208 2.2 compatibility, so it's OK to use the string method.
202
209
203 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
210 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
204
211
205 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
212 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
206 matching what NOT to autocall on, to include all python binary
213 matching what NOT to autocall on, to include all python binary
207 operators (including things like 'and', 'or', 'is' and 'in').
214 operators (including things like 'and', 'or', 'is' and 'in').
208 Prompted by a bug report on 'foo & bar', but I realized we had
215 Prompted by a bug report on 'foo & bar', but I realized we had
209 many more potential bug cases with other operators. The regexp is
216 many more potential bug cases with other operators. The regexp is
210 self.re_exclude_auto, it's fairly commented.
217 self.re_exclude_auto, it's fairly commented.
211
218
212 2006-01-12 Ville Vainio <vivainio@gmail.com>
219 2006-01-12 Ville Vainio <vivainio@gmail.com>
213
220
214 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
221 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
215 Prettified and hardened string/backslash quoting with ipsystem(),
222 Prettified and hardened string/backslash quoting with ipsystem(),
216 ipalias() and ipmagic(). Now even \ characters are passed to
223 ipalias() and ipmagic(). Now even \ characters are passed to
217 %magics, !shell escapes and aliases exactly as they are in the
224 %magics, !shell escapes and aliases exactly as they are in the
218 ipython command line. Should improve backslash experience,
225 ipython command line. Should improve backslash experience,
219 particularly in Windows (path delimiter for some commands that
226 particularly in Windows (path delimiter for some commands that
220 won't understand '/'), but Unix benefits as well (regexps). %cd
227 won't understand '/'), but Unix benefits as well (regexps). %cd
221 magic still doesn't support backslash path delimiters, though. Also
228 magic still doesn't support backslash path delimiters, though. Also
222 deleted all pretense of supporting multiline command strings in
229 deleted all pretense of supporting multiline command strings in
223 !system or %magic commands. Thanks to Jerry McRae for suggestions.
230 !system or %magic commands. Thanks to Jerry McRae for suggestions.
224
231
225 * doc/build_doc_instructions.txt added. Documentation on how to
232 * doc/build_doc_instructions.txt added. Documentation on how to
226 use doc/update_manual.py, added yesterday. Both files contributed
233 use doc/update_manual.py, added yesterday. Both files contributed
227 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
234 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
228 doc/*.sh for deprecation at a later date.
235 doc/*.sh for deprecation at a later date.
229
236
230 * /ipython.py Added ipython.py to root directory for
237 * /ipython.py Added ipython.py to root directory for
231 zero-installation (tar xzvf ipython.tgz; cd ipython; python
238 zero-installation (tar xzvf ipython.tgz; cd ipython; python
232 ipython.py) and development convenience (no need to kee doing
239 ipython.py) and development convenience (no need to kee doing
233 "setup.py install" between changes).
240 "setup.py install" between changes).
234
241
235 * Made ! and !! shell escapes work (again) in multiline expressions:
242 * Made ! and !! shell escapes work (again) in multiline expressions:
236 if 1:
243 if 1:
237 !ls
244 !ls
238 !!ls
245 !!ls
239
246
240 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
247 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
241
248
242 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
249 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
243 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
250 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
244 module in case-insensitive installation. Was causing crashes
251 module in case-insensitive installation. Was causing crashes
245 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
252 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
246
253
247 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
254 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
248 <marienz-AT-gentoo.org>, closes
255 <marienz-AT-gentoo.org>, closes
249 http://www.scipy.net/roundup/ipython/issue51.
256 http://www.scipy.net/roundup/ipython/issue51.
250
257
251 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
258 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
252
259
253 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
260 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
254 problem of excessive CPU usage under *nix and keyboard lag under
261 problem of excessive CPU usage under *nix and keyboard lag under
255 win32.
262 win32.
256
263
257 2006-01-10 *** Released version 0.7.0
264 2006-01-10 *** Released version 0.7.0
258
265
259 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
266 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
260
267
261 * IPython/Release.py (revision): tag version number to 0.7.0,
268 * IPython/Release.py (revision): tag version number to 0.7.0,
262 ready for release.
269 ready for release.
263
270
264 * IPython/Magic.py (magic_edit): Add print statement to %edit so
271 * IPython/Magic.py (magic_edit): Add print statement to %edit so
265 it informs the user of the name of the temp. file used. This can
272 it informs the user of the name of the temp. file used. This can
266 help if you decide later to reuse that same file, so you know
273 help if you decide later to reuse that same file, so you know
267 where to copy the info from.
274 where to copy the info from.
268
275
269 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
276 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
270
277
271 * setup_bdist_egg.py: little script to build an egg. Added
278 * setup_bdist_egg.py: little script to build an egg. Added
272 support in the release tools as well.
279 support in the release tools as well.
273
280
274 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
281 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
275
282
276 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
283 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
277 version selection (new -wxversion command line and ipythonrc
284 version selection (new -wxversion command line and ipythonrc
278 parameter). Patch contributed by Arnd Baecker
285 parameter). Patch contributed by Arnd Baecker
279 <arnd.baecker-AT-web.de>.
286 <arnd.baecker-AT-web.de>.
280
287
281 * IPython/iplib.py (embed_mainloop): fix tab-completion in
288 * IPython/iplib.py (embed_mainloop): fix tab-completion in
282 embedded instances, for variables defined at the interactive
289 embedded instances, for variables defined at the interactive
283 prompt of the embedded ipython. Reported by Arnd.
290 prompt of the embedded ipython. Reported by Arnd.
284
291
285 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
292 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
286 it can be used as a (stateful) toggle, or with a direct parameter.
293 it can be used as a (stateful) toggle, or with a direct parameter.
287
294
288 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
295 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
289 could be triggered in certain cases and cause the traceback
296 could be triggered in certain cases and cause the traceback
290 printer not to work.
297 printer not to work.
291
298
292 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
299 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
293
300
294 * IPython/iplib.py (_should_recompile): Small fix, closes
301 * IPython/iplib.py (_should_recompile): Small fix, closes
295 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
302 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
296
303
297 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
304 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
298
305
299 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
306 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
300 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
307 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
301 Moad for help with tracking it down.
308 Moad for help with tracking it down.
302
309
303 * IPython/iplib.py (handle_auto): fix autocall handling for
310 * IPython/iplib.py (handle_auto): fix autocall handling for
304 objects which support BOTH __getitem__ and __call__ (so that f [x]
311 objects which support BOTH __getitem__ and __call__ (so that f [x]
305 is left alone, instead of becoming f([x]) automatically).
312 is left alone, instead of becoming f([x]) automatically).
306
313
307 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
314 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
308 Ville's patch.
315 Ville's patch.
309
316
310 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
317 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
311
318
312 * IPython/iplib.py (handle_auto): changed autocall semantics to
319 * IPython/iplib.py (handle_auto): changed autocall semantics to
313 include 'smart' mode, where the autocall transformation is NOT
320 include 'smart' mode, where the autocall transformation is NOT
314 applied if there are no arguments on the line. This allows you to
321 applied if there are no arguments on the line. This allows you to
315 just type 'foo' if foo is a callable to see its internal form,
322 just type 'foo' if foo is a callable to see its internal form,
316 instead of having it called with no arguments (typically a
323 instead of having it called with no arguments (typically a
317 mistake). The old 'full' autocall still exists: for that, you
324 mistake). The old 'full' autocall still exists: for that, you
318 need to set the 'autocall' parameter to 2 in your ipythonrc file.
325 need to set the 'autocall' parameter to 2 in your ipythonrc file.
319
326
320 * IPython/completer.py (Completer.attr_matches): add
327 * IPython/completer.py (Completer.attr_matches): add
321 tab-completion support for Enthoughts' traits. After a report by
328 tab-completion support for Enthoughts' traits. After a report by
322 Arnd and a patch by Prabhu.
329 Arnd and a patch by Prabhu.
323
330
324 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
331 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
325
332
326 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
333 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
327 Schmolck's patch to fix inspect.getinnerframes().
334 Schmolck's patch to fix inspect.getinnerframes().
328
335
329 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
336 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
330 for embedded instances, regarding handling of namespaces and items
337 for embedded instances, regarding handling of namespaces and items
331 added to the __builtin__ one. Multiple embedded instances and
338 added to the __builtin__ one. Multiple embedded instances and
332 recursive embeddings should work better now (though I'm not sure
339 recursive embeddings should work better now (though I'm not sure
333 I've got all the corner cases fixed, that code is a bit of a brain
340 I've got all the corner cases fixed, that code is a bit of a brain
334 twister).
341 twister).
335
342
336 * IPython/Magic.py (magic_edit): added support to edit in-memory
343 * IPython/Magic.py (magic_edit): added support to edit in-memory
337 macros (automatically creates the necessary temp files). %edit
344 macros (automatically creates the necessary temp files). %edit
338 also doesn't return the file contents anymore, it's just noise.
345 also doesn't return the file contents anymore, it's just noise.
339
346
340 * IPython/completer.py (Completer.attr_matches): revert change to
347 * IPython/completer.py (Completer.attr_matches): revert change to
341 complete only on attributes listed in __all__. I realized it
348 complete only on attributes listed in __all__. I realized it
342 cripples the tab-completion system as a tool for exploring the
349 cripples the tab-completion system as a tool for exploring the
343 internals of unknown libraries (it renders any non-__all__
350 internals of unknown libraries (it renders any non-__all__
344 attribute off-limits). I got bit by this when trying to see
351 attribute off-limits). I got bit by this when trying to see
345 something inside the dis module.
352 something inside the dis module.
346
353
347 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
354 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
348
355
349 * IPython/iplib.py (InteractiveShell.__init__): add .meta
356 * IPython/iplib.py (InteractiveShell.__init__): add .meta
350 namespace for users and extension writers to hold data in. This
357 namespace for users and extension writers to hold data in. This
351 follows the discussion in
358 follows the discussion in
352 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
359 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
353
360
354 * IPython/completer.py (IPCompleter.complete): small patch to help
361 * IPython/completer.py (IPCompleter.complete): small patch to help
355 tab-completion under Emacs, after a suggestion by John Barnard
362 tab-completion under Emacs, after a suggestion by John Barnard
356 <barnarj-AT-ccf.org>.
363 <barnarj-AT-ccf.org>.
357
364
358 * IPython/Magic.py (Magic.extract_input_slices): added support for
365 * IPython/Magic.py (Magic.extract_input_slices): added support for
359 the slice notation in magics to use N-M to represent numbers N...M
366 the slice notation in magics to use N-M to represent numbers N...M
360 (closed endpoints). This is used by %macro and %save.
367 (closed endpoints). This is used by %macro and %save.
361
368
362 * IPython/completer.py (Completer.attr_matches): for modules which
369 * IPython/completer.py (Completer.attr_matches): for modules which
363 define __all__, complete only on those. After a patch by Jeffrey
370 define __all__, complete only on those. After a patch by Jeffrey
364 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
371 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
365 speed up this routine.
372 speed up this routine.
366
373
367 * IPython/Logger.py (Logger.log): fix a history handling bug. I
374 * IPython/Logger.py (Logger.log): fix a history handling bug. I
368 don't know if this is the end of it, but the behavior now is
375 don't know if this is the end of it, but the behavior now is
369 certainly much more correct. Note that coupled with macros,
376 certainly much more correct. Note that coupled with macros,
370 slightly surprising (at first) behavior may occur: a macro will in
377 slightly surprising (at first) behavior may occur: a macro will in
371 general expand to multiple lines of input, so upon exiting, the
378 general expand to multiple lines of input, so upon exiting, the
372 in/out counters will both be bumped by the corresponding amount
379 in/out counters will both be bumped by the corresponding amount
373 (as if the macro's contents had been typed interactively). Typing
380 (as if the macro's contents had been typed interactively). Typing
374 %hist will reveal the intermediate (silently processed) lines.
381 %hist will reveal the intermediate (silently processed) lines.
375
382
376 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
383 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
377 pickle to fail (%run was overwriting __main__ and not restoring
384 pickle to fail (%run was overwriting __main__ and not restoring
378 it, but pickle relies on __main__ to operate).
385 it, but pickle relies on __main__ to operate).
379
386
380 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
387 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
381 using properties, but forgot to make the main InteractiveShell
388 using properties, but forgot to make the main InteractiveShell
382 class a new-style class. Properties fail silently, and
389 class a new-style class. Properties fail silently, and
383 misteriously, with old-style class (getters work, but
390 misteriously, with old-style class (getters work, but
384 setters don't do anything).
391 setters don't do anything).
385
392
386 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
393 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
387
394
388 * IPython/Magic.py (magic_history): fix history reporting bug (I
395 * IPython/Magic.py (magic_history): fix history reporting bug (I
389 know some nasties are still there, I just can't seem to find a
396 know some nasties are still there, I just can't seem to find a
390 reproducible test case to track them down; the input history is
397 reproducible test case to track them down; the input history is
391 falling out of sync...)
398 falling out of sync...)
392
399
393 * IPython/iplib.py (handle_shell_escape): fix bug where both
400 * IPython/iplib.py (handle_shell_escape): fix bug where both
394 aliases and system accesses where broken for indented code (such
401 aliases and system accesses where broken for indented code (such
395 as loops).
402 as loops).
396
403
397 * IPython/genutils.py (shell): fix small but critical bug for
404 * IPython/genutils.py (shell): fix small but critical bug for
398 win32 system access.
405 win32 system access.
399
406
400 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
407 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
401
408
402 * IPython/iplib.py (showtraceback): remove use of the
409 * IPython/iplib.py (showtraceback): remove use of the
403 sys.last_{type/value/traceback} structures, which are non
410 sys.last_{type/value/traceback} structures, which are non
404 thread-safe.
411 thread-safe.
405 (_prefilter): change control flow to ensure that we NEVER
412 (_prefilter): change control flow to ensure that we NEVER
406 introspect objects when autocall is off. This will guarantee that
413 introspect objects when autocall is off. This will guarantee that
407 having an input line of the form 'x.y', where access to attribute
414 having an input line of the form 'x.y', where access to attribute
408 'y' has side effects, doesn't trigger the side effect TWICE. It
415 'y' has side effects, doesn't trigger the side effect TWICE. It
409 is important to note that, with autocall on, these side effects
416 is important to note that, with autocall on, these side effects
410 can still happen.
417 can still happen.
411 (ipsystem): new builtin, to complete the ip{magic/alias/system}
418 (ipsystem): new builtin, to complete the ip{magic/alias/system}
412 trio. IPython offers these three kinds of special calls which are
419 trio. IPython offers these three kinds of special calls which are
413 not python code, and it's a good thing to have their call method
420 not python code, and it's a good thing to have their call method
414 be accessible as pure python functions (not just special syntax at
421 be accessible as pure python functions (not just special syntax at
415 the command line). It gives us a better internal implementation
422 the command line). It gives us a better internal implementation
416 structure, as well as exposing these for user scripting more
423 structure, as well as exposing these for user scripting more
417 cleanly.
424 cleanly.
418
425
419 * IPython/macro.py (Macro.__init__): moved macros to a standalone
426 * IPython/macro.py (Macro.__init__): moved macros to a standalone
420 file. Now that they'll be more likely to be used with the
427 file. Now that they'll be more likely to be used with the
421 persistance system (%store), I want to make sure their module path
428 persistance system (%store), I want to make sure their module path
422 doesn't change in the future, so that we don't break things for
429 doesn't change in the future, so that we don't break things for
423 users' persisted data.
430 users' persisted data.
424
431
425 * IPython/iplib.py (autoindent_update): move indentation
432 * IPython/iplib.py (autoindent_update): move indentation
426 management into the _text_ processing loop, not the keyboard
433 management into the _text_ processing loop, not the keyboard
427 interactive one. This is necessary to correctly process non-typed
434 interactive one. This is necessary to correctly process non-typed
428 multiline input (such as macros).
435 multiline input (such as macros).
429
436
430 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
437 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
431 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
438 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
432 which was producing problems in the resulting manual.
439 which was producing problems in the resulting manual.
433 (magic_whos): improve reporting of instances (show their class,
440 (magic_whos): improve reporting of instances (show their class,
434 instead of simply printing 'instance' which isn't terribly
441 instead of simply printing 'instance' which isn't terribly
435 informative).
442 informative).
436
443
437 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
444 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
438 (minor mods) to support network shares under win32.
445 (minor mods) to support network shares under win32.
439
446
440 * IPython/winconsole.py (get_console_size): add new winconsole
447 * IPython/winconsole.py (get_console_size): add new winconsole
441 module and fixes to page_dumb() to improve its behavior under
448 module and fixes to page_dumb() to improve its behavior under
442 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
449 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
443
450
444 * IPython/Magic.py (Macro): simplified Macro class to just
451 * IPython/Magic.py (Macro): simplified Macro class to just
445 subclass list. We've had only 2.2 compatibility for a very long
452 subclass list. We've had only 2.2 compatibility for a very long
446 time, yet I was still avoiding subclassing the builtin types. No
453 time, yet I was still avoiding subclassing the builtin types. No
447 more (I'm also starting to use properties, though I won't shift to
454 more (I'm also starting to use properties, though I won't shift to
448 2.3-specific features quite yet).
455 2.3-specific features quite yet).
449 (magic_store): added Ville's patch for lightweight variable
456 (magic_store): added Ville's patch for lightweight variable
450 persistence, after a request on the user list by Matt Wilkie
457 persistence, after a request on the user list by Matt Wilkie
451 <maphew-AT-gmail.com>. The new %store magic's docstring has full
458 <maphew-AT-gmail.com>. The new %store magic's docstring has full
452 details.
459 details.
453
460
454 * IPython/iplib.py (InteractiveShell.post_config_initialization):
461 * IPython/iplib.py (InteractiveShell.post_config_initialization):
455 changed the default logfile name from 'ipython.log' to
462 changed the default logfile name from 'ipython.log' to
456 'ipython_log.py'. These logs are real python files, and now that
463 'ipython_log.py'. These logs are real python files, and now that
457 we have much better multiline support, people are more likely to
464 we have much better multiline support, people are more likely to
458 want to use them as such. Might as well name them correctly.
465 want to use them as such. Might as well name them correctly.
459
466
460 * IPython/Magic.py: substantial cleanup. While we can't stop
467 * IPython/Magic.py: substantial cleanup. While we can't stop
461 using magics as mixins, due to the existing customizations 'out
468 using magics as mixins, due to the existing customizations 'out
462 there' which rely on the mixin naming conventions, at least I
469 there' which rely on the mixin naming conventions, at least I
463 cleaned out all cross-class name usage. So once we are OK with
470 cleaned out all cross-class name usage. So once we are OK with
464 breaking compatibility, the two systems can be separated.
471 breaking compatibility, the two systems can be separated.
465
472
466 * IPython/Logger.py: major cleanup. This one is NOT a mixin
473 * IPython/Logger.py: major cleanup. This one is NOT a mixin
467 anymore, and the class is a fair bit less hideous as well. New
474 anymore, and the class is a fair bit less hideous as well. New
468 features were also introduced: timestamping of input, and logging
475 features were also introduced: timestamping of input, and logging
469 of output results. These are user-visible with the -t and -o
476 of output results. These are user-visible with the -t and -o
470 options to %logstart. Closes
477 options to %logstart. Closes
471 http://www.scipy.net/roundup/ipython/issue11 and a request by
478 http://www.scipy.net/roundup/ipython/issue11 and a request by
472 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
479 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
473
480
474 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
481 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
475
482
476 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
483 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
477 better hadnle backslashes in paths. See the thread 'More Windows
484 better hadnle backslashes in paths. See the thread 'More Windows
478 questions part 2 - \/ characters revisited' on the iypthon user
485 questions part 2 - \/ characters revisited' on the iypthon user
479 list:
486 list:
480 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
487 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
481
488
482 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
489 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
483
490
484 (InteractiveShell.__init__): change threaded shells to not use the
491 (InteractiveShell.__init__): change threaded shells to not use the
485 ipython crash handler. This was causing more problems than not,
492 ipython crash handler. This was causing more problems than not,
486 as exceptions in the main thread (GUI code, typically) would
493 as exceptions in the main thread (GUI code, typically) would
487 always show up as a 'crash', when they really weren't.
494 always show up as a 'crash', when they really weren't.
488
495
489 The colors and exception mode commands (%colors/%xmode) have been
496 The colors and exception mode commands (%colors/%xmode) have been
490 synchronized to also take this into account, so users can get
497 synchronized to also take this into account, so users can get
491 verbose exceptions for their threaded code as well. I also added
498 verbose exceptions for their threaded code as well. I also added
492 support for activating pdb inside this exception handler as well,
499 support for activating pdb inside this exception handler as well,
493 so now GUI authors can use IPython's enhanced pdb at runtime.
500 so now GUI authors can use IPython's enhanced pdb at runtime.
494
501
495 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
502 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
496 true by default, and add it to the shipped ipythonrc file. Since
503 true by default, and add it to the shipped ipythonrc file. Since
497 this asks the user before proceeding, I think it's OK to make it
504 this asks the user before proceeding, I think it's OK to make it
498 true by default.
505 true by default.
499
506
500 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
507 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
501 of the previous special-casing of input in the eval loop. I think
508 of the previous special-casing of input in the eval loop. I think
502 this is cleaner, as they really are commands and shouldn't have
509 this is cleaner, as they really are commands and shouldn't have
503 a special role in the middle of the core code.
510 a special role in the middle of the core code.
504
511
505 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
512 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
506
513
507 * IPython/iplib.py (edit_syntax_error): added support for
514 * IPython/iplib.py (edit_syntax_error): added support for
508 automatically reopening the editor if the file had a syntax error
515 automatically reopening the editor if the file had a syntax error
509 in it. Thanks to scottt who provided the patch at:
516 in it. Thanks to scottt who provided the patch at:
510 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
517 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
511 version committed).
518 version committed).
512
519
513 * IPython/iplib.py (handle_normal): add suport for multi-line
520 * IPython/iplib.py (handle_normal): add suport for multi-line
514 input with emtpy lines. This fixes
521 input with emtpy lines. This fixes
515 http://www.scipy.net/roundup/ipython/issue43 and a similar
522 http://www.scipy.net/roundup/ipython/issue43 and a similar
516 discussion on the user list.
523 discussion on the user list.
517
524
518 WARNING: a behavior change is necessarily introduced to support
525 WARNING: a behavior change is necessarily introduced to support
519 blank lines: now a single blank line with whitespace does NOT
526 blank lines: now a single blank line with whitespace does NOT
520 break the input loop, which means that when autoindent is on, by
527 break the input loop, which means that when autoindent is on, by
521 default hitting return on the next (indented) line does NOT exit.
528 default hitting return on the next (indented) line does NOT exit.
522
529
523 Instead, to exit a multiline input you can either have:
530 Instead, to exit a multiline input you can either have:
524
531
525 - TWO whitespace lines (just hit return again), or
532 - TWO whitespace lines (just hit return again), or
526 - a single whitespace line of a different length than provided
533 - a single whitespace line of a different length than provided
527 by the autoindent (add or remove a space).
534 by the autoindent (add or remove a space).
528
535
529 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
536 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
530 module to better organize all readline-related functionality.
537 module to better organize all readline-related functionality.
531 I've deleted FlexCompleter and put all completion clases here.
538 I've deleted FlexCompleter and put all completion clases here.
532
539
533 * IPython/iplib.py (raw_input): improve indentation management.
540 * IPython/iplib.py (raw_input): improve indentation management.
534 It is now possible to paste indented code with autoindent on, and
541 It is now possible to paste indented code with autoindent on, and
535 the code is interpreted correctly (though it still looks bad on
542 the code is interpreted correctly (though it still looks bad on
536 screen, due to the line-oriented nature of ipython).
543 screen, due to the line-oriented nature of ipython).
537 (MagicCompleter.complete): change behavior so that a TAB key on an
544 (MagicCompleter.complete): change behavior so that a TAB key on an
538 otherwise empty line actually inserts a tab, instead of completing
545 otherwise empty line actually inserts a tab, instead of completing
539 on the entire global namespace. This makes it easier to use the
546 on the entire global namespace. This makes it easier to use the
540 TAB key for indentation. After a request by Hans Meine
547 TAB key for indentation. After a request by Hans Meine
541 <hans_meine-AT-gmx.net>
548 <hans_meine-AT-gmx.net>
542 (_prefilter): add support so that typing plain 'exit' or 'quit'
549 (_prefilter): add support so that typing plain 'exit' or 'quit'
543 does a sensible thing. Originally I tried to deviate as little as
550 does a sensible thing. Originally I tried to deviate as little as
544 possible from the default python behavior, but even that one may
551 possible from the default python behavior, but even that one may
545 change in this direction (thread on python-dev to that effect).
552 change in this direction (thread on python-dev to that effect).
546 Regardless, ipython should do the right thing even if CPython's
553 Regardless, ipython should do the right thing even if CPython's
547 '>>>' prompt doesn't.
554 '>>>' prompt doesn't.
548 (InteractiveShell): removed subclassing code.InteractiveConsole
555 (InteractiveShell): removed subclassing code.InteractiveConsole
549 class. By now we'd overridden just about all of its methods: I've
556 class. By now we'd overridden just about all of its methods: I've
550 copied the remaining two over, and now ipython is a standalone
557 copied the remaining two over, and now ipython is a standalone
551 class. This will provide a clearer picture for the chainsaw
558 class. This will provide a clearer picture for the chainsaw
552 branch refactoring.
559 branch refactoring.
553
560
554 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
561 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
555
562
556 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
563 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
557 failures for objects which break when dir() is called on them.
564 failures for objects which break when dir() is called on them.
558
565
559 * IPython/FlexCompleter.py (Completer.__init__): Added support for
566 * IPython/FlexCompleter.py (Completer.__init__): Added support for
560 distinct local and global namespaces in the completer API. This
567 distinct local and global namespaces in the completer API. This
561 change allows us top properly handle completion with distinct
568 change allows us top properly handle completion with distinct
562 scopes, including in embedded instances (this had never really
569 scopes, including in embedded instances (this had never really
563 worked correctly).
570 worked correctly).
564
571
565 Note: this introduces a change in the constructor for
572 Note: this introduces a change in the constructor for
566 MagicCompleter, as a new global_namespace parameter is now the
573 MagicCompleter, as a new global_namespace parameter is now the
567 second argument (the others were bumped one position).
574 second argument (the others were bumped one position).
568
575
569 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
576 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
570
577
571 * IPython/iplib.py (embed_mainloop): fix tab-completion in
578 * IPython/iplib.py (embed_mainloop): fix tab-completion in
572 embedded instances (which can be done now thanks to Vivian's
579 embedded instances (which can be done now thanks to Vivian's
573 frame-handling fixes for pdb).
580 frame-handling fixes for pdb).
574 (InteractiveShell.__init__): Fix namespace handling problem in
581 (InteractiveShell.__init__): Fix namespace handling problem in
575 embedded instances. We were overwriting __main__ unconditionally,
582 embedded instances. We were overwriting __main__ unconditionally,
576 and this should only be done for 'full' (non-embedded) IPython;
583 and this should only be done for 'full' (non-embedded) IPython;
577 embedded instances must respect the caller's __main__. Thanks to
584 embedded instances must respect the caller's __main__. Thanks to
578 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
585 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
579
586
580 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
587 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
581
588
582 * setup.py: added download_url to setup(). This registers the
589 * setup.py: added download_url to setup(). This registers the
583 download address at PyPI, which is not only useful to humans
590 download address at PyPI, which is not only useful to humans
584 browsing the site, but is also picked up by setuptools (the Eggs
591 browsing the site, but is also picked up by setuptools (the Eggs
585 machinery). Thanks to Ville and R. Kern for the info/discussion
592 machinery). Thanks to Ville and R. Kern for the info/discussion
586 on this.
593 on this.
587
594
588 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
595 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
589
596
590 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
597 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
591 This brings a lot of nice functionality to the pdb mode, which now
598 This brings a lot of nice functionality to the pdb mode, which now
592 has tab-completion, syntax highlighting, and better stack handling
599 has tab-completion, syntax highlighting, and better stack handling
593 than before. Many thanks to Vivian De Smedt
600 than before. Many thanks to Vivian De Smedt
594 <vivian-AT-vdesmedt.com> for the original patches.
601 <vivian-AT-vdesmedt.com> for the original patches.
595
602
596 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
603 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
597
604
598 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
605 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
599 sequence to consistently accept the banner argument. The
606 sequence to consistently accept the banner argument. The
600 inconsistency was tripping SAGE, thanks to Gary Zablackis
607 inconsistency was tripping SAGE, thanks to Gary Zablackis
601 <gzabl-AT-yahoo.com> for the report.
608 <gzabl-AT-yahoo.com> for the report.
602
609
603 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
610 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
604
611
605 * IPython/iplib.py (InteractiveShell.post_config_initialization):
612 * IPython/iplib.py (InteractiveShell.post_config_initialization):
606 Fix bug where a naked 'alias' call in the ipythonrc file would
613 Fix bug where a naked 'alias' call in the ipythonrc file would
607 cause a crash. Bug reported by Jorgen Stenarson.
614 cause a crash. Bug reported by Jorgen Stenarson.
608
615
609 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
616 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
610
617
611 * IPython/ipmaker.py (make_IPython): cleanups which should improve
618 * IPython/ipmaker.py (make_IPython): cleanups which should improve
612 startup time.
619 startup time.
613
620
614 * IPython/iplib.py (runcode): my globals 'fix' for embedded
621 * IPython/iplib.py (runcode): my globals 'fix' for embedded
615 instances had introduced a bug with globals in normal code. Now
622 instances had introduced a bug with globals in normal code. Now
616 it's working in all cases.
623 it's working in all cases.
617
624
618 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
625 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
619 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
626 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
620 has been introduced to set the default case sensitivity of the
627 has been introduced to set the default case sensitivity of the
621 searches. Users can still select either mode at runtime on a
628 searches. Users can still select either mode at runtime on a
622 per-search basis.
629 per-search basis.
623
630
624 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
631 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
625
632
626 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
633 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
627 attributes in wildcard searches for subclasses. Modified version
634 attributes in wildcard searches for subclasses. Modified version
628 of a patch by Jorgen.
635 of a patch by Jorgen.
629
636
630 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
637 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
631
638
632 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
639 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
633 embedded instances. I added a user_global_ns attribute to the
640 embedded instances. I added a user_global_ns attribute to the
634 InteractiveShell class to handle this.
641 InteractiveShell class to handle this.
635
642
636 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
643 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
637
644
638 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
645 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
639 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
646 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
640 (reported under win32, but may happen also in other platforms).
647 (reported under win32, but may happen also in other platforms).
641 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
648 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
642
649
643 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
650 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
644
651
645 * IPython/Magic.py (magic_psearch): new support for wildcard
652 * IPython/Magic.py (magic_psearch): new support for wildcard
646 patterns. Now, typing ?a*b will list all names which begin with a
653 patterns. Now, typing ?a*b will list all names which begin with a
647 and end in b, for example. The %psearch magic has full
654 and end in b, for example. The %psearch magic has full
648 docstrings. Many thanks to JΓΆrgen Stenarson
655 docstrings. Many thanks to JΓΆrgen Stenarson
649 <jorgen.stenarson-AT-bostream.nu>, author of the patches
656 <jorgen.stenarson-AT-bostream.nu>, author of the patches
650 implementing this functionality.
657 implementing this functionality.
651
658
652 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
659 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
653
660
654 * Manual: fixed long-standing annoyance of double-dashes (as in
661 * Manual: fixed long-standing annoyance of double-dashes (as in
655 --prefix=~, for example) being stripped in the HTML version. This
662 --prefix=~, for example) being stripped in the HTML version. This
656 is a latex2html bug, but a workaround was provided. Many thanks
663 is a latex2html bug, but a workaround was provided. Many thanks
657 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
664 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
658 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
665 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
659 rolling. This seemingly small issue had tripped a number of users
666 rolling. This seemingly small issue had tripped a number of users
660 when first installing, so I'm glad to see it gone.
667 when first installing, so I'm glad to see it gone.
661
668
662 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
669 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
663
670
664 * IPython/Extensions/numeric_formats.py: fix missing import,
671 * IPython/Extensions/numeric_formats.py: fix missing import,
665 reported by Stephen Walton.
672 reported by Stephen Walton.
666
673
667 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
674 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
668
675
669 * IPython/demo.py: finish demo module, fully documented now.
676 * IPython/demo.py: finish demo module, fully documented now.
670
677
671 * IPython/genutils.py (file_read): simple little utility to read a
678 * IPython/genutils.py (file_read): simple little utility to read a
672 file and ensure it's closed afterwards.
679 file and ensure it's closed afterwards.
673
680
674 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
681 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
675
682
676 * IPython/demo.py (Demo.__init__): added support for individually
683 * IPython/demo.py (Demo.__init__): added support for individually
677 tagging blocks for automatic execution.
684 tagging blocks for automatic execution.
678
685
679 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
686 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
680 syntax-highlighted python sources, requested by John.
687 syntax-highlighted python sources, requested by John.
681
688
682 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
689 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
683
690
684 * IPython/demo.py (Demo.again): fix bug where again() blocks after
691 * IPython/demo.py (Demo.again): fix bug where again() blocks after
685 finishing.
692 finishing.
686
693
687 * IPython/genutils.py (shlex_split): moved from Magic to here,
694 * IPython/genutils.py (shlex_split): moved from Magic to here,
688 where all 2.2 compatibility stuff lives. I needed it for demo.py.
695 where all 2.2 compatibility stuff lives. I needed it for demo.py.
689
696
690 * IPython/demo.py (Demo.__init__): added support for silent
697 * IPython/demo.py (Demo.__init__): added support for silent
691 blocks, improved marks as regexps, docstrings written.
698 blocks, improved marks as regexps, docstrings written.
692 (Demo.__init__): better docstring, added support for sys.argv.
699 (Demo.__init__): better docstring, added support for sys.argv.
693
700
694 * IPython/genutils.py (marquee): little utility used by the demo
701 * IPython/genutils.py (marquee): little utility used by the demo
695 code, handy in general.
702 code, handy in general.
696
703
697 * IPython/demo.py (Demo.__init__): new class for interactive
704 * IPython/demo.py (Demo.__init__): new class for interactive
698 demos. Not documented yet, I just wrote it in a hurry for
705 demos. Not documented yet, I just wrote it in a hurry for
699 scipy'05. Will docstring later.
706 scipy'05. Will docstring later.
700
707
701 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
708 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
702
709
703 * IPython/Shell.py (sigint_handler): Drastic simplification which
710 * IPython/Shell.py (sigint_handler): Drastic simplification which
704 also seems to make Ctrl-C work correctly across threads! This is
711 also seems to make Ctrl-C work correctly across threads! This is
705 so simple, that I can't beleive I'd missed it before. Needs more
712 so simple, that I can't beleive I'd missed it before. Needs more
706 testing, though.
713 testing, though.
707 (KBINT): Never mind, revert changes. I'm sure I'd tried something
714 (KBINT): Never mind, revert changes. I'm sure I'd tried something
708 like this before...
715 like this before...
709
716
710 * IPython/genutils.py (get_home_dir): add protection against
717 * IPython/genutils.py (get_home_dir): add protection against
711 non-dirs in win32 registry.
718 non-dirs in win32 registry.
712
719
713 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
720 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
714 bug where dict was mutated while iterating (pysh crash).
721 bug where dict was mutated while iterating (pysh crash).
715
722
716 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
723 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
717
724
718 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
725 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
719 spurious newlines added by this routine. After a report by
726 spurious newlines added by this routine. After a report by
720 F. Mantegazza.
727 F. Mantegazza.
721
728
722 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
729 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
723
730
724 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
731 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
725 calls. These were a leftover from the GTK 1.x days, and can cause
732 calls. These were a leftover from the GTK 1.x days, and can cause
726 problems in certain cases (after a report by John Hunter).
733 problems in certain cases (after a report by John Hunter).
727
734
728 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
735 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
729 os.getcwd() fails at init time. Thanks to patch from David Remahl
736 os.getcwd() fails at init time. Thanks to patch from David Remahl
730 <chmod007-AT-mac.com>.
737 <chmod007-AT-mac.com>.
731 (InteractiveShell.__init__): prevent certain special magics from
738 (InteractiveShell.__init__): prevent certain special magics from
732 being shadowed by aliases. Closes
739 being shadowed by aliases. Closes
733 http://www.scipy.net/roundup/ipython/issue41.
740 http://www.scipy.net/roundup/ipython/issue41.
734
741
735 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
742 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
736
743
737 * IPython/iplib.py (InteractiveShell.complete): Added new
744 * IPython/iplib.py (InteractiveShell.complete): Added new
738 top-level completion method to expose the completion mechanism
745 top-level completion method to expose the completion mechanism
739 beyond readline-based environments.
746 beyond readline-based environments.
740
747
741 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
748 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
742
749
743 * tools/ipsvnc (svnversion): fix svnversion capture.
750 * tools/ipsvnc (svnversion): fix svnversion capture.
744
751
745 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
752 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
746 attribute to self, which was missing. Before, it was set by a
753 attribute to self, which was missing. Before, it was set by a
747 routine which in certain cases wasn't being called, so the
754 routine which in certain cases wasn't being called, so the
748 instance could end up missing the attribute. This caused a crash.
755 instance could end up missing the attribute. This caused a crash.
749 Closes http://www.scipy.net/roundup/ipython/issue40.
756 Closes http://www.scipy.net/roundup/ipython/issue40.
750
757
751 2005-08-16 Fernando Perez <fperez@colorado.edu>
758 2005-08-16 Fernando Perez <fperez@colorado.edu>
752
759
753 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
760 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
754 contains non-string attribute. Closes
761 contains non-string attribute. Closes
755 http://www.scipy.net/roundup/ipython/issue38.
762 http://www.scipy.net/roundup/ipython/issue38.
756
763
757 2005-08-14 Fernando Perez <fperez@colorado.edu>
764 2005-08-14 Fernando Perez <fperez@colorado.edu>
758
765
759 * tools/ipsvnc: Minor improvements, to add changeset info.
766 * tools/ipsvnc: Minor improvements, to add changeset info.
760
767
761 2005-08-12 Fernando Perez <fperez@colorado.edu>
768 2005-08-12 Fernando Perez <fperez@colorado.edu>
762
769
763 * IPython/iplib.py (runsource): remove self.code_to_run_src
770 * IPython/iplib.py (runsource): remove self.code_to_run_src
764 attribute. I realized this is nothing more than
771 attribute. I realized this is nothing more than
765 '\n'.join(self.buffer), and having the same data in two different
772 '\n'.join(self.buffer), and having the same data in two different
766 places is just asking for synchronization bugs. This may impact
773 places is just asking for synchronization bugs. This may impact
767 people who have custom exception handlers, so I need to warn
774 people who have custom exception handlers, so I need to warn
768 ipython-dev about it (F. Mantegazza may use them).
775 ipython-dev about it (F. Mantegazza may use them).
769
776
770 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
777 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
771
778
772 * IPython/genutils.py: fix 2.2 compatibility (generators)
779 * IPython/genutils.py: fix 2.2 compatibility (generators)
773
780
774 2005-07-18 Fernando Perez <fperez@colorado.edu>
781 2005-07-18 Fernando Perez <fperez@colorado.edu>
775
782
776 * IPython/genutils.py (get_home_dir): fix to help users with
783 * IPython/genutils.py (get_home_dir): fix to help users with
777 invalid $HOME under win32.
784 invalid $HOME under win32.
778
785
779 2005-07-17 Fernando Perez <fperez@colorado.edu>
786 2005-07-17 Fernando Perez <fperez@colorado.edu>
780
787
781 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
788 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
782 some old hacks and clean up a bit other routines; code should be
789 some old hacks and clean up a bit other routines; code should be
783 simpler and a bit faster.
790 simpler and a bit faster.
784
791
785 * IPython/iplib.py (interact): removed some last-resort attempts
792 * IPython/iplib.py (interact): removed some last-resort attempts
786 to survive broken stdout/stderr. That code was only making it
793 to survive broken stdout/stderr. That code was only making it
787 harder to abstract out the i/o (necessary for gui integration),
794 harder to abstract out the i/o (necessary for gui integration),
788 and the crashes it could prevent were extremely rare in practice
795 and the crashes it could prevent were extremely rare in practice
789 (besides being fully user-induced in a pretty violent manner).
796 (besides being fully user-induced in a pretty violent manner).
790
797
791 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
798 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
792 Nothing major yet, but the code is simpler to read; this should
799 Nothing major yet, but the code is simpler to read; this should
793 make it easier to do more serious modifications in the future.
800 make it easier to do more serious modifications in the future.
794
801
795 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
802 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
796 which broke in .15 (thanks to a report by Ville).
803 which broke in .15 (thanks to a report by Ville).
797
804
798 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
805 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
799 be quite correct, I know next to nothing about unicode). This
806 be quite correct, I know next to nothing about unicode). This
800 will allow unicode strings to be used in prompts, amongst other
807 will allow unicode strings to be used in prompts, amongst other
801 cases. It also will prevent ipython from crashing when unicode
808 cases. It also will prevent ipython from crashing when unicode
802 shows up unexpectedly in many places. If ascii encoding fails, we
809 shows up unexpectedly in many places. If ascii encoding fails, we
803 assume utf_8. Currently the encoding is not a user-visible
810 assume utf_8. Currently the encoding is not a user-visible
804 setting, though it could be made so if there is demand for it.
811 setting, though it could be made so if there is demand for it.
805
812
806 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
813 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
807
814
808 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
815 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
809
816
810 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
817 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
811
818
812 * IPython/genutils.py: Add 2.2 compatibility here, so all other
819 * IPython/genutils.py: Add 2.2 compatibility here, so all other
813 code can work transparently for 2.2/2.3.
820 code can work transparently for 2.2/2.3.
814
821
815 2005-07-16 Fernando Perez <fperez@colorado.edu>
822 2005-07-16 Fernando Perez <fperez@colorado.edu>
816
823
817 * IPython/ultraTB.py (ExceptionColors): Make a global variable
824 * IPython/ultraTB.py (ExceptionColors): Make a global variable
818 out of the color scheme table used for coloring exception
825 out of the color scheme table used for coloring exception
819 tracebacks. This allows user code to add new schemes at runtime.
826 tracebacks. This allows user code to add new schemes at runtime.
820 This is a minimally modified version of the patch at
827 This is a minimally modified version of the patch at
821 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
828 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
822 for the contribution.
829 for the contribution.
823
830
824 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
831 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
825 slightly modified version of the patch in
832 slightly modified version of the patch in
826 http://www.scipy.net/roundup/ipython/issue34, which also allows me
833 http://www.scipy.net/roundup/ipython/issue34, which also allows me
827 to remove the previous try/except solution (which was costlier).
834 to remove the previous try/except solution (which was costlier).
828 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
835 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
829
836
830 2005-06-08 Fernando Perez <fperez@colorado.edu>
837 2005-06-08 Fernando Perez <fperez@colorado.edu>
831
838
832 * IPython/iplib.py (write/write_err): Add methods to abstract all
839 * IPython/iplib.py (write/write_err): Add methods to abstract all
833 I/O a bit more.
840 I/O a bit more.
834
841
835 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
842 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
836 warning, reported by Aric Hagberg, fix by JD Hunter.
843 warning, reported by Aric Hagberg, fix by JD Hunter.
837
844
838 2005-06-02 *** Released version 0.6.15
845 2005-06-02 *** Released version 0.6.15
839
846
840 2005-06-01 Fernando Perez <fperez@colorado.edu>
847 2005-06-01 Fernando Perez <fperez@colorado.edu>
841
848
842 * IPython/iplib.py (MagicCompleter.file_matches): Fix
849 * IPython/iplib.py (MagicCompleter.file_matches): Fix
843 tab-completion of filenames within open-quoted strings. Note that
850 tab-completion of filenames within open-quoted strings. Note that
844 this requires that in ~/.ipython/ipythonrc, users change the
851 this requires that in ~/.ipython/ipythonrc, users change the
845 readline delimiters configuration to read:
852 readline delimiters configuration to read:
846
853
847 readline_remove_delims -/~
854 readline_remove_delims -/~
848
855
849
856
850 2005-05-31 *** Released version 0.6.14
857 2005-05-31 *** Released version 0.6.14
851
858
852 2005-05-29 Fernando Perez <fperez@colorado.edu>
859 2005-05-29 Fernando Perez <fperez@colorado.edu>
853
860
854 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
861 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
855 with files not on the filesystem. Reported by Eliyahu Sandler
862 with files not on the filesystem. Reported by Eliyahu Sandler
856 <eli@gondolin.net>
863 <eli@gondolin.net>
857
864
858 2005-05-22 Fernando Perez <fperez@colorado.edu>
865 2005-05-22 Fernando Perez <fperez@colorado.edu>
859
866
860 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
867 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
861 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
868 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
862
869
863 2005-05-19 Fernando Perez <fperez@colorado.edu>
870 2005-05-19 Fernando Perez <fperez@colorado.edu>
864
871
865 * IPython/iplib.py (safe_execfile): close a file which could be
872 * IPython/iplib.py (safe_execfile): close a file which could be
866 left open (causing problems in win32, which locks open files).
873 left open (causing problems in win32, which locks open files).
867 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
874 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
868
875
869 2005-05-18 Fernando Perez <fperez@colorado.edu>
876 2005-05-18 Fernando Perez <fperez@colorado.edu>
870
877
871 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
878 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
872 keyword arguments correctly to safe_execfile().
879 keyword arguments correctly to safe_execfile().
873
880
874 2005-05-13 Fernando Perez <fperez@colorado.edu>
881 2005-05-13 Fernando Perez <fperez@colorado.edu>
875
882
876 * ipython.1: Added info about Qt to manpage, and threads warning
883 * ipython.1: Added info about Qt to manpage, and threads warning
877 to usage page (invoked with --help).
884 to usage page (invoked with --help).
878
885
879 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
886 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
880 new matcher (it goes at the end of the priority list) to do
887 new matcher (it goes at the end of the priority list) to do
881 tab-completion on named function arguments. Submitted by George
888 tab-completion on named function arguments. Submitted by George
882 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
889 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
883 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
890 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
884 for more details.
891 for more details.
885
892
886 * IPython/Magic.py (magic_run): Added new -e flag to ignore
893 * IPython/Magic.py (magic_run): Added new -e flag to ignore
887 SystemExit exceptions in the script being run. Thanks to a report
894 SystemExit exceptions in the script being run. Thanks to a report
888 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
895 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
889 producing very annoying behavior when running unit tests.
896 producing very annoying behavior when running unit tests.
890
897
891 2005-05-12 Fernando Perez <fperez@colorado.edu>
898 2005-05-12 Fernando Perez <fperez@colorado.edu>
892
899
893 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
900 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
894 which I'd broken (again) due to a changed regexp. In the process,
901 which I'd broken (again) due to a changed regexp. In the process,
895 added ';' as an escape to auto-quote the whole line without
902 added ';' as an escape to auto-quote the whole line without
896 splitting its arguments. Thanks to a report by Jerry McRae
903 splitting its arguments. Thanks to a report by Jerry McRae
897 <qrs0xyc02-AT-sneakemail.com>.
904 <qrs0xyc02-AT-sneakemail.com>.
898
905
899 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
906 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
900 possible crashes caused by a TokenError. Reported by Ed Schofield
907 possible crashes caused by a TokenError. Reported by Ed Schofield
901 <schofield-AT-ftw.at>.
908 <schofield-AT-ftw.at>.
902
909
903 2005-05-06 Fernando Perez <fperez@colorado.edu>
910 2005-05-06 Fernando Perez <fperez@colorado.edu>
904
911
905 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
912 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
906
913
907 2005-04-29 Fernando Perez <fperez@colorado.edu>
914 2005-04-29 Fernando Perez <fperez@colorado.edu>
908
915
909 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
916 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
910 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
917 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
911 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
918 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
912 which provides support for Qt interactive usage (similar to the
919 which provides support for Qt interactive usage (similar to the
913 existing one for WX and GTK). This had been often requested.
920 existing one for WX and GTK). This had been often requested.
914
921
915 2005-04-14 *** Released version 0.6.13
922 2005-04-14 *** Released version 0.6.13
916
923
917 2005-04-08 Fernando Perez <fperez@colorado.edu>
924 2005-04-08 Fernando Perez <fperez@colorado.edu>
918
925
919 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
926 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
920 from _ofind, which gets called on almost every input line. Now,
927 from _ofind, which gets called on almost every input line. Now,
921 we only try to get docstrings if they are actually going to be
928 we only try to get docstrings if they are actually going to be
922 used (the overhead of fetching unnecessary docstrings can be
929 used (the overhead of fetching unnecessary docstrings can be
923 noticeable for certain objects, such as Pyro proxies).
930 noticeable for certain objects, such as Pyro proxies).
924
931
925 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
932 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
926 for completers. For some reason I had been passing them the state
933 for completers. For some reason I had been passing them the state
927 variable, which completers never actually need, and was in
934 variable, which completers never actually need, and was in
928 conflict with the rlcompleter API. Custom completers ONLY need to
935 conflict with the rlcompleter API. Custom completers ONLY need to
929 take the text parameter.
936 take the text parameter.
930
937
931 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
938 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
932 work correctly in pysh. I've also moved all the logic which used
939 work correctly in pysh. I've also moved all the logic which used
933 to be in pysh.py here, which will prevent problems with future
940 to be in pysh.py here, which will prevent problems with future
934 upgrades. However, this time I must warn users to update their
941 upgrades. However, this time I must warn users to update their
935 pysh profile to include the line
942 pysh profile to include the line
936
943
937 import_all IPython.Extensions.InterpreterExec
944 import_all IPython.Extensions.InterpreterExec
938
945
939 because otherwise things won't work for them. They MUST also
946 because otherwise things won't work for them. They MUST also
940 delete pysh.py and the line
947 delete pysh.py and the line
941
948
942 execfile pysh.py
949 execfile pysh.py
943
950
944 from their ipythonrc-pysh.
951 from their ipythonrc-pysh.
945
952
946 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
953 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
947 robust in the face of objects whose dir() returns non-strings
954 robust in the face of objects whose dir() returns non-strings
948 (which it shouldn't, but some broken libs like ITK do). Thanks to
955 (which it shouldn't, but some broken libs like ITK do). Thanks to
949 a patch by John Hunter (implemented differently, though). Also
956 a patch by John Hunter (implemented differently, though). Also
950 minor improvements by using .extend instead of + on lists.
957 minor improvements by using .extend instead of + on lists.
951
958
952 * pysh.py:
959 * pysh.py:
953
960
954 2005-04-06 Fernando Perez <fperez@colorado.edu>
961 2005-04-06 Fernando Perez <fperez@colorado.edu>
955
962
956 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
963 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
957 by default, so that all users benefit from it. Those who don't
964 by default, so that all users benefit from it. Those who don't
958 want it can still turn it off.
965 want it can still turn it off.
959
966
960 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
967 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
961 config file, I'd forgotten about this, so users were getting it
968 config file, I'd forgotten about this, so users were getting it
962 off by default.
969 off by default.
963
970
964 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
971 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
965 consistency. Now magics can be called in multiline statements,
972 consistency. Now magics can be called in multiline statements,
966 and python variables can be expanded in magic calls via $var.
973 and python variables can be expanded in magic calls via $var.
967 This makes the magic system behave just like aliases or !system
974 This makes the magic system behave just like aliases or !system
968 calls.
975 calls.
969
976
970 2005-03-28 Fernando Perez <fperez@colorado.edu>
977 2005-03-28 Fernando Perez <fperez@colorado.edu>
971
978
972 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
979 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
973 expensive string additions for building command. Add support for
980 expensive string additions for building command. Add support for
974 trailing ';' when autocall is used.
981 trailing ';' when autocall is used.
975
982
976 2005-03-26 Fernando Perez <fperez@colorado.edu>
983 2005-03-26 Fernando Perez <fperez@colorado.edu>
977
984
978 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
985 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
979 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
986 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
980 ipython.el robust against prompts with any number of spaces
987 ipython.el robust against prompts with any number of spaces
981 (including 0) after the ':' character.
988 (including 0) after the ':' character.
982
989
983 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
990 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
984 continuation prompt, which misled users to think the line was
991 continuation prompt, which misled users to think the line was
985 already indented. Closes debian Bug#300847, reported to me by
992 already indented. Closes debian Bug#300847, reported to me by
986 Norbert Tretkowski <tretkowski-AT-inittab.de>.
993 Norbert Tretkowski <tretkowski-AT-inittab.de>.
987
994
988 2005-03-23 Fernando Perez <fperez@colorado.edu>
995 2005-03-23 Fernando Perez <fperez@colorado.edu>
989
996
990 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
997 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
991 properly aligned if they have embedded newlines.
998 properly aligned if they have embedded newlines.
992
999
993 * IPython/iplib.py (runlines): Add a public method to expose
1000 * IPython/iplib.py (runlines): Add a public method to expose
994 IPython's code execution machinery, so that users can run strings
1001 IPython's code execution machinery, so that users can run strings
995 as if they had been typed at the prompt interactively.
1002 as if they had been typed at the prompt interactively.
996 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1003 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
997 methods which can call the system shell, but with python variable
1004 methods which can call the system shell, but with python variable
998 expansion. The three such methods are: __IPYTHON__.system,
1005 expansion. The three such methods are: __IPYTHON__.system,
999 .getoutput and .getoutputerror. These need to be documented in a
1006 .getoutput and .getoutputerror. These need to be documented in a
1000 'public API' section (to be written) of the manual.
1007 'public API' section (to be written) of the manual.
1001
1008
1002 2005-03-20 Fernando Perez <fperez@colorado.edu>
1009 2005-03-20 Fernando Perez <fperez@colorado.edu>
1003
1010
1004 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1011 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1005 for custom exception handling. This is quite powerful, and it
1012 for custom exception handling. This is quite powerful, and it
1006 allows for user-installable exception handlers which can trap
1013 allows for user-installable exception handlers which can trap
1007 custom exceptions at runtime and treat them separately from
1014 custom exceptions at runtime and treat them separately from
1008 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1015 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1009 Mantegazza <mantegazza-AT-ill.fr>.
1016 Mantegazza <mantegazza-AT-ill.fr>.
1010 (InteractiveShell.set_custom_completer): public API function to
1017 (InteractiveShell.set_custom_completer): public API function to
1011 add new completers at runtime.
1018 add new completers at runtime.
1012
1019
1013 2005-03-19 Fernando Perez <fperez@colorado.edu>
1020 2005-03-19 Fernando Perez <fperez@colorado.edu>
1014
1021
1015 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1022 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1016 allow objects which provide their docstrings via non-standard
1023 allow objects which provide their docstrings via non-standard
1017 mechanisms (like Pyro proxies) to still be inspected by ipython's
1024 mechanisms (like Pyro proxies) to still be inspected by ipython's
1018 ? system.
1025 ? system.
1019
1026
1020 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1027 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1021 automatic capture system. I tried quite hard to make it work
1028 automatic capture system. I tried quite hard to make it work
1022 reliably, and simply failed. I tried many combinations with the
1029 reliably, and simply failed. I tried many combinations with the
1023 subprocess module, but eventually nothing worked in all needed
1030 subprocess module, but eventually nothing worked in all needed
1024 cases (not blocking stdin for the child, duplicating stdout
1031 cases (not blocking stdin for the child, duplicating stdout
1025 without blocking, etc). The new %sc/%sx still do capture to these
1032 without blocking, etc). The new %sc/%sx still do capture to these
1026 magical list/string objects which make shell use much more
1033 magical list/string objects which make shell use much more
1027 conveninent, so not all is lost.
1034 conveninent, so not all is lost.
1028
1035
1029 XXX - FIX MANUAL for the change above!
1036 XXX - FIX MANUAL for the change above!
1030
1037
1031 (runsource): I copied code.py's runsource() into ipython to modify
1038 (runsource): I copied code.py's runsource() into ipython to modify
1032 it a bit. Now the code object and source to be executed are
1039 it a bit. Now the code object and source to be executed are
1033 stored in ipython. This makes this info accessible to third-party
1040 stored in ipython. This makes this info accessible to third-party
1034 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1041 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1035 Mantegazza <mantegazza-AT-ill.fr>.
1042 Mantegazza <mantegazza-AT-ill.fr>.
1036
1043
1037 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1044 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1038 history-search via readline (like C-p/C-n). I'd wanted this for a
1045 history-search via readline (like C-p/C-n). I'd wanted this for a
1039 long time, but only recently found out how to do it. For users
1046 long time, but only recently found out how to do it. For users
1040 who already have their ipythonrc files made and want this, just
1047 who already have their ipythonrc files made and want this, just
1041 add:
1048 add:
1042
1049
1043 readline_parse_and_bind "\e[A": history-search-backward
1050 readline_parse_and_bind "\e[A": history-search-backward
1044 readline_parse_and_bind "\e[B": history-search-forward
1051 readline_parse_and_bind "\e[B": history-search-forward
1045
1052
1046 2005-03-18 Fernando Perez <fperez@colorado.edu>
1053 2005-03-18 Fernando Perez <fperez@colorado.edu>
1047
1054
1048 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1055 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1049 LSString and SList classes which allow transparent conversions
1056 LSString and SList classes which allow transparent conversions
1050 between list mode and whitespace-separated string.
1057 between list mode and whitespace-separated string.
1051 (magic_r): Fix recursion problem in %r.
1058 (magic_r): Fix recursion problem in %r.
1052
1059
1053 * IPython/genutils.py (LSString): New class to be used for
1060 * IPython/genutils.py (LSString): New class to be used for
1054 automatic storage of the results of all alias/system calls in _o
1061 automatic storage of the results of all alias/system calls in _o
1055 and _e (stdout/err). These provide a .l/.list attribute which
1062 and _e (stdout/err). These provide a .l/.list attribute which
1056 does automatic splitting on newlines. This means that for most
1063 does automatic splitting on newlines. This means that for most
1057 uses, you'll never need to do capturing of output with %sc/%sx
1064 uses, you'll never need to do capturing of output with %sc/%sx
1058 anymore, since ipython keeps this always done for you. Note that
1065 anymore, since ipython keeps this always done for you. Note that
1059 only the LAST results are stored, the _o/e variables are
1066 only the LAST results are stored, the _o/e variables are
1060 overwritten on each call. If you need to save their contents
1067 overwritten on each call. If you need to save their contents
1061 further, simply bind them to any other name.
1068 further, simply bind them to any other name.
1062
1069
1063 2005-03-17 Fernando Perez <fperez@colorado.edu>
1070 2005-03-17 Fernando Perez <fperez@colorado.edu>
1064
1071
1065 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1072 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1066 prompt namespace handling.
1073 prompt namespace handling.
1067
1074
1068 2005-03-16 Fernando Perez <fperez@colorado.edu>
1075 2005-03-16 Fernando Perez <fperez@colorado.edu>
1069
1076
1070 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1077 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1071 classic prompts to be '>>> ' (final space was missing, and it
1078 classic prompts to be '>>> ' (final space was missing, and it
1072 trips the emacs python mode).
1079 trips the emacs python mode).
1073 (BasePrompt.__str__): Added safe support for dynamic prompt
1080 (BasePrompt.__str__): Added safe support for dynamic prompt
1074 strings. Now you can set your prompt string to be '$x', and the
1081 strings. Now you can set your prompt string to be '$x', and the
1075 value of x will be printed from your interactive namespace. The
1082 value of x will be printed from your interactive namespace. The
1076 interpolation syntax includes the full Itpl support, so
1083 interpolation syntax includes the full Itpl support, so
1077 ${foo()+x+bar()} is a valid prompt string now, and the function
1084 ${foo()+x+bar()} is a valid prompt string now, and the function
1078 calls will be made at runtime.
1085 calls will be made at runtime.
1079
1086
1080 2005-03-15 Fernando Perez <fperez@colorado.edu>
1087 2005-03-15 Fernando Perez <fperez@colorado.edu>
1081
1088
1082 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1089 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1083 avoid name clashes in pylab. %hist still works, it just forwards
1090 avoid name clashes in pylab. %hist still works, it just forwards
1084 the call to %history.
1091 the call to %history.
1085
1092
1086 2005-03-02 *** Released version 0.6.12
1093 2005-03-02 *** Released version 0.6.12
1087
1094
1088 2005-03-02 Fernando Perez <fperez@colorado.edu>
1095 2005-03-02 Fernando Perez <fperez@colorado.edu>
1089
1096
1090 * IPython/iplib.py (handle_magic): log magic calls properly as
1097 * IPython/iplib.py (handle_magic): log magic calls properly as
1091 ipmagic() function calls.
1098 ipmagic() function calls.
1092
1099
1093 * IPython/Magic.py (magic_time): Improved %time to support
1100 * IPython/Magic.py (magic_time): Improved %time to support
1094 statements and provide wall-clock as well as CPU time.
1101 statements and provide wall-clock as well as CPU time.
1095
1102
1096 2005-02-27 Fernando Perez <fperez@colorado.edu>
1103 2005-02-27 Fernando Perez <fperez@colorado.edu>
1097
1104
1098 * IPython/hooks.py: New hooks module, to expose user-modifiable
1105 * IPython/hooks.py: New hooks module, to expose user-modifiable
1099 IPython functionality in a clean manner. For now only the editor
1106 IPython functionality in a clean manner. For now only the editor
1100 hook is actually written, and other thigns which I intend to turn
1107 hook is actually written, and other thigns which I intend to turn
1101 into proper hooks aren't yet there. The display and prefilter
1108 into proper hooks aren't yet there. The display and prefilter
1102 stuff, for example, should be hooks. But at least now the
1109 stuff, for example, should be hooks. But at least now the
1103 framework is in place, and the rest can be moved here with more
1110 framework is in place, and the rest can be moved here with more
1104 time later. IPython had had a .hooks variable for a long time for
1111 time later. IPython had had a .hooks variable for a long time for
1105 this purpose, but I'd never actually used it for anything.
1112 this purpose, but I'd never actually used it for anything.
1106
1113
1107 2005-02-26 Fernando Perez <fperez@colorado.edu>
1114 2005-02-26 Fernando Perez <fperez@colorado.edu>
1108
1115
1109 * IPython/ipmaker.py (make_IPython): make the default ipython
1116 * IPython/ipmaker.py (make_IPython): make the default ipython
1110 directory be called _ipython under win32, to follow more the
1117 directory be called _ipython under win32, to follow more the
1111 naming peculiarities of that platform (where buggy software like
1118 naming peculiarities of that platform (where buggy software like
1112 Visual Sourcesafe breaks with .named directories). Reported by
1119 Visual Sourcesafe breaks with .named directories). Reported by
1113 Ville Vainio.
1120 Ville Vainio.
1114
1121
1115 2005-02-23 Fernando Perez <fperez@colorado.edu>
1122 2005-02-23 Fernando Perez <fperez@colorado.edu>
1116
1123
1117 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1124 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1118 auto_aliases for win32 which were causing problems. Users can
1125 auto_aliases for win32 which were causing problems. Users can
1119 define the ones they personally like.
1126 define the ones they personally like.
1120
1127
1121 2005-02-21 Fernando Perez <fperez@colorado.edu>
1128 2005-02-21 Fernando Perez <fperez@colorado.edu>
1122
1129
1123 * IPython/Magic.py (magic_time): new magic to time execution of
1130 * IPython/Magic.py (magic_time): new magic to time execution of
1124 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1131 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1125
1132
1126 2005-02-19 Fernando Perez <fperez@colorado.edu>
1133 2005-02-19 Fernando Perez <fperez@colorado.edu>
1127
1134
1128 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1135 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1129 into keys (for prompts, for example).
1136 into keys (for prompts, for example).
1130
1137
1131 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1138 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1132 prompts in case users want them. This introduces a small behavior
1139 prompts in case users want them. This introduces a small behavior
1133 change: ipython does not automatically add a space to all prompts
1140 change: ipython does not automatically add a space to all prompts
1134 anymore. To get the old prompts with a space, users should add it
1141 anymore. To get the old prompts with a space, users should add it
1135 manually to their ipythonrc file, so for example prompt_in1 should
1142 manually to their ipythonrc file, so for example prompt_in1 should
1136 now read 'In [\#]: ' instead of 'In [\#]:'.
1143 now read 'In [\#]: ' instead of 'In [\#]:'.
1137 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1144 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1138 file) to control left-padding of secondary prompts.
1145 file) to control left-padding of secondary prompts.
1139
1146
1140 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1147 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1141 the profiler can't be imported. Fix for Debian, which removed
1148 the profiler can't be imported. Fix for Debian, which removed
1142 profile.py because of License issues. I applied a slightly
1149 profile.py because of License issues. I applied a slightly
1143 modified version of the original Debian patch at
1150 modified version of the original Debian patch at
1144 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1151 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1145
1152
1146 2005-02-17 Fernando Perez <fperez@colorado.edu>
1153 2005-02-17 Fernando Perez <fperez@colorado.edu>
1147
1154
1148 * IPython/genutils.py (native_line_ends): Fix bug which would
1155 * IPython/genutils.py (native_line_ends): Fix bug which would
1149 cause improper line-ends under win32 b/c I was not opening files
1156 cause improper line-ends under win32 b/c I was not opening files
1150 in binary mode. Bug report and fix thanks to Ville.
1157 in binary mode. Bug report and fix thanks to Ville.
1151
1158
1152 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1159 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1153 trying to catch spurious foo[1] autocalls. My fix actually broke
1160 trying to catch spurious foo[1] autocalls. My fix actually broke
1154 ',/' autoquote/call with explicit escape (bad regexp).
1161 ',/' autoquote/call with explicit escape (bad regexp).
1155
1162
1156 2005-02-15 *** Released version 0.6.11
1163 2005-02-15 *** Released version 0.6.11
1157
1164
1158 2005-02-14 Fernando Perez <fperez@colorado.edu>
1165 2005-02-14 Fernando Perez <fperez@colorado.edu>
1159
1166
1160 * IPython/background_jobs.py: New background job management
1167 * IPython/background_jobs.py: New background job management
1161 subsystem. This is implemented via a new set of classes, and
1168 subsystem. This is implemented via a new set of classes, and
1162 IPython now provides a builtin 'jobs' object for background job
1169 IPython now provides a builtin 'jobs' object for background job
1163 execution. A convenience %bg magic serves as a lightweight
1170 execution. A convenience %bg magic serves as a lightweight
1164 frontend for starting the more common type of calls. This was
1171 frontend for starting the more common type of calls. This was
1165 inspired by discussions with B. Granger and the BackgroundCommand
1172 inspired by discussions with B. Granger and the BackgroundCommand
1166 class described in the book Python Scripting for Computational
1173 class described in the book Python Scripting for Computational
1167 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1174 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1168 (although ultimately no code from this text was used, as IPython's
1175 (although ultimately no code from this text was used, as IPython's
1169 system is a separate implementation).
1176 system is a separate implementation).
1170
1177
1171 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1178 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1172 to control the completion of single/double underscore names
1179 to control the completion of single/double underscore names
1173 separately. As documented in the example ipytonrc file, the
1180 separately. As documented in the example ipytonrc file, the
1174 readline_omit__names variable can now be set to 2, to omit even
1181 readline_omit__names variable can now be set to 2, to omit even
1175 single underscore names. Thanks to a patch by Brian Wong
1182 single underscore names. Thanks to a patch by Brian Wong
1176 <BrianWong-AT-AirgoNetworks.Com>.
1183 <BrianWong-AT-AirgoNetworks.Com>.
1177 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1184 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1178 be autocalled as foo([1]) if foo were callable. A problem for
1185 be autocalled as foo([1]) if foo were callable. A problem for
1179 things which are both callable and implement __getitem__.
1186 things which are both callable and implement __getitem__.
1180 (init_readline): Fix autoindentation for win32. Thanks to a patch
1187 (init_readline): Fix autoindentation for win32. Thanks to a patch
1181 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1188 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1182
1189
1183 2005-02-12 Fernando Perez <fperez@colorado.edu>
1190 2005-02-12 Fernando Perez <fperez@colorado.edu>
1184
1191
1185 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1192 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1186 which I had written long ago to sort out user error messages which
1193 which I had written long ago to sort out user error messages which
1187 may occur during startup. This seemed like a good idea initially,
1194 may occur during startup. This seemed like a good idea initially,
1188 but it has proven a disaster in retrospect. I don't want to
1195 but it has proven a disaster in retrospect. I don't want to
1189 change much code for now, so my fix is to set the internal 'debug'
1196 change much code for now, so my fix is to set the internal 'debug'
1190 flag to true everywhere, whose only job was precisely to control
1197 flag to true everywhere, whose only job was precisely to control
1191 this subsystem. This closes issue 28 (as well as avoiding all
1198 this subsystem. This closes issue 28 (as well as avoiding all
1192 sorts of strange hangups which occur from time to time).
1199 sorts of strange hangups which occur from time to time).
1193
1200
1194 2005-02-07 Fernando Perez <fperez@colorado.edu>
1201 2005-02-07 Fernando Perez <fperez@colorado.edu>
1195
1202
1196 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1203 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1197 previous call produced a syntax error.
1204 previous call produced a syntax error.
1198
1205
1199 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1206 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1200 classes without constructor.
1207 classes without constructor.
1201
1208
1202 2005-02-06 Fernando Perez <fperez@colorado.edu>
1209 2005-02-06 Fernando Perez <fperez@colorado.edu>
1203
1210
1204 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1211 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1205 completions with the results of each matcher, so we return results
1212 completions with the results of each matcher, so we return results
1206 to the user from all namespaces. This breaks with ipython
1213 to the user from all namespaces. This breaks with ipython
1207 tradition, but I think it's a nicer behavior. Now you get all
1214 tradition, but I think it's a nicer behavior. Now you get all
1208 possible completions listed, from all possible namespaces (python,
1215 possible completions listed, from all possible namespaces (python,
1209 filesystem, magics...) After a request by John Hunter
1216 filesystem, magics...) After a request by John Hunter
1210 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1217 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1211
1218
1212 2005-02-05 Fernando Perez <fperez@colorado.edu>
1219 2005-02-05 Fernando Perez <fperez@colorado.edu>
1213
1220
1214 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1221 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1215 the call had quote characters in it (the quotes were stripped).
1222 the call had quote characters in it (the quotes were stripped).
1216
1223
1217 2005-01-31 Fernando Perez <fperez@colorado.edu>
1224 2005-01-31 Fernando Perez <fperez@colorado.edu>
1218
1225
1219 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1226 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1220 Itpl.itpl() to make the code more robust against psyco
1227 Itpl.itpl() to make the code more robust against psyco
1221 optimizations.
1228 optimizations.
1222
1229
1223 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1230 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1224 of causing an exception. Quicker, cleaner.
1231 of causing an exception. Quicker, cleaner.
1225
1232
1226 2005-01-28 Fernando Perez <fperez@colorado.edu>
1233 2005-01-28 Fernando Perez <fperez@colorado.edu>
1227
1234
1228 * scripts/ipython_win_post_install.py (install): hardcode
1235 * scripts/ipython_win_post_install.py (install): hardcode
1229 sys.prefix+'python.exe' as the executable path. It turns out that
1236 sys.prefix+'python.exe' as the executable path. It turns out that
1230 during the post-installation run, sys.executable resolves to the
1237 during the post-installation run, sys.executable resolves to the
1231 name of the binary installer! I should report this as a distutils
1238 name of the binary installer! I should report this as a distutils
1232 bug, I think. I updated the .10 release with this tiny fix, to
1239 bug, I think. I updated the .10 release with this tiny fix, to
1233 avoid annoying the lists further.
1240 avoid annoying the lists further.
1234
1241
1235 2005-01-27 *** Released version 0.6.10
1242 2005-01-27 *** Released version 0.6.10
1236
1243
1237 2005-01-27 Fernando Perez <fperez@colorado.edu>
1244 2005-01-27 Fernando Perez <fperez@colorado.edu>
1238
1245
1239 * IPython/numutils.py (norm): Added 'inf' as optional name for
1246 * IPython/numutils.py (norm): Added 'inf' as optional name for
1240 L-infinity norm, included references to mathworld.com for vector
1247 L-infinity norm, included references to mathworld.com for vector
1241 norm definitions.
1248 norm definitions.
1242 (amin/amax): added amin/amax for array min/max. Similar to what
1249 (amin/amax): added amin/amax for array min/max. Similar to what
1243 pylab ships with after the recent reorganization of names.
1250 pylab ships with after the recent reorganization of names.
1244 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1251 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1245
1252
1246 * ipython.el: committed Alex's recent fixes and improvements.
1253 * ipython.el: committed Alex's recent fixes and improvements.
1247 Tested with python-mode from CVS, and it looks excellent. Since
1254 Tested with python-mode from CVS, and it looks excellent. Since
1248 python-mode hasn't released anything in a while, I'm temporarily
1255 python-mode hasn't released anything in a while, I'm temporarily
1249 putting a copy of today's CVS (v 4.70) of python-mode in:
1256 putting a copy of today's CVS (v 4.70) of python-mode in:
1250 http://ipython.scipy.org/tmp/python-mode.el
1257 http://ipython.scipy.org/tmp/python-mode.el
1251
1258
1252 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1259 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1253 sys.executable for the executable name, instead of assuming it's
1260 sys.executable for the executable name, instead of assuming it's
1254 called 'python.exe' (the post-installer would have produced broken
1261 called 'python.exe' (the post-installer would have produced broken
1255 setups on systems with a differently named python binary).
1262 setups on systems with a differently named python binary).
1256
1263
1257 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1264 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1258 references to os.linesep, to make the code more
1265 references to os.linesep, to make the code more
1259 platform-independent. This is also part of the win32 coloring
1266 platform-independent. This is also part of the win32 coloring
1260 fixes.
1267 fixes.
1261
1268
1262 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1269 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1263 lines, which actually cause coloring bugs because the length of
1270 lines, which actually cause coloring bugs because the length of
1264 the line is very difficult to correctly compute with embedded
1271 the line is very difficult to correctly compute with embedded
1265 escapes. This was the source of all the coloring problems under
1272 escapes. This was the source of all the coloring problems under
1266 Win32. I think that _finally_, Win32 users have a properly
1273 Win32. I think that _finally_, Win32 users have a properly
1267 working ipython in all respects. This would never have happened
1274 working ipython in all respects. This would never have happened
1268 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1275 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1269
1276
1270 2005-01-26 *** Released version 0.6.9
1277 2005-01-26 *** Released version 0.6.9
1271
1278
1272 2005-01-25 Fernando Perez <fperez@colorado.edu>
1279 2005-01-25 Fernando Perez <fperez@colorado.edu>
1273
1280
1274 * setup.py: finally, we have a true Windows installer, thanks to
1281 * setup.py: finally, we have a true Windows installer, thanks to
1275 the excellent work of Viktor Ransmayr
1282 the excellent work of Viktor Ransmayr
1276 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1283 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1277 Windows users. The setup routine is quite a bit cleaner thanks to
1284 Windows users. The setup routine is quite a bit cleaner thanks to
1278 this, and the post-install script uses the proper functions to
1285 this, and the post-install script uses the proper functions to
1279 allow a clean de-installation using the standard Windows Control
1286 allow a clean de-installation using the standard Windows Control
1280 Panel.
1287 Panel.
1281
1288
1282 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1289 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1283 environment variable under all OSes (including win32) if
1290 environment variable under all OSes (including win32) if
1284 available. This will give consistency to win32 users who have set
1291 available. This will give consistency to win32 users who have set
1285 this variable for any reason. If os.environ['HOME'] fails, the
1292 this variable for any reason. If os.environ['HOME'] fails, the
1286 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1293 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1287
1294
1288 2005-01-24 Fernando Perez <fperez@colorado.edu>
1295 2005-01-24 Fernando Perez <fperez@colorado.edu>
1289
1296
1290 * IPython/numutils.py (empty_like): add empty_like(), similar to
1297 * IPython/numutils.py (empty_like): add empty_like(), similar to
1291 zeros_like() but taking advantage of the new empty() Numeric routine.
1298 zeros_like() but taking advantage of the new empty() Numeric routine.
1292
1299
1293 2005-01-23 *** Released version 0.6.8
1300 2005-01-23 *** Released version 0.6.8
1294
1301
1295 2005-01-22 Fernando Perez <fperez@colorado.edu>
1302 2005-01-22 Fernando Perez <fperez@colorado.edu>
1296
1303
1297 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1304 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1298 automatic show() calls. After discussing things with JDH, it
1305 automatic show() calls. After discussing things with JDH, it
1299 turns out there are too many corner cases where this can go wrong.
1306 turns out there are too many corner cases where this can go wrong.
1300 It's best not to try to be 'too smart', and simply have ipython
1307 It's best not to try to be 'too smart', and simply have ipython
1301 reproduce as much as possible the default behavior of a normal
1308 reproduce as much as possible the default behavior of a normal
1302 python shell.
1309 python shell.
1303
1310
1304 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1311 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1305 line-splitting regexp and _prefilter() to avoid calling getattr()
1312 line-splitting regexp and _prefilter() to avoid calling getattr()
1306 on assignments. This closes
1313 on assignments. This closes
1307 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1314 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1308 readline uses getattr(), so a simple <TAB> keypress is still
1315 readline uses getattr(), so a simple <TAB> keypress is still
1309 enough to trigger getattr() calls on an object.
1316 enough to trigger getattr() calls on an object.
1310
1317
1311 2005-01-21 Fernando Perez <fperez@colorado.edu>
1318 2005-01-21 Fernando Perez <fperez@colorado.edu>
1312
1319
1313 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1320 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1314 docstring under pylab so it doesn't mask the original.
1321 docstring under pylab so it doesn't mask the original.
1315
1322
1316 2005-01-21 *** Released version 0.6.7
1323 2005-01-21 *** Released version 0.6.7
1317
1324
1318 2005-01-21 Fernando Perez <fperez@colorado.edu>
1325 2005-01-21 Fernando Perez <fperez@colorado.edu>
1319
1326
1320 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1327 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1321 signal handling for win32 users in multithreaded mode.
1328 signal handling for win32 users in multithreaded mode.
1322
1329
1323 2005-01-17 Fernando Perez <fperez@colorado.edu>
1330 2005-01-17 Fernando Perez <fperez@colorado.edu>
1324
1331
1325 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1332 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1326 instances with no __init__. After a crash report by Norbert Nemec
1333 instances with no __init__. After a crash report by Norbert Nemec
1327 <Norbert-AT-nemec-online.de>.
1334 <Norbert-AT-nemec-online.de>.
1328
1335
1329 2005-01-14 Fernando Perez <fperez@colorado.edu>
1336 2005-01-14 Fernando Perez <fperez@colorado.edu>
1330
1337
1331 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1338 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1332 names for verbose exceptions, when multiple dotted names and the
1339 names for verbose exceptions, when multiple dotted names and the
1333 'parent' object were present on the same line.
1340 'parent' object were present on the same line.
1334
1341
1335 2005-01-11 Fernando Perez <fperez@colorado.edu>
1342 2005-01-11 Fernando Perez <fperez@colorado.edu>
1336
1343
1337 * IPython/genutils.py (flag_calls): new utility to trap and flag
1344 * IPython/genutils.py (flag_calls): new utility to trap and flag
1338 calls in functions. I need it to clean up matplotlib support.
1345 calls in functions. I need it to clean up matplotlib support.
1339 Also removed some deprecated code in genutils.
1346 Also removed some deprecated code in genutils.
1340
1347
1341 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1348 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1342 that matplotlib scripts called with %run, which don't call show()
1349 that matplotlib scripts called with %run, which don't call show()
1343 themselves, still have their plotting windows open.
1350 themselves, still have their plotting windows open.
1344
1351
1345 2005-01-05 Fernando Perez <fperez@colorado.edu>
1352 2005-01-05 Fernando Perez <fperez@colorado.edu>
1346
1353
1347 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1354 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1348 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1355 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1349
1356
1350 2004-12-19 Fernando Perez <fperez@colorado.edu>
1357 2004-12-19 Fernando Perez <fperez@colorado.edu>
1351
1358
1352 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1359 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1353 parent_runcode, which was an eyesore. The same result can be
1360 parent_runcode, which was an eyesore. The same result can be
1354 obtained with Python's regular superclass mechanisms.
1361 obtained with Python's regular superclass mechanisms.
1355
1362
1356 2004-12-17 Fernando Perez <fperez@colorado.edu>
1363 2004-12-17 Fernando Perez <fperez@colorado.edu>
1357
1364
1358 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1365 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1359 reported by Prabhu.
1366 reported by Prabhu.
1360 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1367 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1361 sys.stderr) instead of explicitly calling sys.stderr. This helps
1368 sys.stderr) instead of explicitly calling sys.stderr. This helps
1362 maintain our I/O abstractions clean, for future GUI embeddings.
1369 maintain our I/O abstractions clean, for future GUI embeddings.
1363
1370
1364 * IPython/genutils.py (info): added new utility for sys.stderr
1371 * IPython/genutils.py (info): added new utility for sys.stderr
1365 unified info message handling (thin wrapper around warn()).
1372 unified info message handling (thin wrapper around warn()).
1366
1373
1367 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1374 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1368 composite (dotted) names on verbose exceptions.
1375 composite (dotted) names on verbose exceptions.
1369 (VerboseTB.nullrepr): harden against another kind of errors which
1376 (VerboseTB.nullrepr): harden against another kind of errors which
1370 Python's inspect module can trigger, and which were crashing
1377 Python's inspect module can trigger, and which were crashing
1371 IPython. Thanks to a report by Marco Lombardi
1378 IPython. Thanks to a report by Marco Lombardi
1372 <mlombard-AT-ma010192.hq.eso.org>.
1379 <mlombard-AT-ma010192.hq.eso.org>.
1373
1380
1374 2004-12-13 *** Released version 0.6.6
1381 2004-12-13 *** Released version 0.6.6
1375
1382
1376 2004-12-12 Fernando Perez <fperez@colorado.edu>
1383 2004-12-12 Fernando Perez <fperez@colorado.edu>
1377
1384
1378 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1385 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1379 generated by pygtk upon initialization if it was built without
1386 generated by pygtk upon initialization if it was built without
1380 threads (for matplotlib users). After a crash reported by
1387 threads (for matplotlib users). After a crash reported by
1381 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1388 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1382
1389
1383 * IPython/ipmaker.py (make_IPython): fix small bug in the
1390 * IPython/ipmaker.py (make_IPython): fix small bug in the
1384 import_some parameter for multiple imports.
1391 import_some parameter for multiple imports.
1385
1392
1386 * IPython/iplib.py (ipmagic): simplified the interface of
1393 * IPython/iplib.py (ipmagic): simplified the interface of
1387 ipmagic() to take a single string argument, just as it would be
1394 ipmagic() to take a single string argument, just as it would be
1388 typed at the IPython cmd line.
1395 typed at the IPython cmd line.
1389 (ipalias): Added new ipalias() with an interface identical to
1396 (ipalias): Added new ipalias() with an interface identical to
1390 ipmagic(). This completes exposing a pure python interface to the
1397 ipmagic(). This completes exposing a pure python interface to the
1391 alias and magic system, which can be used in loops or more complex
1398 alias and magic system, which can be used in loops or more complex
1392 code where IPython's automatic line mangling is not active.
1399 code where IPython's automatic line mangling is not active.
1393
1400
1394 * IPython/genutils.py (timing): changed interface of timing to
1401 * IPython/genutils.py (timing): changed interface of timing to
1395 simply run code once, which is the most common case. timings()
1402 simply run code once, which is the most common case. timings()
1396 remains unchanged, for the cases where you want multiple runs.
1403 remains unchanged, for the cases where you want multiple runs.
1397
1404
1398 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1405 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1399 bug where Python2.2 crashes with exec'ing code which does not end
1406 bug where Python2.2 crashes with exec'ing code which does not end
1400 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1407 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1401 before.
1408 before.
1402
1409
1403 2004-12-10 Fernando Perez <fperez@colorado.edu>
1410 2004-12-10 Fernando Perez <fperez@colorado.edu>
1404
1411
1405 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1412 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1406 -t to -T, to accomodate the new -t flag in %run (the %run and
1413 -t to -T, to accomodate the new -t flag in %run (the %run and
1407 %prun options are kind of intermixed, and it's not easy to change
1414 %prun options are kind of intermixed, and it's not easy to change
1408 this with the limitations of python's getopt).
1415 this with the limitations of python's getopt).
1409
1416
1410 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1417 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1411 the execution of scripts. It's not as fine-tuned as timeit.py,
1418 the execution of scripts. It's not as fine-tuned as timeit.py,
1412 but it works from inside ipython (and under 2.2, which lacks
1419 but it works from inside ipython (and under 2.2, which lacks
1413 timeit.py). Optionally a number of runs > 1 can be given for
1420 timeit.py). Optionally a number of runs > 1 can be given for
1414 timing very short-running code.
1421 timing very short-running code.
1415
1422
1416 * IPython/genutils.py (uniq_stable): new routine which returns a
1423 * IPython/genutils.py (uniq_stable): new routine which returns a
1417 list of unique elements in any iterable, but in stable order of
1424 list of unique elements in any iterable, but in stable order of
1418 appearance. I needed this for the ultraTB fixes, and it's a handy
1425 appearance. I needed this for the ultraTB fixes, and it's a handy
1419 utility.
1426 utility.
1420
1427
1421 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1428 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1422 dotted names in Verbose exceptions. This had been broken since
1429 dotted names in Verbose exceptions. This had been broken since
1423 the very start, now x.y will properly be printed in a Verbose
1430 the very start, now x.y will properly be printed in a Verbose
1424 traceback, instead of x being shown and y appearing always as an
1431 traceback, instead of x being shown and y appearing always as an
1425 'undefined global'. Getting this to work was a bit tricky,
1432 'undefined global'. Getting this to work was a bit tricky,
1426 because by default python tokenizers are stateless. Saved by
1433 because by default python tokenizers are stateless. Saved by
1427 python's ability to easily add a bit of state to an arbitrary
1434 python's ability to easily add a bit of state to an arbitrary
1428 function (without needing to build a full-blown callable object).
1435 function (without needing to build a full-blown callable object).
1429
1436
1430 Also big cleanup of this code, which had horrendous runtime
1437 Also big cleanup of this code, which had horrendous runtime
1431 lookups of zillions of attributes for colorization. Moved all
1438 lookups of zillions of attributes for colorization. Moved all
1432 this code into a few templates, which make it cleaner and quicker.
1439 this code into a few templates, which make it cleaner and quicker.
1433
1440
1434 Printout quality was also improved for Verbose exceptions: one
1441 Printout quality was also improved for Verbose exceptions: one
1435 variable per line, and memory addresses are printed (this can be
1442 variable per line, and memory addresses are printed (this can be
1436 quite handy in nasty debugging situations, which is what Verbose
1443 quite handy in nasty debugging situations, which is what Verbose
1437 is for).
1444 is for).
1438
1445
1439 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1446 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1440 the command line as scripts to be loaded by embedded instances.
1447 the command line as scripts to be loaded by embedded instances.
1441 Doing so has the potential for an infinite recursion if there are
1448 Doing so has the potential for an infinite recursion if there are
1442 exceptions thrown in the process. This fixes a strange crash
1449 exceptions thrown in the process. This fixes a strange crash
1443 reported by Philippe MULLER <muller-AT-irit.fr>.
1450 reported by Philippe MULLER <muller-AT-irit.fr>.
1444
1451
1445 2004-12-09 Fernando Perez <fperez@colorado.edu>
1452 2004-12-09 Fernando Perez <fperez@colorado.edu>
1446
1453
1447 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1454 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1448 to reflect new names in matplotlib, which now expose the
1455 to reflect new names in matplotlib, which now expose the
1449 matlab-compatible interface via a pylab module instead of the
1456 matlab-compatible interface via a pylab module instead of the
1450 'matlab' name. The new code is backwards compatible, so users of
1457 'matlab' name. The new code is backwards compatible, so users of
1451 all matplotlib versions are OK. Patch by J. Hunter.
1458 all matplotlib versions are OK. Patch by J. Hunter.
1452
1459
1453 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1460 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1454 of __init__ docstrings for instances (class docstrings are already
1461 of __init__ docstrings for instances (class docstrings are already
1455 automatically printed). Instances with customized docstrings
1462 automatically printed). Instances with customized docstrings
1456 (indep. of the class) are also recognized and all 3 separate
1463 (indep. of the class) are also recognized and all 3 separate
1457 docstrings are printed (instance, class, constructor). After some
1464 docstrings are printed (instance, class, constructor). After some
1458 comments/suggestions by J. Hunter.
1465 comments/suggestions by J. Hunter.
1459
1466
1460 2004-12-05 Fernando Perez <fperez@colorado.edu>
1467 2004-12-05 Fernando Perez <fperez@colorado.edu>
1461
1468
1462 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1469 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1463 warnings when tab-completion fails and triggers an exception.
1470 warnings when tab-completion fails and triggers an exception.
1464
1471
1465 2004-12-03 Fernando Perez <fperez@colorado.edu>
1472 2004-12-03 Fernando Perez <fperez@colorado.edu>
1466
1473
1467 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1474 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1468 be triggered when using 'run -p'. An incorrect option flag was
1475 be triggered when using 'run -p'. An incorrect option flag was
1469 being set ('d' instead of 'D').
1476 being set ('d' instead of 'D').
1470 (manpage): fix missing escaped \- sign.
1477 (manpage): fix missing escaped \- sign.
1471
1478
1472 2004-11-30 *** Released version 0.6.5
1479 2004-11-30 *** Released version 0.6.5
1473
1480
1474 2004-11-30 Fernando Perez <fperez@colorado.edu>
1481 2004-11-30 Fernando Perez <fperez@colorado.edu>
1475
1482
1476 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1483 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1477 setting with -d option.
1484 setting with -d option.
1478
1485
1479 * setup.py (docfiles): Fix problem where the doc glob I was using
1486 * setup.py (docfiles): Fix problem where the doc glob I was using
1480 was COMPLETELY BROKEN. It was giving the right files by pure
1487 was COMPLETELY BROKEN. It was giving the right files by pure
1481 accident, but failed once I tried to include ipython.el. Note:
1488 accident, but failed once I tried to include ipython.el. Note:
1482 glob() does NOT allow you to do exclusion on multiple endings!
1489 glob() does NOT allow you to do exclusion on multiple endings!
1483
1490
1484 2004-11-29 Fernando Perez <fperez@colorado.edu>
1491 2004-11-29 Fernando Perez <fperez@colorado.edu>
1485
1492
1486 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1493 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1487 the manpage as the source. Better formatting & consistency.
1494 the manpage as the source. Better formatting & consistency.
1488
1495
1489 * IPython/Magic.py (magic_run): Added new -d option, to run
1496 * IPython/Magic.py (magic_run): Added new -d option, to run
1490 scripts under the control of the python pdb debugger. Note that
1497 scripts under the control of the python pdb debugger. Note that
1491 this required changing the %prun option -d to -D, to avoid a clash
1498 this required changing the %prun option -d to -D, to avoid a clash
1492 (since %run must pass options to %prun, and getopt is too dumb to
1499 (since %run must pass options to %prun, and getopt is too dumb to
1493 handle options with string values with embedded spaces). Thanks
1500 handle options with string values with embedded spaces). Thanks
1494 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1501 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1495 (magic_who_ls): added type matching to %who and %whos, so that one
1502 (magic_who_ls): added type matching to %who and %whos, so that one
1496 can filter their output to only include variables of certain
1503 can filter their output to only include variables of certain
1497 types. Another suggestion by Matthew.
1504 types. Another suggestion by Matthew.
1498 (magic_whos): Added memory summaries in kb and Mb for arrays.
1505 (magic_whos): Added memory summaries in kb and Mb for arrays.
1499 (magic_who): Improve formatting (break lines every 9 vars).
1506 (magic_who): Improve formatting (break lines every 9 vars).
1500
1507
1501 2004-11-28 Fernando Perez <fperez@colorado.edu>
1508 2004-11-28 Fernando Perez <fperez@colorado.edu>
1502
1509
1503 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1510 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1504 cache when empty lines were present.
1511 cache when empty lines were present.
1505
1512
1506 2004-11-24 Fernando Perez <fperez@colorado.edu>
1513 2004-11-24 Fernando Perez <fperez@colorado.edu>
1507
1514
1508 * IPython/usage.py (__doc__): document the re-activated threading
1515 * IPython/usage.py (__doc__): document the re-activated threading
1509 options for WX and GTK.
1516 options for WX and GTK.
1510
1517
1511 2004-11-23 Fernando Perez <fperez@colorado.edu>
1518 2004-11-23 Fernando Perez <fperez@colorado.edu>
1512
1519
1513 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1520 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1514 the -wthread and -gthread options, along with a new -tk one to try
1521 the -wthread and -gthread options, along with a new -tk one to try
1515 and coordinate Tk threading with wx/gtk. The tk support is very
1522 and coordinate Tk threading with wx/gtk. The tk support is very
1516 platform dependent, since it seems to require Tcl and Tk to be
1523 platform dependent, since it seems to require Tcl and Tk to be
1517 built with threads (Fedora1/2 appears NOT to have it, but in
1524 built with threads (Fedora1/2 appears NOT to have it, but in
1518 Prabhu's Debian boxes it works OK). But even with some Tk
1525 Prabhu's Debian boxes it works OK). But even with some Tk
1519 limitations, this is a great improvement.
1526 limitations, this is a great improvement.
1520
1527
1521 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1528 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1522 info in user prompts. Patch by Prabhu.
1529 info in user prompts. Patch by Prabhu.
1523
1530
1524 2004-11-18 Fernando Perez <fperez@colorado.edu>
1531 2004-11-18 Fernando Perez <fperez@colorado.edu>
1525
1532
1526 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1533 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1527 EOFErrors and bail, to avoid infinite loops if a non-terminating
1534 EOFErrors and bail, to avoid infinite loops if a non-terminating
1528 file is fed into ipython. Patch submitted in issue 19 by user,
1535 file is fed into ipython. Patch submitted in issue 19 by user,
1529 many thanks.
1536 many thanks.
1530
1537
1531 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1538 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1532 autoquote/parens in continuation prompts, which can cause lots of
1539 autoquote/parens in continuation prompts, which can cause lots of
1533 problems. Closes roundup issue 20.
1540 problems. Closes roundup issue 20.
1534
1541
1535 2004-11-17 Fernando Perez <fperez@colorado.edu>
1542 2004-11-17 Fernando Perez <fperez@colorado.edu>
1536
1543
1537 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1544 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1538 reported as debian bug #280505. I'm not sure my local changelog
1545 reported as debian bug #280505. I'm not sure my local changelog
1539 entry has the proper debian format (Jack?).
1546 entry has the proper debian format (Jack?).
1540
1547
1541 2004-11-08 *** Released version 0.6.4
1548 2004-11-08 *** Released version 0.6.4
1542
1549
1543 2004-11-08 Fernando Perez <fperez@colorado.edu>
1550 2004-11-08 Fernando Perez <fperez@colorado.edu>
1544
1551
1545 * IPython/iplib.py (init_readline): Fix exit message for Windows
1552 * IPython/iplib.py (init_readline): Fix exit message for Windows
1546 when readline is active. Thanks to a report by Eric Jones
1553 when readline is active. Thanks to a report by Eric Jones
1547 <eric-AT-enthought.com>.
1554 <eric-AT-enthought.com>.
1548
1555
1549 2004-11-07 Fernando Perez <fperez@colorado.edu>
1556 2004-11-07 Fernando Perez <fperez@colorado.edu>
1550
1557
1551 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1558 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1552 sometimes seen by win2k/cygwin users.
1559 sometimes seen by win2k/cygwin users.
1553
1560
1554 2004-11-06 Fernando Perez <fperez@colorado.edu>
1561 2004-11-06 Fernando Perez <fperez@colorado.edu>
1555
1562
1556 * IPython/iplib.py (interact): Change the handling of %Exit from
1563 * IPython/iplib.py (interact): Change the handling of %Exit from
1557 trying to propagate a SystemExit to an internal ipython flag.
1564 trying to propagate a SystemExit to an internal ipython flag.
1558 This is less elegant than using Python's exception mechanism, but
1565 This is less elegant than using Python's exception mechanism, but
1559 I can't get that to work reliably with threads, so under -pylab
1566 I can't get that to work reliably with threads, so under -pylab
1560 %Exit was hanging IPython. Cross-thread exception handling is
1567 %Exit was hanging IPython. Cross-thread exception handling is
1561 really a bitch. Thaks to a bug report by Stephen Walton
1568 really a bitch. Thaks to a bug report by Stephen Walton
1562 <stephen.walton-AT-csun.edu>.
1569 <stephen.walton-AT-csun.edu>.
1563
1570
1564 2004-11-04 Fernando Perez <fperez@colorado.edu>
1571 2004-11-04 Fernando Perez <fperez@colorado.edu>
1565
1572
1566 * IPython/iplib.py (raw_input_original): store a pointer to the
1573 * IPython/iplib.py (raw_input_original): store a pointer to the
1567 true raw_input to harden against code which can modify it
1574 true raw_input to harden against code which can modify it
1568 (wx.py.PyShell does this and would otherwise crash ipython).
1575 (wx.py.PyShell does this and would otherwise crash ipython).
1569 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1576 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1570
1577
1571 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1578 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1572 Ctrl-C problem, which does not mess up the input line.
1579 Ctrl-C problem, which does not mess up the input line.
1573
1580
1574 2004-11-03 Fernando Perez <fperez@colorado.edu>
1581 2004-11-03 Fernando Perez <fperez@colorado.edu>
1575
1582
1576 * IPython/Release.py: Changed licensing to BSD, in all files.
1583 * IPython/Release.py: Changed licensing to BSD, in all files.
1577 (name): lowercase name for tarball/RPM release.
1584 (name): lowercase name for tarball/RPM release.
1578
1585
1579 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1586 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1580 use throughout ipython.
1587 use throughout ipython.
1581
1588
1582 * IPython/Magic.py (Magic._ofind): Switch to using the new
1589 * IPython/Magic.py (Magic._ofind): Switch to using the new
1583 OInspect.getdoc() function.
1590 OInspect.getdoc() function.
1584
1591
1585 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1592 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1586 of the line currently being canceled via Ctrl-C. It's extremely
1593 of the line currently being canceled via Ctrl-C. It's extremely
1587 ugly, but I don't know how to do it better (the problem is one of
1594 ugly, but I don't know how to do it better (the problem is one of
1588 handling cross-thread exceptions).
1595 handling cross-thread exceptions).
1589
1596
1590 2004-10-28 Fernando Perez <fperez@colorado.edu>
1597 2004-10-28 Fernando Perez <fperez@colorado.edu>
1591
1598
1592 * IPython/Shell.py (signal_handler): add signal handlers to trap
1599 * IPython/Shell.py (signal_handler): add signal handlers to trap
1593 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1600 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1594 report by Francesc Alted.
1601 report by Francesc Alted.
1595
1602
1596 2004-10-21 Fernando Perez <fperez@colorado.edu>
1603 2004-10-21 Fernando Perez <fperez@colorado.edu>
1597
1604
1598 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1605 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1599 to % for pysh syntax extensions.
1606 to % for pysh syntax extensions.
1600
1607
1601 2004-10-09 Fernando Perez <fperez@colorado.edu>
1608 2004-10-09 Fernando Perez <fperez@colorado.edu>
1602
1609
1603 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
1610 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
1604 arrays to print a more useful summary, without calling str(arr).
1611 arrays to print a more useful summary, without calling str(arr).
1605 This avoids the problem of extremely lengthy computations which
1612 This avoids the problem of extremely lengthy computations which
1606 occur if arr is large, and appear to the user as a system lockup
1613 occur if arr is large, and appear to the user as a system lockup
1607 with 100% cpu activity. After a suggestion by Kristian Sandberg
1614 with 100% cpu activity. After a suggestion by Kristian Sandberg
1608 <Kristian.Sandberg@colorado.edu>.
1615 <Kristian.Sandberg@colorado.edu>.
1609 (Magic.__init__): fix bug in global magic escapes not being
1616 (Magic.__init__): fix bug in global magic escapes not being
1610 correctly set.
1617 correctly set.
1611
1618
1612 2004-10-08 Fernando Perez <fperez@colorado.edu>
1619 2004-10-08 Fernando Perez <fperez@colorado.edu>
1613
1620
1614 * IPython/Magic.py (__license__): change to absolute imports of
1621 * IPython/Magic.py (__license__): change to absolute imports of
1615 ipython's own internal packages, to start adapting to the absolute
1622 ipython's own internal packages, to start adapting to the absolute
1616 import requirement of PEP-328.
1623 import requirement of PEP-328.
1617
1624
1618 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
1625 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
1619 files, and standardize author/license marks through the Release
1626 files, and standardize author/license marks through the Release
1620 module instead of having per/file stuff (except for files with
1627 module instead of having per/file stuff (except for files with
1621 particular licenses, like the MIT/PSF-licensed codes).
1628 particular licenses, like the MIT/PSF-licensed codes).
1622
1629
1623 * IPython/Debugger.py: remove dead code for python 2.1
1630 * IPython/Debugger.py: remove dead code for python 2.1
1624
1631
1625 2004-10-04 Fernando Perez <fperez@colorado.edu>
1632 2004-10-04 Fernando Perez <fperez@colorado.edu>
1626
1633
1627 * IPython/iplib.py (ipmagic): New function for accessing magics
1634 * IPython/iplib.py (ipmagic): New function for accessing magics
1628 via a normal python function call.
1635 via a normal python function call.
1629
1636
1630 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
1637 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
1631 from '@' to '%', to accomodate the new @decorator syntax of python
1638 from '@' to '%', to accomodate the new @decorator syntax of python
1632 2.4.
1639 2.4.
1633
1640
1634 2004-09-29 Fernando Perez <fperez@colorado.edu>
1641 2004-09-29 Fernando Perez <fperez@colorado.edu>
1635
1642
1636 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
1643 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
1637 matplotlib.use to prevent running scripts which try to switch
1644 matplotlib.use to prevent running scripts which try to switch
1638 interactive backends from within ipython. This will just crash
1645 interactive backends from within ipython. This will just crash
1639 the python interpreter, so we can't allow it (but a detailed error
1646 the python interpreter, so we can't allow it (but a detailed error
1640 is given to the user).
1647 is given to the user).
1641
1648
1642 2004-09-28 Fernando Perez <fperez@colorado.edu>
1649 2004-09-28 Fernando Perez <fperez@colorado.edu>
1643
1650
1644 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
1651 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
1645 matplotlib-related fixes so that using @run with non-matplotlib
1652 matplotlib-related fixes so that using @run with non-matplotlib
1646 scripts doesn't pop up spurious plot windows. This requires
1653 scripts doesn't pop up spurious plot windows. This requires
1647 matplotlib >= 0.63, where I had to make some changes as well.
1654 matplotlib >= 0.63, where I had to make some changes as well.
1648
1655
1649 * IPython/ipmaker.py (make_IPython): update version requirement to
1656 * IPython/ipmaker.py (make_IPython): update version requirement to
1650 python 2.2.
1657 python 2.2.
1651
1658
1652 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
1659 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
1653 banner arg for embedded customization.
1660 banner arg for embedded customization.
1654
1661
1655 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
1662 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
1656 explicit uses of __IP as the IPython's instance name. Now things
1663 explicit uses of __IP as the IPython's instance name. Now things
1657 are properly handled via the shell.name value. The actual code
1664 are properly handled via the shell.name value. The actual code
1658 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
1665 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
1659 is much better than before. I'll clean things completely when the
1666 is much better than before. I'll clean things completely when the
1660 magic stuff gets a real overhaul.
1667 magic stuff gets a real overhaul.
1661
1668
1662 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
1669 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
1663 minor changes to debian dir.
1670 minor changes to debian dir.
1664
1671
1665 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
1672 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
1666 pointer to the shell itself in the interactive namespace even when
1673 pointer to the shell itself in the interactive namespace even when
1667 a user-supplied dict is provided. This is needed for embedding
1674 a user-supplied dict is provided. This is needed for embedding
1668 purposes (found by tests with Michel Sanner).
1675 purposes (found by tests with Michel Sanner).
1669
1676
1670 2004-09-27 Fernando Perez <fperez@colorado.edu>
1677 2004-09-27 Fernando Perez <fperez@colorado.edu>
1671
1678
1672 * IPython/UserConfig/ipythonrc: remove []{} from
1679 * IPython/UserConfig/ipythonrc: remove []{} from
1673 readline_remove_delims, so that things like [modname.<TAB> do
1680 readline_remove_delims, so that things like [modname.<TAB> do
1674 proper completion. This disables [].TAB, but that's a less common
1681 proper completion. This disables [].TAB, but that's a less common
1675 case than module names in list comprehensions, for example.
1682 case than module names in list comprehensions, for example.
1676 Thanks to a report by Andrea Riciputi.
1683 Thanks to a report by Andrea Riciputi.
1677
1684
1678 2004-09-09 Fernando Perez <fperez@colorado.edu>
1685 2004-09-09 Fernando Perez <fperez@colorado.edu>
1679
1686
1680 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
1687 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
1681 blocking problems in win32 and osx. Fix by John.
1688 blocking problems in win32 and osx. Fix by John.
1682
1689
1683 2004-09-08 Fernando Perez <fperez@colorado.edu>
1690 2004-09-08 Fernando Perez <fperez@colorado.edu>
1684
1691
1685 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
1692 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
1686 for Win32 and OSX. Fix by John Hunter.
1693 for Win32 and OSX. Fix by John Hunter.
1687
1694
1688 2004-08-30 *** Released version 0.6.3
1695 2004-08-30 *** Released version 0.6.3
1689
1696
1690 2004-08-30 Fernando Perez <fperez@colorado.edu>
1697 2004-08-30 Fernando Perez <fperez@colorado.edu>
1691
1698
1692 * setup.py (isfile): Add manpages to list of dependent files to be
1699 * setup.py (isfile): Add manpages to list of dependent files to be
1693 updated.
1700 updated.
1694
1701
1695 2004-08-27 Fernando Perez <fperez@colorado.edu>
1702 2004-08-27 Fernando Perez <fperez@colorado.edu>
1696
1703
1697 * IPython/Shell.py (start): I've disabled -wthread and -gthread
1704 * IPython/Shell.py (start): I've disabled -wthread and -gthread
1698 for now. They don't really work with standalone WX/GTK code
1705 for now. They don't really work with standalone WX/GTK code
1699 (though matplotlib IS working fine with both of those backends).
1706 (though matplotlib IS working fine with both of those backends).
1700 This will neeed much more testing. I disabled most things with
1707 This will neeed much more testing. I disabled most things with
1701 comments, so turning it back on later should be pretty easy.
1708 comments, so turning it back on later should be pretty easy.
1702
1709
1703 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
1710 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
1704 autocalling of expressions like r'foo', by modifying the line
1711 autocalling of expressions like r'foo', by modifying the line
1705 split regexp. Closes
1712 split regexp. Closes
1706 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
1713 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
1707 Riley <ipythonbugs-AT-sabi.net>.
1714 Riley <ipythonbugs-AT-sabi.net>.
1708 (InteractiveShell.mainloop): honor --nobanner with banner
1715 (InteractiveShell.mainloop): honor --nobanner with banner
1709 extensions.
1716 extensions.
1710
1717
1711 * IPython/Shell.py: Significant refactoring of all classes, so
1718 * IPython/Shell.py: Significant refactoring of all classes, so
1712 that we can really support ALL matplotlib backends and threading
1719 that we can really support ALL matplotlib backends and threading
1713 models (John spotted a bug with Tk which required this). Now we
1720 models (John spotted a bug with Tk which required this). Now we
1714 should support single-threaded, WX-threads and GTK-threads, both
1721 should support single-threaded, WX-threads and GTK-threads, both
1715 for generic code and for matplotlib.
1722 for generic code and for matplotlib.
1716
1723
1717 * IPython/ipmaker.py (__call__): Changed -mpthread option to
1724 * IPython/ipmaker.py (__call__): Changed -mpthread option to
1718 -pylab, to simplify things for users. Will also remove the pylab
1725 -pylab, to simplify things for users. Will also remove the pylab
1719 profile, since now all of matplotlib configuration is directly
1726 profile, since now all of matplotlib configuration is directly
1720 handled here. This also reduces startup time.
1727 handled here. This also reduces startup time.
1721
1728
1722 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
1729 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
1723 shell wasn't being correctly called. Also in IPShellWX.
1730 shell wasn't being correctly called. Also in IPShellWX.
1724
1731
1725 * IPython/iplib.py (InteractiveShell.__init__): Added option to
1732 * IPython/iplib.py (InteractiveShell.__init__): Added option to
1726 fine-tune banner.
1733 fine-tune banner.
1727
1734
1728 * IPython/numutils.py (spike): Deprecate these spike functions,
1735 * IPython/numutils.py (spike): Deprecate these spike functions,
1729 delete (long deprecated) gnuplot_exec handler.
1736 delete (long deprecated) gnuplot_exec handler.
1730
1737
1731 2004-08-26 Fernando Perez <fperez@colorado.edu>
1738 2004-08-26 Fernando Perez <fperez@colorado.edu>
1732
1739
1733 * ipython.1: Update for threading options, plus some others which
1740 * ipython.1: Update for threading options, plus some others which
1734 were missing.
1741 were missing.
1735
1742
1736 * IPython/ipmaker.py (__call__): Added -wthread option for
1743 * IPython/ipmaker.py (__call__): Added -wthread option for
1737 wxpython thread handling. Make sure threading options are only
1744 wxpython thread handling. Make sure threading options are only
1738 valid at the command line.
1745 valid at the command line.
1739
1746
1740 * scripts/ipython: moved shell selection into a factory function
1747 * scripts/ipython: moved shell selection into a factory function
1741 in Shell.py, to keep the starter script to a minimum.
1748 in Shell.py, to keep the starter script to a minimum.
1742
1749
1743 2004-08-25 Fernando Perez <fperez@colorado.edu>
1750 2004-08-25 Fernando Perez <fperez@colorado.edu>
1744
1751
1745 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
1752 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
1746 John. Along with some recent changes he made to matplotlib, the
1753 John. Along with some recent changes he made to matplotlib, the
1747 next versions of both systems should work very well together.
1754 next versions of both systems should work very well together.
1748
1755
1749 2004-08-24 Fernando Perez <fperez@colorado.edu>
1756 2004-08-24 Fernando Perez <fperez@colorado.edu>
1750
1757
1751 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
1758 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
1752 tried to switch the profiling to using hotshot, but I'm getting
1759 tried to switch the profiling to using hotshot, but I'm getting
1753 strange errors from prof.runctx() there. I may be misreading the
1760 strange errors from prof.runctx() there. I may be misreading the
1754 docs, but it looks weird. For now the profiling code will
1761 docs, but it looks weird. For now the profiling code will
1755 continue to use the standard profiler.
1762 continue to use the standard profiler.
1756
1763
1757 2004-08-23 Fernando Perez <fperez@colorado.edu>
1764 2004-08-23 Fernando Perez <fperez@colorado.edu>
1758
1765
1759 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
1766 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
1760 threaded shell, by John Hunter. It's not quite ready yet, but
1767 threaded shell, by John Hunter. It's not quite ready yet, but
1761 close.
1768 close.
1762
1769
1763 2004-08-22 Fernando Perez <fperez@colorado.edu>
1770 2004-08-22 Fernando Perez <fperez@colorado.edu>
1764
1771
1765 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
1772 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
1766 in Magic and ultraTB.
1773 in Magic and ultraTB.
1767
1774
1768 * ipython.1: document threading options in manpage.
1775 * ipython.1: document threading options in manpage.
1769
1776
1770 * scripts/ipython: Changed name of -thread option to -gthread,
1777 * scripts/ipython: Changed name of -thread option to -gthread,
1771 since this is GTK specific. I want to leave the door open for a
1778 since this is GTK specific. I want to leave the door open for a
1772 -wthread option for WX, which will most likely be necessary. This
1779 -wthread option for WX, which will most likely be necessary. This
1773 change affects usage and ipmaker as well.
1780 change affects usage and ipmaker as well.
1774
1781
1775 * IPython/Shell.py (matplotlib_shell): Add a factory function to
1782 * IPython/Shell.py (matplotlib_shell): Add a factory function to
1776 handle the matplotlib shell issues. Code by John Hunter
1783 handle the matplotlib shell issues. Code by John Hunter
1777 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1784 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1778 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
1785 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
1779 broken (and disabled for end users) for now, but it puts the
1786 broken (and disabled for end users) for now, but it puts the
1780 infrastructure in place.
1787 infrastructure in place.
1781
1788
1782 2004-08-21 Fernando Perez <fperez@colorado.edu>
1789 2004-08-21 Fernando Perez <fperez@colorado.edu>
1783
1790
1784 * ipythonrc-pylab: Add matplotlib support.
1791 * ipythonrc-pylab: Add matplotlib support.
1785
1792
1786 * matplotlib_config.py: new files for matplotlib support, part of
1793 * matplotlib_config.py: new files for matplotlib support, part of
1787 the pylab profile.
1794 the pylab profile.
1788
1795
1789 * IPython/usage.py (__doc__): documented the threading options.
1796 * IPython/usage.py (__doc__): documented the threading options.
1790
1797
1791 2004-08-20 Fernando Perez <fperez@colorado.edu>
1798 2004-08-20 Fernando Perez <fperez@colorado.edu>
1792
1799
1793 * ipython: Modified the main calling routine to handle the -thread
1800 * ipython: Modified the main calling routine to handle the -thread
1794 and -mpthread options. This needs to be done as a top-level hack,
1801 and -mpthread options. This needs to be done as a top-level hack,
1795 because it determines which class to instantiate for IPython
1802 because it determines which class to instantiate for IPython
1796 itself.
1803 itself.
1797
1804
1798 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
1805 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
1799 classes to support multithreaded GTK operation without blocking,
1806 classes to support multithreaded GTK operation without blocking,
1800 and matplotlib with all backends. This is a lot of still very
1807 and matplotlib with all backends. This is a lot of still very
1801 experimental code, and threads are tricky. So it may still have a
1808 experimental code, and threads are tricky. So it may still have a
1802 few rough edges... This code owes a lot to
1809 few rough edges... This code owes a lot to
1803 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
1810 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
1804 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
1811 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
1805 to John Hunter for all the matplotlib work.
1812 to John Hunter for all the matplotlib work.
1806
1813
1807 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
1814 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
1808 options for gtk thread and matplotlib support.
1815 options for gtk thread and matplotlib support.
1809
1816
1810 2004-08-16 Fernando Perez <fperez@colorado.edu>
1817 2004-08-16 Fernando Perez <fperez@colorado.edu>
1811
1818
1812 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
1819 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
1813 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
1820 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
1814 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
1821 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
1815
1822
1816 2004-08-11 Fernando Perez <fperez@colorado.edu>
1823 2004-08-11 Fernando Perez <fperez@colorado.edu>
1817
1824
1818 * setup.py (isfile): Fix build so documentation gets updated for
1825 * setup.py (isfile): Fix build so documentation gets updated for
1819 rpms (it was only done for .tgz builds).
1826 rpms (it was only done for .tgz builds).
1820
1827
1821 2004-08-10 Fernando Perez <fperez@colorado.edu>
1828 2004-08-10 Fernando Perez <fperez@colorado.edu>
1822
1829
1823 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
1830 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
1824
1831
1825 * iplib.py : Silence syntax error exceptions in tab-completion.
1832 * iplib.py : Silence syntax error exceptions in tab-completion.
1826
1833
1827 2004-08-05 Fernando Perez <fperez@colorado.edu>
1834 2004-08-05 Fernando Perez <fperez@colorado.edu>
1828
1835
1829 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
1836 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
1830 'color off' mark for continuation prompts. This was causing long
1837 'color off' mark for continuation prompts. This was causing long
1831 continuation lines to mis-wrap.
1838 continuation lines to mis-wrap.
1832
1839
1833 2004-08-01 Fernando Perez <fperez@colorado.edu>
1840 2004-08-01 Fernando Perez <fperez@colorado.edu>
1834
1841
1835 * IPython/ipmaker.py (make_IPython): Allow the shell class used
1842 * IPython/ipmaker.py (make_IPython): Allow the shell class used
1836 for building ipython to be a parameter. All this is necessary
1843 for building ipython to be a parameter. All this is necessary
1837 right now to have a multithreaded version, but this insane
1844 right now to have a multithreaded version, but this insane
1838 non-design will be cleaned up soon. For now, it's a hack that
1845 non-design will be cleaned up soon. For now, it's a hack that
1839 works.
1846 works.
1840
1847
1841 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
1848 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
1842 args in various places. No bugs so far, but it's a dangerous
1849 args in various places. No bugs so far, but it's a dangerous
1843 practice.
1850 practice.
1844
1851
1845 2004-07-31 Fernando Perez <fperez@colorado.edu>
1852 2004-07-31 Fernando Perez <fperez@colorado.edu>
1846
1853
1847 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
1854 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
1848 fix completion of files with dots in their names under most
1855 fix completion of files with dots in their names under most
1849 profiles (pysh was OK because the completion order is different).
1856 profiles (pysh was OK because the completion order is different).
1850
1857
1851 2004-07-27 Fernando Perez <fperez@colorado.edu>
1858 2004-07-27 Fernando Perez <fperez@colorado.edu>
1852
1859
1853 * IPython/iplib.py (InteractiveShell.__init__): build dict of
1860 * IPython/iplib.py (InteractiveShell.__init__): build dict of
1854 keywords manually, b/c the one in keyword.py was removed in python
1861 keywords manually, b/c the one in keyword.py was removed in python
1855 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
1862 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
1856 This is NOT a bug under python 2.3 and earlier.
1863 This is NOT a bug under python 2.3 and earlier.
1857
1864
1858 2004-07-26 Fernando Perez <fperez@colorado.edu>
1865 2004-07-26 Fernando Perez <fperez@colorado.edu>
1859
1866
1860 * IPython/ultraTB.py (VerboseTB.text): Add another
1867 * IPython/ultraTB.py (VerboseTB.text): Add another
1861 linecache.checkcache() call to try to prevent inspect.py from
1868 linecache.checkcache() call to try to prevent inspect.py from
1862 crashing under python 2.3. I think this fixes
1869 crashing under python 2.3. I think this fixes
1863 http://www.scipy.net/roundup/ipython/issue17.
1870 http://www.scipy.net/roundup/ipython/issue17.
1864
1871
1865 2004-07-26 *** Released version 0.6.2
1872 2004-07-26 *** Released version 0.6.2
1866
1873
1867 2004-07-26 Fernando Perez <fperez@colorado.edu>
1874 2004-07-26 Fernando Perez <fperez@colorado.edu>
1868
1875
1869 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
1876 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
1870 fail for any number.
1877 fail for any number.
1871 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
1878 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
1872 empty bookmarks.
1879 empty bookmarks.
1873
1880
1874 2004-07-26 *** Released version 0.6.1
1881 2004-07-26 *** Released version 0.6.1
1875
1882
1876 2004-07-26 Fernando Perez <fperez@colorado.edu>
1883 2004-07-26 Fernando Perez <fperez@colorado.edu>
1877
1884
1878 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
1885 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
1879
1886
1880 * IPython/iplib.py (protect_filename): Applied Ville's patch for
1887 * IPython/iplib.py (protect_filename): Applied Ville's patch for
1881 escaping '()[]{}' in filenames.
1888 escaping '()[]{}' in filenames.
1882
1889
1883 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
1890 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
1884 Python 2.2 users who lack a proper shlex.split.
1891 Python 2.2 users who lack a proper shlex.split.
1885
1892
1886 2004-07-19 Fernando Perez <fperez@colorado.edu>
1893 2004-07-19 Fernando Perez <fperez@colorado.edu>
1887
1894
1888 * IPython/iplib.py (InteractiveShell.init_readline): Add support
1895 * IPython/iplib.py (InteractiveShell.init_readline): Add support
1889 for reading readline's init file. I follow the normal chain:
1896 for reading readline's init file. I follow the normal chain:
1890 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
1897 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
1891 report by Mike Heeter. This closes
1898 report by Mike Heeter. This closes
1892 http://www.scipy.net/roundup/ipython/issue16.
1899 http://www.scipy.net/roundup/ipython/issue16.
1893
1900
1894 2004-07-18 Fernando Perez <fperez@colorado.edu>
1901 2004-07-18 Fernando Perez <fperez@colorado.edu>
1895
1902
1896 * IPython/iplib.py (__init__): Add better handling of '\' under
1903 * IPython/iplib.py (__init__): Add better handling of '\' under
1897 Win32 for filenames. After a patch by Ville.
1904 Win32 for filenames. After a patch by Ville.
1898
1905
1899 2004-07-17 Fernando Perez <fperez@colorado.edu>
1906 2004-07-17 Fernando Perez <fperez@colorado.edu>
1900
1907
1901 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
1908 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
1902 autocalling would be triggered for 'foo is bar' if foo is
1909 autocalling would be triggered for 'foo is bar' if foo is
1903 callable. I also cleaned up the autocall detection code to use a
1910 callable. I also cleaned up the autocall detection code to use a
1904 regexp, which is faster. Bug reported by Alexander Schmolck.
1911 regexp, which is faster. Bug reported by Alexander Schmolck.
1905
1912
1906 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
1913 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
1907 '?' in them would confuse the help system. Reported by Alex
1914 '?' in them would confuse the help system. Reported by Alex
1908 Schmolck.
1915 Schmolck.
1909
1916
1910 2004-07-16 Fernando Perez <fperez@colorado.edu>
1917 2004-07-16 Fernando Perez <fperez@colorado.edu>
1911
1918
1912 * IPython/GnuplotInteractive.py (__all__): added plot2.
1919 * IPython/GnuplotInteractive.py (__all__): added plot2.
1913
1920
1914 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
1921 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
1915 plotting dictionaries, lists or tuples of 1d arrays.
1922 plotting dictionaries, lists or tuples of 1d arrays.
1916
1923
1917 * IPython/Magic.py (Magic.magic_hist): small clenaups and
1924 * IPython/Magic.py (Magic.magic_hist): small clenaups and
1918 optimizations.
1925 optimizations.
1919
1926
1920 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
1927 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
1921 the information which was there from Janko's original IPP code:
1928 the information which was there from Janko's original IPP code:
1922
1929
1923 03.05.99 20:53 porto.ifm.uni-kiel.de
1930 03.05.99 20:53 porto.ifm.uni-kiel.de
1924 --Started changelog.
1931 --Started changelog.
1925 --make clear do what it say it does
1932 --make clear do what it say it does
1926 --added pretty output of lines from inputcache
1933 --added pretty output of lines from inputcache
1927 --Made Logger a mixin class, simplifies handling of switches
1934 --Made Logger a mixin class, simplifies handling of switches
1928 --Added own completer class. .string<TAB> expands to last history
1935 --Added own completer class. .string<TAB> expands to last history
1929 line which starts with string. The new expansion is also present
1936 line which starts with string. The new expansion is also present
1930 with Ctrl-r from the readline library. But this shows, who this
1937 with Ctrl-r from the readline library. But this shows, who this
1931 can be done for other cases.
1938 can be done for other cases.
1932 --Added convention that all shell functions should accept a
1939 --Added convention that all shell functions should accept a
1933 parameter_string This opens the door for different behaviour for
1940 parameter_string This opens the door for different behaviour for
1934 each function. @cd is a good example of this.
1941 each function. @cd is a good example of this.
1935
1942
1936 04.05.99 12:12 porto.ifm.uni-kiel.de
1943 04.05.99 12:12 porto.ifm.uni-kiel.de
1937 --added logfile rotation
1944 --added logfile rotation
1938 --added new mainloop method which freezes first the namespace
1945 --added new mainloop method which freezes first the namespace
1939
1946
1940 07.05.99 21:24 porto.ifm.uni-kiel.de
1947 07.05.99 21:24 porto.ifm.uni-kiel.de
1941 --added the docreader classes. Now there is a help system.
1948 --added the docreader classes. Now there is a help system.
1942 -This is only a first try. Currently it's not easy to put new
1949 -This is only a first try. Currently it's not easy to put new
1943 stuff in the indices. But this is the way to go. Info would be
1950 stuff in the indices. But this is the way to go. Info would be
1944 better, but HTML is every where and not everybody has an info
1951 better, but HTML is every where and not everybody has an info
1945 system installed and it's not so easy to change html-docs to info.
1952 system installed and it's not so easy to change html-docs to info.
1946 --added global logfile option
1953 --added global logfile option
1947 --there is now a hook for object inspection method pinfo needs to
1954 --there is now a hook for object inspection method pinfo needs to
1948 be provided for this. Can be reached by two '??'.
1955 be provided for this. Can be reached by two '??'.
1949
1956
1950 08.05.99 20:51 porto.ifm.uni-kiel.de
1957 08.05.99 20:51 porto.ifm.uni-kiel.de
1951 --added a README
1958 --added a README
1952 --bug in rc file. Something has changed so functions in the rc
1959 --bug in rc file. Something has changed so functions in the rc
1953 file need to reference the shell and not self. Not clear if it's a
1960 file need to reference the shell and not self. Not clear if it's a
1954 bug or feature.
1961 bug or feature.
1955 --changed rc file for new behavior
1962 --changed rc file for new behavior
1956
1963
1957 2004-07-15 Fernando Perez <fperez@colorado.edu>
1964 2004-07-15 Fernando Perez <fperez@colorado.edu>
1958
1965
1959 * IPython/Logger.py (Logger.log): fixed recent bug where the input
1966 * IPython/Logger.py (Logger.log): fixed recent bug where the input
1960 cache was falling out of sync in bizarre manners when multi-line
1967 cache was falling out of sync in bizarre manners when multi-line
1961 input was present. Minor optimizations and cleanup.
1968 input was present. Minor optimizations and cleanup.
1962
1969
1963 (Logger): Remove old Changelog info for cleanup. This is the
1970 (Logger): Remove old Changelog info for cleanup. This is the
1964 information which was there from Janko's original code:
1971 information which was there from Janko's original code:
1965
1972
1966 Changes to Logger: - made the default log filename a parameter
1973 Changes to Logger: - made the default log filename a parameter
1967
1974
1968 - put a check for lines beginning with !@? in log(). Needed
1975 - put a check for lines beginning with !@? in log(). Needed
1969 (even if the handlers properly log their lines) for mid-session
1976 (even if the handlers properly log their lines) for mid-session
1970 logging activation to work properly. Without this, lines logged
1977 logging activation to work properly. Without this, lines logged
1971 in mid session, which get read from the cache, would end up
1978 in mid session, which get read from the cache, would end up
1972 'bare' (with !@? in the open) in the log. Now they are caught
1979 'bare' (with !@? in the open) in the log. Now they are caught
1973 and prepended with a #.
1980 and prepended with a #.
1974
1981
1975 * IPython/iplib.py (InteractiveShell.init_readline): added check
1982 * IPython/iplib.py (InteractiveShell.init_readline): added check
1976 in case MagicCompleter fails to be defined, so we don't crash.
1983 in case MagicCompleter fails to be defined, so we don't crash.
1977
1984
1978 2004-07-13 Fernando Perez <fperez@colorado.edu>
1985 2004-07-13 Fernando Perez <fperez@colorado.edu>
1979
1986
1980 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
1987 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
1981 of EPS if the requested filename ends in '.eps'.
1988 of EPS if the requested filename ends in '.eps'.
1982
1989
1983 2004-07-04 Fernando Perez <fperez@colorado.edu>
1990 2004-07-04 Fernando Perez <fperez@colorado.edu>
1984
1991
1985 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
1992 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
1986 escaping of quotes when calling the shell.
1993 escaping of quotes when calling the shell.
1987
1994
1988 2004-07-02 Fernando Perez <fperez@colorado.edu>
1995 2004-07-02 Fernando Perez <fperez@colorado.edu>
1989
1996
1990 * IPython/Prompts.py (CachedOutput.update): Fix problem with
1997 * IPython/Prompts.py (CachedOutput.update): Fix problem with
1991 gettext not working because we were clobbering '_'. Fixes
1998 gettext not working because we were clobbering '_'. Fixes
1992 http://www.scipy.net/roundup/ipython/issue6.
1999 http://www.scipy.net/roundup/ipython/issue6.
1993
2000
1994 2004-07-01 Fernando Perez <fperez@colorado.edu>
2001 2004-07-01 Fernando Perez <fperez@colorado.edu>
1995
2002
1996 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2003 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
1997 into @cd. Patch by Ville.
2004 into @cd. Patch by Ville.
1998
2005
1999 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2006 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2000 new function to store things after ipmaker runs. Patch by Ville.
2007 new function to store things after ipmaker runs. Patch by Ville.
2001 Eventually this will go away once ipmaker is removed and the class
2008 Eventually this will go away once ipmaker is removed and the class
2002 gets cleaned up, but for now it's ok. Key functionality here is
2009 gets cleaned up, but for now it's ok. Key functionality here is
2003 the addition of the persistent storage mechanism, a dict for
2010 the addition of the persistent storage mechanism, a dict for
2004 keeping data across sessions (for now just bookmarks, but more can
2011 keeping data across sessions (for now just bookmarks, but more can
2005 be implemented later).
2012 be implemented later).
2006
2013
2007 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2014 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2008 persistent across sections. Patch by Ville, I modified it
2015 persistent across sections. Patch by Ville, I modified it
2009 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2016 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2010 added a '-l' option to list all bookmarks.
2017 added a '-l' option to list all bookmarks.
2011
2018
2012 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2019 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2013 center for cleanup. Registered with atexit.register(). I moved
2020 center for cleanup. Registered with atexit.register(). I moved
2014 here the old exit_cleanup(). After a patch by Ville.
2021 here the old exit_cleanup(). After a patch by Ville.
2015
2022
2016 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2023 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2017 characters in the hacked shlex_split for python 2.2.
2024 characters in the hacked shlex_split for python 2.2.
2018
2025
2019 * IPython/iplib.py (file_matches): more fixes to filenames with
2026 * IPython/iplib.py (file_matches): more fixes to filenames with
2020 whitespace in them. It's not perfect, but limitations in python's
2027 whitespace in them. It's not perfect, but limitations in python's
2021 readline make it impossible to go further.
2028 readline make it impossible to go further.
2022
2029
2023 2004-06-29 Fernando Perez <fperez@colorado.edu>
2030 2004-06-29 Fernando Perez <fperez@colorado.edu>
2024
2031
2025 * IPython/iplib.py (file_matches): escape whitespace correctly in
2032 * IPython/iplib.py (file_matches): escape whitespace correctly in
2026 filename completions. Bug reported by Ville.
2033 filename completions. Bug reported by Ville.
2027
2034
2028 2004-06-28 Fernando Perez <fperez@colorado.edu>
2035 2004-06-28 Fernando Perez <fperez@colorado.edu>
2029
2036
2030 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2037 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2031 the history file will be called 'history-PROFNAME' (or just
2038 the history file will be called 'history-PROFNAME' (or just
2032 'history' if no profile is loaded). I was getting annoyed at
2039 'history' if no profile is loaded). I was getting annoyed at
2033 getting my Numerical work history clobbered by pysh sessions.
2040 getting my Numerical work history clobbered by pysh sessions.
2034
2041
2035 * IPython/iplib.py (InteractiveShell.__init__): Internal
2042 * IPython/iplib.py (InteractiveShell.__init__): Internal
2036 getoutputerror() function so that we can honor the system_verbose
2043 getoutputerror() function so that we can honor the system_verbose
2037 flag for _all_ system calls. I also added escaping of #
2044 flag for _all_ system calls. I also added escaping of #
2038 characters here to avoid confusing Itpl.
2045 characters here to avoid confusing Itpl.
2039
2046
2040 * IPython/Magic.py (shlex_split): removed call to shell in
2047 * IPython/Magic.py (shlex_split): removed call to shell in
2041 parse_options and replaced it with shlex.split(). The annoying
2048 parse_options and replaced it with shlex.split(). The annoying
2042 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2049 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2043 to backport it from 2.3, with several frail hacks (the shlex
2050 to backport it from 2.3, with several frail hacks (the shlex
2044 module is rather limited in 2.2). Thanks to a suggestion by Ville
2051 module is rather limited in 2.2). Thanks to a suggestion by Ville
2045 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2052 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2046 problem.
2053 problem.
2047
2054
2048 (Magic.magic_system_verbose): new toggle to print the actual
2055 (Magic.magic_system_verbose): new toggle to print the actual
2049 system calls made by ipython. Mainly for debugging purposes.
2056 system calls made by ipython. Mainly for debugging purposes.
2050
2057
2051 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2058 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2052 doesn't support persistence. Reported (and fix suggested) by
2059 doesn't support persistence. Reported (and fix suggested) by
2053 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2060 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2054
2061
2055 2004-06-26 Fernando Perez <fperez@colorado.edu>
2062 2004-06-26 Fernando Perez <fperez@colorado.edu>
2056
2063
2057 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2064 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2058 continue prompts.
2065 continue prompts.
2059
2066
2060 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2067 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2061 function (basically a big docstring) and a few more things here to
2068 function (basically a big docstring) and a few more things here to
2062 speedup startup. pysh.py is now very lightweight. We want because
2069 speedup startup. pysh.py is now very lightweight. We want because
2063 it gets execfile'd, while InterpreterExec gets imported, so
2070 it gets execfile'd, while InterpreterExec gets imported, so
2064 byte-compilation saves time.
2071 byte-compilation saves time.
2065
2072
2066 2004-06-25 Fernando Perez <fperez@colorado.edu>
2073 2004-06-25 Fernando Perez <fperez@colorado.edu>
2067
2074
2068 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2075 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2069 -NUM', which was recently broken.
2076 -NUM', which was recently broken.
2070
2077
2071 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2078 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2072 in multi-line input (but not !!, which doesn't make sense there).
2079 in multi-line input (but not !!, which doesn't make sense there).
2073
2080
2074 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2081 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2075 It's just too useful, and people can turn it off in the less
2082 It's just too useful, and people can turn it off in the less
2076 common cases where it's a problem.
2083 common cases where it's a problem.
2077
2084
2078 2004-06-24 Fernando Perez <fperez@colorado.edu>
2085 2004-06-24 Fernando Perez <fperez@colorado.edu>
2079
2086
2080 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2087 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2081 special syntaxes (like alias calling) is now allied in multi-line
2088 special syntaxes (like alias calling) is now allied in multi-line
2082 input. This is still _very_ experimental, but it's necessary for
2089 input. This is still _very_ experimental, but it's necessary for
2083 efficient shell usage combining python looping syntax with system
2090 efficient shell usage combining python looping syntax with system
2084 calls. For now it's restricted to aliases, I don't think it
2091 calls. For now it's restricted to aliases, I don't think it
2085 really even makes sense to have this for magics.
2092 really even makes sense to have this for magics.
2086
2093
2087 2004-06-23 Fernando Perez <fperez@colorado.edu>
2094 2004-06-23 Fernando Perez <fperez@colorado.edu>
2088
2095
2089 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2096 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2090 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2097 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2091
2098
2092 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2099 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2093 extensions under Windows (after code sent by Gary Bishop). The
2100 extensions under Windows (after code sent by Gary Bishop). The
2094 extensions considered 'executable' are stored in IPython's rc
2101 extensions considered 'executable' are stored in IPython's rc
2095 structure as win_exec_ext.
2102 structure as win_exec_ext.
2096
2103
2097 * IPython/genutils.py (shell): new function, like system() but
2104 * IPython/genutils.py (shell): new function, like system() but
2098 without return value. Very useful for interactive shell work.
2105 without return value. Very useful for interactive shell work.
2099
2106
2100 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2107 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2101 delete aliases.
2108 delete aliases.
2102
2109
2103 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2110 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2104 sure that the alias table doesn't contain python keywords.
2111 sure that the alias table doesn't contain python keywords.
2105
2112
2106 2004-06-21 Fernando Perez <fperez@colorado.edu>
2113 2004-06-21 Fernando Perez <fperez@colorado.edu>
2107
2114
2108 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2115 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2109 non-existent items are found in $PATH. Reported by Thorsten.
2116 non-existent items are found in $PATH. Reported by Thorsten.
2110
2117
2111 2004-06-20 Fernando Perez <fperez@colorado.edu>
2118 2004-06-20 Fernando Perez <fperez@colorado.edu>
2112
2119
2113 * IPython/iplib.py (complete): modified the completer so that the
2120 * IPython/iplib.py (complete): modified the completer so that the
2114 order of priorities can be easily changed at runtime.
2121 order of priorities can be easily changed at runtime.
2115
2122
2116 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2123 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2117 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2124 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2118
2125
2119 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2126 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2120 expand Python variables prepended with $ in all system calls. The
2127 expand Python variables prepended with $ in all system calls. The
2121 same was done to InteractiveShell.handle_shell_escape. Now all
2128 same was done to InteractiveShell.handle_shell_escape. Now all
2122 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2129 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2123 expansion of python variables and expressions according to the
2130 expansion of python variables and expressions according to the
2124 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2131 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2125
2132
2126 Though PEP-215 has been rejected, a similar (but simpler) one
2133 Though PEP-215 has been rejected, a similar (but simpler) one
2127 seems like it will go into Python 2.4, PEP-292 -
2134 seems like it will go into Python 2.4, PEP-292 -
2128 http://www.python.org/peps/pep-0292.html.
2135 http://www.python.org/peps/pep-0292.html.
2129
2136
2130 I'll keep the full syntax of PEP-215, since IPython has since the
2137 I'll keep the full syntax of PEP-215, since IPython has since the
2131 start used Ka-Ping Yee's reference implementation discussed there
2138 start used Ka-Ping Yee's reference implementation discussed there
2132 (Itpl), and I actually like the powerful semantics it offers.
2139 (Itpl), and I actually like the powerful semantics it offers.
2133
2140
2134 In order to access normal shell variables, the $ has to be escaped
2141 In order to access normal shell variables, the $ has to be escaped
2135 via an extra $. For example:
2142 via an extra $. For example:
2136
2143
2137 In [7]: PATH='a python variable'
2144 In [7]: PATH='a python variable'
2138
2145
2139 In [8]: !echo $PATH
2146 In [8]: !echo $PATH
2140 a python variable
2147 a python variable
2141
2148
2142 In [9]: !echo $$PATH
2149 In [9]: !echo $$PATH
2143 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2150 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2144
2151
2145 (Magic.parse_options): escape $ so the shell doesn't evaluate
2152 (Magic.parse_options): escape $ so the shell doesn't evaluate
2146 things prematurely.
2153 things prematurely.
2147
2154
2148 * IPython/iplib.py (InteractiveShell.call_alias): added the
2155 * IPython/iplib.py (InteractiveShell.call_alias): added the
2149 ability for aliases to expand python variables via $.
2156 ability for aliases to expand python variables via $.
2150
2157
2151 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2158 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2152 system, now there's a @rehash/@rehashx pair of magics. These work
2159 system, now there's a @rehash/@rehashx pair of magics. These work
2153 like the csh rehash command, and can be invoked at any time. They
2160 like the csh rehash command, and can be invoked at any time. They
2154 build a table of aliases to everything in the user's $PATH
2161 build a table of aliases to everything in the user's $PATH
2155 (@rehash uses everything, @rehashx is slower but only adds
2162 (@rehash uses everything, @rehashx is slower but only adds
2156 executable files). With this, the pysh.py-based shell profile can
2163 executable files). With this, the pysh.py-based shell profile can
2157 now simply call rehash upon startup, and full access to all
2164 now simply call rehash upon startup, and full access to all
2158 programs in the user's path is obtained.
2165 programs in the user's path is obtained.
2159
2166
2160 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2167 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2161 functionality is now fully in place. I removed the old dynamic
2168 functionality is now fully in place. I removed the old dynamic
2162 code generation based approach, in favor of a much lighter one
2169 code generation based approach, in favor of a much lighter one
2163 based on a simple dict. The advantage is that this allows me to
2170 based on a simple dict. The advantage is that this allows me to
2164 now have thousands of aliases with negligible cost (unthinkable
2171 now have thousands of aliases with negligible cost (unthinkable
2165 with the old system).
2172 with the old system).
2166
2173
2167 2004-06-19 Fernando Perez <fperez@colorado.edu>
2174 2004-06-19 Fernando Perez <fperez@colorado.edu>
2168
2175
2169 * IPython/iplib.py (__init__): extended MagicCompleter class to
2176 * IPython/iplib.py (__init__): extended MagicCompleter class to
2170 also complete (last in priority) on user aliases.
2177 also complete (last in priority) on user aliases.
2171
2178
2172 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2179 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2173 call to eval.
2180 call to eval.
2174 (ItplNS.__init__): Added a new class which functions like Itpl,
2181 (ItplNS.__init__): Added a new class which functions like Itpl,
2175 but allows configuring the namespace for the evaluation to occur
2182 but allows configuring the namespace for the evaluation to occur
2176 in.
2183 in.
2177
2184
2178 2004-06-18 Fernando Perez <fperez@colorado.edu>
2185 2004-06-18 Fernando Perez <fperez@colorado.edu>
2179
2186
2180 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2187 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2181 better message when 'exit' or 'quit' are typed (a common newbie
2188 better message when 'exit' or 'quit' are typed (a common newbie
2182 confusion).
2189 confusion).
2183
2190
2184 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2191 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2185 check for Windows users.
2192 check for Windows users.
2186
2193
2187 * IPython/iplib.py (InteractiveShell.user_setup): removed
2194 * IPython/iplib.py (InteractiveShell.user_setup): removed
2188 disabling of colors for Windows. I'll test at runtime and issue a
2195 disabling of colors for Windows. I'll test at runtime and issue a
2189 warning if Gary's readline isn't found, as to nudge users to
2196 warning if Gary's readline isn't found, as to nudge users to
2190 download it.
2197 download it.
2191
2198
2192 2004-06-16 Fernando Perez <fperez@colorado.edu>
2199 2004-06-16 Fernando Perez <fperez@colorado.edu>
2193
2200
2194 * IPython/genutils.py (Stream.__init__): changed to print errors
2201 * IPython/genutils.py (Stream.__init__): changed to print errors
2195 to sys.stderr. I had a circular dependency here. Now it's
2202 to sys.stderr. I had a circular dependency here. Now it's
2196 possible to run ipython as IDLE's shell (consider this pre-alpha,
2203 possible to run ipython as IDLE's shell (consider this pre-alpha,
2197 since true stdout things end up in the starting terminal instead
2204 since true stdout things end up in the starting terminal instead
2198 of IDLE's out).
2205 of IDLE's out).
2199
2206
2200 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2207 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2201 users who haven't # updated their prompt_in2 definitions. Remove
2208 users who haven't # updated their prompt_in2 definitions. Remove
2202 eventually.
2209 eventually.
2203 (multiple_replace): added credit to original ASPN recipe.
2210 (multiple_replace): added credit to original ASPN recipe.
2204
2211
2205 2004-06-15 Fernando Perez <fperez@colorado.edu>
2212 2004-06-15 Fernando Perez <fperez@colorado.edu>
2206
2213
2207 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2214 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2208 list of auto-defined aliases.
2215 list of auto-defined aliases.
2209
2216
2210 2004-06-13 Fernando Perez <fperez@colorado.edu>
2217 2004-06-13 Fernando Perez <fperez@colorado.edu>
2211
2218
2212 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2219 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2213 install was really requested (so setup.py can be used for other
2220 install was really requested (so setup.py can be used for other
2214 things under Windows).
2221 things under Windows).
2215
2222
2216 2004-06-10 Fernando Perez <fperez@colorado.edu>
2223 2004-06-10 Fernando Perez <fperez@colorado.edu>
2217
2224
2218 * IPython/Logger.py (Logger.create_log): Manually remove any old
2225 * IPython/Logger.py (Logger.create_log): Manually remove any old
2219 backup, since os.remove may fail under Windows. Fixes bug
2226 backup, since os.remove may fail under Windows. Fixes bug
2220 reported by Thorsten.
2227 reported by Thorsten.
2221
2228
2222 2004-06-09 Fernando Perez <fperez@colorado.edu>
2229 2004-06-09 Fernando Perez <fperez@colorado.edu>
2223
2230
2224 * examples/example-embed.py: fixed all references to %n (replaced
2231 * examples/example-embed.py: fixed all references to %n (replaced
2225 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2232 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2226 for all examples and the manual as well.
2233 for all examples and the manual as well.
2227
2234
2228 2004-06-08 Fernando Perez <fperez@colorado.edu>
2235 2004-06-08 Fernando Perez <fperez@colorado.edu>
2229
2236
2230 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2237 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2231 alignment and color management. All 3 prompt subsystems now
2238 alignment and color management. All 3 prompt subsystems now
2232 inherit from BasePrompt.
2239 inherit from BasePrompt.
2233
2240
2234 * tools/release: updates for windows installer build and tag rpms
2241 * tools/release: updates for windows installer build and tag rpms
2235 with python version (since paths are fixed).
2242 with python version (since paths are fixed).
2236
2243
2237 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2244 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2238 which will become eventually obsolete. Also fixed the default
2245 which will become eventually obsolete. Also fixed the default
2239 prompt_in2 to use \D, so at least new users start with the correct
2246 prompt_in2 to use \D, so at least new users start with the correct
2240 defaults.
2247 defaults.
2241 WARNING: Users with existing ipythonrc files will need to apply
2248 WARNING: Users with existing ipythonrc files will need to apply
2242 this fix manually!
2249 this fix manually!
2243
2250
2244 * setup.py: make windows installer (.exe). This is finally the
2251 * setup.py: make windows installer (.exe). This is finally the
2245 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2252 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2246 which I hadn't included because it required Python 2.3 (or recent
2253 which I hadn't included because it required Python 2.3 (or recent
2247 distutils).
2254 distutils).
2248
2255
2249 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2256 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2250 usage of new '\D' escape.
2257 usage of new '\D' escape.
2251
2258
2252 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2259 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2253 lacks os.getuid())
2260 lacks os.getuid())
2254 (CachedOutput.set_colors): Added the ability to turn coloring
2261 (CachedOutput.set_colors): Added the ability to turn coloring
2255 on/off with @colors even for manually defined prompt colors. It
2262 on/off with @colors even for manually defined prompt colors. It
2256 uses a nasty global, but it works safely and via the generic color
2263 uses a nasty global, but it works safely and via the generic color
2257 handling mechanism.
2264 handling mechanism.
2258 (Prompt2.__init__): Introduced new escape '\D' for continuation
2265 (Prompt2.__init__): Introduced new escape '\D' for continuation
2259 prompts. It represents the counter ('\#') as dots.
2266 prompts. It represents the counter ('\#') as dots.
2260 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2267 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2261 need to update their ipythonrc files and replace '%n' with '\D' in
2268 need to update their ipythonrc files and replace '%n' with '\D' in
2262 their prompt_in2 settings everywhere. Sorry, but there's
2269 their prompt_in2 settings everywhere. Sorry, but there's
2263 otherwise no clean way to get all prompts to properly align. The
2270 otherwise no clean way to get all prompts to properly align. The
2264 ipythonrc shipped with IPython has been updated.
2271 ipythonrc shipped with IPython has been updated.
2265
2272
2266 2004-06-07 Fernando Perez <fperez@colorado.edu>
2273 2004-06-07 Fernando Perez <fperez@colorado.edu>
2267
2274
2268 * setup.py (isfile): Pass local_icons option to latex2html, so the
2275 * setup.py (isfile): Pass local_icons option to latex2html, so the
2269 resulting HTML file is self-contained. Thanks to
2276 resulting HTML file is self-contained. Thanks to
2270 dryice-AT-liu.com.cn for the tip.
2277 dryice-AT-liu.com.cn for the tip.
2271
2278
2272 * pysh.py: I created a new profile 'shell', which implements a
2279 * pysh.py: I created a new profile 'shell', which implements a
2273 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2280 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2274 system shell, nor will it become one anytime soon. It's mainly
2281 system shell, nor will it become one anytime soon. It's mainly
2275 meant to illustrate the use of the new flexible bash-like prompts.
2282 meant to illustrate the use of the new flexible bash-like prompts.
2276 I guess it could be used by hardy souls for true shell management,
2283 I guess it could be used by hardy souls for true shell management,
2277 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2284 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2278 profile. This uses the InterpreterExec extension provided by
2285 profile. This uses the InterpreterExec extension provided by
2279 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2286 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2280
2287
2281 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2288 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2282 auto-align itself with the length of the previous input prompt
2289 auto-align itself with the length of the previous input prompt
2283 (taking into account the invisible color escapes).
2290 (taking into account the invisible color escapes).
2284 (CachedOutput.__init__): Large restructuring of this class. Now
2291 (CachedOutput.__init__): Large restructuring of this class. Now
2285 all three prompts (primary1, primary2, output) are proper objects,
2292 all three prompts (primary1, primary2, output) are proper objects,
2286 managed by the 'parent' CachedOutput class. The code is still a
2293 managed by the 'parent' CachedOutput class. The code is still a
2287 bit hackish (all prompts share state via a pointer to the cache),
2294 bit hackish (all prompts share state via a pointer to the cache),
2288 but it's overall far cleaner than before.
2295 but it's overall far cleaner than before.
2289
2296
2290 * IPython/genutils.py (getoutputerror): modified to add verbose,
2297 * IPython/genutils.py (getoutputerror): modified to add verbose,
2291 debug and header options. This makes the interface of all getout*
2298 debug and header options. This makes the interface of all getout*
2292 functions uniform.
2299 functions uniform.
2293 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2300 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2294
2301
2295 * IPython/Magic.py (Magic.default_option): added a function to
2302 * IPython/Magic.py (Magic.default_option): added a function to
2296 allow registering default options for any magic command. This
2303 allow registering default options for any magic command. This
2297 makes it easy to have profiles which customize the magics globally
2304 makes it easy to have profiles which customize the magics globally
2298 for a certain use. The values set through this function are
2305 for a certain use. The values set through this function are
2299 picked up by the parse_options() method, which all magics should
2306 picked up by the parse_options() method, which all magics should
2300 use to parse their options.
2307 use to parse their options.
2301
2308
2302 * IPython/genutils.py (warn): modified the warnings framework to
2309 * IPython/genutils.py (warn): modified the warnings framework to
2303 use the Term I/O class. I'm trying to slowly unify all of
2310 use the Term I/O class. I'm trying to slowly unify all of
2304 IPython's I/O operations to pass through Term.
2311 IPython's I/O operations to pass through Term.
2305
2312
2306 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2313 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2307 the secondary prompt to correctly match the length of the primary
2314 the secondary prompt to correctly match the length of the primary
2308 one for any prompt. Now multi-line code will properly line up
2315 one for any prompt. Now multi-line code will properly line up
2309 even for path dependent prompts, such as the new ones available
2316 even for path dependent prompts, such as the new ones available
2310 via the prompt_specials.
2317 via the prompt_specials.
2311
2318
2312 2004-06-06 Fernando Perez <fperez@colorado.edu>
2319 2004-06-06 Fernando Perez <fperez@colorado.edu>
2313
2320
2314 * IPython/Prompts.py (prompt_specials): Added the ability to have
2321 * IPython/Prompts.py (prompt_specials): Added the ability to have
2315 bash-like special sequences in the prompts, which get
2322 bash-like special sequences in the prompts, which get
2316 automatically expanded. Things like hostname, current working
2323 automatically expanded. Things like hostname, current working
2317 directory and username are implemented already, but it's easy to
2324 directory and username are implemented already, but it's easy to
2318 add more in the future. Thanks to a patch by W.J. van der Laan
2325 add more in the future. Thanks to a patch by W.J. van der Laan
2319 <gnufnork-AT-hetdigitalegat.nl>
2326 <gnufnork-AT-hetdigitalegat.nl>
2320 (prompt_specials): Added color support for prompt strings, so
2327 (prompt_specials): Added color support for prompt strings, so
2321 users can define arbitrary color setups for their prompts.
2328 users can define arbitrary color setups for their prompts.
2322
2329
2323 2004-06-05 Fernando Perez <fperez@colorado.edu>
2330 2004-06-05 Fernando Perez <fperez@colorado.edu>
2324
2331
2325 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2332 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2326 code to load Gary Bishop's readline and configure it
2333 code to load Gary Bishop's readline and configure it
2327 automatically. Thanks to Gary for help on this.
2334 automatically. Thanks to Gary for help on this.
2328
2335
2329 2004-06-01 Fernando Perez <fperez@colorado.edu>
2336 2004-06-01 Fernando Perez <fperez@colorado.edu>
2330
2337
2331 * IPython/Logger.py (Logger.create_log): fix bug for logging
2338 * IPython/Logger.py (Logger.create_log): fix bug for logging
2332 with no filename (previous fix was incomplete).
2339 with no filename (previous fix was incomplete).
2333
2340
2334 2004-05-25 Fernando Perez <fperez@colorado.edu>
2341 2004-05-25 Fernando Perez <fperez@colorado.edu>
2335
2342
2336 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2343 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2337 parens would get passed to the shell.
2344 parens would get passed to the shell.
2338
2345
2339 2004-05-20 Fernando Perez <fperez@colorado.edu>
2346 2004-05-20 Fernando Perez <fperez@colorado.edu>
2340
2347
2341 * IPython/Magic.py (Magic.magic_prun): changed default profile
2348 * IPython/Magic.py (Magic.magic_prun): changed default profile
2342 sort order to 'time' (the more common profiling need).
2349 sort order to 'time' (the more common profiling need).
2343
2350
2344 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2351 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2345 so that source code shown is guaranteed in sync with the file on
2352 so that source code shown is guaranteed in sync with the file on
2346 disk (also changed in psource). Similar fix to the one for
2353 disk (also changed in psource). Similar fix to the one for
2347 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2354 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2348 <yann.ledu-AT-noos.fr>.
2355 <yann.ledu-AT-noos.fr>.
2349
2356
2350 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2357 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2351 with a single option would not be correctly parsed. Closes
2358 with a single option would not be correctly parsed. Closes
2352 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2359 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2353 introduced in 0.6.0 (on 2004-05-06).
2360 introduced in 0.6.0 (on 2004-05-06).
2354
2361
2355 2004-05-13 *** Released version 0.6.0
2362 2004-05-13 *** Released version 0.6.0
2356
2363
2357 2004-05-13 Fernando Perez <fperez@colorado.edu>
2364 2004-05-13 Fernando Perez <fperez@colorado.edu>
2358
2365
2359 * debian/: Added debian/ directory to CVS, so that debian support
2366 * debian/: Added debian/ directory to CVS, so that debian support
2360 is publicly accessible. The debian package is maintained by Jack
2367 is publicly accessible. The debian package is maintained by Jack
2361 Moffit <jack-AT-xiph.org>.
2368 Moffit <jack-AT-xiph.org>.
2362
2369
2363 * Documentation: included the notes about an ipython-based system
2370 * Documentation: included the notes about an ipython-based system
2364 shell (the hypothetical 'pysh') into the new_design.pdf document,
2371 shell (the hypothetical 'pysh') into the new_design.pdf document,
2365 so that these ideas get distributed to users along with the
2372 so that these ideas get distributed to users along with the
2366 official documentation.
2373 official documentation.
2367
2374
2368 2004-05-10 Fernando Perez <fperez@colorado.edu>
2375 2004-05-10 Fernando Perez <fperez@colorado.edu>
2369
2376
2370 * IPython/Logger.py (Logger.create_log): fix recently introduced
2377 * IPython/Logger.py (Logger.create_log): fix recently introduced
2371 bug (misindented line) where logstart would fail when not given an
2378 bug (misindented line) where logstart would fail when not given an
2372 explicit filename.
2379 explicit filename.
2373
2380
2374 2004-05-09 Fernando Perez <fperez@colorado.edu>
2381 2004-05-09 Fernando Perez <fperez@colorado.edu>
2375
2382
2376 * IPython/Magic.py (Magic.parse_options): skip system call when
2383 * IPython/Magic.py (Magic.parse_options): skip system call when
2377 there are no options to look for. Faster, cleaner for the common
2384 there are no options to look for. Faster, cleaner for the common
2378 case.
2385 case.
2379
2386
2380 * Documentation: many updates to the manual: describing Windows
2387 * Documentation: many updates to the manual: describing Windows
2381 support better, Gnuplot updates, credits, misc small stuff. Also
2388 support better, Gnuplot updates, credits, misc small stuff. Also
2382 updated the new_design doc a bit.
2389 updated the new_design doc a bit.
2383
2390
2384 2004-05-06 *** Released version 0.6.0.rc1
2391 2004-05-06 *** Released version 0.6.0.rc1
2385
2392
2386 2004-05-06 Fernando Perez <fperez@colorado.edu>
2393 2004-05-06 Fernando Perez <fperez@colorado.edu>
2387
2394
2388 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2395 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2389 operations to use the vastly more efficient list/''.join() method.
2396 operations to use the vastly more efficient list/''.join() method.
2390 (FormattedTB.text): Fix
2397 (FormattedTB.text): Fix
2391 http://www.scipy.net/roundup/ipython/issue12 - exception source
2398 http://www.scipy.net/roundup/ipython/issue12 - exception source
2392 extract not updated after reload. Thanks to Mike Salib
2399 extract not updated after reload. Thanks to Mike Salib
2393 <msalib-AT-mit.edu> for pinning the source of the problem.
2400 <msalib-AT-mit.edu> for pinning the source of the problem.
2394 Fortunately, the solution works inside ipython and doesn't require
2401 Fortunately, the solution works inside ipython and doesn't require
2395 any changes to python proper.
2402 any changes to python proper.
2396
2403
2397 * IPython/Magic.py (Magic.parse_options): Improved to process the
2404 * IPython/Magic.py (Magic.parse_options): Improved to process the
2398 argument list as a true shell would (by actually using the
2405 argument list as a true shell would (by actually using the
2399 underlying system shell). This way, all @magics automatically get
2406 underlying system shell). This way, all @magics automatically get
2400 shell expansion for variables. Thanks to a comment by Alex
2407 shell expansion for variables. Thanks to a comment by Alex
2401 Schmolck.
2408 Schmolck.
2402
2409
2403 2004-04-04 Fernando Perez <fperez@colorado.edu>
2410 2004-04-04 Fernando Perez <fperez@colorado.edu>
2404
2411
2405 * IPython/iplib.py (InteractiveShell.interact): Added a special
2412 * IPython/iplib.py (InteractiveShell.interact): Added a special
2406 trap for a debugger quit exception, which is basically impossible
2413 trap for a debugger quit exception, which is basically impossible
2407 to handle by normal mechanisms, given what pdb does to the stack.
2414 to handle by normal mechanisms, given what pdb does to the stack.
2408 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2415 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2409
2416
2410 2004-04-03 Fernando Perez <fperez@colorado.edu>
2417 2004-04-03 Fernando Perez <fperez@colorado.edu>
2411
2418
2412 * IPython/genutils.py (Term): Standardized the names of the Term
2419 * IPython/genutils.py (Term): Standardized the names of the Term
2413 class streams to cin/cout/cerr, following C++ naming conventions
2420 class streams to cin/cout/cerr, following C++ naming conventions
2414 (I can't use in/out/err because 'in' is not a valid attribute
2421 (I can't use in/out/err because 'in' is not a valid attribute
2415 name).
2422 name).
2416
2423
2417 * IPython/iplib.py (InteractiveShell.interact): don't increment
2424 * IPython/iplib.py (InteractiveShell.interact): don't increment
2418 the prompt if there's no user input. By Daniel 'Dang' Griffith
2425 the prompt if there's no user input. By Daniel 'Dang' Griffith
2419 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2426 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2420 Francois Pinard.
2427 Francois Pinard.
2421
2428
2422 2004-04-02 Fernando Perez <fperez@colorado.edu>
2429 2004-04-02 Fernando Perez <fperez@colorado.edu>
2423
2430
2424 * IPython/genutils.py (Stream.__init__): Modified to survive at
2431 * IPython/genutils.py (Stream.__init__): Modified to survive at
2425 least importing in contexts where stdin/out/err aren't true file
2432 least importing in contexts where stdin/out/err aren't true file
2426 objects, such as PyCrust (they lack fileno() and mode). However,
2433 objects, such as PyCrust (they lack fileno() and mode). However,
2427 the recovery facilities which rely on these things existing will
2434 the recovery facilities which rely on these things existing will
2428 not work.
2435 not work.
2429
2436
2430 2004-04-01 Fernando Perez <fperez@colorado.edu>
2437 2004-04-01 Fernando Perez <fperez@colorado.edu>
2431
2438
2432 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2439 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2433 use the new getoutputerror() function, so it properly
2440 use the new getoutputerror() function, so it properly
2434 distinguishes stdout/err.
2441 distinguishes stdout/err.
2435
2442
2436 * IPython/genutils.py (getoutputerror): added a function to
2443 * IPython/genutils.py (getoutputerror): added a function to
2437 capture separately the standard output and error of a command.
2444 capture separately the standard output and error of a command.
2438 After a comment from dang on the mailing lists. This code is
2445 After a comment from dang on the mailing lists. This code is
2439 basically a modified version of commands.getstatusoutput(), from
2446 basically a modified version of commands.getstatusoutput(), from
2440 the standard library.
2447 the standard library.
2441
2448
2442 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2449 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2443 '!!' as a special syntax (shorthand) to access @sx.
2450 '!!' as a special syntax (shorthand) to access @sx.
2444
2451
2445 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2452 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2446 command and return its output as a list split on '\n'.
2453 command and return its output as a list split on '\n'.
2447
2454
2448 2004-03-31 Fernando Perez <fperez@colorado.edu>
2455 2004-03-31 Fernando Perez <fperez@colorado.edu>
2449
2456
2450 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2457 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2451 method to dictionaries used as FakeModule instances if they lack
2458 method to dictionaries used as FakeModule instances if they lack
2452 it. At least pydoc in python2.3 breaks for runtime-defined
2459 it. At least pydoc in python2.3 breaks for runtime-defined
2453 functions without this hack. At some point I need to _really_
2460 functions without this hack. At some point I need to _really_
2454 understand what FakeModule is doing, because it's a gross hack.
2461 understand what FakeModule is doing, because it's a gross hack.
2455 But it solves Arnd's problem for now...
2462 But it solves Arnd's problem for now...
2456
2463
2457 2004-02-27 Fernando Perez <fperez@colorado.edu>
2464 2004-02-27 Fernando Perez <fperez@colorado.edu>
2458
2465
2459 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2466 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2460 mode would behave erratically. Also increased the number of
2467 mode would behave erratically. Also increased the number of
2461 possible logs in rotate mod to 999. Thanks to Rod Holland
2468 possible logs in rotate mod to 999. Thanks to Rod Holland
2462 <rhh@StructureLABS.com> for the report and fixes.
2469 <rhh@StructureLABS.com> for the report and fixes.
2463
2470
2464 2004-02-26 Fernando Perez <fperez@colorado.edu>
2471 2004-02-26 Fernando Perez <fperez@colorado.edu>
2465
2472
2466 * IPython/genutils.py (page): Check that the curses module really
2473 * IPython/genutils.py (page): Check that the curses module really
2467 has the initscr attribute before trying to use it. For some
2474 has the initscr attribute before trying to use it. For some
2468 reason, the Solaris curses module is missing this. I think this
2475 reason, the Solaris curses module is missing this. I think this
2469 should be considered a Solaris python bug, but I'm not sure.
2476 should be considered a Solaris python bug, but I'm not sure.
2470
2477
2471 2004-01-17 Fernando Perez <fperez@colorado.edu>
2478 2004-01-17 Fernando Perez <fperez@colorado.edu>
2472
2479
2473 * IPython/genutils.py (Stream.__init__): Changes to try to make
2480 * IPython/genutils.py (Stream.__init__): Changes to try to make
2474 ipython robust against stdin/out/err being closed by the user.
2481 ipython robust against stdin/out/err being closed by the user.
2475 This is 'user error' (and blocks a normal python session, at least
2482 This is 'user error' (and blocks a normal python session, at least
2476 the stdout case). However, Ipython should be able to survive such
2483 the stdout case). However, Ipython should be able to survive such
2477 instances of abuse as gracefully as possible. To simplify the
2484 instances of abuse as gracefully as possible. To simplify the
2478 coding and maintain compatibility with Gary Bishop's Term
2485 coding and maintain compatibility with Gary Bishop's Term
2479 contributions, I've made use of classmethods for this. I think
2486 contributions, I've made use of classmethods for this. I think
2480 this introduces a dependency on python 2.2.
2487 this introduces a dependency on python 2.2.
2481
2488
2482 2004-01-13 Fernando Perez <fperez@colorado.edu>
2489 2004-01-13 Fernando Perez <fperez@colorado.edu>
2483
2490
2484 * IPython/numutils.py (exp_safe): simplified the code a bit and
2491 * IPython/numutils.py (exp_safe): simplified the code a bit and
2485 removed the need for importing the kinds module altogether.
2492 removed the need for importing the kinds module altogether.
2486
2493
2487 2004-01-06 Fernando Perez <fperez@colorado.edu>
2494 2004-01-06 Fernando Perez <fperez@colorado.edu>
2488
2495
2489 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2496 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2490 a magic function instead, after some community feedback. No
2497 a magic function instead, after some community feedback. No
2491 special syntax will exist for it, but its name is deliberately
2498 special syntax will exist for it, but its name is deliberately
2492 very short.
2499 very short.
2493
2500
2494 2003-12-20 Fernando Perez <fperez@colorado.edu>
2501 2003-12-20 Fernando Perez <fperez@colorado.edu>
2495
2502
2496 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2503 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2497 new functionality, to automagically assign the result of a shell
2504 new functionality, to automagically assign the result of a shell
2498 command to a variable. I'll solicit some community feedback on
2505 command to a variable. I'll solicit some community feedback on
2499 this before making it permanent.
2506 this before making it permanent.
2500
2507
2501 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2508 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2502 requested about callables for which inspect couldn't obtain a
2509 requested about callables for which inspect couldn't obtain a
2503 proper argspec. Thanks to a crash report sent by Etienne
2510 proper argspec. Thanks to a crash report sent by Etienne
2504 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2511 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2505
2512
2506 2003-12-09 Fernando Perez <fperez@colorado.edu>
2513 2003-12-09 Fernando Perez <fperez@colorado.edu>
2507
2514
2508 * IPython/genutils.py (page): patch for the pager to work across
2515 * IPython/genutils.py (page): patch for the pager to work across
2509 various versions of Windows. By Gary Bishop.
2516 various versions of Windows. By Gary Bishop.
2510
2517
2511 2003-12-04 Fernando Perez <fperez@colorado.edu>
2518 2003-12-04 Fernando Perez <fperez@colorado.edu>
2512
2519
2513 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2520 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2514 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2521 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2515 While I tested this and it looks ok, there may still be corner
2522 While I tested this and it looks ok, there may still be corner
2516 cases I've missed.
2523 cases I've missed.
2517
2524
2518 2003-12-01 Fernando Perez <fperez@colorado.edu>
2525 2003-12-01 Fernando Perez <fperez@colorado.edu>
2519
2526
2520 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2527 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2521 where a line like 'p,q=1,2' would fail because the automagic
2528 where a line like 'p,q=1,2' would fail because the automagic
2522 system would be triggered for @p.
2529 system would be triggered for @p.
2523
2530
2524 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2531 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2525 cleanups, code unmodified.
2532 cleanups, code unmodified.
2526
2533
2527 * IPython/genutils.py (Term): added a class for IPython to handle
2534 * IPython/genutils.py (Term): added a class for IPython to handle
2528 output. In most cases it will just be a proxy for stdout/err, but
2535 output. In most cases it will just be a proxy for stdout/err, but
2529 having this allows modifications to be made for some platforms,
2536 having this allows modifications to be made for some platforms,
2530 such as handling color escapes under Windows. All of this code
2537 such as handling color escapes under Windows. All of this code
2531 was contributed by Gary Bishop, with minor modifications by me.
2538 was contributed by Gary Bishop, with minor modifications by me.
2532 The actual changes affect many files.
2539 The actual changes affect many files.
2533
2540
2534 2003-11-30 Fernando Perez <fperez@colorado.edu>
2541 2003-11-30 Fernando Perez <fperez@colorado.edu>
2535
2542
2536 * IPython/iplib.py (file_matches): new completion code, courtesy
2543 * IPython/iplib.py (file_matches): new completion code, courtesy
2537 of Jeff Collins. This enables filename completion again under
2544 of Jeff Collins. This enables filename completion again under
2538 python 2.3, which disabled it at the C level.
2545 python 2.3, which disabled it at the C level.
2539
2546
2540 2003-11-11 Fernando Perez <fperez@colorado.edu>
2547 2003-11-11 Fernando Perez <fperez@colorado.edu>
2541
2548
2542 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2549 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2543 for Numeric.array(map(...)), but often convenient.
2550 for Numeric.array(map(...)), but often convenient.
2544
2551
2545 2003-11-05 Fernando Perez <fperez@colorado.edu>
2552 2003-11-05 Fernando Perez <fperez@colorado.edu>
2546
2553
2547 * IPython/numutils.py (frange): Changed a call from int() to
2554 * IPython/numutils.py (frange): Changed a call from int() to
2548 int(round()) to prevent a problem reported with arange() in the
2555 int(round()) to prevent a problem reported with arange() in the
2549 numpy list.
2556 numpy list.
2550
2557
2551 2003-10-06 Fernando Perez <fperez@colorado.edu>
2558 2003-10-06 Fernando Perez <fperez@colorado.edu>
2552
2559
2553 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2560 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2554 prevent crashes if sys lacks an argv attribute (it happens with
2561 prevent crashes if sys lacks an argv attribute (it happens with
2555 embedded interpreters which build a bare-bones sys module).
2562 embedded interpreters which build a bare-bones sys module).
2556 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2563 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2557
2564
2558 2003-09-24 Fernando Perez <fperez@colorado.edu>
2565 2003-09-24 Fernando Perez <fperez@colorado.edu>
2559
2566
2560 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2567 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2561 to protect against poorly written user objects where __getattr__
2568 to protect against poorly written user objects where __getattr__
2562 raises exceptions other than AttributeError. Thanks to a bug
2569 raises exceptions other than AttributeError. Thanks to a bug
2563 report by Oliver Sander <osander-AT-gmx.de>.
2570 report by Oliver Sander <osander-AT-gmx.de>.
2564
2571
2565 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2572 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2566 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2573 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2567
2574
2568 2003-09-09 Fernando Perez <fperez@colorado.edu>
2575 2003-09-09 Fernando Perez <fperez@colorado.edu>
2569
2576
2570 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2577 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2571 unpacking a list whith a callable as first element would
2578 unpacking a list whith a callable as first element would
2572 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2579 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2573 Collins.
2580 Collins.
2574
2581
2575 2003-08-25 *** Released version 0.5.0
2582 2003-08-25 *** Released version 0.5.0
2576
2583
2577 2003-08-22 Fernando Perez <fperez@colorado.edu>
2584 2003-08-22 Fernando Perez <fperez@colorado.edu>
2578
2585
2579 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2586 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2580 improperly defined user exceptions. Thanks to feedback from Mark
2587 improperly defined user exceptions. Thanks to feedback from Mark
2581 Russell <mrussell-AT-verio.net>.
2588 Russell <mrussell-AT-verio.net>.
2582
2589
2583 2003-08-20 Fernando Perez <fperez@colorado.edu>
2590 2003-08-20 Fernando Perez <fperez@colorado.edu>
2584
2591
2585 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2592 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2586 printing so that it would print multi-line string forms starting
2593 printing so that it would print multi-line string forms starting
2587 with a new line. This way the formatting is better respected for
2594 with a new line. This way the formatting is better respected for
2588 objects which work hard to make nice string forms.
2595 objects which work hard to make nice string forms.
2589
2596
2590 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2597 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2591 autocall would overtake data access for objects with both
2598 autocall would overtake data access for objects with both
2592 __getitem__ and __call__.
2599 __getitem__ and __call__.
2593
2600
2594 2003-08-19 *** Released version 0.5.0-rc1
2601 2003-08-19 *** Released version 0.5.0-rc1
2595
2602
2596 2003-08-19 Fernando Perez <fperez@colorado.edu>
2603 2003-08-19 Fernando Perez <fperez@colorado.edu>
2597
2604
2598 * IPython/deep_reload.py (load_tail): single tiny change here
2605 * IPython/deep_reload.py (load_tail): single tiny change here
2599 seems to fix the long-standing bug of dreload() failing to work
2606 seems to fix the long-standing bug of dreload() failing to work
2600 for dotted names. But this module is pretty tricky, so I may have
2607 for dotted names. But this module is pretty tricky, so I may have
2601 missed some subtlety. Needs more testing!.
2608 missed some subtlety. Needs more testing!.
2602
2609
2603 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
2610 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
2604 exceptions which have badly implemented __str__ methods.
2611 exceptions which have badly implemented __str__ methods.
2605 (VerboseTB.text): harden against inspect.getinnerframes crashing,
2612 (VerboseTB.text): harden against inspect.getinnerframes crashing,
2606 which I've been getting reports about from Python 2.3 users. I
2613 which I've been getting reports about from Python 2.3 users. I
2607 wish I had a simple test case to reproduce the problem, so I could
2614 wish I had a simple test case to reproduce the problem, so I could
2608 either write a cleaner workaround or file a bug report if
2615 either write a cleaner workaround or file a bug report if
2609 necessary.
2616 necessary.
2610
2617
2611 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
2618 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
2612 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
2619 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
2613 a bug report by Tjabo Kloppenburg.
2620 a bug report by Tjabo Kloppenburg.
2614
2621
2615 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
2622 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
2616 crashes. Wrapped the pdb call in a blanket try/except, since pdb
2623 crashes. Wrapped the pdb call in a blanket try/except, since pdb
2617 seems rather unstable. Thanks to a bug report by Tjabo
2624 seems rather unstable. Thanks to a bug report by Tjabo
2618 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
2625 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
2619
2626
2620 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
2627 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
2621 this out soon because of the critical fixes in the inner loop for
2628 this out soon because of the critical fixes in the inner loop for
2622 generators.
2629 generators.
2623
2630
2624 * IPython/Magic.py (Magic.getargspec): removed. This (and
2631 * IPython/Magic.py (Magic.getargspec): removed. This (and
2625 _get_def) have been obsoleted by OInspect for a long time, I
2632 _get_def) have been obsoleted by OInspect for a long time, I
2626 hadn't noticed that they were dead code.
2633 hadn't noticed that they were dead code.
2627 (Magic._ofind): restored _ofind functionality for a few literals
2634 (Magic._ofind): restored _ofind functionality for a few literals
2628 (those in ["''",'""','[]','{}','()']). But it won't work anymore
2635 (those in ["''",'""','[]','{}','()']). But it won't work anymore
2629 for things like "hello".capitalize?, since that would require a
2636 for things like "hello".capitalize?, since that would require a
2630 potentially dangerous eval() again.
2637 potentially dangerous eval() again.
2631
2638
2632 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
2639 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
2633 logic a bit more to clean up the escapes handling and minimize the
2640 logic a bit more to clean up the escapes handling and minimize the
2634 use of _ofind to only necessary cases. The interactive 'feel' of
2641 use of _ofind to only necessary cases. The interactive 'feel' of
2635 IPython should have improved quite a bit with the changes in
2642 IPython should have improved quite a bit with the changes in
2636 _prefilter and _ofind (besides being far safer than before).
2643 _prefilter and _ofind (besides being far safer than before).
2637
2644
2638 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
2645 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
2639 obscure, never reported). Edit would fail to find the object to
2646 obscure, never reported). Edit would fail to find the object to
2640 edit under some circumstances.
2647 edit under some circumstances.
2641 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
2648 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
2642 which were causing double-calling of generators. Those eval calls
2649 which were causing double-calling of generators. Those eval calls
2643 were _very_ dangerous, since code with side effects could be
2650 were _very_ dangerous, since code with side effects could be
2644 triggered. As they say, 'eval is evil'... These were the
2651 triggered. As they say, 'eval is evil'... These were the
2645 nastiest evals in IPython. Besides, _ofind is now far simpler,
2652 nastiest evals in IPython. Besides, _ofind is now far simpler,
2646 and it should also be quite a bit faster. Its use of inspect is
2653 and it should also be quite a bit faster. Its use of inspect is
2647 also safer, so perhaps some of the inspect-related crashes I've
2654 also safer, so perhaps some of the inspect-related crashes I've
2648 seen lately with Python 2.3 might be taken care of. That will
2655 seen lately with Python 2.3 might be taken care of. That will
2649 need more testing.
2656 need more testing.
2650
2657
2651 2003-08-17 Fernando Perez <fperez@colorado.edu>
2658 2003-08-17 Fernando Perez <fperez@colorado.edu>
2652
2659
2653 * IPython/iplib.py (InteractiveShell._prefilter): significant
2660 * IPython/iplib.py (InteractiveShell._prefilter): significant
2654 simplifications to the logic for handling user escapes. Faster
2661 simplifications to the logic for handling user escapes. Faster
2655 and simpler code.
2662 and simpler code.
2656
2663
2657 2003-08-14 Fernando Perez <fperez@colorado.edu>
2664 2003-08-14 Fernando Perez <fperez@colorado.edu>
2658
2665
2659 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
2666 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
2660 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
2667 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
2661 but it should be quite a bit faster. And the recursive version
2668 but it should be quite a bit faster. And the recursive version
2662 generated O(log N) intermediate storage for all rank>1 arrays,
2669 generated O(log N) intermediate storage for all rank>1 arrays,
2663 even if they were contiguous.
2670 even if they were contiguous.
2664 (l1norm): Added this function.
2671 (l1norm): Added this function.
2665 (norm): Added this function for arbitrary norms (including
2672 (norm): Added this function for arbitrary norms (including
2666 l-infinity). l1 and l2 are still special cases for convenience
2673 l-infinity). l1 and l2 are still special cases for convenience
2667 and speed.
2674 and speed.
2668
2675
2669 2003-08-03 Fernando Perez <fperez@colorado.edu>
2676 2003-08-03 Fernando Perez <fperez@colorado.edu>
2670
2677
2671 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
2678 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
2672 exceptions, which now raise PendingDeprecationWarnings in Python
2679 exceptions, which now raise PendingDeprecationWarnings in Python
2673 2.3. There were some in Magic and some in Gnuplot2.
2680 2.3. There were some in Magic and some in Gnuplot2.
2674
2681
2675 2003-06-30 Fernando Perez <fperez@colorado.edu>
2682 2003-06-30 Fernando Perez <fperez@colorado.edu>
2676
2683
2677 * IPython/genutils.py (page): modified to call curses only for
2684 * IPython/genutils.py (page): modified to call curses only for
2678 terminals where TERM=='xterm'. After problems under many other
2685 terminals where TERM=='xterm'. After problems under many other
2679 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
2686 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
2680
2687
2681 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
2688 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
2682 would be triggered when readline was absent. This was just an old
2689 would be triggered when readline was absent. This was just an old
2683 debugging statement I'd forgotten to take out.
2690 debugging statement I'd forgotten to take out.
2684
2691
2685 2003-06-20 Fernando Perez <fperez@colorado.edu>
2692 2003-06-20 Fernando Perez <fperez@colorado.edu>
2686
2693
2687 * IPython/genutils.py (clock): modified to return only user time
2694 * IPython/genutils.py (clock): modified to return only user time
2688 (not counting system time), after a discussion on scipy. While
2695 (not counting system time), after a discussion on scipy. While
2689 system time may be a useful quantity occasionally, it may much
2696 system time may be a useful quantity occasionally, it may much
2690 more easily be skewed by occasional swapping or other similar
2697 more easily be skewed by occasional swapping or other similar
2691 activity.
2698 activity.
2692
2699
2693 2003-06-05 Fernando Perez <fperez@colorado.edu>
2700 2003-06-05 Fernando Perez <fperez@colorado.edu>
2694
2701
2695 * IPython/numutils.py (identity): new function, for building
2702 * IPython/numutils.py (identity): new function, for building
2696 arbitrary rank Kronecker deltas (mostly backwards compatible with
2703 arbitrary rank Kronecker deltas (mostly backwards compatible with
2697 Numeric.identity)
2704 Numeric.identity)
2698
2705
2699 2003-06-03 Fernando Perez <fperez@colorado.edu>
2706 2003-06-03 Fernando Perez <fperez@colorado.edu>
2700
2707
2701 * IPython/iplib.py (InteractiveShell.handle_magic): protect
2708 * IPython/iplib.py (InteractiveShell.handle_magic): protect
2702 arguments passed to magics with spaces, to allow trailing '\' to
2709 arguments passed to magics with spaces, to allow trailing '\' to
2703 work normally (mainly for Windows users).
2710 work normally (mainly for Windows users).
2704
2711
2705 2003-05-29 Fernando Perez <fperez@colorado.edu>
2712 2003-05-29 Fernando Perez <fperez@colorado.edu>
2706
2713
2707 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
2714 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
2708 instead of pydoc.help. This fixes a bizarre behavior where
2715 instead of pydoc.help. This fixes a bizarre behavior where
2709 printing '%s' % locals() would trigger the help system. Now
2716 printing '%s' % locals() would trigger the help system. Now
2710 ipython behaves like normal python does.
2717 ipython behaves like normal python does.
2711
2718
2712 Note that if one does 'from pydoc import help', the bizarre
2719 Note that if one does 'from pydoc import help', the bizarre
2713 behavior returns, but this will also happen in normal python, so
2720 behavior returns, but this will also happen in normal python, so
2714 it's not an ipython bug anymore (it has to do with how pydoc.help
2721 it's not an ipython bug anymore (it has to do with how pydoc.help
2715 is implemented).
2722 is implemented).
2716
2723
2717 2003-05-22 Fernando Perez <fperez@colorado.edu>
2724 2003-05-22 Fernando Perez <fperez@colorado.edu>
2718
2725
2719 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
2726 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
2720 return [] instead of None when nothing matches, also match to end
2727 return [] instead of None when nothing matches, also match to end
2721 of line. Patch by Gary Bishop.
2728 of line. Patch by Gary Bishop.
2722
2729
2723 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
2730 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
2724 protection as before, for files passed on the command line. This
2731 protection as before, for files passed on the command line. This
2725 prevents the CrashHandler from kicking in if user files call into
2732 prevents the CrashHandler from kicking in if user files call into
2726 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
2733 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
2727 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
2734 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
2728
2735
2729 2003-05-20 *** Released version 0.4.0
2736 2003-05-20 *** Released version 0.4.0
2730
2737
2731 2003-05-20 Fernando Perez <fperez@colorado.edu>
2738 2003-05-20 Fernando Perez <fperez@colorado.edu>
2732
2739
2733 * setup.py: added support for manpages. It's a bit hackish b/c of
2740 * setup.py: added support for manpages. It's a bit hackish b/c of
2734 a bug in the way the bdist_rpm distutils target handles gzipped
2741 a bug in the way the bdist_rpm distutils target handles gzipped
2735 manpages, but it works. After a patch by Jack.
2742 manpages, but it works. After a patch by Jack.
2736
2743
2737 2003-05-19 Fernando Perez <fperez@colorado.edu>
2744 2003-05-19 Fernando Perez <fperez@colorado.edu>
2738
2745
2739 * IPython/numutils.py: added a mockup of the kinds module, since
2746 * IPython/numutils.py: added a mockup of the kinds module, since
2740 it was recently removed from Numeric. This way, numutils will
2747 it was recently removed from Numeric. This way, numutils will
2741 work for all users even if they are missing kinds.
2748 work for all users even if they are missing kinds.
2742
2749
2743 * IPython/Magic.py (Magic._ofind): Harden against an inspect
2750 * IPython/Magic.py (Magic._ofind): Harden against an inspect
2744 failure, which can occur with SWIG-wrapped extensions. After a
2751 failure, which can occur with SWIG-wrapped extensions. After a
2745 crash report from Prabhu.
2752 crash report from Prabhu.
2746
2753
2747 2003-05-16 Fernando Perez <fperez@colorado.edu>
2754 2003-05-16 Fernando Perez <fperez@colorado.edu>
2748
2755
2749 * IPython/iplib.py (InteractiveShell.excepthook): New method to
2756 * IPython/iplib.py (InteractiveShell.excepthook): New method to
2750 protect ipython from user code which may call directly
2757 protect ipython from user code which may call directly
2751 sys.excepthook (this looks like an ipython crash to the user, even
2758 sys.excepthook (this looks like an ipython crash to the user, even
2752 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2759 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2753 This is especially important to help users of WxWindows, but may
2760 This is especially important to help users of WxWindows, but may
2754 also be useful in other cases.
2761 also be useful in other cases.
2755
2762
2756 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
2763 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
2757 an optional tb_offset to be specified, and to preserve exception
2764 an optional tb_offset to be specified, and to preserve exception
2758 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2765 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2759
2766
2760 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
2767 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
2761
2768
2762 2003-05-15 Fernando Perez <fperez@colorado.edu>
2769 2003-05-15 Fernando Perez <fperez@colorado.edu>
2763
2770
2764 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
2771 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
2765 installing for a new user under Windows.
2772 installing for a new user under Windows.
2766
2773
2767 2003-05-12 Fernando Perez <fperez@colorado.edu>
2774 2003-05-12 Fernando Perez <fperez@colorado.edu>
2768
2775
2769 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
2776 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
2770 handler for Emacs comint-based lines. Currently it doesn't do
2777 handler for Emacs comint-based lines. Currently it doesn't do
2771 much (but importantly, it doesn't update the history cache). In
2778 much (but importantly, it doesn't update the history cache). In
2772 the future it may be expanded if Alex needs more functionality
2779 the future it may be expanded if Alex needs more functionality
2773 there.
2780 there.
2774
2781
2775 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
2782 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
2776 info to crash reports.
2783 info to crash reports.
2777
2784
2778 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
2785 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
2779 just like Python's -c. Also fixed crash with invalid -color
2786 just like Python's -c. Also fixed crash with invalid -color
2780 option value at startup. Thanks to Will French
2787 option value at startup. Thanks to Will French
2781 <wfrench-AT-bestweb.net> for the bug report.
2788 <wfrench-AT-bestweb.net> for the bug report.
2782
2789
2783 2003-05-09 Fernando Perez <fperez@colorado.edu>
2790 2003-05-09 Fernando Perez <fperez@colorado.edu>
2784
2791
2785 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
2792 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
2786 to EvalDict (it's a mapping, after all) and simplified its code
2793 to EvalDict (it's a mapping, after all) and simplified its code
2787 quite a bit, after a nice discussion on c.l.py where Gustavo
2794 quite a bit, after a nice discussion on c.l.py where Gustavo
2788 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
2795 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
2789
2796
2790 2003-04-30 Fernando Perez <fperez@colorado.edu>
2797 2003-04-30 Fernando Perez <fperez@colorado.edu>
2791
2798
2792 * IPython/genutils.py (timings_out): modified it to reduce its
2799 * IPython/genutils.py (timings_out): modified it to reduce its
2793 overhead in the common reps==1 case.
2800 overhead in the common reps==1 case.
2794
2801
2795 2003-04-29 Fernando Perez <fperez@colorado.edu>
2802 2003-04-29 Fernando Perez <fperez@colorado.edu>
2796
2803
2797 * IPython/genutils.py (timings_out): Modified to use the resource
2804 * IPython/genutils.py (timings_out): Modified to use the resource
2798 module, which avoids the wraparound problems of time.clock().
2805 module, which avoids the wraparound problems of time.clock().
2799
2806
2800 2003-04-17 *** Released version 0.2.15pre4
2807 2003-04-17 *** Released version 0.2.15pre4
2801
2808
2802 2003-04-17 Fernando Perez <fperez@colorado.edu>
2809 2003-04-17 Fernando Perez <fperez@colorado.edu>
2803
2810
2804 * setup.py (scriptfiles): Split windows-specific stuff over to a
2811 * setup.py (scriptfiles): Split windows-specific stuff over to a
2805 separate file, in an attempt to have a Windows GUI installer.
2812 separate file, in an attempt to have a Windows GUI installer.
2806 That didn't work, but part of the groundwork is done.
2813 That didn't work, but part of the groundwork is done.
2807
2814
2808 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
2815 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
2809 indent/unindent with 4 spaces. Particularly useful in combination
2816 indent/unindent with 4 spaces. Particularly useful in combination
2810 with the new auto-indent option.
2817 with the new auto-indent option.
2811
2818
2812 2003-04-16 Fernando Perez <fperez@colorado.edu>
2819 2003-04-16 Fernando Perez <fperez@colorado.edu>
2813
2820
2814 * IPython/Magic.py: various replacements of self.rc for
2821 * IPython/Magic.py: various replacements of self.rc for
2815 self.shell.rc. A lot more remains to be done to fully disentangle
2822 self.shell.rc. A lot more remains to be done to fully disentangle
2816 this class from the main Shell class.
2823 this class from the main Shell class.
2817
2824
2818 * IPython/GnuplotRuntime.py: added checks for mouse support so
2825 * IPython/GnuplotRuntime.py: added checks for mouse support so
2819 that we don't try to enable it if the current gnuplot doesn't
2826 that we don't try to enable it if the current gnuplot doesn't
2820 really support it. Also added checks so that we don't try to
2827 really support it. Also added checks so that we don't try to
2821 enable persist under Windows (where Gnuplot doesn't recognize the
2828 enable persist under Windows (where Gnuplot doesn't recognize the
2822 option).
2829 option).
2823
2830
2824 * IPython/iplib.py (InteractiveShell.interact): Added optional
2831 * IPython/iplib.py (InteractiveShell.interact): Added optional
2825 auto-indenting code, after a patch by King C. Shu
2832 auto-indenting code, after a patch by King C. Shu
2826 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
2833 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
2827 get along well with pasting indented code. If I ever figure out
2834 get along well with pasting indented code. If I ever figure out
2828 how to make that part go well, it will become on by default.
2835 how to make that part go well, it will become on by default.
2829
2836
2830 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
2837 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
2831 crash ipython if there was an unmatched '%' in the user's prompt
2838 crash ipython if there was an unmatched '%' in the user's prompt
2832 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
2839 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
2833
2840
2834 * IPython/iplib.py (InteractiveShell.interact): removed the
2841 * IPython/iplib.py (InteractiveShell.interact): removed the
2835 ability to ask the user whether he wants to crash or not at the
2842 ability to ask the user whether he wants to crash or not at the
2836 'last line' exception handler. Calling functions at that point
2843 'last line' exception handler. Calling functions at that point
2837 changes the stack, and the error reports would have incorrect
2844 changes the stack, and the error reports would have incorrect
2838 tracebacks.
2845 tracebacks.
2839
2846
2840 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
2847 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
2841 pass through a peger a pretty-printed form of any object. After a
2848 pass through a peger a pretty-printed form of any object. After a
2842 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
2849 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
2843
2850
2844 2003-04-14 Fernando Perez <fperez@colorado.edu>
2851 2003-04-14 Fernando Perez <fperez@colorado.edu>
2845
2852
2846 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
2853 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
2847 all files in ~ would be modified at first install (instead of
2854 all files in ~ would be modified at first install (instead of
2848 ~/.ipython). This could be potentially disastrous, as the
2855 ~/.ipython). This could be potentially disastrous, as the
2849 modification (make line-endings native) could damage binary files.
2856 modification (make line-endings native) could damage binary files.
2850
2857
2851 2003-04-10 Fernando Perez <fperez@colorado.edu>
2858 2003-04-10 Fernando Perez <fperez@colorado.edu>
2852
2859
2853 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
2860 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
2854 handle only lines which are invalid python. This now means that
2861 handle only lines which are invalid python. This now means that
2855 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
2862 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
2856 for the bug report.
2863 for the bug report.
2857
2864
2858 2003-04-01 Fernando Perez <fperez@colorado.edu>
2865 2003-04-01 Fernando Perez <fperez@colorado.edu>
2859
2866
2860 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
2867 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
2861 where failing to set sys.last_traceback would crash pdb.pm().
2868 where failing to set sys.last_traceback would crash pdb.pm().
2862 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
2869 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
2863 report.
2870 report.
2864
2871
2865 2003-03-25 Fernando Perez <fperez@colorado.edu>
2872 2003-03-25 Fernando Perez <fperez@colorado.edu>
2866
2873
2867 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
2874 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
2868 before printing it (it had a lot of spurious blank lines at the
2875 before printing it (it had a lot of spurious blank lines at the
2869 end).
2876 end).
2870
2877
2871 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
2878 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
2872 output would be sent 21 times! Obviously people don't use this
2879 output would be sent 21 times! Obviously people don't use this
2873 too often, or I would have heard about it.
2880 too often, or I would have heard about it.
2874
2881
2875 2003-03-24 Fernando Perez <fperez@colorado.edu>
2882 2003-03-24 Fernando Perez <fperez@colorado.edu>
2876
2883
2877 * setup.py (scriptfiles): renamed the data_files parameter from
2884 * setup.py (scriptfiles): renamed the data_files parameter from
2878 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
2885 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
2879 for the patch.
2886 for the patch.
2880
2887
2881 2003-03-20 Fernando Perez <fperez@colorado.edu>
2888 2003-03-20 Fernando Perez <fperez@colorado.edu>
2882
2889
2883 * IPython/genutils.py (error): added error() and fatal()
2890 * IPython/genutils.py (error): added error() and fatal()
2884 functions.
2891 functions.
2885
2892
2886 2003-03-18 *** Released version 0.2.15pre3
2893 2003-03-18 *** Released version 0.2.15pre3
2887
2894
2888 2003-03-18 Fernando Perez <fperez@colorado.edu>
2895 2003-03-18 Fernando Perez <fperez@colorado.edu>
2889
2896
2890 * setupext/install_data_ext.py
2897 * setupext/install_data_ext.py
2891 (install_data_ext.initialize_options): Class contributed by Jack
2898 (install_data_ext.initialize_options): Class contributed by Jack
2892 Moffit for fixing the old distutils hack. He is sending this to
2899 Moffit for fixing the old distutils hack. He is sending this to
2893 the distutils folks so in the future we may not need it as a
2900 the distutils folks so in the future we may not need it as a
2894 private fix.
2901 private fix.
2895
2902
2896 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
2903 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
2897 changes for Debian packaging. See his patch for full details.
2904 changes for Debian packaging. See his patch for full details.
2898 The old distutils hack of making the ipythonrc* files carry a
2905 The old distutils hack of making the ipythonrc* files carry a
2899 bogus .py extension is gone, at last. Examples were moved to a
2906 bogus .py extension is gone, at last. Examples were moved to a
2900 separate subdir under doc/, and the separate executable scripts
2907 separate subdir under doc/, and the separate executable scripts
2901 now live in their own directory. Overall a great cleanup. The
2908 now live in their own directory. Overall a great cleanup. The
2902 manual was updated to use the new files, and setup.py has been
2909 manual was updated to use the new files, and setup.py has been
2903 fixed for this setup.
2910 fixed for this setup.
2904
2911
2905 * IPython/PyColorize.py (Parser.usage): made non-executable and
2912 * IPython/PyColorize.py (Parser.usage): made non-executable and
2906 created a pycolor wrapper around it to be included as a script.
2913 created a pycolor wrapper around it to be included as a script.
2907
2914
2908 2003-03-12 *** Released version 0.2.15pre2
2915 2003-03-12 *** Released version 0.2.15pre2
2909
2916
2910 2003-03-12 Fernando Perez <fperez@colorado.edu>
2917 2003-03-12 Fernando Perez <fperez@colorado.edu>
2911
2918
2912 * IPython/ColorANSI.py (make_color_table): Finally fixed the
2919 * IPython/ColorANSI.py (make_color_table): Finally fixed the
2913 long-standing problem with garbage characters in some terminals.
2920 long-standing problem with garbage characters in some terminals.
2914 The issue was really that the \001 and \002 escapes must _only_ be
2921 The issue was really that the \001 and \002 escapes must _only_ be
2915 passed to input prompts (which call readline), but _never_ to
2922 passed to input prompts (which call readline), but _never_ to
2916 normal text to be printed on screen. I changed ColorANSI to have
2923 normal text to be printed on screen. I changed ColorANSI to have
2917 two classes: TermColors and InputTermColors, each with the
2924 two classes: TermColors and InputTermColors, each with the
2918 appropriate escapes for input prompts or normal text. The code in
2925 appropriate escapes for input prompts or normal text. The code in
2919 Prompts.py got slightly more complicated, but this very old and
2926 Prompts.py got slightly more complicated, but this very old and
2920 annoying bug is finally fixed.
2927 annoying bug is finally fixed.
2921
2928
2922 All the credit for nailing down the real origin of this problem
2929 All the credit for nailing down the real origin of this problem
2923 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
2930 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
2924 *Many* thanks to him for spending quite a bit of effort on this.
2931 *Many* thanks to him for spending quite a bit of effort on this.
2925
2932
2926 2003-03-05 *** Released version 0.2.15pre1
2933 2003-03-05 *** Released version 0.2.15pre1
2927
2934
2928 2003-03-03 Fernando Perez <fperez@colorado.edu>
2935 2003-03-03 Fernando Perez <fperez@colorado.edu>
2929
2936
2930 * IPython/FakeModule.py: Moved the former _FakeModule to a
2937 * IPython/FakeModule.py: Moved the former _FakeModule to a
2931 separate file, because it's also needed by Magic (to fix a similar
2938 separate file, because it's also needed by Magic (to fix a similar
2932 pickle-related issue in @run).
2939 pickle-related issue in @run).
2933
2940
2934 2003-03-02 Fernando Perez <fperez@colorado.edu>
2941 2003-03-02 Fernando Perez <fperez@colorado.edu>
2935
2942
2936 * IPython/Magic.py (Magic.magic_autocall): new magic to control
2943 * IPython/Magic.py (Magic.magic_autocall): new magic to control
2937 the autocall option at runtime.
2944 the autocall option at runtime.
2938 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
2945 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
2939 across Magic.py to start separating Magic from InteractiveShell.
2946 across Magic.py to start separating Magic from InteractiveShell.
2940 (Magic._ofind): Fixed to return proper namespace for dotted
2947 (Magic._ofind): Fixed to return proper namespace for dotted
2941 names. Before, a dotted name would always return 'not currently
2948 names. Before, a dotted name would always return 'not currently
2942 defined', because it would find the 'parent'. s.x would be found,
2949 defined', because it would find the 'parent'. s.x would be found,
2943 but since 'x' isn't defined by itself, it would get confused.
2950 but since 'x' isn't defined by itself, it would get confused.
2944 (Magic.magic_run): Fixed pickling problems reported by Ralf
2951 (Magic.magic_run): Fixed pickling problems reported by Ralf
2945 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
2952 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
2946 that I'd used when Mike Heeter reported similar issues at the
2953 that I'd used when Mike Heeter reported similar issues at the
2947 top-level, but now for @run. It boils down to injecting the
2954 top-level, but now for @run. It boils down to injecting the
2948 namespace where code is being executed with something that looks
2955 namespace where code is being executed with something that looks
2949 enough like a module to fool pickle.dump(). Since a pickle stores
2956 enough like a module to fool pickle.dump(). Since a pickle stores
2950 a named reference to the importing module, we need this for
2957 a named reference to the importing module, we need this for
2951 pickles to save something sensible.
2958 pickles to save something sensible.
2952
2959
2953 * IPython/ipmaker.py (make_IPython): added an autocall option.
2960 * IPython/ipmaker.py (make_IPython): added an autocall option.
2954
2961
2955 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
2962 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
2956 the auto-eval code. Now autocalling is an option, and the code is
2963 the auto-eval code. Now autocalling is an option, and the code is
2957 also vastly safer. There is no more eval() involved at all.
2964 also vastly safer. There is no more eval() involved at all.
2958
2965
2959 2003-03-01 Fernando Perez <fperez@colorado.edu>
2966 2003-03-01 Fernando Perez <fperez@colorado.edu>
2960
2967
2961 * IPython/Magic.py (Magic._ofind): Changed interface to return a
2968 * IPython/Magic.py (Magic._ofind): Changed interface to return a
2962 dict with named keys instead of a tuple.
2969 dict with named keys instead of a tuple.
2963
2970
2964 * IPython: Started using CVS for IPython as of 0.2.15pre1.
2971 * IPython: Started using CVS for IPython as of 0.2.15pre1.
2965
2972
2966 * setup.py (make_shortcut): Fixed message about directories
2973 * setup.py (make_shortcut): Fixed message about directories
2967 created during Windows installation (the directories were ok, just
2974 created during Windows installation (the directories were ok, just
2968 the printed message was misleading). Thanks to Chris Liechti
2975 the printed message was misleading). Thanks to Chris Liechti
2969 <cliechti-AT-gmx.net> for the heads up.
2976 <cliechti-AT-gmx.net> for the heads up.
2970
2977
2971 2003-02-21 Fernando Perez <fperez@colorado.edu>
2978 2003-02-21 Fernando Perez <fperez@colorado.edu>
2972
2979
2973 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
2980 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
2974 of ValueError exception when checking for auto-execution. This
2981 of ValueError exception when checking for auto-execution. This
2975 one is raised by things like Numeric arrays arr.flat when the
2982 one is raised by things like Numeric arrays arr.flat when the
2976 array is non-contiguous.
2983 array is non-contiguous.
2977
2984
2978 2003-01-31 Fernando Perez <fperez@colorado.edu>
2985 2003-01-31 Fernando Perez <fperez@colorado.edu>
2979
2986
2980 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
2987 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
2981 not return any value at all (even though the command would get
2988 not return any value at all (even though the command would get
2982 executed).
2989 executed).
2983 (xsys): Flush stdout right after printing the command to ensure
2990 (xsys): Flush stdout right after printing the command to ensure
2984 proper ordering of commands and command output in the total
2991 proper ordering of commands and command output in the total
2985 output.
2992 output.
2986 (SystemExec/xsys/bq): Switched the names of xsys/bq and
2993 (SystemExec/xsys/bq): Switched the names of xsys/bq and
2987 system/getoutput as defaults. The old ones are kept for
2994 system/getoutput as defaults. The old ones are kept for
2988 compatibility reasons, so no code which uses this library needs
2995 compatibility reasons, so no code which uses this library needs
2989 changing.
2996 changing.
2990
2997
2991 2003-01-27 *** Released version 0.2.14
2998 2003-01-27 *** Released version 0.2.14
2992
2999
2993 2003-01-25 Fernando Perez <fperez@colorado.edu>
3000 2003-01-25 Fernando Perez <fperez@colorado.edu>
2994
3001
2995 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3002 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
2996 functions defined in previous edit sessions could not be re-edited
3003 functions defined in previous edit sessions could not be re-edited
2997 (because the temp files were immediately removed). Now temp files
3004 (because the temp files were immediately removed). Now temp files
2998 are removed only at IPython's exit.
3005 are removed only at IPython's exit.
2999 (Magic.magic_run): Improved @run to perform shell-like expansions
3006 (Magic.magic_run): Improved @run to perform shell-like expansions
3000 on its arguments (~users and $VARS). With this, @run becomes more
3007 on its arguments (~users and $VARS). With this, @run becomes more
3001 like a normal command-line.
3008 like a normal command-line.
3002
3009
3003 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3010 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3004 bugs related to embedding and cleaned up that code. A fairly
3011 bugs related to embedding and cleaned up that code. A fairly
3005 important one was the impossibility to access the global namespace
3012 important one was the impossibility to access the global namespace
3006 through the embedded IPython (only local variables were visible).
3013 through the embedded IPython (only local variables were visible).
3007
3014
3008 2003-01-14 Fernando Perez <fperez@colorado.edu>
3015 2003-01-14 Fernando Perez <fperez@colorado.edu>
3009
3016
3010 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3017 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3011 auto-calling to be a bit more conservative. Now it doesn't get
3018 auto-calling to be a bit more conservative. Now it doesn't get
3012 triggered if any of '!=()<>' are in the rest of the input line, to
3019 triggered if any of '!=()<>' are in the rest of the input line, to
3013 allow comparing callables. Thanks to Alex for the heads up.
3020 allow comparing callables. Thanks to Alex for the heads up.
3014
3021
3015 2003-01-07 Fernando Perez <fperez@colorado.edu>
3022 2003-01-07 Fernando Perez <fperez@colorado.edu>
3016
3023
3017 * IPython/genutils.py (page): fixed estimation of the number of
3024 * IPython/genutils.py (page): fixed estimation of the number of
3018 lines in a string to be paged to simply count newlines. This
3025 lines in a string to be paged to simply count newlines. This
3019 prevents over-guessing due to embedded escape sequences. A better
3026 prevents over-guessing due to embedded escape sequences. A better
3020 long-term solution would involve stripping out the control chars
3027 long-term solution would involve stripping out the control chars
3021 for the count, but it's potentially so expensive I just don't
3028 for the count, but it's potentially so expensive I just don't
3022 think it's worth doing.
3029 think it's worth doing.
3023
3030
3024 2002-12-19 *** Released version 0.2.14pre50
3031 2002-12-19 *** Released version 0.2.14pre50
3025
3032
3026 2002-12-19 Fernando Perez <fperez@colorado.edu>
3033 2002-12-19 Fernando Perez <fperez@colorado.edu>
3027
3034
3028 * tools/release (version): Changed release scripts to inform
3035 * tools/release (version): Changed release scripts to inform
3029 Andrea and build a NEWS file with a list of recent changes.
3036 Andrea and build a NEWS file with a list of recent changes.
3030
3037
3031 * IPython/ColorANSI.py (__all__): changed terminal detection
3038 * IPython/ColorANSI.py (__all__): changed terminal detection
3032 code. Seems to work better for xterms without breaking
3039 code. Seems to work better for xterms without breaking
3033 konsole. Will need more testing to determine if WinXP and Mac OSX
3040 konsole. Will need more testing to determine if WinXP and Mac OSX
3034 also work ok.
3041 also work ok.
3035
3042
3036 2002-12-18 *** Released version 0.2.14pre49
3043 2002-12-18 *** Released version 0.2.14pre49
3037
3044
3038 2002-12-18 Fernando Perez <fperez@colorado.edu>
3045 2002-12-18 Fernando Perez <fperez@colorado.edu>
3039
3046
3040 * Docs: added new info about Mac OSX, from Andrea.
3047 * Docs: added new info about Mac OSX, from Andrea.
3041
3048
3042 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3049 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3043 allow direct plotting of python strings whose format is the same
3050 allow direct plotting of python strings whose format is the same
3044 of gnuplot data files.
3051 of gnuplot data files.
3045
3052
3046 2002-12-16 Fernando Perez <fperez@colorado.edu>
3053 2002-12-16 Fernando Perez <fperez@colorado.edu>
3047
3054
3048 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3055 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3049 value of exit question to be acknowledged.
3056 value of exit question to be acknowledged.
3050
3057
3051 2002-12-03 Fernando Perez <fperez@colorado.edu>
3058 2002-12-03 Fernando Perez <fperez@colorado.edu>
3052
3059
3053 * IPython/ipmaker.py: removed generators, which had been added
3060 * IPython/ipmaker.py: removed generators, which had been added
3054 by mistake in an earlier debugging run. This was causing trouble
3061 by mistake in an earlier debugging run. This was causing trouble
3055 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3062 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3056 for pointing this out.
3063 for pointing this out.
3057
3064
3058 2002-11-17 Fernando Perez <fperez@colorado.edu>
3065 2002-11-17 Fernando Perez <fperez@colorado.edu>
3059
3066
3060 * Manual: updated the Gnuplot section.
3067 * Manual: updated the Gnuplot section.
3061
3068
3062 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3069 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3063 a much better split of what goes in Runtime and what goes in
3070 a much better split of what goes in Runtime and what goes in
3064 Interactive.
3071 Interactive.
3065
3072
3066 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3073 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3067 being imported from iplib.
3074 being imported from iplib.
3068
3075
3069 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3076 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3070 for command-passing. Now the global Gnuplot instance is called
3077 for command-passing. Now the global Gnuplot instance is called
3071 'gp' instead of 'g', which was really a far too fragile and
3078 'gp' instead of 'g', which was really a far too fragile and
3072 common name.
3079 common name.
3073
3080
3074 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3081 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3075 bounding boxes generated by Gnuplot for square plots.
3082 bounding boxes generated by Gnuplot for square plots.
3076
3083
3077 * IPython/genutils.py (popkey): new function added. I should
3084 * IPython/genutils.py (popkey): new function added. I should
3078 suggest this on c.l.py as a dict method, it seems useful.
3085 suggest this on c.l.py as a dict method, it seems useful.
3079
3086
3080 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3087 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3081 to transparently handle PostScript generation. MUCH better than
3088 to transparently handle PostScript generation. MUCH better than
3082 the previous plot_eps/replot_eps (which I removed now). The code
3089 the previous plot_eps/replot_eps (which I removed now). The code
3083 is also fairly clean and well documented now (including
3090 is also fairly clean and well documented now (including
3084 docstrings).
3091 docstrings).
3085
3092
3086 2002-11-13 Fernando Perez <fperez@colorado.edu>
3093 2002-11-13 Fernando Perez <fperez@colorado.edu>
3087
3094
3088 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3095 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3089 (inconsistent with options).
3096 (inconsistent with options).
3090
3097
3091 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3098 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3092 manually disabled, I don't know why. Fixed it.
3099 manually disabled, I don't know why. Fixed it.
3093 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3100 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3094 eps output.
3101 eps output.
3095
3102
3096 2002-11-12 Fernando Perez <fperez@colorado.edu>
3103 2002-11-12 Fernando Perez <fperez@colorado.edu>
3097
3104
3098 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3105 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3099 don't propagate up to caller. Fixes crash reported by François
3106 don't propagate up to caller. Fixes crash reported by François
3100 Pinard.
3107 Pinard.
3101
3108
3102 2002-11-09 Fernando Perez <fperez@colorado.edu>
3109 2002-11-09 Fernando Perez <fperez@colorado.edu>
3103
3110
3104 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3111 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3105 history file for new users.
3112 history file for new users.
3106 (make_IPython): fixed bug where initial install would leave the
3113 (make_IPython): fixed bug where initial install would leave the
3107 user running in the .ipython dir.
3114 user running in the .ipython dir.
3108 (make_IPython): fixed bug where config dir .ipython would be
3115 (make_IPython): fixed bug where config dir .ipython would be
3109 created regardless of the given -ipythondir option. Thanks to Cory
3116 created regardless of the given -ipythondir option. Thanks to Cory
3110 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3117 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3111
3118
3112 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3119 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3113 type confirmations. Will need to use it in all of IPython's code
3120 type confirmations. Will need to use it in all of IPython's code
3114 consistently.
3121 consistently.
3115
3122
3116 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3123 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3117 context to print 31 lines instead of the default 5. This will make
3124 context to print 31 lines instead of the default 5. This will make
3118 the crash reports extremely detailed in case the problem is in
3125 the crash reports extremely detailed in case the problem is in
3119 libraries I don't have access to.
3126 libraries I don't have access to.
3120
3127
3121 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3128 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3122 line of defense' code to still crash, but giving users fair
3129 line of defense' code to still crash, but giving users fair
3123 warning. I don't want internal errors to go unreported: if there's
3130 warning. I don't want internal errors to go unreported: if there's
3124 an internal problem, IPython should crash and generate a full
3131 an internal problem, IPython should crash and generate a full
3125 report.
3132 report.
3126
3133
3127 2002-11-08 Fernando Perez <fperez@colorado.edu>
3134 2002-11-08 Fernando Perez <fperez@colorado.edu>
3128
3135
3129 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3136 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3130 otherwise uncaught exceptions which can appear if people set
3137 otherwise uncaught exceptions which can appear if people set
3131 sys.stdout to something badly broken. Thanks to a crash report
3138 sys.stdout to something badly broken. Thanks to a crash report
3132 from henni-AT-mail.brainbot.com.
3139 from henni-AT-mail.brainbot.com.
3133
3140
3134 2002-11-04 Fernando Perez <fperez@colorado.edu>
3141 2002-11-04 Fernando Perez <fperez@colorado.edu>
3135
3142
3136 * IPython/iplib.py (InteractiveShell.interact): added
3143 * IPython/iplib.py (InteractiveShell.interact): added
3137 __IPYTHON__active to the builtins. It's a flag which goes on when
3144 __IPYTHON__active to the builtins. It's a flag which goes on when
3138 the interaction starts and goes off again when it stops. This
3145 the interaction starts and goes off again when it stops. This
3139 allows embedding code to detect being inside IPython. Before this
3146 allows embedding code to detect being inside IPython. Before this
3140 was done via __IPYTHON__, but that only shows that an IPython
3147 was done via __IPYTHON__, but that only shows that an IPython
3141 instance has been created.
3148 instance has been created.
3142
3149
3143 * IPython/Magic.py (Magic.magic_env): I realized that in a
3150 * IPython/Magic.py (Magic.magic_env): I realized that in a
3144 UserDict, instance.data holds the data as a normal dict. So I
3151 UserDict, instance.data holds the data as a normal dict. So I
3145 modified @env to return os.environ.data instead of rebuilding a
3152 modified @env to return os.environ.data instead of rebuilding a
3146 dict by hand.
3153 dict by hand.
3147
3154
3148 2002-11-02 Fernando Perez <fperez@colorado.edu>
3155 2002-11-02 Fernando Perez <fperez@colorado.edu>
3149
3156
3150 * IPython/genutils.py (warn): changed so that level 1 prints no
3157 * IPython/genutils.py (warn): changed so that level 1 prints no
3151 header. Level 2 is now the default (with 'WARNING' header, as
3158 header. Level 2 is now the default (with 'WARNING' header, as
3152 before). I think I tracked all places where changes were needed in
3159 before). I think I tracked all places where changes were needed in
3153 IPython, but outside code using the old level numbering may have
3160 IPython, but outside code using the old level numbering may have
3154 broken.
3161 broken.
3155
3162
3156 * IPython/iplib.py (InteractiveShell.runcode): added this to
3163 * IPython/iplib.py (InteractiveShell.runcode): added this to
3157 handle the tracebacks in SystemExit traps correctly. The previous
3164 handle the tracebacks in SystemExit traps correctly. The previous
3158 code (through interact) was printing more of the stack than
3165 code (through interact) was printing more of the stack than
3159 necessary, showing IPython internal code to the user.
3166 necessary, showing IPython internal code to the user.
3160
3167
3161 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3168 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3162 default. Now that the default at the confirmation prompt is yes,
3169 default. Now that the default at the confirmation prompt is yes,
3163 it's not so intrusive. François' argument that ipython sessions
3170 it's not so intrusive. François' argument that ipython sessions
3164 tend to be complex enough not to lose them from an accidental C-d,
3171 tend to be complex enough not to lose them from an accidental C-d,
3165 is a valid one.
3172 is a valid one.
3166
3173
3167 * IPython/iplib.py (InteractiveShell.interact): added a
3174 * IPython/iplib.py (InteractiveShell.interact): added a
3168 showtraceback() call to the SystemExit trap, and modified the exit
3175 showtraceback() call to the SystemExit trap, and modified the exit
3169 confirmation to have yes as the default.
3176 confirmation to have yes as the default.
3170
3177
3171 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3178 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3172 this file. It's been gone from the code for a long time, this was
3179 this file. It's been gone from the code for a long time, this was
3173 simply leftover junk.
3180 simply leftover junk.
3174
3181
3175 2002-11-01 Fernando Perez <fperez@colorado.edu>
3182 2002-11-01 Fernando Perez <fperez@colorado.edu>
3176
3183
3177 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3184 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3178 added. If set, IPython now traps EOF and asks for
3185 added. If set, IPython now traps EOF and asks for
3179 confirmation. After a request by François Pinard.
3186 confirmation. After a request by François Pinard.
3180
3187
3181 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3188 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3182 of @abort, and with a new (better) mechanism for handling the
3189 of @abort, and with a new (better) mechanism for handling the
3183 exceptions.
3190 exceptions.
3184
3191
3185 2002-10-27 Fernando Perez <fperez@colorado.edu>
3192 2002-10-27 Fernando Perez <fperez@colorado.edu>
3186
3193
3187 * IPython/usage.py (__doc__): updated the --help information and
3194 * IPython/usage.py (__doc__): updated the --help information and
3188 the ipythonrc file to indicate that -log generates
3195 the ipythonrc file to indicate that -log generates
3189 ./ipython.log. Also fixed the corresponding info in @logstart.
3196 ./ipython.log. Also fixed the corresponding info in @logstart.
3190 This and several other fixes in the manuals thanks to reports by
3197 This and several other fixes in the manuals thanks to reports by
3191 François Pinard <pinard-AT-iro.umontreal.ca>.
3198 François Pinard <pinard-AT-iro.umontreal.ca>.
3192
3199
3193 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3200 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3194 refer to @logstart (instead of @log, which doesn't exist).
3201 refer to @logstart (instead of @log, which doesn't exist).
3195
3202
3196 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3203 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3197 AttributeError crash. Thanks to Christopher Armstrong
3204 AttributeError crash. Thanks to Christopher Armstrong
3198 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3205 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3199 introduced recently (in 0.2.14pre37) with the fix to the eval
3206 introduced recently (in 0.2.14pre37) with the fix to the eval
3200 problem mentioned below.
3207 problem mentioned below.
3201
3208
3202 2002-10-17 Fernando Perez <fperez@colorado.edu>
3209 2002-10-17 Fernando Perez <fperez@colorado.edu>
3203
3210
3204 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3211 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3205 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3212 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3206
3213
3207 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3214 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3208 this function to fix a problem reported by Alex Schmolck. He saw
3215 this function to fix a problem reported by Alex Schmolck. He saw
3209 it with list comprehensions and generators, which were getting
3216 it with list comprehensions and generators, which were getting
3210 called twice. The real problem was an 'eval' call in testing for
3217 called twice. The real problem was an 'eval' call in testing for
3211 automagic which was evaluating the input line silently.
3218 automagic which was evaluating the input line silently.
3212
3219
3213 This is a potentially very nasty bug, if the input has side
3220 This is a potentially very nasty bug, if the input has side
3214 effects which must not be repeated. The code is much cleaner now,
3221 effects which must not be repeated. The code is much cleaner now,
3215 without any blanket 'except' left and with a regexp test for
3222 without any blanket 'except' left and with a regexp test for
3216 actual function names.
3223 actual function names.
3217
3224
3218 But an eval remains, which I'm not fully comfortable with. I just
3225 But an eval remains, which I'm not fully comfortable with. I just
3219 don't know how to find out if an expression could be a callable in
3226 don't know how to find out if an expression could be a callable in
3220 the user's namespace without doing an eval on the string. However
3227 the user's namespace without doing an eval on the string. However
3221 that string is now much more strictly checked so that no code
3228 that string is now much more strictly checked so that no code
3222 slips by, so the eval should only happen for things that can
3229 slips by, so the eval should only happen for things that can
3223 really be only function/method names.
3230 really be only function/method names.
3224
3231
3225 2002-10-15 Fernando Perez <fperez@colorado.edu>
3232 2002-10-15 Fernando Perez <fperez@colorado.edu>
3226
3233
3227 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3234 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3228 OSX information to main manual, removed README_Mac_OSX file from
3235 OSX information to main manual, removed README_Mac_OSX file from
3229 distribution. Also updated credits for recent additions.
3236 distribution. Also updated credits for recent additions.
3230
3237
3231 2002-10-10 Fernando Perez <fperez@colorado.edu>
3238 2002-10-10 Fernando Perez <fperez@colorado.edu>
3232
3239
3233 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3240 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3234 terminal-related issues. Many thanks to Andrea Riciputi
3241 terminal-related issues. Many thanks to Andrea Riciputi
3235 <andrea.riciputi-AT-libero.it> for writing it.
3242 <andrea.riciputi-AT-libero.it> for writing it.
3236
3243
3237 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3244 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3238 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3245 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3239
3246
3240 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3247 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3241 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3248 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3242 <syver-en-AT-online.no> who both submitted patches for this problem.
3249 <syver-en-AT-online.no> who both submitted patches for this problem.
3243
3250
3244 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3251 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3245 global embedding to make sure that things don't overwrite user
3252 global embedding to make sure that things don't overwrite user
3246 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3253 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3247
3254
3248 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3255 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3249 compatibility. Thanks to Hayden Callow
3256 compatibility. Thanks to Hayden Callow
3250 <h.callow-AT-elec.canterbury.ac.nz>
3257 <h.callow-AT-elec.canterbury.ac.nz>
3251
3258
3252 2002-10-04 Fernando Perez <fperez@colorado.edu>
3259 2002-10-04 Fernando Perez <fperez@colorado.edu>
3253
3260
3254 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3261 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3255 Gnuplot.File objects.
3262 Gnuplot.File objects.
3256
3263
3257 2002-07-23 Fernando Perez <fperez@colorado.edu>
3264 2002-07-23 Fernando Perez <fperez@colorado.edu>
3258
3265
3259 * IPython/genutils.py (timing): Added timings() and timing() for
3266 * IPython/genutils.py (timing): Added timings() and timing() for
3260 quick access to the most commonly needed data, the execution
3267 quick access to the most commonly needed data, the execution
3261 times. Old timing() renamed to timings_out().
3268 times. Old timing() renamed to timings_out().
3262
3269
3263 2002-07-18 Fernando Perez <fperez@colorado.edu>
3270 2002-07-18 Fernando Perez <fperez@colorado.edu>
3264
3271
3265 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3272 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3266 bug with nested instances disrupting the parent's tab completion.
3273 bug with nested instances disrupting the parent's tab completion.
3267
3274
3268 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3275 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3269 all_completions code to begin the emacs integration.
3276 all_completions code to begin the emacs integration.
3270
3277
3271 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3278 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3272 argument to allow titling individual arrays when plotting.
3279 argument to allow titling individual arrays when plotting.
3273
3280
3274 2002-07-15 Fernando Perez <fperez@colorado.edu>
3281 2002-07-15 Fernando Perez <fperez@colorado.edu>
3275
3282
3276 * setup.py (make_shortcut): changed to retrieve the value of
3283 * setup.py (make_shortcut): changed to retrieve the value of
3277 'Program Files' directory from the registry (this value changes in
3284 'Program Files' directory from the registry (this value changes in
3278 non-english versions of Windows). Thanks to Thomas Fanslau
3285 non-english versions of Windows). Thanks to Thomas Fanslau
3279 <tfanslau-AT-gmx.de> for the report.
3286 <tfanslau-AT-gmx.de> for the report.
3280
3287
3281 2002-07-10 Fernando Perez <fperez@colorado.edu>
3288 2002-07-10 Fernando Perez <fperez@colorado.edu>
3282
3289
3283 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3290 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3284 a bug in pdb, which crashes if a line with only whitespace is
3291 a bug in pdb, which crashes if a line with only whitespace is
3285 entered. Bug report submitted to sourceforge.
3292 entered. Bug report submitted to sourceforge.
3286
3293
3287 2002-07-09 Fernando Perez <fperez@colorado.edu>
3294 2002-07-09 Fernando Perez <fperez@colorado.edu>
3288
3295
3289 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3296 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3290 reporting exceptions (it's a bug in inspect.py, I just set a
3297 reporting exceptions (it's a bug in inspect.py, I just set a
3291 workaround).
3298 workaround).
3292
3299
3293 2002-07-08 Fernando Perez <fperez@colorado.edu>
3300 2002-07-08 Fernando Perez <fperez@colorado.edu>
3294
3301
3295 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3302 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3296 __IPYTHON__ in __builtins__ to show up in user_ns.
3303 __IPYTHON__ in __builtins__ to show up in user_ns.
3297
3304
3298 2002-07-03 Fernando Perez <fperez@colorado.edu>
3305 2002-07-03 Fernando Perez <fperez@colorado.edu>
3299
3306
3300 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3307 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3301 name from @gp_set_instance to @gp_set_default.
3308 name from @gp_set_instance to @gp_set_default.
3302
3309
3303 * IPython/ipmaker.py (make_IPython): default editor value set to
3310 * IPython/ipmaker.py (make_IPython): default editor value set to
3304 '0' (a string), to match the rc file. Otherwise will crash when
3311 '0' (a string), to match the rc file. Otherwise will crash when
3305 .strip() is called on it.
3312 .strip() is called on it.
3306
3313
3307
3314
3308 2002-06-28 Fernando Perez <fperez@colorado.edu>
3315 2002-06-28 Fernando Perez <fperez@colorado.edu>
3309
3316
3310 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3317 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3311 of files in current directory when a file is executed via
3318 of files in current directory when a file is executed via
3312 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3319 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3313
3320
3314 * setup.py (manfiles): fix for rpm builds, submitted by RA
3321 * setup.py (manfiles): fix for rpm builds, submitted by RA
3315 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3322 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3316
3323
3317 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3324 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3318 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3325 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3319 string!). A. Schmolck caught this one.
3326 string!). A. Schmolck caught this one.
3320
3327
3321 2002-06-27 Fernando Perez <fperez@colorado.edu>
3328 2002-06-27 Fernando Perez <fperez@colorado.edu>
3322
3329
3323 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3330 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3324 defined files at the cmd line. __name__ wasn't being set to
3331 defined files at the cmd line. __name__ wasn't being set to
3325 __main__.
3332 __main__.
3326
3333
3327 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3334 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3328 regular lists and tuples besides Numeric arrays.
3335 regular lists and tuples besides Numeric arrays.
3329
3336
3330 * IPython/Prompts.py (CachedOutput.__call__): Added output
3337 * IPython/Prompts.py (CachedOutput.__call__): Added output
3331 supression for input ending with ';'. Similar to Mathematica and
3338 supression for input ending with ';'. Similar to Mathematica and
3332 Matlab. The _* vars and Out[] list are still updated, just like
3339 Matlab. The _* vars and Out[] list are still updated, just like
3333 Mathematica behaves.
3340 Mathematica behaves.
3334
3341
3335 2002-06-25 Fernando Perez <fperez@colorado.edu>
3342 2002-06-25 Fernando Perez <fperez@colorado.edu>
3336
3343
3337 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3344 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3338 .ini extensions for profiels under Windows.
3345 .ini extensions for profiels under Windows.
3339
3346
3340 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3347 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3341 string form. Fix contributed by Alexander Schmolck
3348 string form. Fix contributed by Alexander Schmolck
3342 <a.schmolck-AT-gmx.net>
3349 <a.schmolck-AT-gmx.net>
3343
3350
3344 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3351 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3345 pre-configured Gnuplot instance.
3352 pre-configured Gnuplot instance.
3346
3353
3347 2002-06-21 Fernando Perez <fperez@colorado.edu>
3354 2002-06-21 Fernando Perez <fperez@colorado.edu>
3348
3355
3349 * IPython/numutils.py (exp_safe): new function, works around the
3356 * IPython/numutils.py (exp_safe): new function, works around the
3350 underflow problems in Numeric.
3357 underflow problems in Numeric.
3351 (log2): New fn. Safe log in base 2: returns exact integer answer
3358 (log2): New fn. Safe log in base 2: returns exact integer answer
3352 for exact integer powers of 2.
3359 for exact integer powers of 2.
3353
3360
3354 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3361 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3355 properly.
3362 properly.
3356
3363
3357 2002-06-20 Fernando Perez <fperez@colorado.edu>
3364 2002-06-20 Fernando Perez <fperez@colorado.edu>
3358
3365
3359 * IPython/genutils.py (timing): new function like
3366 * IPython/genutils.py (timing): new function like
3360 Mathematica's. Similar to time_test, but returns more info.
3367 Mathematica's. Similar to time_test, but returns more info.
3361
3368
3362 2002-06-18 Fernando Perez <fperez@colorado.edu>
3369 2002-06-18 Fernando Perez <fperez@colorado.edu>
3363
3370
3364 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3371 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3365 according to Mike Heeter's suggestions.
3372 according to Mike Heeter's suggestions.
3366
3373
3367 2002-06-16 Fernando Perez <fperez@colorado.edu>
3374 2002-06-16 Fernando Perez <fperez@colorado.edu>
3368
3375
3369 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3376 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3370 system. GnuplotMagic is gone as a user-directory option. New files
3377 system. GnuplotMagic is gone as a user-directory option. New files
3371 make it easier to use all the gnuplot stuff both from external
3378 make it easier to use all the gnuplot stuff both from external
3372 programs as well as from IPython. Had to rewrite part of
3379 programs as well as from IPython. Had to rewrite part of
3373 hardcopy() b/c of a strange bug: often the ps files simply don't
3380 hardcopy() b/c of a strange bug: often the ps files simply don't
3374 get created, and require a repeat of the command (often several
3381 get created, and require a repeat of the command (often several
3375 times).
3382 times).
3376
3383
3377 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3384 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3378 resolve output channel at call time, so that if sys.stderr has
3385 resolve output channel at call time, so that if sys.stderr has
3379 been redirected by user this gets honored.
3386 been redirected by user this gets honored.
3380
3387
3381 2002-06-13 Fernando Perez <fperez@colorado.edu>
3388 2002-06-13 Fernando Perez <fperez@colorado.edu>
3382
3389
3383 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3390 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3384 IPShell. Kept a copy with the old names to avoid breaking people's
3391 IPShell. Kept a copy with the old names to avoid breaking people's
3385 embedded code.
3392 embedded code.
3386
3393
3387 * IPython/ipython: simplified it to the bare minimum after
3394 * IPython/ipython: simplified it to the bare minimum after
3388 Holger's suggestions. Added info about how to use it in
3395 Holger's suggestions. Added info about how to use it in
3389 PYTHONSTARTUP.
3396 PYTHONSTARTUP.
3390
3397
3391 * IPython/Shell.py (IPythonShell): changed the options passing
3398 * IPython/Shell.py (IPythonShell): changed the options passing
3392 from a string with funky %s replacements to a straight list. Maybe
3399 from a string with funky %s replacements to a straight list. Maybe
3393 a bit more typing, but it follows sys.argv conventions, so there's
3400 a bit more typing, but it follows sys.argv conventions, so there's
3394 less special-casing to remember.
3401 less special-casing to remember.
3395
3402
3396 2002-06-12 Fernando Perez <fperez@colorado.edu>
3403 2002-06-12 Fernando Perez <fperez@colorado.edu>
3397
3404
3398 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3405 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3399 command. Thanks to a suggestion by Mike Heeter.
3406 command. Thanks to a suggestion by Mike Heeter.
3400 (Magic.magic_pfile): added behavior to look at filenames if given
3407 (Magic.magic_pfile): added behavior to look at filenames if given
3401 arg is not a defined object.
3408 arg is not a defined object.
3402 (Magic.magic_save): New @save function to save code snippets. Also
3409 (Magic.magic_save): New @save function to save code snippets. Also
3403 a Mike Heeter idea.
3410 a Mike Heeter idea.
3404
3411
3405 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3412 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3406 plot() and replot(). Much more convenient now, especially for
3413 plot() and replot(). Much more convenient now, especially for
3407 interactive use.
3414 interactive use.
3408
3415
3409 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3416 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3410 filenames.
3417 filenames.
3411
3418
3412 2002-06-02 Fernando Perez <fperez@colorado.edu>
3419 2002-06-02 Fernando Perez <fperez@colorado.edu>
3413
3420
3414 * IPython/Struct.py (Struct.__init__): modified to admit
3421 * IPython/Struct.py (Struct.__init__): modified to admit
3415 initialization via another struct.
3422 initialization via another struct.
3416
3423
3417 * IPython/genutils.py (SystemExec.__init__): New stateful
3424 * IPython/genutils.py (SystemExec.__init__): New stateful
3418 interface to xsys and bq. Useful for writing system scripts.
3425 interface to xsys and bq. Useful for writing system scripts.
3419
3426
3420 2002-05-30 Fernando Perez <fperez@colorado.edu>
3427 2002-05-30 Fernando Perez <fperez@colorado.edu>
3421
3428
3422 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3429 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3423 documents. This will make the user download smaller (it's getting
3430 documents. This will make the user download smaller (it's getting
3424 too big).
3431 too big).
3425
3432
3426 2002-05-29 Fernando Perez <fperez@colorado.edu>
3433 2002-05-29 Fernando Perez <fperez@colorado.edu>
3427
3434
3428 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3435 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3429 fix problems with shelve and pickle. Seems to work, but I don't
3436 fix problems with shelve and pickle. Seems to work, but I don't
3430 know if corner cases break it. Thanks to Mike Heeter
3437 know if corner cases break it. Thanks to Mike Heeter
3431 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3438 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3432
3439
3433 2002-05-24 Fernando Perez <fperez@colorado.edu>
3440 2002-05-24 Fernando Perez <fperez@colorado.edu>
3434
3441
3435 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3442 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3436 macros having broken.
3443 macros having broken.
3437
3444
3438 2002-05-21 Fernando Perez <fperez@colorado.edu>
3445 2002-05-21 Fernando Perez <fperez@colorado.edu>
3439
3446
3440 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3447 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3441 introduced logging bug: all history before logging started was
3448 introduced logging bug: all history before logging started was
3442 being written one character per line! This came from the redesign
3449 being written one character per line! This came from the redesign
3443 of the input history as a special list which slices to strings,
3450 of the input history as a special list which slices to strings,
3444 not to lists.
3451 not to lists.
3445
3452
3446 2002-05-20 Fernando Perez <fperez@colorado.edu>
3453 2002-05-20 Fernando Perez <fperez@colorado.edu>
3447
3454
3448 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3455 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3449 be an attribute of all classes in this module. The design of these
3456 be an attribute of all classes in this module. The design of these
3450 classes needs some serious overhauling.
3457 classes needs some serious overhauling.
3451
3458
3452 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3459 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3453 which was ignoring '_' in option names.
3460 which was ignoring '_' in option names.
3454
3461
3455 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3462 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3456 'Verbose_novars' to 'Context' and made it the new default. It's a
3463 'Verbose_novars' to 'Context' and made it the new default. It's a
3457 bit more readable and also safer than verbose.
3464 bit more readable and also safer than verbose.
3458
3465
3459 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3466 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3460 triple-quoted strings.
3467 triple-quoted strings.
3461
3468
3462 * IPython/OInspect.py (__all__): new module exposing the object
3469 * IPython/OInspect.py (__all__): new module exposing the object
3463 introspection facilities. Now the corresponding magics are dummy
3470 introspection facilities. Now the corresponding magics are dummy
3464 wrappers around this. Having this module will make it much easier
3471 wrappers around this. Having this module will make it much easier
3465 to put these functions into our modified pdb.
3472 to put these functions into our modified pdb.
3466 This new object inspector system uses the new colorizing module,
3473 This new object inspector system uses the new colorizing module,
3467 so source code and other things are nicely syntax highlighted.
3474 so source code and other things are nicely syntax highlighted.
3468
3475
3469 2002-05-18 Fernando Perez <fperez@colorado.edu>
3476 2002-05-18 Fernando Perez <fperez@colorado.edu>
3470
3477
3471 * IPython/ColorANSI.py: Split the coloring tools into a separate
3478 * IPython/ColorANSI.py: Split the coloring tools into a separate
3472 module so I can use them in other code easier (they were part of
3479 module so I can use them in other code easier (they were part of
3473 ultraTB).
3480 ultraTB).
3474
3481
3475 2002-05-17 Fernando Perez <fperez@colorado.edu>
3482 2002-05-17 Fernando Perez <fperez@colorado.edu>
3476
3483
3477 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3484 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3478 fixed it to set the global 'g' also to the called instance, as
3485 fixed it to set the global 'g' also to the called instance, as
3479 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3486 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3480 user's 'g' variables).
3487 user's 'g' variables).
3481
3488
3482 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3489 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3483 global variables (aliases to _ih,_oh) so that users which expect
3490 global variables (aliases to _ih,_oh) so that users which expect
3484 In[5] or Out[7] to work aren't unpleasantly surprised.
3491 In[5] or Out[7] to work aren't unpleasantly surprised.
3485 (InputList.__getslice__): new class to allow executing slices of
3492 (InputList.__getslice__): new class to allow executing slices of
3486 input history directly. Very simple class, complements the use of
3493 input history directly. Very simple class, complements the use of
3487 macros.
3494 macros.
3488
3495
3489 2002-05-16 Fernando Perez <fperez@colorado.edu>
3496 2002-05-16 Fernando Perez <fperez@colorado.edu>
3490
3497
3491 * setup.py (docdirbase): make doc directory be just doc/IPython
3498 * setup.py (docdirbase): make doc directory be just doc/IPython
3492 without version numbers, it will reduce clutter for users.
3499 without version numbers, it will reduce clutter for users.
3493
3500
3494 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3501 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3495 execfile call to prevent possible memory leak. See for details:
3502 execfile call to prevent possible memory leak. See for details:
3496 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3503 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3497
3504
3498 2002-05-15 Fernando Perez <fperez@colorado.edu>
3505 2002-05-15 Fernando Perez <fperez@colorado.edu>
3499
3506
3500 * IPython/Magic.py (Magic.magic_psource): made the object
3507 * IPython/Magic.py (Magic.magic_psource): made the object
3501 introspection names be more standard: pdoc, pdef, pfile and
3508 introspection names be more standard: pdoc, pdef, pfile and
3502 psource. They all print/page their output, and it makes
3509 psource. They all print/page their output, and it makes
3503 remembering them easier. Kept old names for compatibility as
3510 remembering them easier. Kept old names for compatibility as
3504 aliases.
3511 aliases.
3505
3512
3506 2002-05-14 Fernando Perez <fperez@colorado.edu>
3513 2002-05-14 Fernando Perez <fperez@colorado.edu>
3507
3514
3508 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3515 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3509 what the mouse problem was. The trick is to use gnuplot with temp
3516 what the mouse problem was. The trick is to use gnuplot with temp
3510 files and NOT with pipes (for data communication), because having
3517 files and NOT with pipes (for data communication), because having
3511 both pipes and the mouse on is bad news.
3518 both pipes and the mouse on is bad news.
3512
3519
3513 2002-05-13 Fernando Perez <fperez@colorado.edu>
3520 2002-05-13 Fernando Perez <fperez@colorado.edu>
3514
3521
3515 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3522 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3516 bug. Information would be reported about builtins even when
3523 bug. Information would be reported about builtins even when
3517 user-defined functions overrode them.
3524 user-defined functions overrode them.
3518
3525
3519 2002-05-11 Fernando Perez <fperez@colorado.edu>
3526 2002-05-11 Fernando Perez <fperez@colorado.edu>
3520
3527
3521 * IPython/__init__.py (__all__): removed FlexCompleter from
3528 * IPython/__init__.py (__all__): removed FlexCompleter from
3522 __all__ so that things don't fail in platforms without readline.
3529 __all__ so that things don't fail in platforms without readline.
3523
3530
3524 2002-05-10 Fernando Perez <fperez@colorado.edu>
3531 2002-05-10 Fernando Perez <fperez@colorado.edu>
3525
3532
3526 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3533 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3527 it requires Numeric, effectively making Numeric a dependency for
3534 it requires Numeric, effectively making Numeric a dependency for
3528 IPython.
3535 IPython.
3529
3536
3530 * Released 0.2.13
3537 * Released 0.2.13
3531
3538
3532 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3539 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3533 profiler interface. Now all the major options from the profiler
3540 profiler interface. Now all the major options from the profiler
3534 module are directly supported in IPython, both for single
3541 module are directly supported in IPython, both for single
3535 expressions (@prun) and for full programs (@run -p).
3542 expressions (@prun) and for full programs (@run -p).
3536
3543
3537 2002-05-09 Fernando Perez <fperez@colorado.edu>
3544 2002-05-09 Fernando Perez <fperez@colorado.edu>
3538
3545
3539 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3546 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3540 magic properly formatted for screen.
3547 magic properly formatted for screen.
3541
3548
3542 * setup.py (make_shortcut): Changed things to put pdf version in
3549 * setup.py (make_shortcut): Changed things to put pdf version in
3543 doc/ instead of doc/manual (had to change lyxport a bit).
3550 doc/ instead of doc/manual (had to change lyxport a bit).
3544
3551
3545 * IPython/Magic.py (Profile.string_stats): made profile runs go
3552 * IPython/Magic.py (Profile.string_stats): made profile runs go
3546 through pager (they are long and a pager allows searching, saving,
3553 through pager (they are long and a pager allows searching, saving,
3547 etc.)
3554 etc.)
3548
3555
3549 2002-05-08 Fernando Perez <fperez@colorado.edu>
3556 2002-05-08 Fernando Perez <fperez@colorado.edu>
3550
3557
3551 * Released 0.2.12
3558 * Released 0.2.12
3552
3559
3553 2002-05-06 Fernando Perez <fperez@colorado.edu>
3560 2002-05-06 Fernando Perez <fperez@colorado.edu>
3554
3561
3555 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3562 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3556 introduced); 'hist n1 n2' was broken.
3563 introduced); 'hist n1 n2' was broken.
3557 (Magic.magic_pdb): added optional on/off arguments to @pdb
3564 (Magic.magic_pdb): added optional on/off arguments to @pdb
3558 (Magic.magic_run): added option -i to @run, which executes code in
3565 (Magic.magic_run): added option -i to @run, which executes code in
3559 the IPython namespace instead of a clean one. Also added @irun as
3566 the IPython namespace instead of a clean one. Also added @irun as
3560 an alias to @run -i.
3567 an alias to @run -i.
3561
3568
3562 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3569 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3563 fixed (it didn't really do anything, the namespaces were wrong).
3570 fixed (it didn't really do anything, the namespaces were wrong).
3564
3571
3565 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3572 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3566
3573
3567 * IPython/__init__.py (__all__): Fixed package namespace, now
3574 * IPython/__init__.py (__all__): Fixed package namespace, now
3568 'import IPython' does give access to IPython.<all> as
3575 'import IPython' does give access to IPython.<all> as
3569 expected. Also renamed __release__ to Release.
3576 expected. Also renamed __release__ to Release.
3570
3577
3571 * IPython/Debugger.py (__license__): created new Pdb class which
3578 * IPython/Debugger.py (__license__): created new Pdb class which
3572 functions like a drop-in for the normal pdb.Pdb but does NOT
3579 functions like a drop-in for the normal pdb.Pdb but does NOT
3573 import readline by default. This way it doesn't muck up IPython's
3580 import readline by default. This way it doesn't muck up IPython's
3574 readline handling, and now tab-completion finally works in the
3581 readline handling, and now tab-completion finally works in the
3575 debugger -- sort of. It completes things globally visible, but the
3582 debugger -- sort of. It completes things globally visible, but the
3576 completer doesn't track the stack as pdb walks it. That's a bit
3583 completer doesn't track the stack as pdb walks it. That's a bit
3577 tricky, and I'll have to implement it later.
3584 tricky, and I'll have to implement it later.
3578
3585
3579 2002-05-05 Fernando Perez <fperez@colorado.edu>
3586 2002-05-05 Fernando Perez <fperez@colorado.edu>
3580
3587
3581 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3588 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3582 magic docstrings when printed via ? (explicit \'s were being
3589 magic docstrings when printed via ? (explicit \'s were being
3583 printed).
3590 printed).
3584
3591
3585 * IPython/ipmaker.py (make_IPython): fixed namespace
3592 * IPython/ipmaker.py (make_IPython): fixed namespace
3586 identification bug. Now variables loaded via logs or command-line
3593 identification bug. Now variables loaded via logs or command-line
3587 files are recognized in the interactive namespace by @who.
3594 files are recognized in the interactive namespace by @who.
3588
3595
3589 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3596 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3590 log replay system stemming from the string form of Structs.
3597 log replay system stemming from the string form of Structs.
3591
3598
3592 * IPython/Magic.py (Macro.__init__): improved macros to properly
3599 * IPython/Magic.py (Macro.__init__): improved macros to properly
3593 handle magic commands in them.
3600 handle magic commands in them.
3594 (Magic.magic_logstart): usernames are now expanded so 'logstart
3601 (Magic.magic_logstart): usernames are now expanded so 'logstart
3595 ~/mylog' now works.
3602 ~/mylog' now works.
3596
3603
3597 * IPython/iplib.py (complete): fixed bug where paths starting with
3604 * IPython/iplib.py (complete): fixed bug where paths starting with
3598 '/' would be completed as magic names.
3605 '/' would be completed as magic names.
3599
3606
3600 2002-05-04 Fernando Perez <fperez@colorado.edu>
3607 2002-05-04 Fernando Perez <fperez@colorado.edu>
3601
3608
3602 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
3609 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
3603 allow running full programs under the profiler's control.
3610 allow running full programs under the profiler's control.
3604
3611
3605 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
3612 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
3606 mode to report exceptions verbosely but without formatting
3613 mode to report exceptions verbosely but without formatting
3607 variables. This addresses the issue of ipython 'freezing' (it's
3614 variables. This addresses the issue of ipython 'freezing' (it's
3608 not frozen, but caught in an expensive formatting loop) when huge
3615 not frozen, but caught in an expensive formatting loop) when huge
3609 variables are in the context of an exception.
3616 variables are in the context of an exception.
3610 (VerboseTB.text): Added '--->' markers at line where exception was
3617 (VerboseTB.text): Added '--->' markers at line where exception was
3611 triggered. Much clearer to read, especially in NoColor modes.
3618 triggered. Much clearer to read, especially in NoColor modes.
3612
3619
3613 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
3620 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
3614 implemented in reverse when changing to the new parse_options().
3621 implemented in reverse when changing to the new parse_options().
3615
3622
3616 2002-05-03 Fernando Perez <fperez@colorado.edu>
3623 2002-05-03 Fernando Perez <fperez@colorado.edu>
3617
3624
3618 * IPython/Magic.py (Magic.parse_options): new function so that
3625 * IPython/Magic.py (Magic.parse_options): new function so that
3619 magics can parse options easier.
3626 magics can parse options easier.
3620 (Magic.magic_prun): new function similar to profile.run(),
3627 (Magic.magic_prun): new function similar to profile.run(),
3621 suggested by Chris Hart.
3628 suggested by Chris Hart.
3622 (Magic.magic_cd): fixed behavior so that it only changes if
3629 (Magic.magic_cd): fixed behavior so that it only changes if
3623 directory actually is in history.
3630 directory actually is in history.
3624
3631
3625 * IPython/usage.py (__doc__): added information about potential
3632 * IPython/usage.py (__doc__): added information about potential
3626 slowness of Verbose exception mode when there are huge data
3633 slowness of Verbose exception mode when there are huge data
3627 structures to be formatted (thanks to Archie Paulson).
3634 structures to be formatted (thanks to Archie Paulson).
3628
3635
3629 * IPython/ipmaker.py (make_IPython): Changed default logging
3636 * IPython/ipmaker.py (make_IPython): Changed default logging
3630 (when simply called with -log) to use curr_dir/ipython.log in
3637 (when simply called with -log) to use curr_dir/ipython.log in
3631 rotate mode. Fixed crash which was occuring with -log before
3638 rotate mode. Fixed crash which was occuring with -log before
3632 (thanks to Jim Boyle).
3639 (thanks to Jim Boyle).
3633
3640
3634 2002-05-01 Fernando Perez <fperez@colorado.edu>
3641 2002-05-01 Fernando Perez <fperez@colorado.edu>
3635
3642
3636 * Released 0.2.11 for these fixes (mainly the ultraTB one which
3643 * Released 0.2.11 for these fixes (mainly the ultraTB one which
3637 was nasty -- though somewhat of a corner case).
3644 was nasty -- though somewhat of a corner case).
3638
3645
3639 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
3646 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
3640 text (was a bug).
3647 text (was a bug).
3641
3648
3642 2002-04-30 Fernando Perez <fperez@colorado.edu>
3649 2002-04-30 Fernando Perez <fperez@colorado.edu>
3643
3650
3644 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
3651 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
3645 a print after ^D or ^C from the user so that the In[] prompt
3652 a print after ^D or ^C from the user so that the In[] prompt
3646 doesn't over-run the gnuplot one.
3653 doesn't over-run the gnuplot one.
3647
3654
3648 2002-04-29 Fernando Perez <fperez@colorado.edu>
3655 2002-04-29 Fernando Perez <fperez@colorado.edu>
3649
3656
3650 * Released 0.2.10
3657 * Released 0.2.10
3651
3658
3652 * IPython/__release__.py (version): get date dynamically.
3659 * IPython/__release__.py (version): get date dynamically.
3653
3660
3654 * Misc. documentation updates thanks to Arnd's comments. Also ran
3661 * Misc. documentation updates thanks to Arnd's comments. Also ran
3655 a full spellcheck on the manual (hadn't been done in a while).
3662 a full spellcheck on the manual (hadn't been done in a while).
3656
3663
3657 2002-04-27 Fernando Perez <fperez@colorado.edu>
3664 2002-04-27 Fernando Perez <fperez@colorado.edu>
3658
3665
3659 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
3666 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
3660 starting a log in mid-session would reset the input history list.
3667 starting a log in mid-session would reset the input history list.
3661
3668
3662 2002-04-26 Fernando Perez <fperez@colorado.edu>
3669 2002-04-26 Fernando Perez <fperez@colorado.edu>
3663
3670
3664 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
3671 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
3665 all files were being included in an update. Now anything in
3672 all files were being included in an update. Now anything in
3666 UserConfig that matches [A-Za-z]*.py will go (this excludes
3673 UserConfig that matches [A-Za-z]*.py will go (this excludes
3667 __init__.py)
3674 __init__.py)
3668
3675
3669 2002-04-25 Fernando Perez <fperez@colorado.edu>
3676 2002-04-25 Fernando Perez <fperez@colorado.edu>
3670
3677
3671 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
3678 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
3672 to __builtins__ so that any form of embedded or imported code can
3679 to __builtins__ so that any form of embedded or imported code can
3673 test for being inside IPython.
3680 test for being inside IPython.
3674
3681
3675 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
3682 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
3676 changed to GnuplotMagic because it's now an importable module,
3683 changed to GnuplotMagic because it's now an importable module,
3677 this makes the name follow that of the standard Gnuplot module.
3684 this makes the name follow that of the standard Gnuplot module.
3678 GnuplotMagic can now be loaded at any time in mid-session.
3685 GnuplotMagic can now be loaded at any time in mid-session.
3679
3686
3680 2002-04-24 Fernando Perez <fperez@colorado.edu>
3687 2002-04-24 Fernando Perez <fperez@colorado.edu>
3681
3688
3682 * IPython/numutils.py: removed SIUnits. It doesn't properly set
3689 * IPython/numutils.py: removed SIUnits. It doesn't properly set
3683 the globals (IPython has its own namespace) and the
3690 the globals (IPython has its own namespace) and the
3684 PhysicalQuantity stuff is much better anyway.
3691 PhysicalQuantity stuff is much better anyway.
3685
3692
3686 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
3693 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
3687 embedding example to standard user directory for
3694 embedding example to standard user directory for
3688 distribution. Also put it in the manual.
3695 distribution. Also put it in the manual.
3689
3696
3690 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
3697 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
3691 instance as first argument (so it doesn't rely on some obscure
3698 instance as first argument (so it doesn't rely on some obscure
3692 hidden global).
3699 hidden global).
3693
3700
3694 * IPython/UserConfig/ipythonrc.py: put () back in accepted
3701 * IPython/UserConfig/ipythonrc.py: put () back in accepted
3695 delimiters. While it prevents ().TAB from working, it allows
3702 delimiters. While it prevents ().TAB from working, it allows
3696 completions in open (... expressions. This is by far a more common
3703 completions in open (... expressions. This is by far a more common
3697 case.
3704 case.
3698
3705
3699 2002-04-23 Fernando Perez <fperez@colorado.edu>
3706 2002-04-23 Fernando Perez <fperez@colorado.edu>
3700
3707
3701 * IPython/Extensions/InterpreterPasteInput.py: new
3708 * IPython/Extensions/InterpreterPasteInput.py: new
3702 syntax-processing module for pasting lines with >>> or ... at the
3709 syntax-processing module for pasting lines with >>> or ... at the
3703 start.
3710 start.
3704
3711
3705 * IPython/Extensions/PhysicalQ_Interactive.py
3712 * IPython/Extensions/PhysicalQ_Interactive.py
3706 (PhysicalQuantityInteractive.__int__): fixed to work with either
3713 (PhysicalQuantityInteractive.__int__): fixed to work with either
3707 Numeric or math.
3714 Numeric or math.
3708
3715
3709 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
3716 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
3710 provided profiles. Now we have:
3717 provided profiles. Now we have:
3711 -math -> math module as * and cmath with its own namespace.
3718 -math -> math module as * and cmath with its own namespace.
3712 -numeric -> Numeric as *, plus gnuplot & grace
3719 -numeric -> Numeric as *, plus gnuplot & grace
3713 -physics -> same as before
3720 -physics -> same as before
3714
3721
3715 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
3722 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
3716 user-defined magics wouldn't be found by @magic if they were
3723 user-defined magics wouldn't be found by @magic if they were
3717 defined as class methods. Also cleaned up the namespace search
3724 defined as class methods. Also cleaned up the namespace search
3718 logic and the string building (to use %s instead of many repeated
3725 logic and the string building (to use %s instead of many repeated
3719 string adds).
3726 string adds).
3720
3727
3721 * IPython/UserConfig/example-magic.py (magic_foo): updated example
3728 * IPython/UserConfig/example-magic.py (magic_foo): updated example
3722 of user-defined magics to operate with class methods (cleaner, in
3729 of user-defined magics to operate with class methods (cleaner, in
3723 line with the gnuplot code).
3730 line with the gnuplot code).
3724
3731
3725 2002-04-22 Fernando Perez <fperez@colorado.edu>
3732 2002-04-22 Fernando Perez <fperez@colorado.edu>
3726
3733
3727 * setup.py: updated dependency list so that manual is updated when
3734 * setup.py: updated dependency list so that manual is updated when
3728 all included files change.
3735 all included files change.
3729
3736
3730 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
3737 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
3731 the delimiter removal option (the fix is ugly right now).
3738 the delimiter removal option (the fix is ugly right now).
3732
3739
3733 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
3740 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
3734 all of the math profile (quicker loading, no conflict between
3741 all of the math profile (quicker loading, no conflict between
3735 g-9.8 and g-gnuplot).
3742 g-9.8 and g-gnuplot).
3736
3743
3737 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
3744 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
3738 name of post-mortem files to IPython_crash_report.txt.
3745 name of post-mortem files to IPython_crash_report.txt.
3739
3746
3740 * Cleanup/update of the docs. Added all the new readline info and
3747 * Cleanup/update of the docs. Added all the new readline info and
3741 formatted all lists as 'real lists'.
3748 formatted all lists as 'real lists'.
3742
3749
3743 * IPython/ipmaker.py (make_IPython): removed now-obsolete
3750 * IPython/ipmaker.py (make_IPython): removed now-obsolete
3744 tab-completion options, since the full readline parse_and_bind is
3751 tab-completion options, since the full readline parse_and_bind is
3745 now accessible.
3752 now accessible.
3746
3753
3747 * IPython/iplib.py (InteractiveShell.init_readline): Changed
3754 * IPython/iplib.py (InteractiveShell.init_readline): Changed
3748 handling of readline options. Now users can specify any string to
3755 handling of readline options. Now users can specify any string to
3749 be passed to parse_and_bind(), as well as the delimiters to be
3756 be passed to parse_and_bind(), as well as the delimiters to be
3750 removed.
3757 removed.
3751 (InteractiveShell.__init__): Added __name__ to the global
3758 (InteractiveShell.__init__): Added __name__ to the global
3752 namespace so that things like Itpl which rely on its existence
3759 namespace so that things like Itpl which rely on its existence
3753 don't crash.
3760 don't crash.
3754 (InteractiveShell._prefilter): Defined the default with a _ so
3761 (InteractiveShell._prefilter): Defined the default with a _ so
3755 that prefilter() is easier to override, while the default one
3762 that prefilter() is easier to override, while the default one
3756 remains available.
3763 remains available.
3757
3764
3758 2002-04-18 Fernando Perez <fperez@colorado.edu>
3765 2002-04-18 Fernando Perez <fperez@colorado.edu>
3759
3766
3760 * Added information about pdb in the docs.
3767 * Added information about pdb in the docs.
3761
3768
3762 2002-04-17 Fernando Perez <fperez@colorado.edu>
3769 2002-04-17 Fernando Perez <fperez@colorado.edu>
3763
3770
3764 * IPython/ipmaker.py (make_IPython): added rc_override option to
3771 * IPython/ipmaker.py (make_IPython): added rc_override option to
3765 allow passing config options at creation time which may override
3772 allow passing config options at creation time which may override
3766 anything set in the config files or command line. This is
3773 anything set in the config files or command line. This is
3767 particularly useful for configuring embedded instances.
3774 particularly useful for configuring embedded instances.
3768
3775
3769 2002-04-15 Fernando Perez <fperez@colorado.edu>
3776 2002-04-15 Fernando Perez <fperez@colorado.edu>
3770
3777
3771 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
3778 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
3772 crash embedded instances because of the input cache falling out of
3779 crash embedded instances because of the input cache falling out of
3773 sync with the output counter.
3780 sync with the output counter.
3774
3781
3775 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
3782 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
3776 mode which calls pdb after an uncaught exception in IPython itself.
3783 mode which calls pdb after an uncaught exception in IPython itself.
3777
3784
3778 2002-04-14 Fernando Perez <fperez@colorado.edu>
3785 2002-04-14 Fernando Perez <fperez@colorado.edu>
3779
3786
3780 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
3787 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
3781 readline, fix it back after each call.
3788 readline, fix it back after each call.
3782
3789
3783 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
3790 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
3784 method to force all access via __call__(), which guarantees that
3791 method to force all access via __call__(), which guarantees that
3785 traceback references are properly deleted.
3792 traceback references are properly deleted.
3786
3793
3787 * IPython/Prompts.py (CachedOutput._display): minor fixes to
3794 * IPython/Prompts.py (CachedOutput._display): minor fixes to
3788 improve printing when pprint is in use.
3795 improve printing when pprint is in use.
3789
3796
3790 2002-04-13 Fernando Perez <fperez@colorado.edu>
3797 2002-04-13 Fernando Perez <fperez@colorado.edu>
3791
3798
3792 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
3799 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
3793 exceptions aren't caught anymore. If the user triggers one, he
3800 exceptions aren't caught anymore. If the user triggers one, he
3794 should know why he's doing it and it should go all the way up,
3801 should know why he's doing it and it should go all the way up,
3795 just like any other exception. So now @abort will fully kill the
3802 just like any other exception. So now @abort will fully kill the
3796 embedded interpreter and the embedding code (unless that happens
3803 embedded interpreter and the embedding code (unless that happens
3797 to catch SystemExit).
3804 to catch SystemExit).
3798
3805
3799 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
3806 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
3800 and a debugger() method to invoke the interactive pdb debugger
3807 and a debugger() method to invoke the interactive pdb debugger
3801 after printing exception information. Also added the corresponding
3808 after printing exception information. Also added the corresponding
3802 -pdb option and @pdb magic to control this feature, and updated
3809 -pdb option and @pdb magic to control this feature, and updated
3803 the docs. After a suggestion from Christopher Hart
3810 the docs. After a suggestion from Christopher Hart
3804 (hart-AT-caltech.edu).
3811 (hart-AT-caltech.edu).
3805
3812
3806 2002-04-12 Fernando Perez <fperez@colorado.edu>
3813 2002-04-12 Fernando Perez <fperez@colorado.edu>
3807
3814
3808 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
3815 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
3809 the exception handlers defined by the user (not the CrashHandler)
3816 the exception handlers defined by the user (not the CrashHandler)
3810 so that user exceptions don't trigger an ipython bug report.
3817 so that user exceptions don't trigger an ipython bug report.
3811
3818
3812 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
3819 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
3813 configurable (it should have always been so).
3820 configurable (it should have always been so).
3814
3821
3815 2002-03-26 Fernando Perez <fperez@colorado.edu>
3822 2002-03-26 Fernando Perez <fperez@colorado.edu>
3816
3823
3817 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
3824 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
3818 and there to fix embedding namespace issues. This should all be
3825 and there to fix embedding namespace issues. This should all be
3819 done in a more elegant way.
3826 done in a more elegant way.
3820
3827
3821 2002-03-25 Fernando Perez <fperez@colorado.edu>
3828 2002-03-25 Fernando Perez <fperez@colorado.edu>
3822
3829
3823 * IPython/genutils.py (get_home_dir): Try to make it work under
3830 * IPython/genutils.py (get_home_dir): Try to make it work under
3824 win9x also.
3831 win9x also.
3825
3832
3826 2002-03-20 Fernando Perez <fperez@colorado.edu>
3833 2002-03-20 Fernando Perez <fperez@colorado.edu>
3827
3834
3828 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
3835 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
3829 sys.displayhook untouched upon __init__.
3836 sys.displayhook untouched upon __init__.
3830
3837
3831 2002-03-19 Fernando Perez <fperez@colorado.edu>
3838 2002-03-19 Fernando Perez <fperez@colorado.edu>
3832
3839
3833 * Released 0.2.9 (for embedding bug, basically).
3840 * Released 0.2.9 (for embedding bug, basically).
3834
3841
3835 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
3842 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
3836 exceptions so that enclosing shell's state can be restored.
3843 exceptions so that enclosing shell's state can be restored.
3837
3844
3838 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
3845 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
3839 naming conventions in the .ipython/ dir.
3846 naming conventions in the .ipython/ dir.
3840
3847
3841 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
3848 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
3842 from delimiters list so filenames with - in them get expanded.
3849 from delimiters list so filenames with - in them get expanded.
3843
3850
3844 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
3851 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
3845 sys.displayhook not being properly restored after an embedded call.
3852 sys.displayhook not being properly restored after an embedded call.
3846
3853
3847 2002-03-18 Fernando Perez <fperez@colorado.edu>
3854 2002-03-18 Fernando Perez <fperez@colorado.edu>
3848
3855
3849 * Released 0.2.8
3856 * Released 0.2.8
3850
3857
3851 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
3858 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
3852 some files weren't being included in a -upgrade.
3859 some files weren't being included in a -upgrade.
3853 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
3860 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
3854 on' so that the first tab completes.
3861 on' so that the first tab completes.
3855 (InteractiveShell.handle_magic): fixed bug with spaces around
3862 (InteractiveShell.handle_magic): fixed bug with spaces around
3856 quotes breaking many magic commands.
3863 quotes breaking many magic commands.
3857
3864
3858 * setup.py: added note about ignoring the syntax error messages at
3865 * setup.py: added note about ignoring the syntax error messages at
3859 installation.
3866 installation.
3860
3867
3861 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
3868 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
3862 streamlining the gnuplot interface, now there's only one magic @gp.
3869 streamlining the gnuplot interface, now there's only one magic @gp.
3863
3870
3864 2002-03-17 Fernando Perez <fperez@colorado.edu>
3871 2002-03-17 Fernando Perez <fperez@colorado.edu>
3865
3872
3866 * IPython/UserConfig/magic_gnuplot.py: new name for the
3873 * IPython/UserConfig/magic_gnuplot.py: new name for the
3867 example-magic_pm.py file. Much enhanced system, now with a shell
3874 example-magic_pm.py file. Much enhanced system, now with a shell
3868 for communicating directly with gnuplot, one command at a time.
3875 for communicating directly with gnuplot, one command at a time.
3869
3876
3870 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
3877 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
3871 setting __name__=='__main__'.
3878 setting __name__=='__main__'.
3872
3879
3873 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
3880 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
3874 mini-shell for accessing gnuplot from inside ipython. Should
3881 mini-shell for accessing gnuplot from inside ipython. Should
3875 extend it later for grace access too. Inspired by Arnd's
3882 extend it later for grace access too. Inspired by Arnd's
3876 suggestion.
3883 suggestion.
3877
3884
3878 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
3885 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
3879 calling magic functions with () in their arguments. Thanks to Arnd
3886 calling magic functions with () in their arguments. Thanks to Arnd
3880 Baecker for pointing this to me.
3887 Baecker for pointing this to me.
3881
3888
3882 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
3889 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
3883 infinitely for integer or complex arrays (only worked with floats).
3890 infinitely for integer or complex arrays (only worked with floats).
3884
3891
3885 2002-03-16 Fernando Perez <fperez@colorado.edu>
3892 2002-03-16 Fernando Perez <fperez@colorado.edu>
3886
3893
3887 * setup.py: Merged setup and setup_windows into a single script
3894 * setup.py: Merged setup and setup_windows into a single script
3888 which properly handles things for windows users.
3895 which properly handles things for windows users.
3889
3896
3890 2002-03-15 Fernando Perez <fperez@colorado.edu>
3897 2002-03-15 Fernando Perez <fperez@colorado.edu>
3891
3898
3892 * Big change to the manual: now the magics are all automatically
3899 * Big change to the manual: now the magics are all automatically
3893 documented. This information is generated from their docstrings
3900 documented. This information is generated from their docstrings
3894 and put in a latex file included by the manual lyx file. This way
3901 and put in a latex file included by the manual lyx file. This way
3895 we get always up to date information for the magics. The manual
3902 we get always up to date information for the magics. The manual
3896 now also has proper version information, also auto-synced.
3903 now also has proper version information, also auto-synced.
3897
3904
3898 For this to work, an undocumented --magic_docstrings option was added.
3905 For this to work, an undocumented --magic_docstrings option was added.
3899
3906
3900 2002-03-13 Fernando Perez <fperez@colorado.edu>
3907 2002-03-13 Fernando Perez <fperez@colorado.edu>
3901
3908
3902 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
3909 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
3903 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
3910 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
3904
3911
3905 2002-03-12 Fernando Perez <fperez@colorado.edu>
3912 2002-03-12 Fernando Perez <fperez@colorado.edu>
3906
3913
3907 * IPython/ultraTB.py (TermColors): changed color escapes again to
3914 * IPython/ultraTB.py (TermColors): changed color escapes again to
3908 fix the (old, reintroduced) line-wrapping bug. Basically, if
3915 fix the (old, reintroduced) line-wrapping bug. Basically, if
3909 \001..\002 aren't given in the color escapes, lines get wrapped
3916 \001..\002 aren't given in the color escapes, lines get wrapped
3910 weirdly. But giving those screws up old xterms and emacs terms. So
3917 weirdly. But giving those screws up old xterms and emacs terms. So
3911 I added some logic for emacs terms to be ok, but I can't identify old
3918 I added some logic for emacs terms to be ok, but I can't identify old
3912 xterms separately ($TERM=='xterm' for many terminals, like konsole).
3919 xterms separately ($TERM=='xterm' for many terminals, like konsole).
3913
3920
3914 2002-03-10 Fernando Perez <fperez@colorado.edu>
3921 2002-03-10 Fernando Perez <fperez@colorado.edu>
3915
3922
3916 * IPython/usage.py (__doc__): Various documentation cleanups and
3923 * IPython/usage.py (__doc__): Various documentation cleanups and
3917 updates, both in usage docstrings and in the manual.
3924 updates, both in usage docstrings and in the manual.
3918
3925
3919 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
3926 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
3920 handling of caching. Set minimum acceptabe value for having a
3927 handling of caching. Set minimum acceptabe value for having a
3921 cache at 20 values.
3928 cache at 20 values.
3922
3929
3923 * IPython/iplib.py (InteractiveShell.user_setup): moved the
3930 * IPython/iplib.py (InteractiveShell.user_setup): moved the
3924 install_first_time function to a method, renamed it and added an
3931 install_first_time function to a method, renamed it and added an
3925 'upgrade' mode. Now people can update their config directory with
3932 'upgrade' mode. Now people can update their config directory with
3926 a simple command line switch (-upgrade, also new).
3933 a simple command line switch (-upgrade, also new).
3927
3934
3928 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
3935 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
3929 @file (convenient for automagic users under Python >= 2.2).
3936 @file (convenient for automagic users under Python >= 2.2).
3930 Removed @files (it seemed more like a plural than an abbrev. of
3937 Removed @files (it seemed more like a plural than an abbrev. of
3931 'file show').
3938 'file show').
3932
3939
3933 * IPython/iplib.py (install_first_time): Fixed crash if there were
3940 * IPython/iplib.py (install_first_time): Fixed crash if there were
3934 backup files ('~') in .ipython/ install directory.
3941 backup files ('~') in .ipython/ install directory.
3935
3942
3936 * IPython/ipmaker.py (make_IPython): fixes for new prompt
3943 * IPython/ipmaker.py (make_IPython): fixes for new prompt
3937 system. Things look fine, but these changes are fairly
3944 system. Things look fine, but these changes are fairly
3938 intrusive. Test them for a few days.
3945 intrusive. Test them for a few days.
3939
3946
3940 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
3947 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
3941 the prompts system. Now all in/out prompt strings are user
3948 the prompts system. Now all in/out prompt strings are user
3942 controllable. This is particularly useful for embedding, as one
3949 controllable. This is particularly useful for embedding, as one
3943 can tag embedded instances with particular prompts.
3950 can tag embedded instances with particular prompts.
3944
3951
3945 Also removed global use of sys.ps1/2, which now allows nested
3952 Also removed global use of sys.ps1/2, which now allows nested
3946 embeddings without any problems. Added command-line options for
3953 embeddings without any problems. Added command-line options for
3947 the prompt strings.
3954 the prompt strings.
3948
3955
3949 2002-03-08 Fernando Perez <fperez@colorado.edu>
3956 2002-03-08 Fernando Perez <fperez@colorado.edu>
3950
3957
3951 * IPython/UserConfig/example-embed-short.py (ipshell): added
3958 * IPython/UserConfig/example-embed-short.py (ipshell): added
3952 example file with the bare minimum code for embedding.
3959 example file with the bare minimum code for embedding.
3953
3960
3954 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
3961 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
3955 functionality for the embeddable shell to be activated/deactivated
3962 functionality for the embeddable shell to be activated/deactivated
3956 either globally or at each call.
3963 either globally or at each call.
3957
3964
3958 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
3965 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
3959 rewriting the prompt with '--->' for auto-inputs with proper
3966 rewriting the prompt with '--->' for auto-inputs with proper
3960 coloring. Now the previous UGLY hack in handle_auto() is gone, and
3967 coloring. Now the previous UGLY hack in handle_auto() is gone, and
3961 this is handled by the prompts class itself, as it should.
3968 this is handled by the prompts class itself, as it should.
3962
3969
3963 2002-03-05 Fernando Perez <fperez@colorado.edu>
3970 2002-03-05 Fernando Perez <fperez@colorado.edu>
3964
3971
3965 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
3972 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
3966 @logstart to avoid name clashes with the math log function.
3973 @logstart to avoid name clashes with the math log function.
3967
3974
3968 * Big updates to X/Emacs section of the manual.
3975 * Big updates to X/Emacs section of the manual.
3969
3976
3970 * Removed ipython_emacs. Milan explained to me how to pass
3977 * Removed ipython_emacs. Milan explained to me how to pass
3971 arguments to ipython through Emacs. Some day I'm going to end up
3978 arguments to ipython through Emacs. Some day I'm going to end up
3972 learning some lisp...
3979 learning some lisp...
3973
3980
3974 2002-03-04 Fernando Perez <fperez@colorado.edu>
3981 2002-03-04 Fernando Perez <fperez@colorado.edu>
3975
3982
3976 * IPython/ipython_emacs: Created script to be used as the
3983 * IPython/ipython_emacs: Created script to be used as the
3977 py-python-command Emacs variable so we can pass IPython
3984 py-python-command Emacs variable so we can pass IPython
3978 parameters. I can't figure out how to tell Emacs directly to pass
3985 parameters. I can't figure out how to tell Emacs directly to pass
3979 parameters to IPython, so a dummy shell script will do it.
3986 parameters to IPython, so a dummy shell script will do it.
3980
3987
3981 Other enhancements made for things to work better under Emacs'
3988 Other enhancements made for things to work better under Emacs'
3982 various types of terminals. Many thanks to Milan Zamazal
3989 various types of terminals. Many thanks to Milan Zamazal
3983 <pdm-AT-zamazal.org> for all the suggestions and pointers.
3990 <pdm-AT-zamazal.org> for all the suggestions and pointers.
3984
3991
3985 2002-03-01 Fernando Perez <fperez@colorado.edu>
3992 2002-03-01 Fernando Perez <fperez@colorado.edu>
3986
3993
3987 * IPython/ipmaker.py (make_IPython): added a --readline! option so
3994 * IPython/ipmaker.py (make_IPython): added a --readline! option so
3988 that loading of readline is now optional. This gives better
3995 that loading of readline is now optional. This gives better
3989 control to emacs users.
3996 control to emacs users.
3990
3997
3991 * IPython/ultraTB.py (__date__): Modified color escape sequences
3998 * IPython/ultraTB.py (__date__): Modified color escape sequences
3992 and now things work fine under xterm and in Emacs' term buffers
3999 and now things work fine under xterm and in Emacs' term buffers
3993 (though not shell ones). Well, in emacs you get colors, but all
4000 (though not shell ones). Well, in emacs you get colors, but all
3994 seem to be 'light' colors (no difference between dark and light
4001 seem to be 'light' colors (no difference between dark and light
3995 ones). But the garbage chars are gone, and also in xterms. It
4002 ones). But the garbage chars are gone, and also in xterms. It
3996 seems that now I'm using 'cleaner' ansi sequences.
4003 seems that now I'm using 'cleaner' ansi sequences.
3997
4004
3998 2002-02-21 Fernando Perez <fperez@colorado.edu>
4005 2002-02-21 Fernando Perez <fperez@colorado.edu>
3999
4006
4000 * Released 0.2.7 (mainly to publish the scoping fix).
4007 * Released 0.2.7 (mainly to publish the scoping fix).
4001
4008
4002 * IPython/Logger.py (Logger.logstate): added. A corresponding
4009 * IPython/Logger.py (Logger.logstate): added. A corresponding
4003 @logstate magic was created.
4010 @logstate magic was created.
4004
4011
4005 * IPython/Magic.py: fixed nested scoping problem under Python
4012 * IPython/Magic.py: fixed nested scoping problem under Python
4006 2.1.x (automagic wasn't working).
4013 2.1.x (automagic wasn't working).
4007
4014
4008 2002-02-20 Fernando Perez <fperez@colorado.edu>
4015 2002-02-20 Fernando Perez <fperez@colorado.edu>
4009
4016
4010 * Released 0.2.6.
4017 * Released 0.2.6.
4011
4018
4012 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4019 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4013 option so that logs can come out without any headers at all.
4020 option so that logs can come out without any headers at all.
4014
4021
4015 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4022 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4016 SciPy.
4023 SciPy.
4017
4024
4018 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4025 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4019 that embedded IPython calls don't require vars() to be explicitly
4026 that embedded IPython calls don't require vars() to be explicitly
4020 passed. Now they are extracted from the caller's frame (code
4027 passed. Now they are extracted from the caller's frame (code
4021 snatched from Eric Jones' weave). Added better documentation to
4028 snatched from Eric Jones' weave). Added better documentation to
4022 the section on embedding and the example file.
4029 the section on embedding and the example file.
4023
4030
4024 * IPython/genutils.py (page): Changed so that under emacs, it just
4031 * IPython/genutils.py (page): Changed so that under emacs, it just
4025 prints the string. You can then page up and down in the emacs
4032 prints the string. You can then page up and down in the emacs
4026 buffer itself. This is how the builtin help() works.
4033 buffer itself. This is how the builtin help() works.
4027
4034
4028 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4035 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4029 macro scoping: macros need to be executed in the user's namespace
4036 macro scoping: macros need to be executed in the user's namespace
4030 to work as if they had been typed by the user.
4037 to work as if they had been typed by the user.
4031
4038
4032 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4039 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4033 execute automatically (no need to type 'exec...'). They then
4040 execute automatically (no need to type 'exec...'). They then
4034 behave like 'true macros'. The printing system was also modified
4041 behave like 'true macros'. The printing system was also modified
4035 for this to work.
4042 for this to work.
4036
4043
4037 2002-02-19 Fernando Perez <fperez@colorado.edu>
4044 2002-02-19 Fernando Perez <fperez@colorado.edu>
4038
4045
4039 * IPython/genutils.py (page_file): new function for paging files
4046 * IPython/genutils.py (page_file): new function for paging files
4040 in an OS-independent way. Also necessary for file viewing to work
4047 in an OS-independent way. Also necessary for file viewing to work
4041 well inside Emacs buffers.
4048 well inside Emacs buffers.
4042 (page): Added checks for being in an emacs buffer.
4049 (page): Added checks for being in an emacs buffer.
4043 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4050 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4044 same bug in iplib.
4051 same bug in iplib.
4045
4052
4046 2002-02-18 Fernando Perez <fperez@colorado.edu>
4053 2002-02-18 Fernando Perez <fperez@colorado.edu>
4047
4054
4048 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4055 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4049 of readline so that IPython can work inside an Emacs buffer.
4056 of readline so that IPython can work inside an Emacs buffer.
4050
4057
4051 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4058 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4052 method signatures (they weren't really bugs, but it looks cleaner
4059 method signatures (they weren't really bugs, but it looks cleaner
4053 and keeps PyChecker happy).
4060 and keeps PyChecker happy).
4054
4061
4055 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4062 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4056 for implementing various user-defined hooks. Currently only
4063 for implementing various user-defined hooks. Currently only
4057 display is done.
4064 display is done.
4058
4065
4059 * IPython/Prompts.py (CachedOutput._display): changed display
4066 * IPython/Prompts.py (CachedOutput._display): changed display
4060 functions so that they can be dynamically changed by users easily.
4067 functions so that they can be dynamically changed by users easily.
4061
4068
4062 * IPython/Extensions/numeric_formats.py (num_display): added an
4069 * IPython/Extensions/numeric_formats.py (num_display): added an
4063 extension for printing NumPy arrays in flexible manners. It
4070 extension for printing NumPy arrays in flexible manners. It
4064 doesn't do anything yet, but all the structure is in
4071 doesn't do anything yet, but all the structure is in
4065 place. Ultimately the plan is to implement output format control
4072 place. Ultimately the plan is to implement output format control
4066 like in Octave.
4073 like in Octave.
4067
4074
4068 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4075 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4069 methods are found at run-time by all the automatic machinery.
4076 methods are found at run-time by all the automatic machinery.
4070
4077
4071 2002-02-17 Fernando Perez <fperez@colorado.edu>
4078 2002-02-17 Fernando Perez <fperez@colorado.edu>
4072
4079
4073 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4080 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4074 whole file a little.
4081 whole file a little.
4075
4082
4076 * ToDo: closed this document. Now there's a new_design.lyx
4083 * ToDo: closed this document. Now there's a new_design.lyx
4077 document for all new ideas. Added making a pdf of it for the
4084 document for all new ideas. Added making a pdf of it for the
4078 end-user distro.
4085 end-user distro.
4079
4086
4080 * IPython/Logger.py (Logger.switch_log): Created this to replace
4087 * IPython/Logger.py (Logger.switch_log): Created this to replace
4081 logon() and logoff(). It also fixes a nasty crash reported by
4088 logon() and logoff(). It also fixes a nasty crash reported by
4082 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4089 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4083
4090
4084 * IPython/iplib.py (complete): got auto-completion to work with
4091 * IPython/iplib.py (complete): got auto-completion to work with
4085 automagic (I had wanted this for a long time).
4092 automagic (I had wanted this for a long time).
4086
4093
4087 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4094 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4088 to @file, since file() is now a builtin and clashes with automagic
4095 to @file, since file() is now a builtin and clashes with automagic
4089 for @file.
4096 for @file.
4090
4097
4091 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4098 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4092 of this was previously in iplib, which had grown to more than 2000
4099 of this was previously in iplib, which had grown to more than 2000
4093 lines, way too long. No new functionality, but it makes managing
4100 lines, way too long. No new functionality, but it makes managing
4094 the code a bit easier.
4101 the code a bit easier.
4095
4102
4096 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4103 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4097 information to crash reports.
4104 information to crash reports.
4098
4105
4099 2002-02-12 Fernando Perez <fperez@colorado.edu>
4106 2002-02-12 Fernando Perez <fperez@colorado.edu>
4100
4107
4101 * Released 0.2.5.
4108 * Released 0.2.5.
4102
4109
4103 2002-02-11 Fernando Perez <fperez@colorado.edu>
4110 2002-02-11 Fernando Perez <fperez@colorado.edu>
4104
4111
4105 * Wrote a relatively complete Windows installer. It puts
4112 * Wrote a relatively complete Windows installer. It puts
4106 everything in place, creates Start Menu entries and fixes the
4113 everything in place, creates Start Menu entries and fixes the
4107 color issues. Nothing fancy, but it works.
4114 color issues. Nothing fancy, but it works.
4108
4115
4109 2002-02-10 Fernando Perez <fperez@colorado.edu>
4116 2002-02-10 Fernando Perez <fperez@colorado.edu>
4110
4117
4111 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4118 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4112 os.path.expanduser() call so that we can type @run ~/myfile.py and
4119 os.path.expanduser() call so that we can type @run ~/myfile.py and
4113 have thigs work as expected.
4120 have thigs work as expected.
4114
4121
4115 * IPython/genutils.py (page): fixed exception handling so things
4122 * IPython/genutils.py (page): fixed exception handling so things
4116 work both in Unix and Windows correctly. Quitting a pager triggers
4123 work both in Unix and Windows correctly. Quitting a pager triggers
4117 an IOError/broken pipe in Unix, and in windows not finding a pager
4124 an IOError/broken pipe in Unix, and in windows not finding a pager
4118 is also an IOError, so I had to actually look at the return value
4125 is also an IOError, so I had to actually look at the return value
4119 of the exception, not just the exception itself. Should be ok now.
4126 of the exception, not just the exception itself. Should be ok now.
4120
4127
4121 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4128 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4122 modified to allow case-insensitive color scheme changes.
4129 modified to allow case-insensitive color scheme changes.
4123
4130
4124 2002-02-09 Fernando Perez <fperez@colorado.edu>
4131 2002-02-09 Fernando Perez <fperez@colorado.edu>
4125
4132
4126 * IPython/genutils.py (native_line_ends): new function to leave
4133 * IPython/genutils.py (native_line_ends): new function to leave
4127 user config files with os-native line-endings.
4134 user config files with os-native line-endings.
4128
4135
4129 * README and manual updates.
4136 * README and manual updates.
4130
4137
4131 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4138 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4132 instead of StringType to catch Unicode strings.
4139 instead of StringType to catch Unicode strings.
4133
4140
4134 * IPython/genutils.py (filefind): fixed bug for paths with
4141 * IPython/genutils.py (filefind): fixed bug for paths with
4135 embedded spaces (very common in Windows).
4142 embedded spaces (very common in Windows).
4136
4143
4137 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4144 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4138 files under Windows, so that they get automatically associated
4145 files under Windows, so that they get automatically associated
4139 with a text editor. Windows makes it a pain to handle
4146 with a text editor. Windows makes it a pain to handle
4140 extension-less files.
4147 extension-less files.
4141
4148
4142 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4149 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4143 warning about readline only occur for Posix. In Windows there's no
4150 warning about readline only occur for Posix. In Windows there's no
4144 way to get readline, so why bother with the warning.
4151 way to get readline, so why bother with the warning.
4145
4152
4146 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4153 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4147 for __str__ instead of dir(self), since dir() changed in 2.2.
4154 for __str__ instead of dir(self), since dir() changed in 2.2.
4148
4155
4149 * Ported to Windows! Tested on XP, I suspect it should work fine
4156 * Ported to Windows! Tested on XP, I suspect it should work fine
4150 on NT/2000, but I don't think it will work on 98 et al. That
4157 on NT/2000, but I don't think it will work on 98 et al. That
4151 series of Windows is such a piece of junk anyway that I won't try
4158 series of Windows is such a piece of junk anyway that I won't try
4152 porting it there. The XP port was straightforward, showed a few
4159 porting it there. The XP port was straightforward, showed a few
4153 bugs here and there (fixed all), in particular some string
4160 bugs here and there (fixed all), in particular some string
4154 handling stuff which required considering Unicode strings (which
4161 handling stuff which required considering Unicode strings (which
4155 Windows uses). This is good, but hasn't been too tested :) No
4162 Windows uses). This is good, but hasn't been too tested :) No
4156 fancy installer yet, I'll put a note in the manual so people at
4163 fancy installer yet, I'll put a note in the manual so people at
4157 least make manually a shortcut.
4164 least make manually a shortcut.
4158
4165
4159 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4166 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4160 into a single one, "colors". This now controls both prompt and
4167 into a single one, "colors". This now controls both prompt and
4161 exception color schemes, and can be changed both at startup
4168 exception color schemes, and can be changed both at startup
4162 (either via command-line switches or via ipythonrc files) and at
4169 (either via command-line switches or via ipythonrc files) and at
4163 runtime, with @colors.
4170 runtime, with @colors.
4164 (Magic.magic_run): renamed @prun to @run and removed the old
4171 (Magic.magic_run): renamed @prun to @run and removed the old
4165 @run. The two were too similar to warrant keeping both.
4172 @run. The two were too similar to warrant keeping both.
4166
4173
4167 2002-02-03 Fernando Perez <fperez@colorado.edu>
4174 2002-02-03 Fernando Perez <fperez@colorado.edu>
4168
4175
4169 * IPython/iplib.py (install_first_time): Added comment on how to
4176 * IPython/iplib.py (install_first_time): Added comment on how to
4170 configure the color options for first-time users. Put a <return>
4177 configure the color options for first-time users. Put a <return>
4171 request at the end so that small-terminal users get a chance to
4178 request at the end so that small-terminal users get a chance to
4172 read the startup info.
4179 read the startup info.
4173
4180
4174 2002-01-23 Fernando Perez <fperez@colorado.edu>
4181 2002-01-23 Fernando Perez <fperez@colorado.edu>
4175
4182
4176 * IPython/iplib.py (CachedOutput.update): Changed output memory
4183 * IPython/iplib.py (CachedOutput.update): Changed output memory
4177 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4184 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4178 input history we still use _i. Did this b/c these variable are
4185 input history we still use _i. Did this b/c these variable are
4179 very commonly used in interactive work, so the less we need to
4186 very commonly used in interactive work, so the less we need to
4180 type the better off we are.
4187 type the better off we are.
4181 (Magic.magic_prun): updated @prun to better handle the namespaces
4188 (Magic.magic_prun): updated @prun to better handle the namespaces
4182 the file will run in, including a fix for __name__ not being set
4189 the file will run in, including a fix for __name__ not being set
4183 before.
4190 before.
4184
4191
4185 2002-01-20 Fernando Perez <fperez@colorado.edu>
4192 2002-01-20 Fernando Perez <fperez@colorado.edu>
4186
4193
4187 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4194 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4188 extra garbage for Python 2.2. Need to look more carefully into
4195 extra garbage for Python 2.2. Need to look more carefully into
4189 this later.
4196 this later.
4190
4197
4191 2002-01-19 Fernando Perez <fperez@colorado.edu>
4198 2002-01-19 Fernando Perez <fperez@colorado.edu>
4192
4199
4193 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4200 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4194 display SyntaxError exceptions properly formatted when they occur
4201 display SyntaxError exceptions properly formatted when they occur
4195 (they can be triggered by imported code).
4202 (they can be triggered by imported code).
4196
4203
4197 2002-01-18 Fernando Perez <fperez@colorado.edu>
4204 2002-01-18 Fernando Perez <fperez@colorado.edu>
4198
4205
4199 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4206 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4200 SyntaxError exceptions are reported nicely formatted, instead of
4207 SyntaxError exceptions are reported nicely formatted, instead of
4201 spitting out only offset information as before.
4208 spitting out only offset information as before.
4202 (Magic.magic_prun): Added the @prun function for executing
4209 (Magic.magic_prun): Added the @prun function for executing
4203 programs with command line args inside IPython.
4210 programs with command line args inside IPython.
4204
4211
4205 2002-01-16 Fernando Perez <fperez@colorado.edu>
4212 2002-01-16 Fernando Perez <fperez@colorado.edu>
4206
4213
4207 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4214 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4208 to *not* include the last item given in a range. This brings their
4215 to *not* include the last item given in a range. This brings their
4209 behavior in line with Python's slicing:
4216 behavior in line with Python's slicing:
4210 a[n1:n2] -> a[n1]...a[n2-1]
4217 a[n1:n2] -> a[n1]...a[n2-1]
4211 It may be a bit less convenient, but I prefer to stick to Python's
4218 It may be a bit less convenient, but I prefer to stick to Python's
4212 conventions *everywhere*, so users never have to wonder.
4219 conventions *everywhere*, so users never have to wonder.
4213 (Magic.magic_macro): Added @macro function to ease the creation of
4220 (Magic.magic_macro): Added @macro function to ease the creation of
4214 macros.
4221 macros.
4215
4222
4216 2002-01-05 Fernando Perez <fperez@colorado.edu>
4223 2002-01-05 Fernando Perez <fperez@colorado.edu>
4217
4224
4218 * Released 0.2.4.
4225 * Released 0.2.4.
4219
4226
4220 * IPython/iplib.py (Magic.magic_pdef):
4227 * IPython/iplib.py (Magic.magic_pdef):
4221 (InteractiveShell.safe_execfile): report magic lines and error
4228 (InteractiveShell.safe_execfile): report magic lines and error
4222 lines without line numbers so one can easily copy/paste them for
4229 lines without line numbers so one can easily copy/paste them for
4223 re-execution.
4230 re-execution.
4224
4231
4225 * Updated manual with recent changes.
4232 * Updated manual with recent changes.
4226
4233
4227 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4234 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4228 docstring printing when class? is called. Very handy for knowing
4235 docstring printing when class? is called. Very handy for knowing
4229 how to create class instances (as long as __init__ is well
4236 how to create class instances (as long as __init__ is well
4230 documented, of course :)
4237 documented, of course :)
4231 (Magic.magic_doc): print both class and constructor docstrings.
4238 (Magic.magic_doc): print both class and constructor docstrings.
4232 (Magic.magic_pdef): give constructor info if passed a class and
4239 (Magic.magic_pdef): give constructor info if passed a class and
4233 __call__ info for callable object instances.
4240 __call__ info for callable object instances.
4234
4241
4235 2002-01-04 Fernando Perez <fperez@colorado.edu>
4242 2002-01-04 Fernando Perez <fperez@colorado.edu>
4236
4243
4237 * Made deep_reload() off by default. It doesn't always work
4244 * Made deep_reload() off by default. It doesn't always work
4238 exactly as intended, so it's probably safer to have it off. It's
4245 exactly as intended, so it's probably safer to have it off. It's
4239 still available as dreload() anyway, so nothing is lost.
4246 still available as dreload() anyway, so nothing is lost.
4240
4247
4241 2002-01-02 Fernando Perez <fperez@colorado.edu>
4248 2002-01-02 Fernando Perez <fperez@colorado.edu>
4242
4249
4243 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4250 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4244 so I wanted an updated release).
4251 so I wanted an updated release).
4245
4252
4246 2001-12-27 Fernando Perez <fperez@colorado.edu>
4253 2001-12-27 Fernando Perez <fperez@colorado.edu>
4247
4254
4248 * IPython/iplib.py (InteractiveShell.interact): Added the original
4255 * IPython/iplib.py (InteractiveShell.interact): Added the original
4249 code from 'code.py' for this module in order to change the
4256 code from 'code.py' for this module in order to change the
4250 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4257 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4251 the history cache would break when the user hit Ctrl-C, and
4258 the history cache would break when the user hit Ctrl-C, and
4252 interact() offers no way to add any hooks to it.
4259 interact() offers no way to add any hooks to it.
4253
4260
4254 2001-12-23 Fernando Perez <fperez@colorado.edu>
4261 2001-12-23 Fernando Perez <fperez@colorado.edu>
4255
4262
4256 * setup.py: added check for 'MANIFEST' before trying to remove
4263 * setup.py: added check for 'MANIFEST' before trying to remove
4257 it. Thanks to Sean Reifschneider.
4264 it. Thanks to Sean Reifschneider.
4258
4265
4259 2001-12-22 Fernando Perez <fperez@colorado.edu>
4266 2001-12-22 Fernando Perez <fperez@colorado.edu>
4260
4267
4261 * Released 0.2.2.
4268 * Released 0.2.2.
4262
4269
4263 * Finished (reasonably) writing the manual. Later will add the
4270 * Finished (reasonably) writing the manual. Later will add the
4264 python-standard navigation stylesheets, but for the time being
4271 python-standard navigation stylesheets, but for the time being
4265 it's fairly complete. Distribution will include html and pdf
4272 it's fairly complete. Distribution will include html and pdf
4266 versions.
4273 versions.
4267
4274
4268 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4275 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4269 (MayaVi author).
4276 (MayaVi author).
4270
4277
4271 2001-12-21 Fernando Perez <fperez@colorado.edu>
4278 2001-12-21 Fernando Perez <fperez@colorado.edu>
4272
4279
4273 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4280 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4274 good public release, I think (with the manual and the distutils
4281 good public release, I think (with the manual and the distutils
4275 installer). The manual can use some work, but that can go
4282 installer). The manual can use some work, but that can go
4276 slowly. Otherwise I think it's quite nice for end users. Next
4283 slowly. Otherwise I think it's quite nice for end users. Next
4277 summer, rewrite the guts of it...
4284 summer, rewrite the guts of it...
4278
4285
4279 * Changed format of ipythonrc files to use whitespace as the
4286 * Changed format of ipythonrc files to use whitespace as the
4280 separator instead of an explicit '='. Cleaner.
4287 separator instead of an explicit '='. Cleaner.
4281
4288
4282 2001-12-20 Fernando Perez <fperez@colorado.edu>
4289 2001-12-20 Fernando Perez <fperez@colorado.edu>
4283
4290
4284 * Started a manual in LyX. For now it's just a quick merge of the
4291 * Started a manual in LyX. For now it's just a quick merge of the
4285 various internal docstrings and READMEs. Later it may grow into a
4292 various internal docstrings and READMEs. Later it may grow into a
4286 nice, full-blown manual.
4293 nice, full-blown manual.
4287
4294
4288 * Set up a distutils based installer. Installation should now be
4295 * Set up a distutils based installer. Installation should now be
4289 trivially simple for end-users.
4296 trivially simple for end-users.
4290
4297
4291 2001-12-11 Fernando Perez <fperez@colorado.edu>
4298 2001-12-11 Fernando Perez <fperez@colorado.edu>
4292
4299
4293 * Released 0.2.0. First public release, announced it at
4300 * Released 0.2.0. First public release, announced it at
4294 comp.lang.python. From now on, just bugfixes...
4301 comp.lang.python. From now on, just bugfixes...
4295
4302
4296 * Went through all the files, set copyright/license notices and
4303 * Went through all the files, set copyright/license notices and
4297 cleaned up things. Ready for release.
4304 cleaned up things. Ready for release.
4298
4305
4299 2001-12-10 Fernando Perez <fperez@colorado.edu>
4306 2001-12-10 Fernando Perez <fperez@colorado.edu>
4300
4307
4301 * Changed the first-time installer not to use tarfiles. It's more
4308 * Changed the first-time installer not to use tarfiles. It's more
4302 robust now and less unix-dependent. Also makes it easier for
4309 robust now and less unix-dependent. Also makes it easier for
4303 people to later upgrade versions.
4310 people to later upgrade versions.
4304
4311
4305 * Changed @exit to @abort to reflect the fact that it's pretty
4312 * Changed @exit to @abort to reflect the fact that it's pretty
4306 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4313 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4307 becomes significant only when IPyhton is embedded: in that case,
4314 becomes significant only when IPyhton is embedded: in that case,
4308 C-D closes IPython only, but @abort kills the enclosing program
4315 C-D closes IPython only, but @abort kills the enclosing program
4309 too (unless it had called IPython inside a try catching
4316 too (unless it had called IPython inside a try catching
4310 SystemExit).
4317 SystemExit).
4311
4318
4312 * Created Shell module which exposes the actuall IPython Shell
4319 * Created Shell module which exposes the actuall IPython Shell
4313 classes, currently the normal and the embeddable one. This at
4320 classes, currently the normal and the embeddable one. This at
4314 least offers a stable interface we won't need to change when
4321 least offers a stable interface we won't need to change when
4315 (later) the internals are rewritten. That rewrite will be confined
4322 (later) the internals are rewritten. That rewrite will be confined
4316 to iplib and ipmaker, but the Shell interface should remain as is.
4323 to iplib and ipmaker, but the Shell interface should remain as is.
4317
4324
4318 * Added embed module which offers an embeddable IPShell object,
4325 * Added embed module which offers an embeddable IPShell object,
4319 useful to fire up IPython *inside* a running program. Great for
4326 useful to fire up IPython *inside* a running program. Great for
4320 debugging or dynamical data analysis.
4327 debugging or dynamical data analysis.
4321
4328
4322 2001-12-08 Fernando Perez <fperez@colorado.edu>
4329 2001-12-08 Fernando Perez <fperez@colorado.edu>
4323
4330
4324 * Fixed small bug preventing seeing info from methods of defined
4331 * Fixed small bug preventing seeing info from methods of defined
4325 objects (incorrect namespace in _ofind()).
4332 objects (incorrect namespace in _ofind()).
4326
4333
4327 * Documentation cleanup. Moved the main usage docstrings to a
4334 * Documentation cleanup. Moved the main usage docstrings to a
4328 separate file, usage.py (cleaner to maintain, and hopefully in the
4335 separate file, usage.py (cleaner to maintain, and hopefully in the
4329 future some perlpod-like way of producing interactive, man and
4336 future some perlpod-like way of producing interactive, man and
4330 html docs out of it will be found).
4337 html docs out of it will be found).
4331
4338
4332 * Added @profile to see your profile at any time.
4339 * Added @profile to see your profile at any time.
4333
4340
4334 * Added @p as an alias for 'print'. It's especially convenient if
4341 * Added @p as an alias for 'print'. It's especially convenient if
4335 using automagic ('p x' prints x).
4342 using automagic ('p x' prints x).
4336
4343
4337 * Small cleanups and fixes after a pychecker run.
4344 * Small cleanups and fixes after a pychecker run.
4338
4345
4339 * Changed the @cd command to handle @cd - and @cd -<n> for
4346 * Changed the @cd command to handle @cd - and @cd -<n> for
4340 visiting any directory in _dh.
4347 visiting any directory in _dh.
4341
4348
4342 * Introduced _dh, a history of visited directories. @dhist prints
4349 * Introduced _dh, a history of visited directories. @dhist prints
4343 it out with numbers.
4350 it out with numbers.
4344
4351
4345 2001-12-07 Fernando Perez <fperez@colorado.edu>
4352 2001-12-07 Fernando Perez <fperez@colorado.edu>
4346
4353
4347 * Released 0.1.22
4354 * Released 0.1.22
4348
4355
4349 * Made initialization a bit more robust against invalid color
4356 * Made initialization a bit more robust against invalid color
4350 options in user input (exit, not traceback-crash).
4357 options in user input (exit, not traceback-crash).
4351
4358
4352 * Changed the bug crash reporter to write the report only in the
4359 * Changed the bug crash reporter to write the report only in the
4353 user's .ipython directory. That way IPython won't litter people's
4360 user's .ipython directory. That way IPython won't litter people's
4354 hard disks with crash files all over the place. Also print on
4361 hard disks with crash files all over the place. Also print on
4355 screen the necessary mail command.
4362 screen the necessary mail command.
4356
4363
4357 * With the new ultraTB, implemented LightBG color scheme for light
4364 * With the new ultraTB, implemented LightBG color scheme for light
4358 background terminals. A lot of people like white backgrounds, so I
4365 background terminals. A lot of people like white backgrounds, so I
4359 guess we should at least give them something readable.
4366 guess we should at least give them something readable.
4360
4367
4361 2001-12-06 Fernando Perez <fperez@colorado.edu>
4368 2001-12-06 Fernando Perez <fperez@colorado.edu>
4362
4369
4363 * Modified the structure of ultraTB. Now there's a proper class
4370 * Modified the structure of ultraTB. Now there's a proper class
4364 for tables of color schemes which allow adding schemes easily and
4371 for tables of color schemes which allow adding schemes easily and
4365 switching the active scheme without creating a new instance every
4372 switching the active scheme without creating a new instance every
4366 time (which was ridiculous). The syntax for creating new schemes
4373 time (which was ridiculous). The syntax for creating new schemes
4367 is also cleaner. I think ultraTB is finally done, with a clean
4374 is also cleaner. I think ultraTB is finally done, with a clean
4368 class structure. Names are also much cleaner (now there's proper
4375 class structure. Names are also much cleaner (now there's proper
4369 color tables, no need for every variable to also have 'color' in
4376 color tables, no need for every variable to also have 'color' in
4370 its name).
4377 its name).
4371
4378
4372 * Broke down genutils into separate files. Now genutils only
4379 * Broke down genutils into separate files. Now genutils only
4373 contains utility functions, and classes have been moved to their
4380 contains utility functions, and classes have been moved to their
4374 own files (they had enough independent functionality to warrant
4381 own files (they had enough independent functionality to warrant
4375 it): ConfigLoader, OutputTrap, Struct.
4382 it): ConfigLoader, OutputTrap, Struct.
4376
4383
4377 2001-12-05 Fernando Perez <fperez@colorado.edu>
4384 2001-12-05 Fernando Perez <fperez@colorado.edu>
4378
4385
4379 * IPython turns 21! Released version 0.1.21, as a candidate for
4386 * IPython turns 21! Released version 0.1.21, as a candidate for
4380 public consumption. If all goes well, release in a few days.
4387 public consumption. If all goes well, release in a few days.
4381
4388
4382 * Fixed path bug (files in Extensions/ directory wouldn't be found
4389 * Fixed path bug (files in Extensions/ directory wouldn't be found
4383 unless IPython/ was explicitly in sys.path).
4390 unless IPython/ was explicitly in sys.path).
4384
4391
4385 * Extended the FlexCompleter class as MagicCompleter to allow
4392 * Extended the FlexCompleter class as MagicCompleter to allow
4386 completion of @-starting lines.
4393 completion of @-starting lines.
4387
4394
4388 * Created __release__.py file as a central repository for release
4395 * Created __release__.py file as a central repository for release
4389 info that other files can read from.
4396 info that other files can read from.
4390
4397
4391 * Fixed small bug in logging: when logging was turned on in
4398 * Fixed small bug in logging: when logging was turned on in
4392 mid-session, old lines with special meanings (!@?) were being
4399 mid-session, old lines with special meanings (!@?) were being
4393 logged without the prepended comment, which is necessary since
4400 logged without the prepended comment, which is necessary since
4394 they are not truly valid python syntax. This should make session
4401 they are not truly valid python syntax. This should make session
4395 restores produce less errors.
4402 restores produce less errors.
4396
4403
4397 * The namespace cleanup forced me to make a FlexCompleter class
4404 * The namespace cleanup forced me to make a FlexCompleter class
4398 which is nothing but a ripoff of rlcompleter, but with selectable
4405 which is nothing but a ripoff of rlcompleter, but with selectable
4399 namespace (rlcompleter only works in __main__.__dict__). I'll try
4406 namespace (rlcompleter only works in __main__.__dict__). I'll try
4400 to submit a note to the authors to see if this change can be
4407 to submit a note to the authors to see if this change can be
4401 incorporated in future rlcompleter releases (Dec.6: done)
4408 incorporated in future rlcompleter releases (Dec.6: done)
4402
4409
4403 * More fixes to namespace handling. It was a mess! Now all
4410 * More fixes to namespace handling. It was a mess! Now all
4404 explicit references to __main__.__dict__ are gone (except when
4411 explicit references to __main__.__dict__ are gone (except when
4405 really needed) and everything is handled through the namespace
4412 really needed) and everything is handled through the namespace
4406 dicts in the IPython instance. We seem to be getting somewhere
4413 dicts in the IPython instance. We seem to be getting somewhere
4407 with this, finally...
4414 with this, finally...
4408
4415
4409 * Small documentation updates.
4416 * Small documentation updates.
4410
4417
4411 * Created the Extensions directory under IPython (with an
4418 * Created the Extensions directory under IPython (with an
4412 __init__.py). Put the PhysicalQ stuff there. This directory should
4419 __init__.py). Put the PhysicalQ stuff there. This directory should
4413 be used for all special-purpose extensions.
4420 be used for all special-purpose extensions.
4414
4421
4415 * File renaming:
4422 * File renaming:
4416 ipythonlib --> ipmaker
4423 ipythonlib --> ipmaker
4417 ipplib --> iplib
4424 ipplib --> iplib
4418 This makes a bit more sense in terms of what these files actually do.
4425 This makes a bit more sense in terms of what these files actually do.
4419
4426
4420 * Moved all the classes and functions in ipythonlib to ipplib, so
4427 * Moved all the classes and functions in ipythonlib to ipplib, so
4421 now ipythonlib only has make_IPython(). This will ease up its
4428 now ipythonlib only has make_IPython(). This will ease up its
4422 splitting in smaller functional chunks later.
4429 splitting in smaller functional chunks later.
4423
4430
4424 * Cleaned up (done, I think) output of @whos. Better column
4431 * Cleaned up (done, I think) output of @whos. Better column
4425 formatting, and now shows str(var) for as much as it can, which is
4432 formatting, and now shows str(var) for as much as it can, which is
4426 typically what one gets with a 'print var'.
4433 typically what one gets with a 'print var'.
4427
4434
4428 2001-12-04 Fernando Perez <fperez@colorado.edu>
4435 2001-12-04 Fernando Perez <fperez@colorado.edu>
4429
4436
4430 * Fixed namespace problems. Now builtin/IPyhton/user names get
4437 * Fixed namespace problems. Now builtin/IPyhton/user names get
4431 properly reported in their namespace. Internal namespace handling
4438 properly reported in their namespace. Internal namespace handling
4432 is finally getting decent (not perfect yet, but much better than
4439 is finally getting decent (not perfect yet, but much better than
4433 the ad-hoc mess we had).
4440 the ad-hoc mess we had).
4434
4441
4435 * Removed -exit option. If people just want to run a python
4442 * Removed -exit option. If people just want to run a python
4436 script, that's what the normal interpreter is for. Less
4443 script, that's what the normal interpreter is for. Less
4437 unnecessary options, less chances for bugs.
4444 unnecessary options, less chances for bugs.
4438
4445
4439 * Added a crash handler which generates a complete post-mortem if
4446 * Added a crash handler which generates a complete post-mortem if
4440 IPython crashes. This will help a lot in tracking bugs down the
4447 IPython crashes. This will help a lot in tracking bugs down the
4441 road.
4448 road.
4442
4449
4443 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4450 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4444 which were boud to functions being reassigned would bypass the
4451 which were boud to functions being reassigned would bypass the
4445 logger, breaking the sync of _il with the prompt counter. This
4452 logger, breaking the sync of _il with the prompt counter. This
4446 would then crash IPython later when a new line was logged.
4453 would then crash IPython later when a new line was logged.
4447
4454
4448 2001-12-02 Fernando Perez <fperez@colorado.edu>
4455 2001-12-02 Fernando Perez <fperez@colorado.edu>
4449
4456
4450 * Made IPython a package. This means people don't have to clutter
4457 * Made IPython a package. This means people don't have to clutter
4451 their sys.path with yet another directory. Changed the INSTALL
4458 their sys.path with yet another directory. Changed the INSTALL
4452 file accordingly.
4459 file accordingly.
4453
4460
4454 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4461 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4455 sorts its output (so @who shows it sorted) and @whos formats the
4462 sorts its output (so @who shows it sorted) and @whos formats the
4456 table according to the width of the first column. Nicer, easier to
4463 table according to the width of the first column. Nicer, easier to
4457 read. Todo: write a generic table_format() which takes a list of
4464 read. Todo: write a generic table_format() which takes a list of
4458 lists and prints it nicely formatted, with optional row/column
4465 lists and prints it nicely formatted, with optional row/column
4459 separators and proper padding and justification.
4466 separators and proper padding and justification.
4460
4467
4461 * Released 0.1.20
4468 * Released 0.1.20
4462
4469
4463 * Fixed bug in @log which would reverse the inputcache list (a
4470 * Fixed bug in @log which would reverse the inputcache list (a
4464 copy operation was missing).
4471 copy operation was missing).
4465
4472
4466 * Code cleanup. @config was changed to use page(). Better, since
4473 * Code cleanup. @config was changed to use page(). Better, since
4467 its output is always quite long.
4474 its output is always quite long.
4468
4475
4469 * Itpl is back as a dependency. I was having too many problems
4476 * Itpl is back as a dependency. I was having too many problems
4470 getting the parametric aliases to work reliably, and it's just
4477 getting the parametric aliases to work reliably, and it's just
4471 easier to code weird string operations with it than playing %()s
4478 easier to code weird string operations with it than playing %()s
4472 games. It's only ~6k, so I don't think it's too big a deal.
4479 games. It's only ~6k, so I don't think it's too big a deal.
4473
4480
4474 * Found (and fixed) a very nasty bug with history. !lines weren't
4481 * Found (and fixed) a very nasty bug with history. !lines weren't
4475 getting cached, and the out of sync caches would crash
4482 getting cached, and the out of sync caches would crash
4476 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4483 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4477 division of labor a bit better. Bug fixed, cleaner structure.
4484 division of labor a bit better. Bug fixed, cleaner structure.
4478
4485
4479 2001-12-01 Fernando Perez <fperez@colorado.edu>
4486 2001-12-01 Fernando Perez <fperez@colorado.edu>
4480
4487
4481 * Released 0.1.19
4488 * Released 0.1.19
4482
4489
4483 * Added option -n to @hist to prevent line number printing. Much
4490 * Added option -n to @hist to prevent line number printing. Much
4484 easier to copy/paste code this way.
4491 easier to copy/paste code this way.
4485
4492
4486 * Created global _il to hold the input list. Allows easy
4493 * Created global _il to hold the input list. Allows easy
4487 re-execution of blocks of code by slicing it (inspired by Janko's
4494 re-execution of blocks of code by slicing it (inspired by Janko's
4488 comment on 'macros').
4495 comment on 'macros').
4489
4496
4490 * Small fixes and doc updates.
4497 * Small fixes and doc updates.
4491
4498
4492 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4499 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4493 much too fragile with automagic. Handles properly multi-line
4500 much too fragile with automagic. Handles properly multi-line
4494 statements and takes parameters.
4501 statements and takes parameters.
4495
4502
4496 2001-11-30 Fernando Perez <fperez@colorado.edu>
4503 2001-11-30 Fernando Perez <fperez@colorado.edu>
4497
4504
4498 * Version 0.1.18 released.
4505 * Version 0.1.18 released.
4499
4506
4500 * Fixed nasty namespace bug in initial module imports.
4507 * Fixed nasty namespace bug in initial module imports.
4501
4508
4502 * Added copyright/license notes to all code files (except
4509 * Added copyright/license notes to all code files (except
4503 DPyGetOpt). For the time being, LGPL. That could change.
4510 DPyGetOpt). For the time being, LGPL. That could change.
4504
4511
4505 * Rewrote a much nicer README, updated INSTALL, cleaned up
4512 * Rewrote a much nicer README, updated INSTALL, cleaned up
4506 ipythonrc-* samples.
4513 ipythonrc-* samples.
4507
4514
4508 * Overall code/documentation cleanup. Basically ready for
4515 * Overall code/documentation cleanup. Basically ready for
4509 release. Only remaining thing: licence decision (LGPL?).
4516 release. Only remaining thing: licence decision (LGPL?).
4510
4517
4511 * Converted load_config to a class, ConfigLoader. Now recursion
4518 * Converted load_config to a class, ConfigLoader. Now recursion
4512 control is better organized. Doesn't include the same file twice.
4519 control is better organized. Doesn't include the same file twice.
4513
4520
4514 2001-11-29 Fernando Perez <fperez@colorado.edu>
4521 2001-11-29 Fernando Perez <fperez@colorado.edu>
4515
4522
4516 * Got input history working. Changed output history variables from
4523 * Got input history working. Changed output history variables from
4517 _p to _o so that _i is for input and _o for output. Just cleaner
4524 _p to _o so that _i is for input and _o for output. Just cleaner
4518 convention.
4525 convention.
4519
4526
4520 * Implemented parametric aliases. This pretty much allows the
4527 * Implemented parametric aliases. This pretty much allows the
4521 alias system to offer full-blown shell convenience, I think.
4528 alias system to offer full-blown shell convenience, I think.
4522
4529
4523 * Version 0.1.17 released, 0.1.18 opened.
4530 * Version 0.1.17 released, 0.1.18 opened.
4524
4531
4525 * dot_ipython/ipythonrc (alias): added documentation.
4532 * dot_ipython/ipythonrc (alias): added documentation.
4526 (xcolor): Fixed small bug (xcolors -> xcolor)
4533 (xcolor): Fixed small bug (xcolors -> xcolor)
4527
4534
4528 * Changed the alias system. Now alias is a magic command to define
4535 * Changed the alias system. Now alias is a magic command to define
4529 aliases just like the shell. Rationale: the builtin magics should
4536 aliases just like the shell. Rationale: the builtin magics should
4530 be there for things deeply connected to IPython's
4537 be there for things deeply connected to IPython's
4531 architecture. And this is a much lighter system for what I think
4538 architecture. And this is a much lighter system for what I think
4532 is the really important feature: allowing users to define quickly
4539 is the really important feature: allowing users to define quickly
4533 magics that will do shell things for them, so they can customize
4540 magics that will do shell things for them, so they can customize
4534 IPython easily to match their work habits. If someone is really
4541 IPython easily to match their work habits. If someone is really
4535 desperate to have another name for a builtin alias, they can
4542 desperate to have another name for a builtin alias, they can
4536 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4543 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4537 works.
4544 works.
4538
4545
4539 2001-11-28 Fernando Perez <fperez@colorado.edu>
4546 2001-11-28 Fernando Perez <fperez@colorado.edu>
4540
4547
4541 * Changed @file so that it opens the source file at the proper
4548 * Changed @file so that it opens the source file at the proper
4542 line. Since it uses less, if your EDITOR environment is
4549 line. Since it uses less, if your EDITOR environment is
4543 configured, typing v will immediately open your editor of choice
4550 configured, typing v will immediately open your editor of choice
4544 right at the line where the object is defined. Not as quick as
4551 right at the line where the object is defined. Not as quick as
4545 having a direct @edit command, but for all intents and purposes it
4552 having a direct @edit command, but for all intents and purposes it
4546 works. And I don't have to worry about writing @edit to deal with
4553 works. And I don't have to worry about writing @edit to deal with
4547 all the editors, less does that.
4554 all the editors, less does that.
4548
4555
4549 * Version 0.1.16 released, 0.1.17 opened.
4556 * Version 0.1.16 released, 0.1.17 opened.
4550
4557
4551 * Fixed some nasty bugs in the page/page_dumb combo that could
4558 * Fixed some nasty bugs in the page/page_dumb combo that could
4552 crash IPython.
4559 crash IPython.
4553
4560
4554 2001-11-27 Fernando Perez <fperez@colorado.edu>
4561 2001-11-27 Fernando Perez <fperez@colorado.edu>
4555
4562
4556 * Version 0.1.15 released, 0.1.16 opened.
4563 * Version 0.1.15 released, 0.1.16 opened.
4557
4564
4558 * Finally got ? and ?? to work for undefined things: now it's
4565 * Finally got ? and ?? to work for undefined things: now it's
4559 possible to type {}.get? and get information about the get method
4566 possible to type {}.get? and get information about the get method
4560 of dicts, or os.path? even if only os is defined (so technically
4567 of dicts, or os.path? even if only os is defined (so technically
4561 os.path isn't). Works at any level. For example, after import os,
4568 os.path isn't). Works at any level. For example, after import os,
4562 os?, os.path?, os.path.abspath? all work. This is great, took some
4569 os?, os.path?, os.path.abspath? all work. This is great, took some
4563 work in _ofind.
4570 work in _ofind.
4564
4571
4565 * Fixed more bugs with logging. The sanest way to do it was to add
4572 * Fixed more bugs with logging. The sanest way to do it was to add
4566 to @log a 'mode' parameter. Killed two in one shot (this mode
4573 to @log a 'mode' parameter. Killed two in one shot (this mode
4567 option was a request of Janko's). I think it's finally clean
4574 option was a request of Janko's). I think it's finally clean
4568 (famous last words).
4575 (famous last words).
4569
4576
4570 * Added a page_dumb() pager which does a decent job of paging on
4577 * Added a page_dumb() pager which does a decent job of paging on
4571 screen, if better things (like less) aren't available. One less
4578 screen, if better things (like less) aren't available. One less
4572 unix dependency (someday maybe somebody will port this to
4579 unix dependency (someday maybe somebody will port this to
4573 windows).
4580 windows).
4574
4581
4575 * Fixed problem in magic_log: would lock of logging out if log
4582 * Fixed problem in magic_log: would lock of logging out if log
4576 creation failed (because it would still think it had succeeded).
4583 creation failed (because it would still think it had succeeded).
4577
4584
4578 * Improved the page() function using curses to auto-detect screen
4585 * Improved the page() function using curses to auto-detect screen
4579 size. Now it can make a much better decision on whether to print
4586 size. Now it can make a much better decision on whether to print
4580 or page a string. Option screen_length was modified: a value 0
4587 or page a string. Option screen_length was modified: a value 0
4581 means auto-detect, and that's the default now.
4588 means auto-detect, and that's the default now.
4582
4589
4583 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4590 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4584 go out. I'll test it for a few days, then talk to Janko about
4591 go out. I'll test it for a few days, then talk to Janko about
4585 licences and announce it.
4592 licences and announce it.
4586
4593
4587 * Fixed the length of the auto-generated ---> prompt which appears
4594 * Fixed the length of the auto-generated ---> prompt which appears
4588 for auto-parens and auto-quotes. Getting this right isn't trivial,
4595 for auto-parens and auto-quotes. Getting this right isn't trivial,
4589 with all the color escapes, different prompt types and optional
4596 with all the color escapes, different prompt types and optional
4590 separators. But it seems to be working in all the combinations.
4597 separators. But it seems to be working in all the combinations.
4591
4598
4592 2001-11-26 Fernando Perez <fperez@colorado.edu>
4599 2001-11-26 Fernando Perez <fperez@colorado.edu>
4593
4600
4594 * Wrote a regexp filter to get option types from the option names
4601 * Wrote a regexp filter to get option types from the option names
4595 string. This eliminates the need to manually keep two duplicate
4602 string. This eliminates the need to manually keep two duplicate
4596 lists.
4603 lists.
4597
4604
4598 * Removed the unneeded check_option_names. Now options are handled
4605 * Removed the unneeded check_option_names. Now options are handled
4599 in a much saner manner and it's easy to visually check that things
4606 in a much saner manner and it's easy to visually check that things
4600 are ok.
4607 are ok.
4601
4608
4602 * Updated version numbers on all files I modified to carry a
4609 * Updated version numbers on all files I modified to carry a
4603 notice so Janko and Nathan have clear version markers.
4610 notice so Janko and Nathan have clear version markers.
4604
4611
4605 * Updated docstring for ultraTB with my changes. I should send
4612 * Updated docstring for ultraTB with my changes. I should send
4606 this to Nathan.
4613 this to Nathan.
4607
4614
4608 * Lots of small fixes. Ran everything through pychecker again.
4615 * Lots of small fixes. Ran everything through pychecker again.
4609
4616
4610 * Made loading of deep_reload an cmd line option. If it's not too
4617 * Made loading of deep_reload an cmd line option. If it's not too
4611 kosher, now people can just disable it. With -nodeep_reload it's
4618 kosher, now people can just disable it. With -nodeep_reload it's
4612 still available as dreload(), it just won't overwrite reload().
4619 still available as dreload(), it just won't overwrite reload().
4613
4620
4614 * Moved many options to the no| form (-opt and -noopt
4621 * Moved many options to the no| form (-opt and -noopt
4615 accepted). Cleaner.
4622 accepted). Cleaner.
4616
4623
4617 * Changed magic_log so that if called with no parameters, it uses
4624 * Changed magic_log so that if called with no parameters, it uses
4618 'rotate' mode. That way auto-generated logs aren't automatically
4625 'rotate' mode. That way auto-generated logs aren't automatically
4619 over-written. For normal logs, now a backup is made if it exists
4626 over-written. For normal logs, now a backup is made if it exists
4620 (only 1 level of backups). A new 'backup' mode was added to the
4627 (only 1 level of backups). A new 'backup' mode was added to the
4621 Logger class to support this. This was a request by Janko.
4628 Logger class to support this. This was a request by Janko.
4622
4629
4623 * Added @logoff/@logon to stop/restart an active log.
4630 * Added @logoff/@logon to stop/restart an active log.
4624
4631
4625 * Fixed a lot of bugs in log saving/replay. It was pretty
4632 * Fixed a lot of bugs in log saving/replay. It was pretty
4626 broken. Now special lines (!@,/) appear properly in the command
4633 broken. Now special lines (!@,/) appear properly in the command
4627 history after a log replay.
4634 history after a log replay.
4628
4635
4629 * Tried and failed to implement full session saving via pickle. My
4636 * Tried and failed to implement full session saving via pickle. My
4630 idea was to pickle __main__.__dict__, but modules can't be
4637 idea was to pickle __main__.__dict__, but modules can't be
4631 pickled. This would be a better alternative to replaying logs, but
4638 pickled. This would be a better alternative to replaying logs, but
4632 seems quite tricky to get to work. Changed -session to be called
4639 seems quite tricky to get to work. Changed -session to be called
4633 -logplay, which more accurately reflects what it does. And if we
4640 -logplay, which more accurately reflects what it does. And if we
4634 ever get real session saving working, -session is now available.
4641 ever get real session saving working, -session is now available.
4635
4642
4636 * Implemented color schemes for prompts also. As for tracebacks,
4643 * Implemented color schemes for prompts also. As for tracebacks,
4637 currently only NoColor and Linux are supported. But now the
4644 currently only NoColor and Linux are supported. But now the
4638 infrastructure is in place, based on a generic ColorScheme
4645 infrastructure is in place, based on a generic ColorScheme
4639 class. So writing and activating new schemes both for the prompts
4646 class. So writing and activating new schemes both for the prompts
4640 and the tracebacks should be straightforward.
4647 and the tracebacks should be straightforward.
4641
4648
4642 * Version 0.1.13 released, 0.1.14 opened.
4649 * Version 0.1.13 released, 0.1.14 opened.
4643
4650
4644 * Changed handling of options for output cache. Now counter is
4651 * Changed handling of options for output cache. Now counter is
4645 hardwired starting at 1 and one specifies the maximum number of
4652 hardwired starting at 1 and one specifies the maximum number of
4646 entries *in the outcache* (not the max prompt counter). This is
4653 entries *in the outcache* (not the max prompt counter). This is
4647 much better, since many statements won't increase the cache
4654 much better, since many statements won't increase the cache
4648 count. It also eliminated some confusing options, now there's only
4655 count. It also eliminated some confusing options, now there's only
4649 one: cache_size.
4656 one: cache_size.
4650
4657
4651 * Added 'alias' magic function and magic_alias option in the
4658 * Added 'alias' magic function and magic_alias option in the
4652 ipythonrc file. Now the user can easily define whatever names he
4659 ipythonrc file. Now the user can easily define whatever names he
4653 wants for the magic functions without having to play weird
4660 wants for the magic functions without having to play weird
4654 namespace games. This gives IPython a real shell-like feel.
4661 namespace games. This gives IPython a real shell-like feel.
4655
4662
4656 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
4663 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
4657 @ or not).
4664 @ or not).
4658
4665
4659 This was one of the last remaining 'visible' bugs (that I know
4666 This was one of the last remaining 'visible' bugs (that I know
4660 of). I think if I can clean up the session loading so it works
4667 of). I think if I can clean up the session loading so it works
4661 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
4668 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
4662 about licensing).
4669 about licensing).
4663
4670
4664 2001-11-25 Fernando Perez <fperez@colorado.edu>
4671 2001-11-25 Fernando Perez <fperez@colorado.edu>
4665
4672
4666 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
4673 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
4667 there's a cleaner distinction between what ? and ?? show.
4674 there's a cleaner distinction between what ? and ?? show.
4668
4675
4669 * Added screen_length option. Now the user can define his own
4676 * Added screen_length option. Now the user can define his own
4670 screen size for page() operations.
4677 screen size for page() operations.
4671
4678
4672 * Implemented magic shell-like functions with automatic code
4679 * Implemented magic shell-like functions with automatic code
4673 generation. Now adding another function is just a matter of adding
4680 generation. Now adding another function is just a matter of adding
4674 an entry to a dict, and the function is dynamically generated at
4681 an entry to a dict, and the function is dynamically generated at
4675 run-time. Python has some really cool features!
4682 run-time. Python has some really cool features!
4676
4683
4677 * Renamed many options to cleanup conventions a little. Now all
4684 * Renamed many options to cleanup conventions a little. Now all
4678 are lowercase, and only underscores where needed. Also in the code
4685 are lowercase, and only underscores where needed. Also in the code
4679 option name tables are clearer.
4686 option name tables are clearer.
4680
4687
4681 * Changed prompts a little. Now input is 'In [n]:' instead of
4688 * Changed prompts a little. Now input is 'In [n]:' instead of
4682 'In[n]:='. This allows it the numbers to be aligned with the
4689 'In[n]:='. This allows it the numbers to be aligned with the
4683 Out[n] numbers, and removes usage of ':=' which doesn't exist in
4690 Out[n] numbers, and removes usage of ':=' which doesn't exist in
4684 Python (it was a Mathematica thing). The '...' continuation prompt
4691 Python (it was a Mathematica thing). The '...' continuation prompt
4685 was also changed a little to align better.
4692 was also changed a little to align better.
4686
4693
4687 * Fixed bug when flushing output cache. Not all _p<n> variables
4694 * Fixed bug when flushing output cache. Not all _p<n> variables
4688 exist, so their deletion needs to be wrapped in a try:
4695 exist, so their deletion needs to be wrapped in a try:
4689
4696
4690 * Figured out how to properly use inspect.formatargspec() (it
4697 * Figured out how to properly use inspect.formatargspec() (it
4691 requires the args preceded by *). So I removed all the code from
4698 requires the args preceded by *). So I removed all the code from
4692 _get_pdef in Magic, which was just replicating that.
4699 _get_pdef in Magic, which was just replicating that.
4693
4700
4694 * Added test to prefilter to allow redefining magic function names
4701 * Added test to prefilter to allow redefining magic function names
4695 as variables. This is ok, since the @ form is always available,
4702 as variables. This is ok, since the @ form is always available,
4696 but whe should allow the user to define a variable called 'ls' if
4703 but whe should allow the user to define a variable called 'ls' if
4697 he needs it.
4704 he needs it.
4698
4705
4699 * Moved the ToDo information from README into a separate ToDo.
4706 * Moved the ToDo information from README into a separate ToDo.
4700
4707
4701 * General code cleanup and small bugfixes. I think it's close to a
4708 * General code cleanup and small bugfixes. I think it's close to a
4702 state where it can be released, obviously with a big 'beta'
4709 state where it can be released, obviously with a big 'beta'
4703 warning on it.
4710 warning on it.
4704
4711
4705 * Got the magic function split to work. Now all magics are defined
4712 * Got the magic function split to work. Now all magics are defined
4706 in a separate class. It just organizes things a bit, and now
4713 in a separate class. It just organizes things a bit, and now
4707 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
4714 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
4708 was too long).
4715 was too long).
4709
4716
4710 * Changed @clear to @reset to avoid potential confusions with
4717 * Changed @clear to @reset to avoid potential confusions with
4711 the shell command clear. Also renamed @cl to @clear, which does
4718 the shell command clear. Also renamed @cl to @clear, which does
4712 exactly what people expect it to from their shell experience.
4719 exactly what people expect it to from their shell experience.
4713
4720
4714 Added a check to the @reset command (since it's so
4721 Added a check to the @reset command (since it's so
4715 destructive, it's probably a good idea to ask for confirmation).
4722 destructive, it's probably a good idea to ask for confirmation).
4716 But now reset only works for full namespace resetting. Since the
4723 But now reset only works for full namespace resetting. Since the
4717 del keyword is already there for deleting a few specific
4724 del keyword is already there for deleting a few specific
4718 variables, I don't see the point of having a redundant magic
4725 variables, I don't see the point of having a redundant magic
4719 function for the same task.
4726 function for the same task.
4720
4727
4721 2001-11-24 Fernando Perez <fperez@colorado.edu>
4728 2001-11-24 Fernando Perez <fperez@colorado.edu>
4722
4729
4723 * Updated the builtin docs (esp. the ? ones).
4730 * Updated the builtin docs (esp. the ? ones).
4724
4731
4725 * Ran all the code through pychecker. Not terribly impressed with
4732 * Ran all the code through pychecker. Not terribly impressed with
4726 it: lots of spurious warnings and didn't really find anything of
4733 it: lots of spurious warnings and didn't really find anything of
4727 substance (just a few modules being imported and not used).
4734 substance (just a few modules being imported and not used).
4728
4735
4729 * Implemented the new ultraTB functionality into IPython. New
4736 * Implemented the new ultraTB functionality into IPython. New
4730 option: xcolors. This chooses color scheme. xmode now only selects
4737 option: xcolors. This chooses color scheme. xmode now only selects
4731 between Plain and Verbose. Better orthogonality.
4738 between Plain and Verbose. Better orthogonality.
4732
4739
4733 * Large rewrite of ultraTB. Much cleaner now, with a separation of
4740 * Large rewrite of ultraTB. Much cleaner now, with a separation of
4734 mode and color scheme for the exception handlers. Now it's
4741 mode and color scheme for the exception handlers. Now it's
4735 possible to have the verbose traceback with no coloring.
4742 possible to have the verbose traceback with no coloring.
4736
4743
4737 2001-11-23 Fernando Perez <fperez@colorado.edu>
4744 2001-11-23 Fernando Perez <fperez@colorado.edu>
4738
4745
4739 * Version 0.1.12 released, 0.1.13 opened.
4746 * Version 0.1.12 released, 0.1.13 opened.
4740
4747
4741 * Removed option to set auto-quote and auto-paren escapes by
4748 * Removed option to set auto-quote and auto-paren escapes by
4742 user. The chances of breaking valid syntax are just too high. If
4749 user. The chances of breaking valid syntax are just too high. If
4743 someone *really* wants, they can always dig into the code.
4750 someone *really* wants, they can always dig into the code.
4744
4751
4745 * Made prompt separators configurable.
4752 * Made prompt separators configurable.
4746
4753
4747 2001-11-22 Fernando Perez <fperez@colorado.edu>
4754 2001-11-22 Fernando Perez <fperez@colorado.edu>
4748
4755
4749 * Small bugfixes in many places.
4756 * Small bugfixes in many places.
4750
4757
4751 * Removed the MyCompleter class from ipplib. It seemed redundant
4758 * Removed the MyCompleter class from ipplib. It seemed redundant
4752 with the C-p,C-n history search functionality. Less code to
4759 with the C-p,C-n history search functionality. Less code to
4753 maintain.
4760 maintain.
4754
4761
4755 * Moved all the original ipython.py code into ipythonlib.py. Right
4762 * Moved all the original ipython.py code into ipythonlib.py. Right
4756 now it's just one big dump into a function called make_IPython, so
4763 now it's just one big dump into a function called make_IPython, so
4757 no real modularity has been gained. But at least it makes the
4764 no real modularity has been gained. But at least it makes the
4758 wrapper script tiny, and since ipythonlib is a module, it gets
4765 wrapper script tiny, and since ipythonlib is a module, it gets
4759 compiled and startup is much faster.
4766 compiled and startup is much faster.
4760
4767
4761 This is a reasobably 'deep' change, so we should test it for a
4768 This is a reasobably 'deep' change, so we should test it for a
4762 while without messing too much more with the code.
4769 while without messing too much more with the code.
4763
4770
4764 2001-11-21 Fernando Perez <fperez@colorado.edu>
4771 2001-11-21 Fernando Perez <fperez@colorado.edu>
4765
4772
4766 * Version 0.1.11 released, 0.1.12 opened for further work.
4773 * Version 0.1.11 released, 0.1.12 opened for further work.
4767
4774
4768 * Removed dependency on Itpl. It was only needed in one place. It
4775 * Removed dependency on Itpl. It was only needed in one place. It
4769 would be nice if this became part of python, though. It makes life
4776 would be nice if this became part of python, though. It makes life
4770 *a lot* easier in some cases.
4777 *a lot* easier in some cases.
4771
4778
4772 * Simplified the prefilter code a bit. Now all handlers are
4779 * Simplified the prefilter code a bit. Now all handlers are
4773 expected to explicitly return a value (at least a blank string).
4780 expected to explicitly return a value (at least a blank string).
4774
4781
4775 * Heavy edits in ipplib. Removed the help system altogether. Now
4782 * Heavy edits in ipplib. Removed the help system altogether. Now
4776 obj?/?? is used for inspecting objects, a magic @doc prints
4783 obj?/?? is used for inspecting objects, a magic @doc prints
4777 docstrings, and full-blown Python help is accessed via the 'help'
4784 docstrings, and full-blown Python help is accessed via the 'help'
4778 keyword. This cleans up a lot of code (less to maintain) and does
4785 keyword. This cleans up a lot of code (less to maintain) and does
4779 the job. Since 'help' is now a standard Python component, might as
4786 the job. Since 'help' is now a standard Python component, might as
4780 well use it and remove duplicate functionality.
4787 well use it and remove duplicate functionality.
4781
4788
4782 Also removed the option to use ipplib as a standalone program. By
4789 Also removed the option to use ipplib as a standalone program. By
4783 now it's too dependent on other parts of IPython to function alone.
4790 now it's too dependent on other parts of IPython to function alone.
4784
4791
4785 * Fixed bug in genutils.pager. It would crash if the pager was
4792 * Fixed bug in genutils.pager. It would crash if the pager was
4786 exited immediately after opening (broken pipe).
4793 exited immediately after opening (broken pipe).
4787
4794
4788 * Trimmed down the VerboseTB reporting a little. The header is
4795 * Trimmed down the VerboseTB reporting a little. The header is
4789 much shorter now and the repeated exception arguments at the end
4796 much shorter now and the repeated exception arguments at the end
4790 have been removed. For interactive use the old header seemed a bit
4797 have been removed. For interactive use the old header seemed a bit
4791 excessive.
4798 excessive.
4792
4799
4793 * Fixed small bug in output of @whos for variables with multi-word
4800 * Fixed small bug in output of @whos for variables with multi-word
4794 types (only first word was displayed).
4801 types (only first word was displayed).
4795
4802
4796 2001-11-17 Fernando Perez <fperez@colorado.edu>
4803 2001-11-17 Fernando Perez <fperez@colorado.edu>
4797
4804
4798 * Version 0.1.10 released, 0.1.11 opened for further work.
4805 * Version 0.1.10 released, 0.1.11 opened for further work.
4799
4806
4800 * Modified dirs and friends. dirs now *returns* the stack (not
4807 * Modified dirs and friends. dirs now *returns* the stack (not
4801 prints), so one can manipulate it as a variable. Convenient to
4808 prints), so one can manipulate it as a variable. Convenient to
4802 travel along many directories.
4809 travel along many directories.
4803
4810
4804 * Fixed bug in magic_pdef: would only work with functions with
4811 * Fixed bug in magic_pdef: would only work with functions with
4805 arguments with default values.
4812 arguments with default values.
4806
4813
4807 2001-11-14 Fernando Perez <fperez@colorado.edu>
4814 2001-11-14 Fernando Perez <fperez@colorado.edu>
4808
4815
4809 * Added the PhysicsInput stuff to dot_ipython so it ships as an
4816 * Added the PhysicsInput stuff to dot_ipython so it ships as an
4810 example with IPython. Various other minor fixes and cleanups.
4817 example with IPython. Various other minor fixes and cleanups.
4811
4818
4812 * Version 0.1.9 released, 0.1.10 opened for further work.
4819 * Version 0.1.9 released, 0.1.10 opened for further work.
4813
4820
4814 * Added sys.path to the list of directories searched in the
4821 * Added sys.path to the list of directories searched in the
4815 execfile= option. It used to be the current directory and the
4822 execfile= option. It used to be the current directory and the
4816 user's IPYTHONDIR only.
4823 user's IPYTHONDIR only.
4817
4824
4818 2001-11-13 Fernando Perez <fperez@colorado.edu>
4825 2001-11-13 Fernando Perez <fperez@colorado.edu>
4819
4826
4820 * Reinstated the raw_input/prefilter separation that Janko had
4827 * Reinstated the raw_input/prefilter separation that Janko had
4821 initially. This gives a more convenient setup for extending the
4828 initially. This gives a more convenient setup for extending the
4822 pre-processor from the outside: raw_input always gets a string,
4829 pre-processor from the outside: raw_input always gets a string,
4823 and prefilter has to process it. We can then redefine prefilter
4830 and prefilter has to process it. We can then redefine prefilter
4824 from the outside and implement extensions for special
4831 from the outside and implement extensions for special
4825 purposes.
4832 purposes.
4826
4833
4827 Today I got one for inputting PhysicalQuantity objects
4834 Today I got one for inputting PhysicalQuantity objects
4828 (from Scientific) without needing any function calls at
4835 (from Scientific) without needing any function calls at
4829 all. Extremely convenient, and it's all done as a user-level
4836 all. Extremely convenient, and it's all done as a user-level
4830 extension (no IPython code was touched). Now instead of:
4837 extension (no IPython code was touched). Now instead of:
4831 a = PhysicalQuantity(4.2,'m/s**2')
4838 a = PhysicalQuantity(4.2,'m/s**2')
4832 one can simply say
4839 one can simply say
4833 a = 4.2 m/s**2
4840 a = 4.2 m/s**2
4834 or even
4841 or even
4835 a = 4.2 m/s^2
4842 a = 4.2 m/s^2
4836
4843
4837 I use this, but it's also a proof of concept: IPython really is
4844 I use this, but it's also a proof of concept: IPython really is
4838 fully user-extensible, even at the level of the parsing of the
4845 fully user-extensible, even at the level of the parsing of the
4839 command line. It's not trivial, but it's perfectly doable.
4846 command line. It's not trivial, but it's perfectly doable.
4840
4847
4841 * Added 'add_flip' method to inclusion conflict resolver. Fixes
4848 * Added 'add_flip' method to inclusion conflict resolver. Fixes
4842 the problem of modules being loaded in the inverse order in which
4849 the problem of modules being loaded in the inverse order in which
4843 they were defined in
4850 they were defined in
4844
4851
4845 * Version 0.1.8 released, 0.1.9 opened for further work.
4852 * Version 0.1.8 released, 0.1.9 opened for further work.
4846
4853
4847 * Added magics pdef, source and file. They respectively show the
4854 * Added magics pdef, source and file. They respectively show the
4848 definition line ('prototype' in C), source code and full python
4855 definition line ('prototype' in C), source code and full python
4849 file for any callable object. The object inspector oinfo uses
4856 file for any callable object. The object inspector oinfo uses
4850 these to show the same information.
4857 these to show the same information.
4851
4858
4852 * Version 0.1.7 released, 0.1.8 opened for further work.
4859 * Version 0.1.7 released, 0.1.8 opened for further work.
4853
4860
4854 * Separated all the magic functions into a class called Magic. The
4861 * Separated all the magic functions into a class called Magic. The
4855 InteractiveShell class was becoming too big for Xemacs to handle
4862 InteractiveShell class was becoming too big for Xemacs to handle
4856 (de-indenting a line would lock it up for 10 seconds while it
4863 (de-indenting a line would lock it up for 10 seconds while it
4857 backtracked on the whole class!)
4864 backtracked on the whole class!)
4858
4865
4859 FIXME: didn't work. It can be done, but right now namespaces are
4866 FIXME: didn't work. It can be done, but right now namespaces are
4860 all messed up. Do it later (reverted it for now, so at least
4867 all messed up. Do it later (reverted it for now, so at least
4861 everything works as before).
4868 everything works as before).
4862
4869
4863 * Got the object introspection system (magic_oinfo) working! I
4870 * Got the object introspection system (magic_oinfo) working! I
4864 think this is pretty much ready for release to Janko, so he can
4871 think this is pretty much ready for release to Janko, so he can
4865 test it for a while and then announce it. Pretty much 100% of what
4872 test it for a while and then announce it. Pretty much 100% of what
4866 I wanted for the 'phase 1' release is ready. Happy, tired.
4873 I wanted for the 'phase 1' release is ready. Happy, tired.
4867
4874
4868 2001-11-12 Fernando Perez <fperez@colorado.edu>
4875 2001-11-12 Fernando Perez <fperez@colorado.edu>
4869
4876
4870 * Version 0.1.6 released, 0.1.7 opened for further work.
4877 * Version 0.1.6 released, 0.1.7 opened for further work.
4871
4878
4872 * Fixed bug in printing: it used to test for truth before
4879 * Fixed bug in printing: it used to test for truth before
4873 printing, so 0 wouldn't print. Now checks for None.
4880 printing, so 0 wouldn't print. Now checks for None.
4874
4881
4875 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
4882 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
4876 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
4883 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
4877 reaches by hand into the outputcache. Think of a better way to do
4884 reaches by hand into the outputcache. Think of a better way to do
4878 this later.
4885 this later.
4879
4886
4880 * Various small fixes thanks to Nathan's comments.
4887 * Various small fixes thanks to Nathan's comments.
4881
4888
4882 * Changed magic_pprint to magic_Pprint. This way it doesn't
4889 * Changed magic_pprint to magic_Pprint. This way it doesn't
4883 collide with pprint() and the name is consistent with the command
4890 collide with pprint() and the name is consistent with the command
4884 line option.
4891 line option.
4885
4892
4886 * Changed prompt counter behavior to be fully like
4893 * Changed prompt counter behavior to be fully like
4887 Mathematica's. That is, even input that doesn't return a result
4894 Mathematica's. That is, even input that doesn't return a result
4888 raises the prompt counter. The old behavior was kind of confusing
4895 raises the prompt counter. The old behavior was kind of confusing
4889 (getting the same prompt number several times if the operation
4896 (getting the same prompt number several times if the operation
4890 didn't return a result).
4897 didn't return a result).
4891
4898
4892 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
4899 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
4893
4900
4894 * Fixed -Classic mode (wasn't working anymore).
4901 * Fixed -Classic mode (wasn't working anymore).
4895
4902
4896 * Added colored prompts using Nathan's new code. Colors are
4903 * Added colored prompts using Nathan's new code. Colors are
4897 currently hardwired, they can be user-configurable. For
4904 currently hardwired, they can be user-configurable. For
4898 developers, they can be chosen in file ipythonlib.py, at the
4905 developers, they can be chosen in file ipythonlib.py, at the
4899 beginning of the CachedOutput class def.
4906 beginning of the CachedOutput class def.
4900
4907
4901 2001-11-11 Fernando Perez <fperez@colorado.edu>
4908 2001-11-11 Fernando Perez <fperez@colorado.edu>
4902
4909
4903 * Version 0.1.5 released, 0.1.6 opened for further work.
4910 * Version 0.1.5 released, 0.1.6 opened for further work.
4904
4911
4905 * Changed magic_env to *return* the environment as a dict (not to
4912 * Changed magic_env to *return* the environment as a dict (not to
4906 print it). This way it prints, but it can also be processed.
4913 print it). This way it prints, but it can also be processed.
4907
4914
4908 * Added Verbose exception reporting to interactive
4915 * Added Verbose exception reporting to interactive
4909 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
4916 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
4910 traceback. Had to make some changes to the ultraTB file. This is
4917 traceback. Had to make some changes to the ultraTB file. This is
4911 probably the last 'big' thing in my mental todo list. This ties
4918 probably the last 'big' thing in my mental todo list. This ties
4912 in with the next entry:
4919 in with the next entry:
4913
4920
4914 * Changed -Xi and -Xf to a single -xmode option. Now all the user
4921 * Changed -Xi and -Xf to a single -xmode option. Now all the user
4915 has to specify is Plain, Color or Verbose for all exception
4922 has to specify is Plain, Color or Verbose for all exception
4916 handling.
4923 handling.
4917
4924
4918 * Removed ShellServices option. All this can really be done via
4925 * Removed ShellServices option. All this can really be done via
4919 the magic system. It's easier to extend, cleaner and has automatic
4926 the magic system. It's easier to extend, cleaner and has automatic
4920 namespace protection and documentation.
4927 namespace protection and documentation.
4921
4928
4922 2001-11-09 Fernando Perez <fperez@colorado.edu>
4929 2001-11-09 Fernando Perez <fperez@colorado.edu>
4923
4930
4924 * Fixed bug in output cache flushing (missing parameter to
4931 * Fixed bug in output cache flushing (missing parameter to
4925 __init__). Other small bugs fixed (found using pychecker).
4932 __init__). Other small bugs fixed (found using pychecker).
4926
4933
4927 * Version 0.1.4 opened for bugfixing.
4934 * Version 0.1.4 opened for bugfixing.
4928
4935
4929 2001-11-07 Fernando Perez <fperez@colorado.edu>
4936 2001-11-07 Fernando Perez <fperez@colorado.edu>
4930
4937
4931 * Version 0.1.3 released, mainly because of the raw_input bug.
4938 * Version 0.1.3 released, mainly because of the raw_input bug.
4932
4939
4933 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
4940 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
4934 and when testing for whether things were callable, a call could
4941 and when testing for whether things were callable, a call could
4935 actually be made to certain functions. They would get called again
4942 actually be made to certain functions. They would get called again
4936 once 'really' executed, with a resulting double call. A disaster
4943 once 'really' executed, with a resulting double call. A disaster
4937 in many cases (list.reverse() would never work!).
4944 in many cases (list.reverse() would never work!).
4938
4945
4939 * Removed prefilter() function, moved its code to raw_input (which
4946 * Removed prefilter() function, moved its code to raw_input (which
4940 after all was just a near-empty caller for prefilter). This saves
4947 after all was just a near-empty caller for prefilter). This saves
4941 a function call on every prompt, and simplifies the class a tiny bit.
4948 a function call on every prompt, and simplifies the class a tiny bit.
4942
4949
4943 * Fix _ip to __ip name in magic example file.
4950 * Fix _ip to __ip name in magic example file.
4944
4951
4945 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
4952 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
4946 work with non-gnu versions of tar.
4953 work with non-gnu versions of tar.
4947
4954
4948 2001-11-06 Fernando Perez <fperez@colorado.edu>
4955 2001-11-06 Fernando Perez <fperez@colorado.edu>
4949
4956
4950 * Version 0.1.2. Just to keep track of the recent changes.
4957 * Version 0.1.2. Just to keep track of the recent changes.
4951
4958
4952 * Fixed nasty bug in output prompt routine. It used to check 'if
4959 * Fixed nasty bug in output prompt routine. It used to check 'if
4953 arg != None...'. Problem is, this fails if arg implements a
4960 arg != None...'. Problem is, this fails if arg implements a
4954 special comparison (__cmp__) which disallows comparing to
4961 special comparison (__cmp__) which disallows comparing to
4955 None. Found it when trying to use the PhysicalQuantity module from
4962 None. Found it when trying to use the PhysicalQuantity module from
4956 ScientificPython.
4963 ScientificPython.
4957
4964
4958 2001-11-05 Fernando Perez <fperez@colorado.edu>
4965 2001-11-05 Fernando Perez <fperez@colorado.edu>
4959
4966
4960 * Also added dirs. Now the pushd/popd/dirs family functions
4967 * Also added dirs. Now the pushd/popd/dirs family functions
4961 basically like the shell, with the added convenience of going home
4968 basically like the shell, with the added convenience of going home
4962 when called with no args.
4969 when called with no args.
4963
4970
4964 * pushd/popd slightly modified to mimic shell behavior more
4971 * pushd/popd slightly modified to mimic shell behavior more
4965 closely.
4972 closely.
4966
4973
4967 * Added env,pushd,popd from ShellServices as magic functions. I
4974 * Added env,pushd,popd from ShellServices as magic functions. I
4968 think the cleanest will be to port all desired functions from
4975 think the cleanest will be to port all desired functions from
4969 ShellServices as magics and remove ShellServices altogether. This
4976 ShellServices as magics and remove ShellServices altogether. This
4970 will provide a single, clean way of adding functionality
4977 will provide a single, clean way of adding functionality
4971 (shell-type or otherwise) to IP.
4978 (shell-type or otherwise) to IP.
4972
4979
4973 2001-11-04 Fernando Perez <fperez@colorado.edu>
4980 2001-11-04 Fernando Perez <fperez@colorado.edu>
4974
4981
4975 * Added .ipython/ directory to sys.path. This way users can keep
4982 * Added .ipython/ directory to sys.path. This way users can keep
4976 customizations there and access them via import.
4983 customizations there and access them via import.
4977
4984
4978 2001-11-03 Fernando Perez <fperez@colorado.edu>
4985 2001-11-03 Fernando Perez <fperez@colorado.edu>
4979
4986
4980 * Opened version 0.1.1 for new changes.
4987 * Opened version 0.1.1 for new changes.
4981
4988
4982 * Changed version number to 0.1.0: first 'public' release, sent to
4989 * Changed version number to 0.1.0: first 'public' release, sent to
4983 Nathan and Janko.
4990 Nathan and Janko.
4984
4991
4985 * Lots of small fixes and tweaks.
4992 * Lots of small fixes and tweaks.
4986
4993
4987 * Minor changes to whos format. Now strings are shown, snipped if
4994 * Minor changes to whos format. Now strings are shown, snipped if
4988 too long.
4995 too long.
4989
4996
4990 * Changed ShellServices to work on __main__ so they show up in @who
4997 * Changed ShellServices to work on __main__ so they show up in @who
4991
4998
4992 * Help also works with ? at the end of a line:
4999 * Help also works with ? at the end of a line:
4993 ?sin and sin?
5000 ?sin and sin?
4994 both produce the same effect. This is nice, as often I use the
5001 both produce the same effect. This is nice, as often I use the
4995 tab-complete to find the name of a method, but I used to then have
5002 tab-complete to find the name of a method, but I used to then have
4996 to go to the beginning of the line to put a ? if I wanted more
5003 to go to the beginning of the line to put a ? if I wanted more
4997 info. Now I can just add the ? and hit return. Convenient.
5004 info. Now I can just add the ? and hit return. Convenient.
4998
5005
4999 2001-11-02 Fernando Perez <fperez@colorado.edu>
5006 2001-11-02 Fernando Perez <fperez@colorado.edu>
5000
5007
5001 * Python version check (>=2.1) added.
5008 * Python version check (>=2.1) added.
5002
5009
5003 * Added LazyPython documentation. At this point the docs are quite
5010 * Added LazyPython documentation. At this point the docs are quite
5004 a mess. A cleanup is in order.
5011 a mess. A cleanup is in order.
5005
5012
5006 * Auto-installer created. For some bizarre reason, the zipfiles
5013 * Auto-installer created. For some bizarre reason, the zipfiles
5007 module isn't working on my system. So I made a tar version
5014 module isn't working on my system. So I made a tar version
5008 (hopefully the command line options in various systems won't kill
5015 (hopefully the command line options in various systems won't kill
5009 me).
5016 me).
5010
5017
5011 * Fixes to Struct in genutils. Now all dictionary-like methods are
5018 * Fixes to Struct in genutils. Now all dictionary-like methods are
5012 protected (reasonably).
5019 protected (reasonably).
5013
5020
5014 * Added pager function to genutils and changed ? to print usage
5021 * Added pager function to genutils and changed ? to print usage
5015 note through it (it was too long).
5022 note through it (it was too long).
5016
5023
5017 * Added the LazyPython functionality. Works great! I changed the
5024 * Added the LazyPython functionality. Works great! I changed the
5018 auto-quote escape to ';', it's on home row and next to '. But
5025 auto-quote escape to ';', it's on home row and next to '. But
5019 both auto-quote and auto-paren (still /) escapes are command-line
5026 both auto-quote and auto-paren (still /) escapes are command-line
5020 parameters.
5027 parameters.
5021
5028
5022
5029
5023 2001-11-01 Fernando Perez <fperez@colorado.edu>
5030 2001-11-01 Fernando Perez <fperez@colorado.edu>
5024
5031
5025 * Version changed to 0.0.7. Fairly large change: configuration now
5032 * Version changed to 0.0.7. Fairly large change: configuration now
5026 is all stored in a directory, by default .ipython. There, all
5033 is all stored in a directory, by default .ipython. There, all
5027 config files have normal looking names (not .names)
5034 config files have normal looking names (not .names)
5028
5035
5029 * Version 0.0.6 Released first to Lucas and Archie as a test
5036 * Version 0.0.6 Released first to Lucas and Archie as a test
5030 run. Since it's the first 'semi-public' release, change version to
5037 run. Since it's the first 'semi-public' release, change version to
5031 > 0.0.6 for any changes now.
5038 > 0.0.6 for any changes now.
5032
5039
5033 * Stuff I had put in the ipplib.py changelog:
5040 * Stuff I had put in the ipplib.py changelog:
5034
5041
5035 Changes to InteractiveShell:
5042 Changes to InteractiveShell:
5036
5043
5037 - Made the usage message a parameter.
5044 - Made the usage message a parameter.
5038
5045
5039 - Require the name of the shell variable to be given. It's a bit
5046 - Require the name of the shell variable to be given. It's a bit
5040 of a hack, but allows the name 'shell' not to be hardwire in the
5047 of a hack, but allows the name 'shell' not to be hardwire in the
5041 magic (@) handler, which is problematic b/c it requires
5048 magic (@) handler, which is problematic b/c it requires
5042 polluting the global namespace with 'shell'. This in turn is
5049 polluting the global namespace with 'shell'. This in turn is
5043 fragile: if a user redefines a variable called shell, things
5050 fragile: if a user redefines a variable called shell, things
5044 break.
5051 break.
5045
5052
5046 - magic @: all functions available through @ need to be defined
5053 - magic @: all functions available through @ need to be defined
5047 as magic_<name>, even though they can be called simply as
5054 as magic_<name>, even though they can be called simply as
5048 @<name>. This allows the special command @magic to gather
5055 @<name>. This allows the special command @magic to gather
5049 information automatically about all existing magic functions,
5056 information automatically about all existing magic functions,
5050 even if they are run-time user extensions, by parsing the shell
5057 even if they are run-time user extensions, by parsing the shell
5051 instance __dict__ looking for special magic_ names.
5058 instance __dict__ looking for special magic_ names.
5052
5059
5053 - mainloop: added *two* local namespace parameters. This allows
5060 - mainloop: added *two* local namespace parameters. This allows
5054 the class to differentiate between parameters which were there
5061 the class to differentiate between parameters which were there
5055 before and after command line initialization was processed. This
5062 before and after command line initialization was processed. This
5056 way, later @who can show things loaded at startup by the
5063 way, later @who can show things loaded at startup by the
5057 user. This trick was necessary to make session saving/reloading
5064 user. This trick was necessary to make session saving/reloading
5058 really work: ideally after saving/exiting/reloading a session,
5065 really work: ideally after saving/exiting/reloading a session,
5059 *everythin* should look the same, including the output of @who. I
5066 *everythin* should look the same, including the output of @who. I
5060 was only able to make this work with this double namespace
5067 was only able to make this work with this double namespace
5061 trick.
5068 trick.
5062
5069
5063 - added a header to the logfile which allows (almost) full
5070 - added a header to the logfile which allows (almost) full
5064 session restoring.
5071 session restoring.
5065
5072
5066 - prepend lines beginning with @ or !, with a and log
5073 - prepend lines beginning with @ or !, with a and log
5067 them. Why? !lines: may be useful to know what you did @lines:
5074 them. Why? !lines: may be useful to know what you did @lines:
5068 they may affect session state. So when restoring a session, at
5075 they may affect session state. So when restoring a session, at
5069 least inform the user of their presence. I couldn't quite get
5076 least inform the user of their presence. I couldn't quite get
5070 them to properly re-execute, but at least the user is warned.
5077 them to properly re-execute, but at least the user is warned.
5071
5078
5072 * Started ChangeLog.
5079 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now