##// END OF EJS Templates
Fix %upgrade, and suggest using it.
vivainio -
Show More
@@ -1,19 +1,24 b''
1 """ System wide configuration file for IPython.
1 """ System wide configuration file for IPython.
2
2
3 This will be imported by ipython for all users.
3 This will be imported by ipython for all users.
4
4
5 After this ipy_user_conf.py is imported, user specific configuration
5 After this ipy_user_conf.py is imported, user specific configuration
6 should reside there.
6 should reside there.
7
7
8 """
8 """
9
9
10 import IPython.ipapi as ip
10 import IPython.ipapi
11 ip = IPython.ipapi.get()
11
12
12 # add system wide configuration information, import extensions etc. here.
13 # add system wide configuration information, import extensions etc. here.
13 # nothing here is essential
14 # nothing here is essential
14
15
15 import sys
16 import sys
16
17
17 import ext_rehashdir # %rehashdir magic
18 import ext_rehashdir # %rehashdir magic
18 import ext_rescapture # var = !ls and var = %magic
19 import ext_rescapture # var = !ls and var = %magic
19 import pspersistence # %store magic
20 import pspersistence # %store magic
21
22 # Basic readline config
23
24 o = ip.options() No newline at end of file
@@ -1,736 +1,736 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 1140 2006-02-10 17:07:11Z vivainio $"""
9 $Id: ipmaker.py 1213 2006-03-16 13:45:11Z 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 # add personal .ipython dir to sys.path so that users can put things in
130 # add personal .ipython dir to sys.path so that users can put things in
131 # there for customization
131 # there for customization
132 sys.path.append(ipythondir)
132 sys.path.append(ipythondir)
133
133
134 sys.path.insert(0, '') # add . to sys.path. Fix from Prabhu Ramachandran
134 sys.path.insert(0, '') # add . to sys.path. Fix from Prabhu Ramachandran
135
135
136 # we need the directory where IPython itself is installed
136 # we need the directory where IPython itself is installed
137 import IPython
137 import IPython
138 IPython_dir = os.path.dirname(IPython.__file__)
138 IPython_dir = os.path.dirname(IPython.__file__)
139 del IPython
139 del IPython
140
140
141 #-------------------------------------------------------------------------
141 #-------------------------------------------------------------------------
142 # Command line handling
142 # Command line handling
143
143
144 # Valid command line options (uses DPyGetOpt syntax, like Perl's
144 # Valid command line options (uses DPyGetOpt syntax, like Perl's
145 # GetOpt::Long)
145 # GetOpt::Long)
146
146
147 # Any key not listed here gets deleted even if in the file (like session
147 # Any key not listed here gets deleted even if in the file (like session
148 # or profile). That's deliberate, to maintain the rc namespace clean.
148 # or profile). That's deliberate, to maintain the rc namespace clean.
149
149
150 # Each set of options appears twice: under _conv only the names are
150 # Each set of options appears twice: under _conv only the names are
151 # listed, indicating which type they must be converted to when reading the
151 # listed, indicating which type they must be converted to when reading the
152 # ipythonrc file. And under DPyGetOpt they are listed with the regular
152 # ipythonrc file. And under DPyGetOpt they are listed with the regular
153 # DPyGetOpt syntax (=s,=i,:f,etc).
153 # DPyGetOpt syntax (=s,=i,:f,etc).
154
154
155 # Make sure there's a space before each end of line (they get auto-joined!)
155 # Make sure there's a space before each end of line (they get auto-joined!)
156 cmdline_opts = ('autocall=i autoindent! automagic! banner! cache_size|cs=i '
156 cmdline_opts = ('autocall=i autoindent! automagic! banner! cache_size|cs=i '
157 'c=s classic|cl color_info! colors=s confirm_exit! '
157 'c=s classic|cl color_info! colors=s confirm_exit! '
158 'debug! deep_reload! editor=s log|l messages! nosep pdb! '
158 'debug! deep_reload! editor=s log|l messages! nosep pdb! '
159 'pprint! prompt_in1|pi1=s prompt_in2|pi2=s prompt_out|po=s '
159 'pprint! prompt_in1|pi1=s prompt_in2|pi2=s prompt_out|po=s '
160 'quick screen_length|sl=i prompts_pad_left=i '
160 'quick screen_length|sl=i prompts_pad_left=i '
161 'logfile|lf=s logplay|lp=s profile|p=s '
161 'logfile|lf=s logplay|lp=s profile|p=s '
162 'readline! readline_merge_completions! '
162 'readline! readline_merge_completions! '
163 'readline_omit__names! '
163 'readline_omit__names! '
164 'rcfile=s separate_in|si=s separate_out|so=s '
164 'rcfile=s separate_in|si=s separate_out|so=s '
165 'separate_out2|so2=s xmode=s wildcards_case_sensitive! '
165 'separate_out2|so2=s xmode=s wildcards_case_sensitive! '
166 'magic_docstrings system_verbose! '
166 'magic_docstrings system_verbose! '
167 'multi_line_specials! '
167 'multi_line_specials! '
168 'wxversion=s '
168 'wxversion=s '
169 'autoedit_syntax!')
169 'autoedit_syntax!')
170
170
171 # Options that can *only* appear at the cmd line (not in rcfiles).
171 # Options that can *only* appear at the cmd line (not in rcfiles).
172
172
173 # The "ignore" option is a kludge so that Emacs buffers don't crash, since
173 # The "ignore" option is a kludge so that Emacs buffers don't crash, since
174 # the 'C-c !' command in emacs automatically appends a -i option at the end.
174 # the 'C-c !' command in emacs automatically appends a -i option at the end.
175 cmdline_only = ('help ignore|i ipythondir=s Version upgrade '
175 cmdline_only = ('help ignore|i ipythondir=s Version upgrade '
176 'gthread! qthread! wthread! pylab! tk!')
176 'gthread! qthread! wthread! pylab! tk!')
177
177
178 # Build the actual name list to be used by DPyGetOpt
178 # Build the actual name list to be used by DPyGetOpt
179 opts_names = qw(cmdline_opts) + qw(cmdline_only)
179 opts_names = qw(cmdline_opts) + qw(cmdline_only)
180
180
181 # Set sensible command line defaults.
181 # Set sensible command line defaults.
182 # This should have everything from cmdline_opts and cmdline_only
182 # This should have everything from cmdline_opts and cmdline_only
183 opts_def = Struct(autocall = 1,
183 opts_def = Struct(autocall = 1,
184 autoedit_syntax = 1,
184 autoedit_syntax = 1,
185 autoindent=0,
185 autoindent=0,
186 automagic = 1,
186 automagic = 1,
187 banner = 1,
187 banner = 1,
188 cache_size = 1000,
188 cache_size = 1000,
189 c = '',
189 c = '',
190 classic = 0,
190 classic = 0,
191 colors = 'NoColor',
191 colors = 'NoColor',
192 color_info = 0,
192 color_info = 0,
193 confirm_exit = 1,
193 confirm_exit = 1,
194 debug = 0,
194 debug = 0,
195 deep_reload = 0,
195 deep_reload = 0,
196 editor = '0',
196 editor = '0',
197 help = 0,
197 help = 0,
198 ignore = 0,
198 ignore = 0,
199 ipythondir = ipythondir,
199 ipythondir = ipythondir,
200 log = 0,
200 log = 0,
201 logfile = '',
201 logfile = '',
202 logplay = '',
202 logplay = '',
203 multi_line_specials = 1,
203 multi_line_specials = 1,
204 messages = 1,
204 messages = 1,
205 nosep = 0,
205 nosep = 0,
206 pdb = 0,
206 pdb = 0,
207 pprint = 0,
207 pprint = 0,
208 profile = '',
208 profile = '',
209 prompt_in1 = 'In [\\#]: ',
209 prompt_in1 = 'In [\\#]: ',
210 prompt_in2 = ' .\\D.: ',
210 prompt_in2 = ' .\\D.: ',
211 prompt_out = 'Out[\\#]: ',
211 prompt_out = 'Out[\\#]: ',
212 prompts_pad_left = 1,
212 prompts_pad_left = 1,
213 quick = 0,
213 quick = 0,
214 readline = 1,
214 readline = 1,
215 readline_merge_completions = 1,
215 readline_merge_completions = 1,
216 readline_omit__names = 0,
216 readline_omit__names = 0,
217 rcfile = 'ipythonrc' + rc_suffix,
217 rcfile = 'ipythonrc' + rc_suffix,
218 screen_length = 0,
218 screen_length = 0,
219 separate_in = '\n',
219 separate_in = '\n',
220 separate_out = '\n',
220 separate_out = '\n',
221 separate_out2 = '',
221 separate_out2 = '',
222 system_verbose = 0,
222 system_verbose = 0,
223 gthread = 0,
223 gthread = 0,
224 qthread = 0,
224 qthread = 0,
225 wthread = 0,
225 wthread = 0,
226 pylab = 0,
226 pylab = 0,
227 tk = 0,
227 tk = 0,
228 upgrade = 0,
228 upgrade = 0,
229 Version = 0,
229 Version = 0,
230 xmode = 'Verbose',
230 xmode = 'Verbose',
231 wildcards_case_sensitive = 1,
231 wildcards_case_sensitive = 1,
232 wxversion = '0',
232 wxversion = '0',
233 magic_docstrings = 0, # undocumented, for doc generation
233 magic_docstrings = 0, # undocumented, for doc generation
234 )
234 )
235
235
236 # Things that will *only* appear in rcfiles (not at the command line).
236 # Things that will *only* appear in rcfiles (not at the command line).
237 # Make sure there's a space before each end of line (they get auto-joined!)
237 # Make sure there's a space before each end of line (they get auto-joined!)
238 rcfile_opts = { qwflat: 'include import_mod import_all execfile ',
238 rcfile_opts = { qwflat: 'include import_mod import_all execfile ',
239 qw_lol: 'import_some ',
239 qw_lol: 'import_some ',
240 # for things with embedded whitespace:
240 # for things with embedded whitespace:
241 list_strings:'execute alias readline_parse_and_bind ',
241 list_strings:'execute alias readline_parse_and_bind ',
242 # Regular strings need no conversion:
242 # Regular strings need no conversion:
243 None:'readline_remove_delims ',
243 None:'readline_remove_delims ',
244 }
244 }
245 # Default values for these
245 # Default values for these
246 rc_def = Struct(include = [],
246 rc_def = Struct(include = [],
247 import_mod = [],
247 import_mod = [],
248 import_all = [],
248 import_all = [],
249 import_some = [[]],
249 import_some = [[]],
250 execute = [],
250 execute = [],
251 execfile = [],
251 execfile = [],
252 alias = [],
252 alias = [],
253 readline_parse_and_bind = [],
253 readline_parse_and_bind = [],
254 readline_remove_delims = '',
254 readline_remove_delims = '',
255 )
255 )
256
256
257 # Build the type conversion dictionary from the above tables:
257 # Build the type conversion dictionary from the above tables:
258 typeconv = rcfile_opts.copy()
258 typeconv = rcfile_opts.copy()
259 typeconv.update(optstr2types(cmdline_opts))
259 typeconv.update(optstr2types(cmdline_opts))
260
260
261 # FIXME: the None key appears in both, put that back together by hand. Ugly!
261 # FIXME: the None key appears in both, put that back together by hand. Ugly!
262 typeconv[None] += ' ' + rcfile_opts[None]
262 typeconv[None] += ' ' + rcfile_opts[None]
263
263
264 # Remove quotes at ends of all strings (used to protect spaces)
264 # Remove quotes at ends of all strings (used to protect spaces)
265 typeconv[unquote_ends] = typeconv[None]
265 typeconv[unquote_ends] = typeconv[None]
266 del typeconv[None]
266 del typeconv[None]
267
267
268 # Build the list we'll use to make all config decisions with defaults:
268 # Build the list we'll use to make all config decisions with defaults:
269 opts_all = opts_def.copy()
269 opts_all = opts_def.copy()
270 opts_all.update(rc_def)
270 opts_all.update(rc_def)
271
271
272 # Build conflict resolver for recursive loading of config files:
272 # Build conflict resolver for recursive loading of config files:
273 # - preserve means the outermost file maintains the value, it is not
273 # - preserve means the outermost file maintains the value, it is not
274 # overwritten if an included file has the same key.
274 # overwritten if an included file has the same key.
275 # - add_flip applies + to the two values, so it better make sense to add
275 # - add_flip applies + to the two values, so it better make sense to add
276 # those types of keys. But it flips them first so that things loaded
276 # those types of keys. But it flips them first so that things loaded
277 # deeper in the inclusion chain have lower precedence.
277 # deeper in the inclusion chain have lower precedence.
278 conflict = {'preserve': ' '.join([ typeconv[int],
278 conflict = {'preserve': ' '.join([ typeconv[int],
279 typeconv[unquote_ends] ]),
279 typeconv[unquote_ends] ]),
280 'add_flip': ' '.join([ typeconv[qwflat],
280 'add_flip': ' '.join([ typeconv[qwflat],
281 typeconv[qw_lol],
281 typeconv[qw_lol],
282 typeconv[list_strings] ])
282 typeconv[list_strings] ])
283 }
283 }
284
284
285 # Now actually process the command line
285 # Now actually process the command line
286 getopt = DPyGetOpt.DPyGetOpt()
286 getopt = DPyGetOpt.DPyGetOpt()
287 getopt.setIgnoreCase(0)
287 getopt.setIgnoreCase(0)
288
288
289 getopt.parseConfiguration(opts_names)
289 getopt.parseConfiguration(opts_names)
290
290
291 try:
291 try:
292 getopt.processArguments(argv)
292 getopt.processArguments(argv)
293 except:
293 except:
294 print cmd_line_usage
294 print cmd_line_usage
295 warn('\nError in Arguments: ' + `sys.exc_value`)
295 warn('\nError in Arguments: ' + `sys.exc_value`)
296 sys.exit(1)
296 sys.exit(1)
297
297
298 # convert the options dict to a struct for much lighter syntax later
298 # convert the options dict to a struct for much lighter syntax later
299 opts = Struct(getopt.optionValues)
299 opts = Struct(getopt.optionValues)
300 args = getopt.freeValues
300 args = getopt.freeValues
301
301
302 # this is the struct (which has default values at this point) with which
302 # this is the struct (which has default values at this point) with which
303 # we make all decisions:
303 # we make all decisions:
304 opts_all.update(opts)
304 opts_all.update(opts)
305
305
306 # Options that force an immediate exit
306 # Options that force an immediate exit
307 if opts_all.help:
307 if opts_all.help:
308 page(cmd_line_usage)
308 page(cmd_line_usage)
309 sys.exit()
309 sys.exit()
310
310
311 if opts_all.Version:
311 if opts_all.Version:
312 print __version__
312 print __version__
313 sys.exit()
313 sys.exit()
314
314
315 if opts_all.magic_docstrings:
315 if opts_all.magic_docstrings:
316 IP.magic_magic('-latex')
316 IP.magic_magic('-latex')
317 sys.exit()
317 sys.exit()
318
318
319 # Create user config directory if it doesn't exist. This must be done
319 # Create user config directory if it doesn't exist. This must be done
320 # *after* getting the cmd line options.
320 # *after* getting the cmd line options.
321 if not os.path.isdir(opts_all.ipythondir):
321 if not os.path.isdir(opts_all.ipythondir):
322 IP.user_setup(opts_all.ipythondir,rc_suffix,'install')
322 IP.user_setup(opts_all.ipythondir,rc_suffix,'install')
323
323
324 # upgrade user config files while preserving a copy of the originals
324 # upgrade user config files while preserving a copy of the originals
325 if opts_all.upgrade:
325 if opts_all.upgrade:
326 IP.user_setup(opts_all.ipythondir,rc_suffix,'upgrade')
326 IP.user_setup(opts_all.ipythondir,rc_suffix,'upgrade')
327
327
328 # check mutually exclusive options in the *original* command line
328 # check mutually exclusive options in the *original* command line
329 mutex_opts(opts,[qw('log logfile'),qw('rcfile profile'),
329 mutex_opts(opts,[qw('log logfile'),qw('rcfile profile'),
330 qw('classic profile'),qw('classic rcfile')])
330 qw('classic profile'),qw('classic rcfile')])
331
331
332 #---------------------------------------------------------------------------
332 #---------------------------------------------------------------------------
333 # Log replay
333 # Log replay
334
334
335 # if -logplay, we need to 'become' the other session. That basically means
335 # if -logplay, we need to 'become' the other session. That basically means
336 # replacing the current command line environment with that of the old
336 # replacing the current command line environment with that of the old
337 # session and moving on.
337 # session and moving on.
338
338
339 # this is needed so that later we know we're in session reload mode, as
339 # this is needed so that later we know we're in session reload mode, as
340 # opts_all will get overwritten:
340 # opts_all will get overwritten:
341 load_logplay = 0
341 load_logplay = 0
342
342
343 if opts_all.logplay:
343 if opts_all.logplay:
344 load_logplay = opts_all.logplay
344 load_logplay = opts_all.logplay
345 opts_debug_save = opts_all.debug
345 opts_debug_save = opts_all.debug
346 try:
346 try:
347 logplay = open(opts_all.logplay)
347 logplay = open(opts_all.logplay)
348 except IOError:
348 except IOError:
349 if opts_all.debug: IP.InteractiveTB()
349 if opts_all.debug: IP.InteractiveTB()
350 warn('Could not open logplay file '+`opts_all.logplay`)
350 warn('Could not open logplay file '+`opts_all.logplay`)
351 # restore state as if nothing had happened and move on, but make
351 # restore state as if nothing had happened and move on, but make
352 # sure that later we don't try to actually load the session file
352 # sure that later we don't try to actually load the session file
353 logplay = None
353 logplay = None
354 load_logplay = 0
354 load_logplay = 0
355 del opts_all.logplay
355 del opts_all.logplay
356 else:
356 else:
357 try:
357 try:
358 logplay.readline()
358 logplay.readline()
359 logplay.readline();
359 logplay.readline();
360 # this reloads that session's command line
360 # this reloads that session's command line
361 cmd = logplay.readline()[6:]
361 cmd = logplay.readline()[6:]
362 exec cmd
362 exec cmd
363 # restore the true debug flag given so that the process of
363 # restore the true debug flag given so that the process of
364 # session loading itself can be monitored.
364 # session loading itself can be monitored.
365 opts.debug = opts_debug_save
365 opts.debug = opts_debug_save
366 # save the logplay flag so later we don't overwrite the log
366 # save the logplay flag so later we don't overwrite the log
367 opts.logplay = load_logplay
367 opts.logplay = load_logplay
368 # now we must update our own structure with defaults
368 # now we must update our own structure with defaults
369 opts_all.update(opts)
369 opts_all.update(opts)
370 # now load args
370 # now load args
371 cmd = logplay.readline()[6:]
371 cmd = logplay.readline()[6:]
372 exec cmd
372 exec cmd
373 logplay.close()
373 logplay.close()
374 except:
374 except:
375 logplay.close()
375 logplay.close()
376 if opts_all.debug: IP.InteractiveTB()
376 if opts_all.debug: IP.InteractiveTB()
377 warn("Logplay file lacking full configuration information.\n"
377 warn("Logplay file lacking full configuration information.\n"
378 "I'll try to read it, but some things may not work.")
378 "I'll try to read it, but some things may not work.")
379
379
380 #-------------------------------------------------------------------------
380 #-------------------------------------------------------------------------
381 # set up output traps: catch all output from files, being run, modules
381 # set up output traps: catch all output from files, being run, modules
382 # loaded, etc. Then give it to the user in a clean form at the end.
382 # loaded, etc. Then give it to the user in a clean form at the end.
383
383
384 msg_out = 'Output messages. '
384 msg_out = 'Output messages. '
385 msg_err = 'Error messages. '
385 msg_err = 'Error messages. '
386 msg_sep = '\n'
386 msg_sep = '\n'
387 msg = Struct(config = OutputTrap('Configuration Loader',msg_out,
387 msg = Struct(config = OutputTrap('Configuration Loader',msg_out,
388 msg_err,msg_sep,debug,
388 msg_err,msg_sep,debug,
389 quiet_out=1),
389 quiet_out=1),
390 user_exec = OutputTrap('User File Execution',msg_out,
390 user_exec = OutputTrap('User File Execution',msg_out,
391 msg_err,msg_sep,debug),
391 msg_err,msg_sep,debug),
392 logplay = OutputTrap('Log Loader',msg_out,
392 logplay = OutputTrap('Log Loader',msg_out,
393 msg_err,msg_sep,debug),
393 msg_err,msg_sep,debug),
394 summary = ''
394 summary = ''
395 )
395 )
396
396
397 #-------------------------------------------------------------------------
397 #-------------------------------------------------------------------------
398 # Process user ipythonrc-type configuration files
398 # Process user ipythonrc-type configuration files
399
399
400 # turn on output trapping and log to msg.config
400 # turn on output trapping and log to msg.config
401 # remember that with debug on, trapping is actually disabled
401 # remember that with debug on, trapping is actually disabled
402 msg.config.trap_all()
402 msg.config.trap_all()
403
403
404 # look for rcfile in current or default directory
404 # look for rcfile in current or default directory
405 try:
405 try:
406 opts_all.rcfile = filefind(opts_all.rcfile,opts_all.ipythondir)
406 opts_all.rcfile = filefind(opts_all.rcfile,opts_all.ipythondir)
407 except IOError:
407 except IOError:
408 if opts_all.debug: IP.InteractiveTB()
408 if opts_all.debug: IP.InteractiveTB()
409 warn('Configuration file %s not found. Ignoring request.'
409 warn('Configuration file %s not found. Ignoring request.'
410 % (opts_all.rcfile) )
410 % (opts_all.rcfile) )
411
411
412 # 'profiles' are a shorthand notation for config filenames
412 # 'profiles' are a shorthand notation for config filenames
413 if opts_all.profile:
413 if opts_all.profile:
414
414
415 try:
415 try:
416 opts_all.rcfile = filefind('ipythonrc-' + opts_all.profile
416 opts_all.rcfile = filefind('ipythonrc-' + opts_all.profile
417 + rc_suffix,
417 + rc_suffix,
418 opts_all.ipythondir)
418 opts_all.ipythondir)
419 except IOError:
419 except IOError:
420 if opts_all.debug: IP.InteractiveTB()
420 if opts_all.debug: IP.InteractiveTB()
421 opts.profile = '' # remove profile from options if invalid
421 opts.profile = '' # remove profile from options if invalid
422 # We won't warn anymore, primary method is ipy_profile_PROFNAME
422 # We won't warn anymore, primary method is ipy_profile_PROFNAME
423 # which does trigger a warning.
423 # which does trigger a warning.
424
424
425 # load the config file
425 # load the config file
426 rcfiledata = None
426 rcfiledata = None
427 if opts_all.quick:
427 if opts_all.quick:
428 print 'Launching IPython in quick mode. No config file read.'
428 print 'Launching IPython in quick mode. No config file read.'
429 elif opts_all.classic:
429 elif opts_all.classic:
430 print 'Launching IPython in classic mode. No config file read.'
430 print 'Launching IPython in classic mode. No config file read.'
431 elif opts_all.rcfile:
431 elif opts_all.rcfile:
432 try:
432 try:
433 cfg_loader = ConfigLoader(conflict)
433 cfg_loader = ConfigLoader(conflict)
434 rcfiledata = cfg_loader.load(opts_all.rcfile,typeconv,
434 rcfiledata = cfg_loader.load(opts_all.rcfile,typeconv,
435 'include',opts_all.ipythondir,
435 'include',opts_all.ipythondir,
436 purge = 1,
436 purge = 1,
437 unique = conflict['preserve'])
437 unique = conflict['preserve'])
438 except:
438 except:
439 IP.InteractiveTB()
439 IP.InteractiveTB()
440 warn('Problems loading configuration file '+
440 warn('Problems loading configuration file '+
441 `opts_all.rcfile`+
441 `opts_all.rcfile`+
442 '\nStarting with default -bare bones- configuration.')
442 '\nStarting with default -bare bones- configuration.')
443 else:
443 else:
444 warn('No valid configuration file found in either currrent directory\n'+
444 warn('No valid configuration file found in either currrent directory\n'+
445 'or in the IPython config. directory: '+`opts_all.ipythondir`+
445 'or in the IPython config. directory: '+`opts_all.ipythondir`+
446 '\nProceeding with internal defaults.')
446 '\nProceeding with internal defaults.')
447
447
448 #------------------------------------------------------------------------
448 #------------------------------------------------------------------------
449 # Set exception handlers in mode requested by user.
449 # Set exception handlers in mode requested by user.
450 otrap = OutputTrap(trap_out=1) # trap messages from magic_xmode
450 otrap = OutputTrap(trap_out=1) # trap messages from magic_xmode
451 IP.magic_xmode(opts_all.xmode)
451 IP.magic_xmode(opts_all.xmode)
452 otrap.release_out()
452 otrap.release_out()
453
453
454 #------------------------------------------------------------------------
454 #------------------------------------------------------------------------
455 # Execute user config
455 # Execute user config
456
456
457 # Create a valid config structure with the right precedence order:
457 # Create a valid config structure with the right precedence order:
458 # defaults < rcfile < command line. This needs to be in the instance, so
458 # defaults < rcfile < command line. This needs to be in the instance, so
459 # that method calls below that rely on it find it.
459 # that method calls below that rely on it find it.
460 IP.rc = rc_def.copy()
460 IP.rc = rc_def.copy()
461
461
462 # Work with a local alias inside this routine to avoid unnecessary
462 # Work with a local alias inside this routine to avoid unnecessary
463 # attribute lookups.
463 # attribute lookups.
464 IP_rc = IP.rc
464 IP_rc = IP.rc
465
465
466 IP_rc.update(opts_def)
466 IP_rc.update(opts_def)
467 if rcfiledata:
467 if rcfiledata:
468 # now we can update
468 # now we can update
469 IP_rc.update(rcfiledata)
469 IP_rc.update(rcfiledata)
470 IP_rc.update(opts)
470 IP_rc.update(opts)
471 IP_rc.update(rc_override)
471 IP_rc.update(rc_override)
472
472
473 # Store the original cmd line for reference:
473 # Store the original cmd line for reference:
474 IP_rc.opts = opts
474 IP_rc.opts = opts
475 IP_rc.args = args
475 IP_rc.args = args
476
476
477 # create a *runtime* Struct like rc for holding parameters which may be
477 # create a *runtime* Struct like rc for holding parameters which may be
478 # created and/or modified by runtime user extensions.
478 # created and/or modified by runtime user extensions.
479 IP.runtime_rc = Struct()
479 IP.runtime_rc = Struct()
480
480
481 # from this point on, all config should be handled through IP_rc,
481 # from this point on, all config should be handled through IP_rc,
482 # opts* shouldn't be used anymore.
482 # opts* shouldn't be used anymore.
483
483
484
484
485 # update IP_rc with some special things that need manual
485 # update IP_rc with some special things that need manual
486 # tweaks. Basically options which affect other options. I guess this
486 # tweaks. Basically options which affect other options. I guess this
487 # should just be written so that options are fully orthogonal and we
487 # should just be written so that options are fully orthogonal and we
488 # wouldn't worry about this stuff!
488 # wouldn't worry about this stuff!
489
489
490 if IP_rc.classic:
490 if IP_rc.classic:
491 IP_rc.quick = 1
491 IP_rc.quick = 1
492 IP_rc.cache_size = 0
492 IP_rc.cache_size = 0
493 IP_rc.pprint = 0
493 IP_rc.pprint = 0
494 IP_rc.prompt_in1 = '>>> '
494 IP_rc.prompt_in1 = '>>> '
495 IP_rc.prompt_in2 = '... '
495 IP_rc.prompt_in2 = '... '
496 IP_rc.prompt_out = ''
496 IP_rc.prompt_out = ''
497 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
497 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
498 IP_rc.colors = 'NoColor'
498 IP_rc.colors = 'NoColor'
499 IP_rc.xmode = 'Plain'
499 IP_rc.xmode = 'Plain'
500
500
501 IP.pre_config_initialization()
501 IP.pre_config_initialization()
502 # configure readline
502 # configure readline
503 # Define the history file for saving commands in between sessions
503 # Define the history file for saving commands in between sessions
504 if IP_rc.profile:
504 if IP_rc.profile:
505 histfname = 'history-%s' % IP_rc.profile
505 histfname = 'history-%s' % IP_rc.profile
506 else:
506 else:
507 histfname = 'history'
507 histfname = 'history'
508 IP.histfile = os.path.join(opts_all.ipythondir,histfname)
508 IP.histfile = os.path.join(opts_all.ipythondir,histfname)
509
509
510 # update exception handlers with rc file status
510 # update exception handlers with rc file status
511 otrap.trap_out() # I don't want these messages ever.
511 otrap.trap_out() # I don't want these messages ever.
512 IP.magic_xmode(IP_rc.xmode)
512 IP.magic_xmode(IP_rc.xmode)
513 otrap.release_out()
513 otrap.release_out()
514
514
515 # activate logging if requested and not reloading a log
515 # activate logging if requested and not reloading a log
516 if IP_rc.logplay:
516 if IP_rc.logplay:
517 IP.magic_logstart(IP_rc.logplay + ' append')
517 IP.magic_logstart(IP_rc.logplay + ' append')
518 elif IP_rc.logfile:
518 elif IP_rc.logfile:
519 IP.magic_logstart(IP_rc.logfile)
519 IP.magic_logstart(IP_rc.logfile)
520 elif IP_rc.log:
520 elif IP_rc.log:
521 IP.magic_logstart()
521 IP.magic_logstart()
522
522
523 # find user editor so that it we don't have to look it up constantly
523 # find user editor so that it we don't have to look it up constantly
524 if IP_rc.editor.strip()=='0':
524 if IP_rc.editor.strip()=='0':
525 try:
525 try:
526 ed = os.environ['EDITOR']
526 ed = os.environ['EDITOR']
527 except KeyError:
527 except KeyError:
528 if os.name == 'posix':
528 if os.name == 'posix':
529 ed = 'vi' # the only one guaranteed to be there!
529 ed = 'vi' # the only one guaranteed to be there!
530 else:
530 else:
531 ed = 'notepad' # same in Windows!
531 ed = 'notepad' # same in Windows!
532 IP_rc.editor = ed
532 IP_rc.editor = ed
533
533
534 # Keep track of whether this is an embedded instance or not (useful for
534 # Keep track of whether this is an embedded instance or not (useful for
535 # post-mortems).
535 # post-mortems).
536 IP_rc.embedded = IP.embedded
536 IP_rc.embedded = IP.embedded
537
537
538 # Recursive reload
538 # Recursive reload
539 try:
539 try:
540 from IPython import deep_reload
540 from IPython import deep_reload
541 if IP_rc.deep_reload:
541 if IP_rc.deep_reload:
542 __builtin__.reload = deep_reload.reload
542 __builtin__.reload = deep_reload.reload
543 else:
543 else:
544 __builtin__.dreload = deep_reload.reload
544 __builtin__.dreload = deep_reload.reload
545 del deep_reload
545 del deep_reload
546 except ImportError:
546 except ImportError:
547 pass
547 pass
548
548
549 # Save the current state of our namespace so that the interactive shell
549 # Save the current state of our namespace so that the interactive shell
550 # can later know which variables have been created by us from config files
550 # can later know which variables have been created by us from config files
551 # and loading. This way, loading a file (in any way) is treated just like
551 # and loading. This way, loading a file (in any way) is treated just like
552 # defining things on the command line, and %who works as expected.
552 # defining things on the command line, and %who works as expected.
553
553
554 # DON'T do anything that affects the namespace beyond this point!
554 # DON'T do anything that affects the namespace beyond this point!
555 IP.internal_ns.update(__main__.__dict__)
555 IP.internal_ns.update(__main__.__dict__)
556
556
557 #IP.internal_ns.update(locals()) # so our stuff doesn't show up in %who
557 #IP.internal_ns.update(locals()) # so our stuff doesn't show up in %who
558
558
559 # Now run through the different sections of the users's config
559 # Now run through the different sections of the users's config
560 if IP_rc.debug:
560 if IP_rc.debug:
561 print 'Trying to execute the following configuration structure:'
561 print 'Trying to execute the following configuration structure:'
562 print '(Things listed first are deeper in the inclusion tree and get'
562 print '(Things listed first are deeper in the inclusion tree and get'
563 print 'loaded first).\n'
563 print 'loaded first).\n'
564 pprint(IP_rc.__dict__)
564 pprint(IP_rc.__dict__)
565
565
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 except ImportError:
608 except ImportError:
609 if opts_all.debug: IP.InteractiveTB()
609 if opts_all.debug: IP.InteractiveTB()
610 warn("Could not import 'ipy_system_conf'")
610 warn("Could not import 'ipy_system_conf'")
611
611
612 if opts_all.profile:
612 if opts_all.profile:
613 profmodname = 'ipy_profile_' + opts_all.profile
613 profmodname = 'ipy_profile_' + opts_all.profile
614 try:
614 try:
615 __import__(profmodname)
615 __import__(profmodname)
616 except ImportError:
616 except ImportError:
617 # only warn if ipythonrc-PROFNAME didn't exist
617 # only warn if ipythonrc-PROFNAME didn't exist
618 if opts.profile =='':
618 if opts.profile =='':
619 warn("Could not start with profile '%s'!\n ('%s/%s.py' does not exist?)" % (
619 warn("Could not start with profile '%s'!\n ('%s/%s.py' does not exist? run '%%upgrade')" % (
620 opts_all.profile, ipythondir, profmodname)
620 opts_all.profile, ipythondir, profmodname)
621
621
622 )
622 )
623 try:
623 try:
624 import ipy_user_conf
624 import ipy_user_conf
625 except ImportError:
625 except ImportError:
626 if opts_all.debug: IP.InteractiveTB()
626 if opts_all.debug: IP.InteractiveTB()
627 warn("Could not import user config!\n ('%s/ipy_user_conf.py' does not exist?)" %
627 warn("Could not import user config!\n ('%s/ipy_user_conf.py' does not exist? Please run '%%upgrade')\n" %
628 ipythondir)
628 ipythondir)
629
629
630 # release stdout and stderr and save config log into a global summary
630 # release stdout and stderr and save config log into a global summary
631 msg.config.release_all()
631 msg.config.release_all()
632 if IP_rc.messages:
632 if IP_rc.messages:
633 msg.summary += msg.config.summary_all()
633 msg.summary += msg.config.summary_all()
634
634
635 #------------------------------------------------------------------------
635 #------------------------------------------------------------------------
636 # Setup interactive session
636 # Setup interactive session
637
637
638 # Now we should be fully configured. We can then execute files or load
638 # Now we should be fully configured. We can then execute files or load
639 # things only needed for interactive use. Then we'll open the shell.
639 # things only needed for interactive use. Then we'll open the shell.
640
640
641 # Take a snapshot of the user namespace before opening the shell. That way
641 # Take a snapshot of the user namespace before opening the shell. That way
642 # we'll be able to identify which things were interactively defined and
642 # we'll be able to identify which things were interactively defined and
643 # which were defined through config files.
643 # which were defined through config files.
644 IP.user_config_ns = IP.user_ns.copy()
644 IP.user_config_ns = IP.user_ns.copy()
645
645
646 # Force reading a file as if it were a session log. Slower but safer.
646 # Force reading a file as if it were a session log. Slower but safer.
647 if load_logplay:
647 if load_logplay:
648 print 'Replaying log...'
648 print 'Replaying log...'
649 try:
649 try:
650 if IP_rc.debug:
650 if IP_rc.debug:
651 logplay_quiet = 0
651 logplay_quiet = 0
652 else:
652 else:
653 logplay_quiet = 1
653 logplay_quiet = 1
654
654
655 msg.logplay.trap_all()
655 msg.logplay.trap_all()
656 IP.safe_execfile(load_logplay,IP.user_ns,
656 IP.safe_execfile(load_logplay,IP.user_ns,
657 islog = 1, quiet = logplay_quiet)
657 islog = 1, quiet = logplay_quiet)
658 msg.logplay.release_all()
658 msg.logplay.release_all()
659 if IP_rc.messages:
659 if IP_rc.messages:
660 msg.summary += msg.logplay.summary_all()
660 msg.summary += msg.logplay.summary_all()
661 except:
661 except:
662 warn('Problems replaying logfile %s.' % load_logplay)
662 warn('Problems replaying logfile %s.' % load_logplay)
663 IP.InteractiveTB()
663 IP.InteractiveTB()
664
664
665 # Load remaining files in command line
665 # Load remaining files in command line
666 msg.user_exec.trap_all()
666 msg.user_exec.trap_all()
667
667
668 # Do NOT execute files named in the command line as scripts to be loaded
668 # Do NOT execute files named in the command line as scripts to be loaded
669 # by embedded instances. Doing so has the potential for an infinite
669 # by embedded instances. Doing so has the potential for an infinite
670 # recursion if there are exceptions thrown in the process.
670 # recursion if there are exceptions thrown in the process.
671
671
672 # XXX FIXME: the execution of user files should be moved out to after
672 # XXX FIXME: the execution of user files should be moved out to after
673 # ipython is fully initialized, just as if they were run via %run at the
673 # ipython is fully initialized, just as if they were run via %run at the
674 # ipython prompt. This would also give them the benefit of ipython's
674 # ipython prompt. This would also give them the benefit of ipython's
675 # nice tracebacks.
675 # nice tracebacks.
676
676
677 if not embedded and IP_rc.args:
677 if not embedded and IP_rc.args:
678 name_save = IP.user_ns['__name__']
678 name_save = IP.user_ns['__name__']
679 IP.user_ns['__name__'] = '__main__'
679 IP.user_ns['__name__'] = '__main__'
680 # Set our own excepthook in case the user code tries to call it
680 # Set our own excepthook in case the user code tries to call it
681 # directly. This prevents triggering the IPython crash handler.
681 # directly. This prevents triggering the IPython crash handler.
682 old_excepthook,sys.excepthook = sys.excepthook, IP.excepthook
682 old_excepthook,sys.excepthook = sys.excepthook, IP.excepthook
683
683
684 save_argv = sys.argv[:] # save it for later restoring
684 save_argv = sys.argv[:] # save it for later restoring
685
685
686 sys.argv = args
686 sys.argv = args
687
687
688 try:
688 try:
689 IP.safe_execfile(args[0], IP.user_ns)
689 IP.safe_execfile(args[0], IP.user_ns)
690 finally:
690 finally:
691 # Reset our crash handler in place
691 # Reset our crash handler in place
692 sys.excepthook = old_excepthook
692 sys.excepthook = old_excepthook
693 sys.argv = save_argv
693 sys.argv = save_argv
694 IP.user_ns['__name__'] = name_save
694 IP.user_ns['__name__'] = name_save
695
695
696 msg.user_exec.release_all()
696 msg.user_exec.release_all()
697 if IP_rc.messages:
697 if IP_rc.messages:
698 msg.summary += msg.user_exec.summary_all()
698 msg.summary += msg.user_exec.summary_all()
699
699
700 # since we can't specify a null string on the cmd line, 0 is the equivalent:
700 # since we can't specify a null string on the cmd line, 0 is the equivalent:
701 if IP_rc.nosep:
701 if IP_rc.nosep:
702 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
702 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
703 if IP_rc.separate_in == '0': IP_rc.separate_in = ''
703 if IP_rc.separate_in == '0': IP_rc.separate_in = ''
704 if IP_rc.separate_out == '0': IP_rc.separate_out = ''
704 if IP_rc.separate_out == '0': IP_rc.separate_out = ''
705 if IP_rc.separate_out2 == '0': IP_rc.separate_out2 = ''
705 if IP_rc.separate_out2 == '0': IP_rc.separate_out2 = ''
706 IP_rc.separate_in = IP_rc.separate_in.replace('\\n','\n')
706 IP_rc.separate_in = IP_rc.separate_in.replace('\\n','\n')
707 IP_rc.separate_out = IP_rc.separate_out.replace('\\n','\n')
707 IP_rc.separate_out = IP_rc.separate_out.replace('\\n','\n')
708 IP_rc.separate_out2 = IP_rc.separate_out2.replace('\\n','\n')
708 IP_rc.separate_out2 = IP_rc.separate_out2.replace('\\n','\n')
709
709
710 # Determine how many lines at the bottom of the screen are needed for
710 # Determine how many lines at the bottom of the screen are needed for
711 # showing prompts, so we can know wheter long strings are to be printed or
711 # showing prompts, so we can know wheter long strings are to be printed or
712 # paged:
712 # paged:
713 num_lines_bot = IP_rc.separate_in.count('\n')+1
713 num_lines_bot = IP_rc.separate_in.count('\n')+1
714 IP_rc.screen_length = IP_rc.screen_length - num_lines_bot
714 IP_rc.screen_length = IP_rc.screen_length - num_lines_bot
715
715
716 # configure startup banner
716 # configure startup banner
717 if IP_rc.c: # regular python doesn't print the banner with -c
717 if IP_rc.c: # regular python doesn't print the banner with -c
718 IP_rc.banner = 0
718 IP_rc.banner = 0
719 if IP_rc.banner:
719 if IP_rc.banner:
720 BANN_P = IP.BANNER_PARTS
720 BANN_P = IP.BANNER_PARTS
721 else:
721 else:
722 BANN_P = []
722 BANN_P = []
723
723
724 if IP_rc.profile: BANN_P.append('IPython profile: %s\n' % IP_rc.profile)
724 if IP_rc.profile: BANN_P.append('IPython profile: %s\n' % IP_rc.profile)
725
725
726 # add message log (possibly empty)
726 # add message log (possibly empty)
727 if msg.summary: BANN_P.append(msg.summary)
727 if msg.summary: BANN_P.append(msg.summary)
728 # Final banner is a string
728 # Final banner is a string
729 IP.BANNER = '\n'.join(BANN_P)
729 IP.BANNER = '\n'.join(BANN_P)
730
730
731 # Finalize the IPython instance. This assumes the rc structure is fully
731 # Finalize the IPython instance. This assumes the rc structure is fully
732 # in place.
732 # in place.
733 IP.post_config_initialization()
733 IP.post_config_initialization()
734
734
735 return IP
735 return IP
736 #************************ end of file <ipmaker.py> **************************
736 #************************ end of file <ipmaker.py> **************************
@@ -1,88 +1,88 b''
1 #!/usr/bin/env python
1 #!/usr/bin/env python
2 """ A script/util to upgrade all files in a directory
2 """ A script/util to upgrade all files in a directory
3
3
4 This is rather conservative in its approach, only copying/overwriting
4 This is rather conservative in its approach, only copying/overwriting
5 new and unedited files.
5 new and unedited files.
6
6
7 To be used by "upgrade" feature.
7 To be used by "upgrade" feature.
8 """
8 """
9 from path import path
9 from IPython.Extensions.path import path
10 import md5,pickle
10 import md5,pickle
11
11
12 def showdiff(old,new):
12 def showdiff(old,new):
13 import difflib
13 import difflib
14 d = difflib.Differ()
14 d = difflib.Differ()
15 lines = d.compare(old.lines(),new.lines())
15 lines = d.compare(old.lines(),new.lines())
16 realdiff = False
16 realdiff = False
17 for l in lines:
17 for l in lines:
18 print l,
18 print l,
19 if not realdiff and not l[0].isspace():
19 if not realdiff and not l[0].isspace():
20 realdiff = True
20 realdiff = True
21 return realdiff
21 return realdiff
22
22
23 def upgrade_dir(srcdir, tgtdir):
23 def upgrade_dir(srcdir, tgtdir):
24 """ Copy over all files in srcdir to tgtdir w/ native line endings
24 """ Copy over all files in srcdir to tgtdir w/ native line endings
25
25
26 Creates .upgrade_report in tgtdir that stores md5sums of all files
26 Creates .upgrade_report in tgtdir that stores md5sums of all files
27 to notice changed files b/w upgrades.
27 to notice changed files b/w upgrades.
28 """
28 """
29
29
30 def pr(s):
30 def pr(s):
31 print s
31 print s
32
32
33 def ignorable(p):
33 def ignorable(p):
34 if p.lower().startswith('.svn') or p.startswith('ipythonrc'):
34 if p.lower().startswith('.svn') or p.startswith('ipythonrc'):
35 return True
35 return True
36 return False
36 return False
37
37
38
38
39 modded = []
39 modded = []
40 files = [path(srcdir).relpathto(p) for p in path(srcdir).walkfiles()]
40 files = [path(srcdir).relpathto(p) for p in path(srcdir).walkfiles()]
41 #print files
41 #print files
42 rep = tgtdir / '.upgrade_report'
42 rep = tgtdir / '.upgrade_report'
43 try:
43 try:
44 rpt = pickle.load(rep.open())
44 rpt = pickle.load(rep.open())
45 except:
45 except:
46 rpt = {}
46 rpt = {}
47
47
48 for f in files:
48 for f in files:
49 if ignorable(f):
49 if ignorable(f):
50 continue
50 continue
51 src = srcdir / f
51 src = srcdir / f
52 tgt = tgtdir / f
52 tgt = tgtdir / f
53 if not tgt.isfile():
53 if not tgt.isfile():
54 pr("Creating %s" % str(tgt))
54 pr("Creating %s" % str(tgt))
55
55
56 tgt.write_text(src.text())
56 tgt.write_text(src.text())
57 rpt[str(tgt)] = md5.new(tgt.text()).hexdigest()
57 rpt[str(tgt)] = md5.new(tgt.text()).hexdigest()
58 else:
58 else:
59 cont = tgt.text()
59 cont = tgt.text()
60 sum = rpt.get(str(tgt), None)
60 sum = rpt.get(str(tgt), None)
61 #print sum
61 #print sum
62 if sum and md5.new(cont).hexdigest() == sum:
62 if sum and md5.new(cont).hexdigest() == sum:
63 pr("Unedited, installing new %s" % tgt)
63 pr("Unedited, installing new %s" % tgt)
64 rpt[str(tgt)] = md5.new(tgt.text()).hexdigest()
64 rpt[str(tgt)] = md5.new(tgt.text()).hexdigest()
65 else:
65 else:
66 pr(' == Modified, skipping %s, diffs below == ' % tgt)
66 pr(' == Modified, skipping %s, diffs below == ' % tgt)
67 #rpt[str(tgt)] = md5.new(tgt.bytes()).hexdigest()
67 #rpt[str(tgt)] = md5.new(tgt.bytes()).hexdigest()
68 real = showdiff(tgt,src)
68 real = showdiff(tgt,src)
69 pr('') # empty line
69 pr('') # empty line
70 if not real:
70 if not real:
71 pr("(Ok, it wasn't that different at all, upgrading checksum)")
71 pr("(Ok, it wasn't that different at all, upgrading checksum)")
72 rpt[str(tgt)] = md5.new(tgt.text()).hexdigest()
72 rpt[str(tgt)] = md5.new(tgt.text()).hexdigest()
73 else:
73 else:
74 modded.append(tgt)
74 modded.append(tgt)
75
75
76 #print rpt
76 #print rpt
77 pickle.dump(rpt, rep.open('w'))
77 pickle.dump(rpt, rep.open('w'))
78 if modded:
78 if modded:
79 print "\n\nDelete the following files manually if you need a full upgrade:"
79 print "\n\nDelete the following files manually if you need a full upgrade:"
80 for m in modded:
80 for m in modded:
81 print m
81 print m
82
82
83
83
84 import sys
84 import sys
85 if __name__ == "__main__":
85 if __name__ == "__main__":
86 upgrade_dir(path(sys.argv[1]), path(sys.argv[2]))
86 upgrade_dir(path(sys.argv[1]), path(sys.argv[2]))
87
87
88
88
@@ -1,5275 +1,5282 b''
1 2006-03-16 Ville Vainio <vivainio@gmail.com>
2
3 * upgrade_dir.py: Take path.py from Extensions, correcting
4 %upgrade magic
5
6 * Suggest using %upgrade if ipy_user_conf.py isn't found.
7
1 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
8 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
2
9
3 * Manual: thanks to a tip on proper color handling for Emacs, by
10 * Manual: thanks to a tip on proper color handling for Emacs, by
4 Eric J Haywiser <ejh1-AT-MIT.EDU>.
11 Eric J Haywiser <ejh1-AT-MIT.EDU>.
5
12
6 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
13 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
7 by applying the provided patch. Thanks to Liu Jin
14 by applying the provided patch. Thanks to Liu Jin
8 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
15 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
9 XEmacs/Linux, I'm trusting the submitter that it actually helps
16 XEmacs/Linux, I'm trusting the submitter that it actually helps
10 under win32/GNU Emacs. Will revisit if any problems are reported.
17 under win32/GNU Emacs. Will revisit if any problems are reported.
11
18
12 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
19 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
13
20
14 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
21 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
15 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
22 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
16
23
17 2006-03-12 Ville Vainio <vivainio@gmail.com>
24 2006-03-12 Ville Vainio <vivainio@gmail.com>
18
25
19 * Magic.py (magic_timeit): Added %timeit magic, contributed by
26 * Magic.py (magic_timeit): Added %timeit magic, contributed by
20 Torsten Marek.
27 Torsten Marek.
21
28
22 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
29 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
23
30
24 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
31 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
25 line ranges works again.
32 line ranges works again.
26
33
27 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
34 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
28
35
29 * IPython/iplib.py (showtraceback): add back sys.last_traceback
36 * IPython/iplib.py (showtraceback): add back sys.last_traceback
30 and friends, after a discussion with Zach Pincus on ipython-user.
37 and friends, after a discussion with Zach Pincus on ipython-user.
31 I'm not 100% sure, but after thinking aobut it quite a bit, it may
38 I'm not 100% sure, but after thinking aobut it quite a bit, it may
32 be OK. Testing with the multithreaded shells didn't reveal any
39 be OK. Testing with the multithreaded shells didn't reveal any
33 problems, but let's keep an eye out.
40 problems, but let's keep an eye out.
34
41
35 In the process, I fixed a few things which were calling
42 In the process, I fixed a few things which were calling
36 self.InteractiveTB() directly (like safe_execfile), which is a
43 self.InteractiveTB() directly (like safe_execfile), which is a
37 mistake: ALL exception reporting should be done by calling
44 mistake: ALL exception reporting should be done by calling
38 self.showtraceback(), which handles state and tab-completion and
45 self.showtraceback(), which handles state and tab-completion and
39 more.
46 more.
40
47
41 2006-03-01 Ville Vainio <vivainio@gmail.com>
48 2006-03-01 Ville Vainio <vivainio@gmail.com>
42
49
43 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
50 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
44 To use, do "from ipipe import *".
51 To use, do "from ipipe import *".
45
52
46 2006-02-24 Ville Vainio <vivainio@gmail.com>
53 2006-02-24 Ville Vainio <vivainio@gmail.com>
47
54
48 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
55 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
49 "cleanly" and safely than the older upgrade mechanism.
56 "cleanly" and safely than the older upgrade mechanism.
50
57
51 2006-02-21 Ville Vainio <vivainio@gmail.com>
58 2006-02-21 Ville Vainio <vivainio@gmail.com>
52
59
53 * Magic.py: %save works again.
60 * Magic.py: %save works again.
54
61
55 2006-02-15 Ville Vainio <vivainio@gmail.com>
62 2006-02-15 Ville Vainio <vivainio@gmail.com>
56
63
57 * Magic.py: %Pprint works again
64 * Magic.py: %Pprint works again
58
65
59 * Extensions/ipy_sane_defaults.py: Provide everything provided
66 * Extensions/ipy_sane_defaults.py: Provide everything provided
60 in default ipythonrc, to make it possible to have a completely empty
67 in default ipythonrc, to make it possible to have a completely empty
61 ipythonrc (and thus completely rc-file free configuration)
68 ipythonrc (and thus completely rc-file free configuration)
62
69
63
70
64 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
71 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
65
72
66 * IPython/hooks.py (editor): quote the call to the editor command,
73 * IPython/hooks.py (editor): quote the call to the editor command,
67 to allow commands with spaces in them. Problem noted by watching
74 to allow commands with spaces in them. Problem noted by watching
68 Ian Oswald's video about textpad under win32 at
75 Ian Oswald's video about textpad under win32 at
69 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
76 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
70
77
71 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
78 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
72 describing magics (we haven't used @ for a loong time).
79 describing magics (we haven't used @ for a loong time).
73
80
74 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
81 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
75 contributed by marienz to close
82 contributed by marienz to close
76 http://www.scipy.net/roundup/ipython/issue53.
83 http://www.scipy.net/roundup/ipython/issue53.
77
84
78 2006-02-10 Ville Vainio <vivainio@gmail.com>
85 2006-02-10 Ville Vainio <vivainio@gmail.com>
79
86
80 * genutils.py: getoutput now works in win32 too
87 * genutils.py: getoutput now works in win32 too
81
88
82 * completer.py: alias and magic completion only invoked
89 * completer.py: alias and magic completion only invoked
83 at the first "item" in the line, to avoid "cd %store"
90 at the first "item" in the line, to avoid "cd %store"
84 nonsense.
91 nonsense.
85
92
86 2006-02-09 Ville Vainio <vivainio@gmail.com>
93 2006-02-09 Ville Vainio <vivainio@gmail.com>
87
94
88 * test/*: Added a unit testing framework (finally).
95 * test/*: Added a unit testing framework (finally).
89 '%run runtests.py' to run test_*.
96 '%run runtests.py' to run test_*.
90
97
91 * ipapi.py: Exposed runlines and set_custom_exc
98 * ipapi.py: Exposed runlines and set_custom_exc
92
99
93 2006-02-07 Ville Vainio <vivainio@gmail.com>
100 2006-02-07 Ville Vainio <vivainio@gmail.com>
94
101
95 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
102 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
96 instead use "f(1 2)" as before.
103 instead use "f(1 2)" as before.
97
104
98 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
105 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
99
106
100 * IPython/demo.py (IPythonDemo): Add new classes to the demo
107 * IPython/demo.py (IPythonDemo): Add new classes to the demo
101 facilities, for demos processed by the IPython input filter
108 facilities, for demos processed by the IPython input filter
102 (IPythonDemo), and for running a script one-line-at-a-time as a
109 (IPythonDemo), and for running a script one-line-at-a-time as a
103 demo, both for pure Python (LineDemo) and for IPython-processed
110 demo, both for pure Python (LineDemo) and for IPython-processed
104 input (IPythonLineDemo). After a request by Dave Kohel, from the
111 input (IPythonLineDemo). After a request by Dave Kohel, from the
105 SAGE team.
112 SAGE team.
106 (Demo.edit): added and edit() method to the demo objects, to edit
113 (Demo.edit): added and edit() method to the demo objects, to edit
107 the in-memory copy of the last executed block.
114 the in-memory copy of the last executed block.
108
115
109 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
116 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
110 processing to %edit, %macro and %save. These commands can now be
117 processing to %edit, %macro and %save. These commands can now be
111 invoked on the unprocessed input as it was typed by the user
118 invoked on the unprocessed input as it was typed by the user
112 (without any prefilters applied). After requests by the SAGE team
119 (without any prefilters applied). After requests by the SAGE team
113 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
120 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
114
121
115 2006-02-01 Ville Vainio <vivainio@gmail.com>
122 2006-02-01 Ville Vainio <vivainio@gmail.com>
116
123
117 * setup.py, eggsetup.py: easy_install ipython==dev works
124 * setup.py, eggsetup.py: easy_install ipython==dev works
118 correctly now (on Linux)
125 correctly now (on Linux)
119
126
120 * ipy_user_conf,ipmaker: user config changes, removed spurious
127 * ipy_user_conf,ipmaker: user config changes, removed spurious
121 warnings
128 warnings
122
129
123 * iplib: if rc.banner is string, use it as is.
130 * iplib: if rc.banner is string, use it as is.
124
131
125 * Magic: %pycat accepts a string argument and pages it's contents.
132 * Magic: %pycat accepts a string argument and pages it's contents.
126
133
127
134
128 2006-01-30 Ville Vainio <vivainio@gmail.com>
135 2006-01-30 Ville Vainio <vivainio@gmail.com>
129
136
130 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
137 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
131 Now %store and bookmarks work through PickleShare, meaning that
138 Now %store and bookmarks work through PickleShare, meaning that
132 concurrent access is possible and all ipython sessions see the
139 concurrent access is possible and all ipython sessions see the
133 same database situation all the time, instead of snapshot of
140 same database situation all the time, instead of snapshot of
134 the situation when the session was started. Hence, %bookmark
141 the situation when the session was started. Hence, %bookmark
135 results are immediately accessible from othes sessions. The database
142 results are immediately accessible from othes sessions. The database
136 is also available for use by user extensions. See:
143 is also available for use by user extensions. See:
137 http://www.python.org/pypi/pickleshare
144 http://www.python.org/pypi/pickleshare
138
145
139 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
146 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
140
147
141 * aliases can now be %store'd
148 * aliases can now be %store'd
142
149
143 * path.py move to Extensions so that pickleshare does not need
150 * path.py move to Extensions so that pickleshare does not need
144 IPython-specific import. Extensions added to pythonpath right
151 IPython-specific import. Extensions added to pythonpath right
145 at __init__.
152 at __init__.
146
153
147 * iplib.py: ipalias deprecated/redundant; aliases are converted and
154 * iplib.py: ipalias deprecated/redundant; aliases are converted and
148 called with _ip.system and the pre-transformed command string.
155 called with _ip.system and the pre-transformed command string.
149
156
150 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
157 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
151
158
152 * IPython/iplib.py (interact): Fix that we were not catching
159 * IPython/iplib.py (interact): Fix that we were not catching
153 KeyboardInterrupt exceptions properly. I'm not quite sure why the
160 KeyboardInterrupt exceptions properly. I'm not quite sure why the
154 logic here had to change, but it's fixed now.
161 logic here had to change, but it's fixed now.
155
162
156 2006-01-29 Ville Vainio <vivainio@gmail.com>
163 2006-01-29 Ville Vainio <vivainio@gmail.com>
157
164
158 * iplib.py: Try to import pyreadline on Windows.
165 * iplib.py: Try to import pyreadline on Windows.
159
166
160 2006-01-27 Ville Vainio <vivainio@gmail.com>
167 2006-01-27 Ville Vainio <vivainio@gmail.com>
161
168
162 * iplib.py: Expose ipapi as _ip in builtin namespace.
169 * iplib.py: Expose ipapi as _ip in builtin namespace.
163 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
170 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
164 and ip_set_hook (-> _ip.set_hook) redundant. % and !
171 and ip_set_hook (-> _ip.set_hook) redundant. % and !
165 syntax now produce _ip.* variant of the commands.
172 syntax now produce _ip.* variant of the commands.
166
173
167 * "_ip.options().autoedit_syntax = 2" automatically throws
174 * "_ip.options().autoedit_syntax = 2" automatically throws
168 user to editor for syntax error correction without prompting.
175 user to editor for syntax error correction without prompting.
169
176
170 2006-01-27 Ville Vainio <vivainio@gmail.com>
177 2006-01-27 Ville Vainio <vivainio@gmail.com>
171
178
172 * ipmaker.py: Give "realistic" sys.argv for scripts (without
179 * ipmaker.py: Give "realistic" sys.argv for scripts (without
173 'ipython' at argv[0]) executed through command line.
180 'ipython' at argv[0]) executed through command line.
174 NOTE: this DEPRECATES calling ipython with multiple scripts
181 NOTE: this DEPRECATES calling ipython with multiple scripts
175 ("ipython a.py b.py c.py")
182 ("ipython a.py b.py c.py")
176
183
177 * iplib.py, hooks.py: Added configurable input prefilter,
184 * iplib.py, hooks.py: Added configurable input prefilter,
178 named 'input_prefilter'. See ext_rescapture.py for example
185 named 'input_prefilter'. See ext_rescapture.py for example
179 usage.
186 usage.
180
187
181 * ext_rescapture.py, Magic.py: Better system command output capture
188 * ext_rescapture.py, Magic.py: Better system command output capture
182 through 'var = !ls' (deprecates user-visible %sc). Same notation
189 through 'var = !ls' (deprecates user-visible %sc). Same notation
183 applies for magics, 'var = %alias' assigns alias list to var.
190 applies for magics, 'var = %alias' assigns alias list to var.
184
191
185 * ipapi.py: added meta() for accessing extension-usable data store.
192 * ipapi.py: added meta() for accessing extension-usable data store.
186
193
187 * iplib.py: added InteractiveShell.getapi(). New magics should be
194 * iplib.py: added InteractiveShell.getapi(). New magics should be
188 written doing self.getapi() instead of using the shell directly.
195 written doing self.getapi() instead of using the shell directly.
189
196
190 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
197 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
191 %store foo >> ~/myfoo.txt to store variables to files (in clean
198 %store foo >> ~/myfoo.txt to store variables to files (in clean
192 textual form, not a restorable pickle).
199 textual form, not a restorable pickle).
193
200
194 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
201 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
195
202
196 * usage.py, Magic.py: added %quickref
203 * usage.py, Magic.py: added %quickref
197
204
198 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
205 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
199
206
200 * GetoptErrors when invoking magics etc. with wrong args
207 * GetoptErrors when invoking magics etc. with wrong args
201 are now more helpful:
208 are now more helpful:
202 GetoptError: option -l not recognized (allowed: "qb" )
209 GetoptError: option -l not recognized (allowed: "qb" )
203
210
204 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
211 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
205
212
206 * IPython/demo.py (Demo.show): Flush stdout after each block, so
213 * IPython/demo.py (Demo.show): Flush stdout after each block, so
207 computationally intensive blocks don't appear to stall the demo.
214 computationally intensive blocks don't appear to stall the demo.
208
215
209 2006-01-24 Ville Vainio <vivainio@gmail.com>
216 2006-01-24 Ville Vainio <vivainio@gmail.com>
210
217
211 * iplib.py, hooks.py: 'result_display' hook can return a non-None
218 * iplib.py, hooks.py: 'result_display' hook can return a non-None
212 value to manipulate resulting history entry.
219 value to manipulate resulting history entry.
213
220
214 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
221 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
215 to instance methods of IPApi class, to make extending an embedded
222 to instance methods of IPApi class, to make extending an embedded
216 IPython feasible. See ext_rehashdir.py for example usage.
223 IPython feasible. See ext_rehashdir.py for example usage.
217
224
218 * Merged 1071-1076 from banches/0.7.1
225 * Merged 1071-1076 from banches/0.7.1
219
226
220
227
221 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
228 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
222
229
223 * tools/release (daystamp): Fix build tools to use the new
230 * tools/release (daystamp): Fix build tools to use the new
224 eggsetup.py script to build lightweight eggs.
231 eggsetup.py script to build lightweight eggs.
225
232
226 * Applied changesets 1062 and 1064 before 0.7.1 release.
233 * Applied changesets 1062 and 1064 before 0.7.1 release.
227
234
228 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
235 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
229 see the raw input history (without conversions like %ls ->
236 see the raw input history (without conversions like %ls ->
230 ipmagic("ls")). After a request from W. Stein, SAGE
237 ipmagic("ls")). After a request from W. Stein, SAGE
231 (http://modular.ucsd.edu/sage) developer. This information is
238 (http://modular.ucsd.edu/sage) developer. This information is
232 stored in the input_hist_raw attribute of the IPython instance, so
239 stored in the input_hist_raw attribute of the IPython instance, so
233 developers can access it if needed (it's an InputList instance).
240 developers can access it if needed (it's an InputList instance).
234
241
235 * Versionstring = 0.7.2.svn
242 * Versionstring = 0.7.2.svn
236
243
237 * eggsetup.py: A separate script for constructing eggs, creates
244 * eggsetup.py: A separate script for constructing eggs, creates
238 proper launch scripts even on Windows (an .exe file in
245 proper launch scripts even on Windows (an .exe file in
239 \python24\scripts).
246 \python24\scripts).
240
247
241 * ipapi.py: launch_new_instance, launch entry point needed for the
248 * ipapi.py: launch_new_instance, launch entry point needed for the
242 egg.
249 egg.
243
250
244 2006-01-23 Ville Vainio <vivainio@gmail.com>
251 2006-01-23 Ville Vainio <vivainio@gmail.com>
245
252
246 * Added %cpaste magic for pasting python code
253 * Added %cpaste magic for pasting python code
247
254
248 2006-01-22 Ville Vainio <vivainio@gmail.com>
255 2006-01-22 Ville Vainio <vivainio@gmail.com>
249
256
250 * Merge from branches/0.7.1 into trunk, revs 1052-1057
257 * Merge from branches/0.7.1 into trunk, revs 1052-1057
251
258
252 * Versionstring = 0.7.2.svn
259 * Versionstring = 0.7.2.svn
253
260
254 * eggsetup.py: A separate script for constructing eggs, creates
261 * eggsetup.py: A separate script for constructing eggs, creates
255 proper launch scripts even on Windows (an .exe file in
262 proper launch scripts even on Windows (an .exe file in
256 \python24\scripts).
263 \python24\scripts).
257
264
258 * ipapi.py: launch_new_instance, launch entry point needed for the
265 * ipapi.py: launch_new_instance, launch entry point needed for the
259 egg.
266 egg.
260
267
261 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
268 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
262
269
263 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
270 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
264 %pfile foo would print the file for foo even if it was a binary.
271 %pfile foo would print the file for foo even if it was a binary.
265 Now, extensions '.so' and '.dll' are skipped.
272 Now, extensions '.so' and '.dll' are skipped.
266
273
267 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
274 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
268 bug, where macros would fail in all threaded modes. I'm not 100%
275 bug, where macros would fail in all threaded modes. I'm not 100%
269 sure, so I'm going to put out an rc instead of making a release
276 sure, so I'm going to put out an rc instead of making a release
270 today, and wait for feedback for at least a few days.
277 today, and wait for feedback for at least a few days.
271
278
272 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
279 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
273 it...) the handling of pasting external code with autoindent on.
280 it...) the handling of pasting external code with autoindent on.
274 To get out of a multiline input, the rule will appear for most
281 To get out of a multiline input, the rule will appear for most
275 users unchanged: two blank lines or change the indent level
282 users unchanged: two blank lines or change the indent level
276 proposed by IPython. But there is a twist now: you can
283 proposed by IPython. But there is a twist now: you can
277 add/subtract only *one or two spaces*. If you add/subtract three
284 add/subtract only *one or two spaces*. If you add/subtract three
278 or more (unless you completely delete the line), IPython will
285 or more (unless you completely delete the line), IPython will
279 accept that line, and you'll need to enter a second one of pure
286 accept that line, and you'll need to enter a second one of pure
280 whitespace. I know it sounds complicated, but I can't find a
287 whitespace. I know it sounds complicated, but I can't find a
281 different solution that covers all the cases, with the right
288 different solution that covers all the cases, with the right
282 heuristics. Hopefully in actual use, nobody will really notice
289 heuristics. Hopefully in actual use, nobody will really notice
283 all these strange rules and things will 'just work'.
290 all these strange rules and things will 'just work'.
284
291
285 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
292 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
286
293
287 * IPython/iplib.py (interact): catch exceptions which can be
294 * IPython/iplib.py (interact): catch exceptions which can be
288 triggered asynchronously by signal handlers. Thanks to an
295 triggered asynchronously by signal handlers. Thanks to an
289 automatic crash report, submitted by Colin Kingsley
296 automatic crash report, submitted by Colin Kingsley
290 <tercel-AT-gentoo.org>.
297 <tercel-AT-gentoo.org>.
291
298
292 2006-01-20 Ville Vainio <vivainio@gmail.com>
299 2006-01-20 Ville Vainio <vivainio@gmail.com>
293
300
294 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
301 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
295 (%rehashdir, very useful, try it out) of how to extend ipython
302 (%rehashdir, very useful, try it out) of how to extend ipython
296 with new magics. Also added Extensions dir to pythonpath to make
303 with new magics. Also added Extensions dir to pythonpath to make
297 importing extensions easy.
304 importing extensions easy.
298
305
299 * %store now complains when trying to store interactively declared
306 * %store now complains when trying to store interactively declared
300 classes / instances of those classes.
307 classes / instances of those classes.
301
308
302 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
309 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
303 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
310 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
304 if they exist, and ipy_user_conf.py with some defaults is created for
311 if they exist, and ipy_user_conf.py with some defaults is created for
305 the user.
312 the user.
306
313
307 * Startup rehashing done by the config file, not InterpreterExec.
314 * Startup rehashing done by the config file, not InterpreterExec.
308 This means system commands are available even without selecting the
315 This means system commands are available even without selecting the
309 pysh profile. It's the sensible default after all.
316 pysh profile. It's the sensible default after all.
310
317
311 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
318 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
312
319
313 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
320 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
314 multiline code with autoindent on working. But I am really not
321 multiline code with autoindent on working. But I am really not
315 sure, so this needs more testing. Will commit a debug-enabled
322 sure, so this needs more testing. Will commit a debug-enabled
316 version for now, while I test it some more, so that Ville and
323 version for now, while I test it some more, so that Ville and
317 others may also catch any problems. Also made
324 others may also catch any problems. Also made
318 self.indent_current_str() a method, to ensure that there's no
325 self.indent_current_str() a method, to ensure that there's no
319 chance of the indent space count and the corresponding string
326 chance of the indent space count and the corresponding string
320 falling out of sync. All code needing the string should just call
327 falling out of sync. All code needing the string should just call
321 the method.
328 the method.
322
329
323 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
330 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
324
331
325 * IPython/Magic.py (magic_edit): fix check for when users don't
332 * IPython/Magic.py (magic_edit): fix check for when users don't
326 save their output files, the try/except was in the wrong section.
333 save their output files, the try/except was in the wrong section.
327
334
328 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
335 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
329
336
330 * IPython/Magic.py (magic_run): fix __file__ global missing from
337 * IPython/Magic.py (magic_run): fix __file__ global missing from
331 script's namespace when executed via %run. After a report by
338 script's namespace when executed via %run. After a report by
332 Vivian.
339 Vivian.
333
340
334 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
341 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
335 when using python 2.4. The parent constructor changed in 2.4, and
342 when using python 2.4. The parent constructor changed in 2.4, and
336 we need to track it directly (we can't call it, as it messes up
343 we need to track it directly (we can't call it, as it messes up
337 readline and tab-completion inside our pdb would stop working).
344 readline and tab-completion inside our pdb would stop working).
338 After a bug report by R. Bernstein <rocky-AT-panix.com>.
345 After a bug report by R. Bernstein <rocky-AT-panix.com>.
339
346
340 2006-01-16 Ville Vainio <vivainio@gmail.com>
347 2006-01-16 Ville Vainio <vivainio@gmail.com>
341
348
342 * Ipython/magic.py:Reverted back to old %edit functionality
349 * Ipython/magic.py:Reverted back to old %edit functionality
343 that returns file contents on exit.
350 that returns file contents on exit.
344
351
345 * IPython/path.py: Added Jason Orendorff's "path" module to
352 * IPython/path.py: Added Jason Orendorff's "path" module to
346 IPython tree, http://www.jorendorff.com/articles/python/path/.
353 IPython tree, http://www.jorendorff.com/articles/python/path/.
347 You can get path objects conveniently through %sc, and !!, e.g.:
354 You can get path objects conveniently through %sc, and !!, e.g.:
348 sc files=ls
355 sc files=ls
349 for p in files.paths: # or files.p
356 for p in files.paths: # or files.p
350 print p,p.mtime
357 print p,p.mtime
351
358
352 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
359 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
353 now work again without considering the exclusion regexp -
360 now work again without considering the exclusion regexp -
354 hence, things like ',foo my/path' turn to 'foo("my/path")'
361 hence, things like ',foo my/path' turn to 'foo("my/path")'
355 instead of syntax error.
362 instead of syntax error.
356
363
357
364
358 2006-01-14 Ville Vainio <vivainio@gmail.com>
365 2006-01-14 Ville Vainio <vivainio@gmail.com>
359
366
360 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
367 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
361 ipapi decorators for python 2.4 users, options() provides access to rc
368 ipapi decorators for python 2.4 users, options() provides access to rc
362 data.
369 data.
363
370
364 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
371 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
365 as path separators (even on Linux ;-). Space character after
372 as path separators (even on Linux ;-). Space character after
366 backslash (as yielded by tab completer) is still space;
373 backslash (as yielded by tab completer) is still space;
367 "%cd long\ name" works as expected.
374 "%cd long\ name" works as expected.
368
375
369 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
376 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
370 as "chain of command", with priority. API stays the same,
377 as "chain of command", with priority. API stays the same,
371 TryNext exception raised by a hook function signals that
378 TryNext exception raised by a hook function signals that
372 current hook failed and next hook should try handling it, as
379 current hook failed and next hook should try handling it, as
373 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
380 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
374 requested configurable display hook, which is now implemented.
381 requested configurable display hook, which is now implemented.
375
382
376 2006-01-13 Ville Vainio <vivainio@gmail.com>
383 2006-01-13 Ville Vainio <vivainio@gmail.com>
377
384
378 * IPython/platutils*.py: platform specific utility functions,
385 * IPython/platutils*.py: platform specific utility functions,
379 so far only set_term_title is implemented (change terminal
386 so far only set_term_title is implemented (change terminal
380 label in windowing systems). %cd now changes the title to
387 label in windowing systems). %cd now changes the title to
381 current dir.
388 current dir.
382
389
383 * IPython/Release.py: Added myself to "authors" list,
390 * IPython/Release.py: Added myself to "authors" list,
384 had to create new files.
391 had to create new files.
385
392
386 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
393 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
387 shell escape; not a known bug but had potential to be one in the
394 shell escape; not a known bug but had potential to be one in the
388 future.
395 future.
389
396
390 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
397 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
391 extension API for IPython! See the module for usage example. Fix
398 extension API for IPython! See the module for usage example. Fix
392 OInspect for docstring-less magic functions.
399 OInspect for docstring-less magic functions.
393
400
394
401
395 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
402 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
396
403
397 * IPython/iplib.py (raw_input): temporarily deactivate all
404 * IPython/iplib.py (raw_input): temporarily deactivate all
398 attempts at allowing pasting of code with autoindent on. It
405 attempts at allowing pasting of code with autoindent on. It
399 introduced bugs (reported by Prabhu) and I can't seem to find a
406 introduced bugs (reported by Prabhu) and I can't seem to find a
400 robust combination which works in all cases. Will have to revisit
407 robust combination which works in all cases. Will have to revisit
401 later.
408 later.
402
409
403 * IPython/genutils.py: remove isspace() function. We've dropped
410 * IPython/genutils.py: remove isspace() function. We've dropped
404 2.2 compatibility, so it's OK to use the string method.
411 2.2 compatibility, so it's OK to use the string method.
405
412
406 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
413 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
407
414
408 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
415 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
409 matching what NOT to autocall on, to include all python binary
416 matching what NOT to autocall on, to include all python binary
410 operators (including things like 'and', 'or', 'is' and 'in').
417 operators (including things like 'and', 'or', 'is' and 'in').
411 Prompted by a bug report on 'foo & bar', but I realized we had
418 Prompted by a bug report on 'foo & bar', but I realized we had
412 many more potential bug cases with other operators. The regexp is
419 many more potential bug cases with other operators. The regexp is
413 self.re_exclude_auto, it's fairly commented.
420 self.re_exclude_auto, it's fairly commented.
414
421
415 2006-01-12 Ville Vainio <vivainio@gmail.com>
422 2006-01-12 Ville Vainio <vivainio@gmail.com>
416
423
417 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
424 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
418 Prettified and hardened string/backslash quoting with ipsystem(),
425 Prettified and hardened string/backslash quoting with ipsystem(),
419 ipalias() and ipmagic(). Now even \ characters are passed to
426 ipalias() and ipmagic(). Now even \ characters are passed to
420 %magics, !shell escapes and aliases exactly as they are in the
427 %magics, !shell escapes and aliases exactly as they are in the
421 ipython command line. Should improve backslash experience,
428 ipython command line. Should improve backslash experience,
422 particularly in Windows (path delimiter for some commands that
429 particularly in Windows (path delimiter for some commands that
423 won't understand '/'), but Unix benefits as well (regexps). %cd
430 won't understand '/'), but Unix benefits as well (regexps). %cd
424 magic still doesn't support backslash path delimiters, though. Also
431 magic still doesn't support backslash path delimiters, though. Also
425 deleted all pretense of supporting multiline command strings in
432 deleted all pretense of supporting multiline command strings in
426 !system or %magic commands. Thanks to Jerry McRae for suggestions.
433 !system or %magic commands. Thanks to Jerry McRae for suggestions.
427
434
428 * doc/build_doc_instructions.txt added. Documentation on how to
435 * doc/build_doc_instructions.txt added. Documentation on how to
429 use doc/update_manual.py, added yesterday. Both files contributed
436 use doc/update_manual.py, added yesterday. Both files contributed
430 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
437 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
431 doc/*.sh for deprecation at a later date.
438 doc/*.sh for deprecation at a later date.
432
439
433 * /ipython.py Added ipython.py to root directory for
440 * /ipython.py Added ipython.py to root directory for
434 zero-installation (tar xzvf ipython.tgz; cd ipython; python
441 zero-installation (tar xzvf ipython.tgz; cd ipython; python
435 ipython.py) and development convenience (no need to kee doing
442 ipython.py) and development convenience (no need to kee doing
436 "setup.py install" between changes).
443 "setup.py install" between changes).
437
444
438 * Made ! and !! shell escapes work (again) in multiline expressions:
445 * Made ! and !! shell escapes work (again) in multiline expressions:
439 if 1:
446 if 1:
440 !ls
447 !ls
441 !!ls
448 !!ls
442
449
443 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
450 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
444
451
445 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
452 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
446 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
453 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
447 module in case-insensitive installation. Was causing crashes
454 module in case-insensitive installation. Was causing crashes
448 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
455 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
449
456
450 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
457 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
451 <marienz-AT-gentoo.org>, closes
458 <marienz-AT-gentoo.org>, closes
452 http://www.scipy.net/roundup/ipython/issue51.
459 http://www.scipy.net/roundup/ipython/issue51.
453
460
454 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
461 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
455
462
456 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
463 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
457 problem of excessive CPU usage under *nix and keyboard lag under
464 problem of excessive CPU usage under *nix and keyboard lag under
458 win32.
465 win32.
459
466
460 2006-01-10 *** Released version 0.7.0
467 2006-01-10 *** Released version 0.7.0
461
468
462 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
469 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
463
470
464 * IPython/Release.py (revision): tag version number to 0.7.0,
471 * IPython/Release.py (revision): tag version number to 0.7.0,
465 ready for release.
472 ready for release.
466
473
467 * IPython/Magic.py (magic_edit): Add print statement to %edit so
474 * IPython/Magic.py (magic_edit): Add print statement to %edit so
468 it informs the user of the name of the temp. file used. This can
475 it informs the user of the name of the temp. file used. This can
469 help if you decide later to reuse that same file, so you know
476 help if you decide later to reuse that same file, so you know
470 where to copy the info from.
477 where to copy the info from.
471
478
472 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
479 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
473
480
474 * setup_bdist_egg.py: little script to build an egg. Added
481 * setup_bdist_egg.py: little script to build an egg. Added
475 support in the release tools as well.
482 support in the release tools as well.
476
483
477 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
484 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
478
485
479 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
486 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
480 version selection (new -wxversion command line and ipythonrc
487 version selection (new -wxversion command line and ipythonrc
481 parameter). Patch contributed by Arnd Baecker
488 parameter). Patch contributed by Arnd Baecker
482 <arnd.baecker-AT-web.de>.
489 <arnd.baecker-AT-web.de>.
483
490
484 * IPython/iplib.py (embed_mainloop): fix tab-completion in
491 * IPython/iplib.py (embed_mainloop): fix tab-completion in
485 embedded instances, for variables defined at the interactive
492 embedded instances, for variables defined at the interactive
486 prompt of the embedded ipython. Reported by Arnd.
493 prompt of the embedded ipython. Reported by Arnd.
487
494
488 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
495 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
489 it can be used as a (stateful) toggle, or with a direct parameter.
496 it can be used as a (stateful) toggle, or with a direct parameter.
490
497
491 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
498 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
492 could be triggered in certain cases and cause the traceback
499 could be triggered in certain cases and cause the traceback
493 printer not to work.
500 printer not to work.
494
501
495 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
502 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
496
503
497 * IPython/iplib.py (_should_recompile): Small fix, closes
504 * IPython/iplib.py (_should_recompile): Small fix, closes
498 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
505 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
499
506
500 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
507 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
501
508
502 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
509 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
503 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
510 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
504 Moad for help with tracking it down.
511 Moad for help with tracking it down.
505
512
506 * IPython/iplib.py (handle_auto): fix autocall handling for
513 * IPython/iplib.py (handle_auto): fix autocall handling for
507 objects which support BOTH __getitem__ and __call__ (so that f [x]
514 objects which support BOTH __getitem__ and __call__ (so that f [x]
508 is left alone, instead of becoming f([x]) automatically).
515 is left alone, instead of becoming f([x]) automatically).
509
516
510 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
517 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
511 Ville's patch.
518 Ville's patch.
512
519
513 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
520 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
514
521
515 * IPython/iplib.py (handle_auto): changed autocall semantics to
522 * IPython/iplib.py (handle_auto): changed autocall semantics to
516 include 'smart' mode, where the autocall transformation is NOT
523 include 'smart' mode, where the autocall transformation is NOT
517 applied if there are no arguments on the line. This allows you to
524 applied if there are no arguments on the line. This allows you to
518 just type 'foo' if foo is a callable to see its internal form,
525 just type 'foo' if foo is a callable to see its internal form,
519 instead of having it called with no arguments (typically a
526 instead of having it called with no arguments (typically a
520 mistake). The old 'full' autocall still exists: for that, you
527 mistake). The old 'full' autocall still exists: for that, you
521 need to set the 'autocall' parameter to 2 in your ipythonrc file.
528 need to set the 'autocall' parameter to 2 in your ipythonrc file.
522
529
523 * IPython/completer.py (Completer.attr_matches): add
530 * IPython/completer.py (Completer.attr_matches): add
524 tab-completion support for Enthoughts' traits. After a report by
531 tab-completion support for Enthoughts' traits. After a report by
525 Arnd and a patch by Prabhu.
532 Arnd and a patch by Prabhu.
526
533
527 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
534 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
528
535
529 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
536 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
530 Schmolck's patch to fix inspect.getinnerframes().
537 Schmolck's patch to fix inspect.getinnerframes().
531
538
532 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
539 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
533 for embedded instances, regarding handling of namespaces and items
540 for embedded instances, regarding handling of namespaces and items
534 added to the __builtin__ one. Multiple embedded instances and
541 added to the __builtin__ one. Multiple embedded instances and
535 recursive embeddings should work better now (though I'm not sure
542 recursive embeddings should work better now (though I'm not sure
536 I've got all the corner cases fixed, that code is a bit of a brain
543 I've got all the corner cases fixed, that code is a bit of a brain
537 twister).
544 twister).
538
545
539 * IPython/Magic.py (magic_edit): added support to edit in-memory
546 * IPython/Magic.py (magic_edit): added support to edit in-memory
540 macros (automatically creates the necessary temp files). %edit
547 macros (automatically creates the necessary temp files). %edit
541 also doesn't return the file contents anymore, it's just noise.
548 also doesn't return the file contents anymore, it's just noise.
542
549
543 * IPython/completer.py (Completer.attr_matches): revert change to
550 * IPython/completer.py (Completer.attr_matches): revert change to
544 complete only on attributes listed in __all__. I realized it
551 complete only on attributes listed in __all__. I realized it
545 cripples the tab-completion system as a tool for exploring the
552 cripples the tab-completion system as a tool for exploring the
546 internals of unknown libraries (it renders any non-__all__
553 internals of unknown libraries (it renders any non-__all__
547 attribute off-limits). I got bit by this when trying to see
554 attribute off-limits). I got bit by this when trying to see
548 something inside the dis module.
555 something inside the dis module.
549
556
550 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
557 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
551
558
552 * IPython/iplib.py (InteractiveShell.__init__): add .meta
559 * IPython/iplib.py (InteractiveShell.__init__): add .meta
553 namespace for users and extension writers to hold data in. This
560 namespace for users and extension writers to hold data in. This
554 follows the discussion in
561 follows the discussion in
555 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
562 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
556
563
557 * IPython/completer.py (IPCompleter.complete): small patch to help
564 * IPython/completer.py (IPCompleter.complete): small patch to help
558 tab-completion under Emacs, after a suggestion by John Barnard
565 tab-completion under Emacs, after a suggestion by John Barnard
559 <barnarj-AT-ccf.org>.
566 <barnarj-AT-ccf.org>.
560
567
561 * IPython/Magic.py (Magic.extract_input_slices): added support for
568 * IPython/Magic.py (Magic.extract_input_slices): added support for
562 the slice notation in magics to use N-M to represent numbers N...M
569 the slice notation in magics to use N-M to represent numbers N...M
563 (closed endpoints). This is used by %macro and %save.
570 (closed endpoints). This is used by %macro and %save.
564
571
565 * IPython/completer.py (Completer.attr_matches): for modules which
572 * IPython/completer.py (Completer.attr_matches): for modules which
566 define __all__, complete only on those. After a patch by Jeffrey
573 define __all__, complete only on those. After a patch by Jeffrey
567 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
574 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
568 speed up this routine.
575 speed up this routine.
569
576
570 * IPython/Logger.py (Logger.log): fix a history handling bug. I
577 * IPython/Logger.py (Logger.log): fix a history handling bug. I
571 don't know if this is the end of it, but the behavior now is
578 don't know if this is the end of it, but the behavior now is
572 certainly much more correct. Note that coupled with macros,
579 certainly much more correct. Note that coupled with macros,
573 slightly surprising (at first) behavior may occur: a macro will in
580 slightly surprising (at first) behavior may occur: a macro will in
574 general expand to multiple lines of input, so upon exiting, the
581 general expand to multiple lines of input, so upon exiting, the
575 in/out counters will both be bumped by the corresponding amount
582 in/out counters will both be bumped by the corresponding amount
576 (as if the macro's contents had been typed interactively). Typing
583 (as if the macro's contents had been typed interactively). Typing
577 %hist will reveal the intermediate (silently processed) lines.
584 %hist will reveal the intermediate (silently processed) lines.
578
585
579 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
586 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
580 pickle to fail (%run was overwriting __main__ and not restoring
587 pickle to fail (%run was overwriting __main__ and not restoring
581 it, but pickle relies on __main__ to operate).
588 it, but pickle relies on __main__ to operate).
582
589
583 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
590 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
584 using properties, but forgot to make the main InteractiveShell
591 using properties, but forgot to make the main InteractiveShell
585 class a new-style class. Properties fail silently, and
592 class a new-style class. Properties fail silently, and
586 misteriously, with old-style class (getters work, but
593 misteriously, with old-style class (getters work, but
587 setters don't do anything).
594 setters don't do anything).
588
595
589 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
596 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
590
597
591 * IPython/Magic.py (magic_history): fix history reporting bug (I
598 * IPython/Magic.py (magic_history): fix history reporting bug (I
592 know some nasties are still there, I just can't seem to find a
599 know some nasties are still there, I just can't seem to find a
593 reproducible test case to track them down; the input history is
600 reproducible test case to track them down; the input history is
594 falling out of sync...)
601 falling out of sync...)
595
602
596 * IPython/iplib.py (handle_shell_escape): fix bug where both
603 * IPython/iplib.py (handle_shell_escape): fix bug where both
597 aliases and system accesses where broken for indented code (such
604 aliases and system accesses where broken for indented code (such
598 as loops).
605 as loops).
599
606
600 * IPython/genutils.py (shell): fix small but critical bug for
607 * IPython/genutils.py (shell): fix small but critical bug for
601 win32 system access.
608 win32 system access.
602
609
603 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
610 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
604
611
605 * IPython/iplib.py (showtraceback): remove use of the
612 * IPython/iplib.py (showtraceback): remove use of the
606 sys.last_{type/value/traceback} structures, which are non
613 sys.last_{type/value/traceback} structures, which are non
607 thread-safe.
614 thread-safe.
608 (_prefilter): change control flow to ensure that we NEVER
615 (_prefilter): change control flow to ensure that we NEVER
609 introspect objects when autocall is off. This will guarantee that
616 introspect objects when autocall is off. This will guarantee that
610 having an input line of the form 'x.y', where access to attribute
617 having an input line of the form 'x.y', where access to attribute
611 'y' has side effects, doesn't trigger the side effect TWICE. It
618 'y' has side effects, doesn't trigger the side effect TWICE. It
612 is important to note that, with autocall on, these side effects
619 is important to note that, with autocall on, these side effects
613 can still happen.
620 can still happen.
614 (ipsystem): new builtin, to complete the ip{magic/alias/system}
621 (ipsystem): new builtin, to complete the ip{magic/alias/system}
615 trio. IPython offers these three kinds of special calls which are
622 trio. IPython offers these three kinds of special calls which are
616 not python code, and it's a good thing to have their call method
623 not python code, and it's a good thing to have their call method
617 be accessible as pure python functions (not just special syntax at
624 be accessible as pure python functions (not just special syntax at
618 the command line). It gives us a better internal implementation
625 the command line). It gives us a better internal implementation
619 structure, as well as exposing these for user scripting more
626 structure, as well as exposing these for user scripting more
620 cleanly.
627 cleanly.
621
628
622 * IPython/macro.py (Macro.__init__): moved macros to a standalone
629 * IPython/macro.py (Macro.__init__): moved macros to a standalone
623 file. Now that they'll be more likely to be used with the
630 file. Now that they'll be more likely to be used with the
624 persistance system (%store), I want to make sure their module path
631 persistance system (%store), I want to make sure their module path
625 doesn't change in the future, so that we don't break things for
632 doesn't change in the future, so that we don't break things for
626 users' persisted data.
633 users' persisted data.
627
634
628 * IPython/iplib.py (autoindent_update): move indentation
635 * IPython/iplib.py (autoindent_update): move indentation
629 management into the _text_ processing loop, not the keyboard
636 management into the _text_ processing loop, not the keyboard
630 interactive one. This is necessary to correctly process non-typed
637 interactive one. This is necessary to correctly process non-typed
631 multiline input (such as macros).
638 multiline input (such as macros).
632
639
633 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
640 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
634 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
641 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
635 which was producing problems in the resulting manual.
642 which was producing problems in the resulting manual.
636 (magic_whos): improve reporting of instances (show their class,
643 (magic_whos): improve reporting of instances (show their class,
637 instead of simply printing 'instance' which isn't terribly
644 instead of simply printing 'instance' which isn't terribly
638 informative).
645 informative).
639
646
640 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
647 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
641 (minor mods) to support network shares under win32.
648 (minor mods) to support network shares under win32.
642
649
643 * IPython/winconsole.py (get_console_size): add new winconsole
650 * IPython/winconsole.py (get_console_size): add new winconsole
644 module and fixes to page_dumb() to improve its behavior under
651 module and fixes to page_dumb() to improve its behavior under
645 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
652 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
646
653
647 * IPython/Magic.py (Macro): simplified Macro class to just
654 * IPython/Magic.py (Macro): simplified Macro class to just
648 subclass list. We've had only 2.2 compatibility for a very long
655 subclass list. We've had only 2.2 compatibility for a very long
649 time, yet I was still avoiding subclassing the builtin types. No
656 time, yet I was still avoiding subclassing the builtin types. No
650 more (I'm also starting to use properties, though I won't shift to
657 more (I'm also starting to use properties, though I won't shift to
651 2.3-specific features quite yet).
658 2.3-specific features quite yet).
652 (magic_store): added Ville's patch for lightweight variable
659 (magic_store): added Ville's patch for lightweight variable
653 persistence, after a request on the user list by Matt Wilkie
660 persistence, after a request on the user list by Matt Wilkie
654 <maphew-AT-gmail.com>. The new %store magic's docstring has full
661 <maphew-AT-gmail.com>. The new %store magic's docstring has full
655 details.
662 details.
656
663
657 * IPython/iplib.py (InteractiveShell.post_config_initialization):
664 * IPython/iplib.py (InteractiveShell.post_config_initialization):
658 changed the default logfile name from 'ipython.log' to
665 changed the default logfile name from 'ipython.log' to
659 'ipython_log.py'. These logs are real python files, and now that
666 'ipython_log.py'. These logs are real python files, and now that
660 we have much better multiline support, people are more likely to
667 we have much better multiline support, people are more likely to
661 want to use them as such. Might as well name them correctly.
668 want to use them as such. Might as well name them correctly.
662
669
663 * IPython/Magic.py: substantial cleanup. While we can't stop
670 * IPython/Magic.py: substantial cleanup. While we can't stop
664 using magics as mixins, due to the existing customizations 'out
671 using magics as mixins, due to the existing customizations 'out
665 there' which rely on the mixin naming conventions, at least I
672 there' which rely on the mixin naming conventions, at least I
666 cleaned out all cross-class name usage. So once we are OK with
673 cleaned out all cross-class name usage. So once we are OK with
667 breaking compatibility, the two systems can be separated.
674 breaking compatibility, the two systems can be separated.
668
675
669 * IPython/Logger.py: major cleanup. This one is NOT a mixin
676 * IPython/Logger.py: major cleanup. This one is NOT a mixin
670 anymore, and the class is a fair bit less hideous as well. New
677 anymore, and the class is a fair bit less hideous as well. New
671 features were also introduced: timestamping of input, and logging
678 features were also introduced: timestamping of input, and logging
672 of output results. These are user-visible with the -t and -o
679 of output results. These are user-visible with the -t and -o
673 options to %logstart. Closes
680 options to %logstart. Closes
674 http://www.scipy.net/roundup/ipython/issue11 and a request by
681 http://www.scipy.net/roundup/ipython/issue11 and a request by
675 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
682 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
676
683
677 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
684 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
678
685
679 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
686 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
680 better hadnle backslashes in paths. See the thread 'More Windows
687 better hadnle backslashes in paths. See the thread 'More Windows
681 questions part 2 - \/ characters revisited' on the iypthon user
688 questions part 2 - \/ characters revisited' on the iypthon user
682 list:
689 list:
683 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
690 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
684
691
685 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
692 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
686
693
687 (InteractiveShell.__init__): change threaded shells to not use the
694 (InteractiveShell.__init__): change threaded shells to not use the
688 ipython crash handler. This was causing more problems than not,
695 ipython crash handler. This was causing more problems than not,
689 as exceptions in the main thread (GUI code, typically) would
696 as exceptions in the main thread (GUI code, typically) would
690 always show up as a 'crash', when they really weren't.
697 always show up as a 'crash', when they really weren't.
691
698
692 The colors and exception mode commands (%colors/%xmode) have been
699 The colors and exception mode commands (%colors/%xmode) have been
693 synchronized to also take this into account, so users can get
700 synchronized to also take this into account, so users can get
694 verbose exceptions for their threaded code as well. I also added
701 verbose exceptions for their threaded code as well. I also added
695 support for activating pdb inside this exception handler as well,
702 support for activating pdb inside this exception handler as well,
696 so now GUI authors can use IPython's enhanced pdb at runtime.
703 so now GUI authors can use IPython's enhanced pdb at runtime.
697
704
698 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
705 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
699 true by default, and add it to the shipped ipythonrc file. Since
706 true by default, and add it to the shipped ipythonrc file. Since
700 this asks the user before proceeding, I think it's OK to make it
707 this asks the user before proceeding, I think it's OK to make it
701 true by default.
708 true by default.
702
709
703 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
710 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
704 of the previous special-casing of input in the eval loop. I think
711 of the previous special-casing of input in the eval loop. I think
705 this is cleaner, as they really are commands and shouldn't have
712 this is cleaner, as they really are commands and shouldn't have
706 a special role in the middle of the core code.
713 a special role in the middle of the core code.
707
714
708 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
715 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
709
716
710 * IPython/iplib.py (edit_syntax_error): added support for
717 * IPython/iplib.py (edit_syntax_error): added support for
711 automatically reopening the editor if the file had a syntax error
718 automatically reopening the editor if the file had a syntax error
712 in it. Thanks to scottt who provided the patch at:
719 in it. Thanks to scottt who provided the patch at:
713 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
720 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
714 version committed).
721 version committed).
715
722
716 * IPython/iplib.py (handle_normal): add suport for multi-line
723 * IPython/iplib.py (handle_normal): add suport for multi-line
717 input with emtpy lines. This fixes
724 input with emtpy lines. This fixes
718 http://www.scipy.net/roundup/ipython/issue43 and a similar
725 http://www.scipy.net/roundup/ipython/issue43 and a similar
719 discussion on the user list.
726 discussion on the user list.
720
727
721 WARNING: a behavior change is necessarily introduced to support
728 WARNING: a behavior change is necessarily introduced to support
722 blank lines: now a single blank line with whitespace does NOT
729 blank lines: now a single blank line with whitespace does NOT
723 break the input loop, which means that when autoindent is on, by
730 break the input loop, which means that when autoindent is on, by
724 default hitting return on the next (indented) line does NOT exit.
731 default hitting return on the next (indented) line does NOT exit.
725
732
726 Instead, to exit a multiline input you can either have:
733 Instead, to exit a multiline input you can either have:
727
734
728 - TWO whitespace lines (just hit return again), or
735 - TWO whitespace lines (just hit return again), or
729 - a single whitespace line of a different length than provided
736 - a single whitespace line of a different length than provided
730 by the autoindent (add or remove a space).
737 by the autoindent (add or remove a space).
731
738
732 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
739 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
733 module to better organize all readline-related functionality.
740 module to better organize all readline-related functionality.
734 I've deleted FlexCompleter and put all completion clases here.
741 I've deleted FlexCompleter and put all completion clases here.
735
742
736 * IPython/iplib.py (raw_input): improve indentation management.
743 * IPython/iplib.py (raw_input): improve indentation management.
737 It is now possible to paste indented code with autoindent on, and
744 It is now possible to paste indented code with autoindent on, and
738 the code is interpreted correctly (though it still looks bad on
745 the code is interpreted correctly (though it still looks bad on
739 screen, due to the line-oriented nature of ipython).
746 screen, due to the line-oriented nature of ipython).
740 (MagicCompleter.complete): change behavior so that a TAB key on an
747 (MagicCompleter.complete): change behavior so that a TAB key on an
741 otherwise empty line actually inserts a tab, instead of completing
748 otherwise empty line actually inserts a tab, instead of completing
742 on the entire global namespace. This makes it easier to use the
749 on the entire global namespace. This makes it easier to use the
743 TAB key for indentation. After a request by Hans Meine
750 TAB key for indentation. After a request by Hans Meine
744 <hans_meine-AT-gmx.net>
751 <hans_meine-AT-gmx.net>
745 (_prefilter): add support so that typing plain 'exit' or 'quit'
752 (_prefilter): add support so that typing plain 'exit' or 'quit'
746 does a sensible thing. Originally I tried to deviate as little as
753 does a sensible thing. Originally I tried to deviate as little as
747 possible from the default python behavior, but even that one may
754 possible from the default python behavior, but even that one may
748 change in this direction (thread on python-dev to that effect).
755 change in this direction (thread on python-dev to that effect).
749 Regardless, ipython should do the right thing even if CPython's
756 Regardless, ipython should do the right thing even if CPython's
750 '>>>' prompt doesn't.
757 '>>>' prompt doesn't.
751 (InteractiveShell): removed subclassing code.InteractiveConsole
758 (InteractiveShell): removed subclassing code.InteractiveConsole
752 class. By now we'd overridden just about all of its methods: I've
759 class. By now we'd overridden just about all of its methods: I've
753 copied the remaining two over, and now ipython is a standalone
760 copied the remaining two over, and now ipython is a standalone
754 class. This will provide a clearer picture for the chainsaw
761 class. This will provide a clearer picture for the chainsaw
755 branch refactoring.
762 branch refactoring.
756
763
757 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
764 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
758
765
759 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
766 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
760 failures for objects which break when dir() is called on them.
767 failures for objects which break when dir() is called on them.
761
768
762 * IPython/FlexCompleter.py (Completer.__init__): Added support for
769 * IPython/FlexCompleter.py (Completer.__init__): Added support for
763 distinct local and global namespaces in the completer API. This
770 distinct local and global namespaces in the completer API. This
764 change allows us top properly handle completion with distinct
771 change allows us top properly handle completion with distinct
765 scopes, including in embedded instances (this had never really
772 scopes, including in embedded instances (this had never really
766 worked correctly).
773 worked correctly).
767
774
768 Note: this introduces a change in the constructor for
775 Note: this introduces a change in the constructor for
769 MagicCompleter, as a new global_namespace parameter is now the
776 MagicCompleter, as a new global_namespace parameter is now the
770 second argument (the others were bumped one position).
777 second argument (the others were bumped one position).
771
778
772 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
779 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
773
780
774 * IPython/iplib.py (embed_mainloop): fix tab-completion in
781 * IPython/iplib.py (embed_mainloop): fix tab-completion in
775 embedded instances (which can be done now thanks to Vivian's
782 embedded instances (which can be done now thanks to Vivian's
776 frame-handling fixes for pdb).
783 frame-handling fixes for pdb).
777 (InteractiveShell.__init__): Fix namespace handling problem in
784 (InteractiveShell.__init__): Fix namespace handling problem in
778 embedded instances. We were overwriting __main__ unconditionally,
785 embedded instances. We were overwriting __main__ unconditionally,
779 and this should only be done for 'full' (non-embedded) IPython;
786 and this should only be done for 'full' (non-embedded) IPython;
780 embedded instances must respect the caller's __main__. Thanks to
787 embedded instances must respect the caller's __main__. Thanks to
781 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
788 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
782
789
783 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
790 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
784
791
785 * setup.py: added download_url to setup(). This registers the
792 * setup.py: added download_url to setup(). This registers the
786 download address at PyPI, which is not only useful to humans
793 download address at PyPI, which is not only useful to humans
787 browsing the site, but is also picked up by setuptools (the Eggs
794 browsing the site, but is also picked up by setuptools (the Eggs
788 machinery). Thanks to Ville and R. Kern for the info/discussion
795 machinery). Thanks to Ville and R. Kern for the info/discussion
789 on this.
796 on this.
790
797
791 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
798 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
792
799
793 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
800 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
794 This brings a lot of nice functionality to the pdb mode, which now
801 This brings a lot of nice functionality to the pdb mode, which now
795 has tab-completion, syntax highlighting, and better stack handling
802 has tab-completion, syntax highlighting, and better stack handling
796 than before. Many thanks to Vivian De Smedt
803 than before. Many thanks to Vivian De Smedt
797 <vivian-AT-vdesmedt.com> for the original patches.
804 <vivian-AT-vdesmedt.com> for the original patches.
798
805
799 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
806 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
800
807
801 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
808 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
802 sequence to consistently accept the banner argument. The
809 sequence to consistently accept the banner argument. The
803 inconsistency was tripping SAGE, thanks to Gary Zablackis
810 inconsistency was tripping SAGE, thanks to Gary Zablackis
804 <gzabl-AT-yahoo.com> for the report.
811 <gzabl-AT-yahoo.com> for the report.
805
812
806 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
813 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
807
814
808 * IPython/iplib.py (InteractiveShell.post_config_initialization):
815 * IPython/iplib.py (InteractiveShell.post_config_initialization):
809 Fix bug where a naked 'alias' call in the ipythonrc file would
816 Fix bug where a naked 'alias' call in the ipythonrc file would
810 cause a crash. Bug reported by Jorgen Stenarson.
817 cause a crash. Bug reported by Jorgen Stenarson.
811
818
812 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
819 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
813
820
814 * IPython/ipmaker.py (make_IPython): cleanups which should improve
821 * IPython/ipmaker.py (make_IPython): cleanups which should improve
815 startup time.
822 startup time.
816
823
817 * IPython/iplib.py (runcode): my globals 'fix' for embedded
824 * IPython/iplib.py (runcode): my globals 'fix' for embedded
818 instances had introduced a bug with globals in normal code. Now
825 instances had introduced a bug with globals in normal code. Now
819 it's working in all cases.
826 it's working in all cases.
820
827
821 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
828 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
822 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
829 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
823 has been introduced to set the default case sensitivity of the
830 has been introduced to set the default case sensitivity of the
824 searches. Users can still select either mode at runtime on a
831 searches. Users can still select either mode at runtime on a
825 per-search basis.
832 per-search basis.
826
833
827 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
834 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
828
835
829 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
836 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
830 attributes in wildcard searches for subclasses. Modified version
837 attributes in wildcard searches for subclasses. Modified version
831 of a patch by Jorgen.
838 of a patch by Jorgen.
832
839
833 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
840 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
834
841
835 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
842 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
836 embedded instances. I added a user_global_ns attribute to the
843 embedded instances. I added a user_global_ns attribute to the
837 InteractiveShell class to handle this.
844 InteractiveShell class to handle this.
838
845
839 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
846 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
840
847
841 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
848 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
842 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
849 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
843 (reported under win32, but may happen also in other platforms).
850 (reported under win32, but may happen also in other platforms).
844 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
851 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
845
852
846 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
853 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
847
854
848 * IPython/Magic.py (magic_psearch): new support for wildcard
855 * IPython/Magic.py (magic_psearch): new support for wildcard
849 patterns. Now, typing ?a*b will list all names which begin with a
856 patterns. Now, typing ?a*b will list all names which begin with a
850 and end in b, for example. The %psearch magic has full
857 and end in b, for example. The %psearch magic has full
851 docstrings. Many thanks to JΓΆrgen Stenarson
858 docstrings. Many thanks to JΓΆrgen Stenarson
852 <jorgen.stenarson-AT-bostream.nu>, author of the patches
859 <jorgen.stenarson-AT-bostream.nu>, author of the patches
853 implementing this functionality.
860 implementing this functionality.
854
861
855 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
862 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
856
863
857 * Manual: fixed long-standing annoyance of double-dashes (as in
864 * Manual: fixed long-standing annoyance of double-dashes (as in
858 --prefix=~, for example) being stripped in the HTML version. This
865 --prefix=~, for example) being stripped in the HTML version. This
859 is a latex2html bug, but a workaround was provided. Many thanks
866 is a latex2html bug, but a workaround was provided. Many thanks
860 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
867 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
861 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
868 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
862 rolling. This seemingly small issue had tripped a number of users
869 rolling. This seemingly small issue had tripped a number of users
863 when first installing, so I'm glad to see it gone.
870 when first installing, so I'm glad to see it gone.
864
871
865 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
872 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
866
873
867 * IPython/Extensions/numeric_formats.py: fix missing import,
874 * IPython/Extensions/numeric_formats.py: fix missing import,
868 reported by Stephen Walton.
875 reported by Stephen Walton.
869
876
870 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
877 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
871
878
872 * IPython/demo.py: finish demo module, fully documented now.
879 * IPython/demo.py: finish demo module, fully documented now.
873
880
874 * IPython/genutils.py (file_read): simple little utility to read a
881 * IPython/genutils.py (file_read): simple little utility to read a
875 file and ensure it's closed afterwards.
882 file and ensure it's closed afterwards.
876
883
877 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
884 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
878
885
879 * IPython/demo.py (Demo.__init__): added support for individually
886 * IPython/demo.py (Demo.__init__): added support for individually
880 tagging blocks for automatic execution.
887 tagging blocks for automatic execution.
881
888
882 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
889 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
883 syntax-highlighted python sources, requested by John.
890 syntax-highlighted python sources, requested by John.
884
891
885 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
892 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
886
893
887 * IPython/demo.py (Demo.again): fix bug where again() blocks after
894 * IPython/demo.py (Demo.again): fix bug where again() blocks after
888 finishing.
895 finishing.
889
896
890 * IPython/genutils.py (shlex_split): moved from Magic to here,
897 * IPython/genutils.py (shlex_split): moved from Magic to here,
891 where all 2.2 compatibility stuff lives. I needed it for demo.py.
898 where all 2.2 compatibility stuff lives. I needed it for demo.py.
892
899
893 * IPython/demo.py (Demo.__init__): added support for silent
900 * IPython/demo.py (Demo.__init__): added support for silent
894 blocks, improved marks as regexps, docstrings written.
901 blocks, improved marks as regexps, docstrings written.
895 (Demo.__init__): better docstring, added support for sys.argv.
902 (Demo.__init__): better docstring, added support for sys.argv.
896
903
897 * IPython/genutils.py (marquee): little utility used by the demo
904 * IPython/genutils.py (marquee): little utility used by the demo
898 code, handy in general.
905 code, handy in general.
899
906
900 * IPython/demo.py (Demo.__init__): new class for interactive
907 * IPython/demo.py (Demo.__init__): new class for interactive
901 demos. Not documented yet, I just wrote it in a hurry for
908 demos. Not documented yet, I just wrote it in a hurry for
902 scipy'05. Will docstring later.
909 scipy'05. Will docstring later.
903
910
904 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
911 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
905
912
906 * IPython/Shell.py (sigint_handler): Drastic simplification which
913 * IPython/Shell.py (sigint_handler): Drastic simplification which
907 also seems to make Ctrl-C work correctly across threads! This is
914 also seems to make Ctrl-C work correctly across threads! This is
908 so simple, that I can't beleive I'd missed it before. Needs more
915 so simple, that I can't beleive I'd missed it before. Needs more
909 testing, though.
916 testing, though.
910 (KBINT): Never mind, revert changes. I'm sure I'd tried something
917 (KBINT): Never mind, revert changes. I'm sure I'd tried something
911 like this before...
918 like this before...
912
919
913 * IPython/genutils.py (get_home_dir): add protection against
920 * IPython/genutils.py (get_home_dir): add protection against
914 non-dirs in win32 registry.
921 non-dirs in win32 registry.
915
922
916 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
923 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
917 bug where dict was mutated while iterating (pysh crash).
924 bug where dict was mutated while iterating (pysh crash).
918
925
919 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
926 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
920
927
921 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
928 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
922 spurious newlines added by this routine. After a report by
929 spurious newlines added by this routine. After a report by
923 F. Mantegazza.
930 F. Mantegazza.
924
931
925 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
932 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
926
933
927 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
934 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
928 calls. These were a leftover from the GTK 1.x days, and can cause
935 calls. These were a leftover from the GTK 1.x days, and can cause
929 problems in certain cases (after a report by John Hunter).
936 problems in certain cases (after a report by John Hunter).
930
937
931 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
938 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
932 os.getcwd() fails at init time. Thanks to patch from David Remahl
939 os.getcwd() fails at init time. Thanks to patch from David Remahl
933 <chmod007-AT-mac.com>.
940 <chmod007-AT-mac.com>.
934 (InteractiveShell.__init__): prevent certain special magics from
941 (InteractiveShell.__init__): prevent certain special magics from
935 being shadowed by aliases. Closes
942 being shadowed by aliases. Closes
936 http://www.scipy.net/roundup/ipython/issue41.
943 http://www.scipy.net/roundup/ipython/issue41.
937
944
938 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
945 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
939
946
940 * IPython/iplib.py (InteractiveShell.complete): Added new
947 * IPython/iplib.py (InteractiveShell.complete): Added new
941 top-level completion method to expose the completion mechanism
948 top-level completion method to expose the completion mechanism
942 beyond readline-based environments.
949 beyond readline-based environments.
943
950
944 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
951 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
945
952
946 * tools/ipsvnc (svnversion): fix svnversion capture.
953 * tools/ipsvnc (svnversion): fix svnversion capture.
947
954
948 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
955 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
949 attribute to self, which was missing. Before, it was set by a
956 attribute to self, which was missing. Before, it was set by a
950 routine which in certain cases wasn't being called, so the
957 routine which in certain cases wasn't being called, so the
951 instance could end up missing the attribute. This caused a crash.
958 instance could end up missing the attribute. This caused a crash.
952 Closes http://www.scipy.net/roundup/ipython/issue40.
959 Closes http://www.scipy.net/roundup/ipython/issue40.
953
960
954 2005-08-16 Fernando Perez <fperez@colorado.edu>
961 2005-08-16 Fernando Perez <fperez@colorado.edu>
955
962
956 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
963 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
957 contains non-string attribute. Closes
964 contains non-string attribute. Closes
958 http://www.scipy.net/roundup/ipython/issue38.
965 http://www.scipy.net/roundup/ipython/issue38.
959
966
960 2005-08-14 Fernando Perez <fperez@colorado.edu>
967 2005-08-14 Fernando Perez <fperez@colorado.edu>
961
968
962 * tools/ipsvnc: Minor improvements, to add changeset info.
969 * tools/ipsvnc: Minor improvements, to add changeset info.
963
970
964 2005-08-12 Fernando Perez <fperez@colorado.edu>
971 2005-08-12 Fernando Perez <fperez@colorado.edu>
965
972
966 * IPython/iplib.py (runsource): remove self.code_to_run_src
973 * IPython/iplib.py (runsource): remove self.code_to_run_src
967 attribute. I realized this is nothing more than
974 attribute. I realized this is nothing more than
968 '\n'.join(self.buffer), and having the same data in two different
975 '\n'.join(self.buffer), and having the same data in two different
969 places is just asking for synchronization bugs. This may impact
976 places is just asking for synchronization bugs. This may impact
970 people who have custom exception handlers, so I need to warn
977 people who have custom exception handlers, so I need to warn
971 ipython-dev about it (F. Mantegazza may use them).
978 ipython-dev about it (F. Mantegazza may use them).
972
979
973 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
980 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
974
981
975 * IPython/genutils.py: fix 2.2 compatibility (generators)
982 * IPython/genutils.py: fix 2.2 compatibility (generators)
976
983
977 2005-07-18 Fernando Perez <fperez@colorado.edu>
984 2005-07-18 Fernando Perez <fperez@colorado.edu>
978
985
979 * IPython/genutils.py (get_home_dir): fix to help users with
986 * IPython/genutils.py (get_home_dir): fix to help users with
980 invalid $HOME under win32.
987 invalid $HOME under win32.
981
988
982 2005-07-17 Fernando Perez <fperez@colorado.edu>
989 2005-07-17 Fernando Perez <fperez@colorado.edu>
983
990
984 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
991 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
985 some old hacks and clean up a bit other routines; code should be
992 some old hacks and clean up a bit other routines; code should be
986 simpler and a bit faster.
993 simpler and a bit faster.
987
994
988 * IPython/iplib.py (interact): removed some last-resort attempts
995 * IPython/iplib.py (interact): removed some last-resort attempts
989 to survive broken stdout/stderr. That code was only making it
996 to survive broken stdout/stderr. That code was only making it
990 harder to abstract out the i/o (necessary for gui integration),
997 harder to abstract out the i/o (necessary for gui integration),
991 and the crashes it could prevent were extremely rare in practice
998 and the crashes it could prevent were extremely rare in practice
992 (besides being fully user-induced in a pretty violent manner).
999 (besides being fully user-induced in a pretty violent manner).
993
1000
994 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1001 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
995 Nothing major yet, but the code is simpler to read; this should
1002 Nothing major yet, but the code is simpler to read; this should
996 make it easier to do more serious modifications in the future.
1003 make it easier to do more serious modifications in the future.
997
1004
998 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1005 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
999 which broke in .15 (thanks to a report by Ville).
1006 which broke in .15 (thanks to a report by Ville).
1000
1007
1001 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1008 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1002 be quite correct, I know next to nothing about unicode). This
1009 be quite correct, I know next to nothing about unicode). This
1003 will allow unicode strings to be used in prompts, amongst other
1010 will allow unicode strings to be used in prompts, amongst other
1004 cases. It also will prevent ipython from crashing when unicode
1011 cases. It also will prevent ipython from crashing when unicode
1005 shows up unexpectedly in many places. If ascii encoding fails, we
1012 shows up unexpectedly in many places. If ascii encoding fails, we
1006 assume utf_8. Currently the encoding is not a user-visible
1013 assume utf_8. Currently the encoding is not a user-visible
1007 setting, though it could be made so if there is demand for it.
1014 setting, though it could be made so if there is demand for it.
1008
1015
1009 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1016 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1010
1017
1011 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1018 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1012
1019
1013 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1020 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1014
1021
1015 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1022 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1016 code can work transparently for 2.2/2.3.
1023 code can work transparently for 2.2/2.3.
1017
1024
1018 2005-07-16 Fernando Perez <fperez@colorado.edu>
1025 2005-07-16 Fernando Perez <fperez@colorado.edu>
1019
1026
1020 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1027 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1021 out of the color scheme table used for coloring exception
1028 out of the color scheme table used for coloring exception
1022 tracebacks. This allows user code to add new schemes at runtime.
1029 tracebacks. This allows user code to add new schemes at runtime.
1023 This is a minimally modified version of the patch at
1030 This is a minimally modified version of the patch at
1024 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1031 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1025 for the contribution.
1032 for the contribution.
1026
1033
1027 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1034 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1028 slightly modified version of the patch in
1035 slightly modified version of the patch in
1029 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1036 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1030 to remove the previous try/except solution (which was costlier).
1037 to remove the previous try/except solution (which was costlier).
1031 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1038 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1032
1039
1033 2005-06-08 Fernando Perez <fperez@colorado.edu>
1040 2005-06-08 Fernando Perez <fperez@colorado.edu>
1034
1041
1035 * IPython/iplib.py (write/write_err): Add methods to abstract all
1042 * IPython/iplib.py (write/write_err): Add methods to abstract all
1036 I/O a bit more.
1043 I/O a bit more.
1037
1044
1038 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1045 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1039 warning, reported by Aric Hagberg, fix by JD Hunter.
1046 warning, reported by Aric Hagberg, fix by JD Hunter.
1040
1047
1041 2005-06-02 *** Released version 0.6.15
1048 2005-06-02 *** Released version 0.6.15
1042
1049
1043 2005-06-01 Fernando Perez <fperez@colorado.edu>
1050 2005-06-01 Fernando Perez <fperez@colorado.edu>
1044
1051
1045 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1052 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1046 tab-completion of filenames within open-quoted strings. Note that
1053 tab-completion of filenames within open-quoted strings. Note that
1047 this requires that in ~/.ipython/ipythonrc, users change the
1054 this requires that in ~/.ipython/ipythonrc, users change the
1048 readline delimiters configuration to read:
1055 readline delimiters configuration to read:
1049
1056
1050 readline_remove_delims -/~
1057 readline_remove_delims -/~
1051
1058
1052
1059
1053 2005-05-31 *** Released version 0.6.14
1060 2005-05-31 *** Released version 0.6.14
1054
1061
1055 2005-05-29 Fernando Perez <fperez@colorado.edu>
1062 2005-05-29 Fernando Perez <fperez@colorado.edu>
1056
1063
1057 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1064 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1058 with files not on the filesystem. Reported by Eliyahu Sandler
1065 with files not on the filesystem. Reported by Eliyahu Sandler
1059 <eli@gondolin.net>
1066 <eli@gondolin.net>
1060
1067
1061 2005-05-22 Fernando Perez <fperez@colorado.edu>
1068 2005-05-22 Fernando Perez <fperez@colorado.edu>
1062
1069
1063 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1070 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1064 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1071 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1065
1072
1066 2005-05-19 Fernando Perez <fperez@colorado.edu>
1073 2005-05-19 Fernando Perez <fperez@colorado.edu>
1067
1074
1068 * IPython/iplib.py (safe_execfile): close a file which could be
1075 * IPython/iplib.py (safe_execfile): close a file which could be
1069 left open (causing problems in win32, which locks open files).
1076 left open (causing problems in win32, which locks open files).
1070 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1077 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1071
1078
1072 2005-05-18 Fernando Perez <fperez@colorado.edu>
1079 2005-05-18 Fernando Perez <fperez@colorado.edu>
1073
1080
1074 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1081 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1075 keyword arguments correctly to safe_execfile().
1082 keyword arguments correctly to safe_execfile().
1076
1083
1077 2005-05-13 Fernando Perez <fperez@colorado.edu>
1084 2005-05-13 Fernando Perez <fperez@colorado.edu>
1078
1085
1079 * ipython.1: Added info about Qt to manpage, and threads warning
1086 * ipython.1: Added info about Qt to manpage, and threads warning
1080 to usage page (invoked with --help).
1087 to usage page (invoked with --help).
1081
1088
1082 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1089 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1083 new matcher (it goes at the end of the priority list) to do
1090 new matcher (it goes at the end of the priority list) to do
1084 tab-completion on named function arguments. Submitted by George
1091 tab-completion on named function arguments. Submitted by George
1085 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1092 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1086 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1093 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1087 for more details.
1094 for more details.
1088
1095
1089 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1096 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1090 SystemExit exceptions in the script being run. Thanks to a report
1097 SystemExit exceptions in the script being run. Thanks to a report
1091 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1098 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1092 producing very annoying behavior when running unit tests.
1099 producing very annoying behavior when running unit tests.
1093
1100
1094 2005-05-12 Fernando Perez <fperez@colorado.edu>
1101 2005-05-12 Fernando Perez <fperez@colorado.edu>
1095
1102
1096 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1103 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1097 which I'd broken (again) due to a changed regexp. In the process,
1104 which I'd broken (again) due to a changed regexp. In the process,
1098 added ';' as an escape to auto-quote the whole line without
1105 added ';' as an escape to auto-quote the whole line without
1099 splitting its arguments. Thanks to a report by Jerry McRae
1106 splitting its arguments. Thanks to a report by Jerry McRae
1100 <qrs0xyc02-AT-sneakemail.com>.
1107 <qrs0xyc02-AT-sneakemail.com>.
1101
1108
1102 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1109 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1103 possible crashes caused by a TokenError. Reported by Ed Schofield
1110 possible crashes caused by a TokenError. Reported by Ed Schofield
1104 <schofield-AT-ftw.at>.
1111 <schofield-AT-ftw.at>.
1105
1112
1106 2005-05-06 Fernando Perez <fperez@colorado.edu>
1113 2005-05-06 Fernando Perez <fperez@colorado.edu>
1107
1114
1108 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1115 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1109
1116
1110 2005-04-29 Fernando Perez <fperez@colorado.edu>
1117 2005-04-29 Fernando Perez <fperez@colorado.edu>
1111
1118
1112 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1119 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1113 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1120 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1114 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1121 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1115 which provides support for Qt interactive usage (similar to the
1122 which provides support for Qt interactive usage (similar to the
1116 existing one for WX and GTK). This had been often requested.
1123 existing one for WX and GTK). This had been often requested.
1117
1124
1118 2005-04-14 *** Released version 0.6.13
1125 2005-04-14 *** Released version 0.6.13
1119
1126
1120 2005-04-08 Fernando Perez <fperez@colorado.edu>
1127 2005-04-08 Fernando Perez <fperez@colorado.edu>
1121
1128
1122 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1129 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1123 from _ofind, which gets called on almost every input line. Now,
1130 from _ofind, which gets called on almost every input line. Now,
1124 we only try to get docstrings if they are actually going to be
1131 we only try to get docstrings if they are actually going to be
1125 used (the overhead of fetching unnecessary docstrings can be
1132 used (the overhead of fetching unnecessary docstrings can be
1126 noticeable for certain objects, such as Pyro proxies).
1133 noticeable for certain objects, such as Pyro proxies).
1127
1134
1128 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1135 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1129 for completers. For some reason I had been passing them the state
1136 for completers. For some reason I had been passing them the state
1130 variable, which completers never actually need, and was in
1137 variable, which completers never actually need, and was in
1131 conflict with the rlcompleter API. Custom completers ONLY need to
1138 conflict with the rlcompleter API. Custom completers ONLY need to
1132 take the text parameter.
1139 take the text parameter.
1133
1140
1134 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1141 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1135 work correctly in pysh. I've also moved all the logic which used
1142 work correctly in pysh. I've also moved all the logic which used
1136 to be in pysh.py here, which will prevent problems with future
1143 to be in pysh.py here, which will prevent problems with future
1137 upgrades. However, this time I must warn users to update their
1144 upgrades. However, this time I must warn users to update their
1138 pysh profile to include the line
1145 pysh profile to include the line
1139
1146
1140 import_all IPython.Extensions.InterpreterExec
1147 import_all IPython.Extensions.InterpreterExec
1141
1148
1142 because otherwise things won't work for them. They MUST also
1149 because otherwise things won't work for them. They MUST also
1143 delete pysh.py and the line
1150 delete pysh.py and the line
1144
1151
1145 execfile pysh.py
1152 execfile pysh.py
1146
1153
1147 from their ipythonrc-pysh.
1154 from their ipythonrc-pysh.
1148
1155
1149 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1156 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1150 robust in the face of objects whose dir() returns non-strings
1157 robust in the face of objects whose dir() returns non-strings
1151 (which it shouldn't, but some broken libs like ITK do). Thanks to
1158 (which it shouldn't, but some broken libs like ITK do). Thanks to
1152 a patch by John Hunter (implemented differently, though). Also
1159 a patch by John Hunter (implemented differently, though). Also
1153 minor improvements by using .extend instead of + on lists.
1160 minor improvements by using .extend instead of + on lists.
1154
1161
1155 * pysh.py:
1162 * pysh.py:
1156
1163
1157 2005-04-06 Fernando Perez <fperez@colorado.edu>
1164 2005-04-06 Fernando Perez <fperez@colorado.edu>
1158
1165
1159 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1166 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1160 by default, so that all users benefit from it. Those who don't
1167 by default, so that all users benefit from it. Those who don't
1161 want it can still turn it off.
1168 want it can still turn it off.
1162
1169
1163 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1170 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1164 config file, I'd forgotten about this, so users were getting it
1171 config file, I'd forgotten about this, so users were getting it
1165 off by default.
1172 off by default.
1166
1173
1167 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1174 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1168 consistency. Now magics can be called in multiline statements,
1175 consistency. Now magics can be called in multiline statements,
1169 and python variables can be expanded in magic calls via $var.
1176 and python variables can be expanded in magic calls via $var.
1170 This makes the magic system behave just like aliases or !system
1177 This makes the magic system behave just like aliases or !system
1171 calls.
1178 calls.
1172
1179
1173 2005-03-28 Fernando Perez <fperez@colorado.edu>
1180 2005-03-28 Fernando Perez <fperez@colorado.edu>
1174
1181
1175 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1182 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1176 expensive string additions for building command. Add support for
1183 expensive string additions for building command. Add support for
1177 trailing ';' when autocall is used.
1184 trailing ';' when autocall is used.
1178
1185
1179 2005-03-26 Fernando Perez <fperez@colorado.edu>
1186 2005-03-26 Fernando Perez <fperez@colorado.edu>
1180
1187
1181 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1188 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1182 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1189 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1183 ipython.el robust against prompts with any number of spaces
1190 ipython.el robust against prompts with any number of spaces
1184 (including 0) after the ':' character.
1191 (including 0) after the ':' character.
1185
1192
1186 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1193 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1187 continuation prompt, which misled users to think the line was
1194 continuation prompt, which misled users to think the line was
1188 already indented. Closes debian Bug#300847, reported to me by
1195 already indented. Closes debian Bug#300847, reported to me by
1189 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1196 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1190
1197
1191 2005-03-23 Fernando Perez <fperez@colorado.edu>
1198 2005-03-23 Fernando Perez <fperez@colorado.edu>
1192
1199
1193 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1200 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1194 properly aligned if they have embedded newlines.
1201 properly aligned if they have embedded newlines.
1195
1202
1196 * IPython/iplib.py (runlines): Add a public method to expose
1203 * IPython/iplib.py (runlines): Add a public method to expose
1197 IPython's code execution machinery, so that users can run strings
1204 IPython's code execution machinery, so that users can run strings
1198 as if they had been typed at the prompt interactively.
1205 as if they had been typed at the prompt interactively.
1199 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1206 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1200 methods which can call the system shell, but with python variable
1207 methods which can call the system shell, but with python variable
1201 expansion. The three such methods are: __IPYTHON__.system,
1208 expansion. The three such methods are: __IPYTHON__.system,
1202 .getoutput and .getoutputerror. These need to be documented in a
1209 .getoutput and .getoutputerror. These need to be documented in a
1203 'public API' section (to be written) of the manual.
1210 'public API' section (to be written) of the manual.
1204
1211
1205 2005-03-20 Fernando Perez <fperez@colorado.edu>
1212 2005-03-20 Fernando Perez <fperez@colorado.edu>
1206
1213
1207 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1214 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1208 for custom exception handling. This is quite powerful, and it
1215 for custom exception handling. This is quite powerful, and it
1209 allows for user-installable exception handlers which can trap
1216 allows for user-installable exception handlers which can trap
1210 custom exceptions at runtime and treat them separately from
1217 custom exceptions at runtime and treat them separately from
1211 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1218 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1212 Mantegazza <mantegazza-AT-ill.fr>.
1219 Mantegazza <mantegazza-AT-ill.fr>.
1213 (InteractiveShell.set_custom_completer): public API function to
1220 (InteractiveShell.set_custom_completer): public API function to
1214 add new completers at runtime.
1221 add new completers at runtime.
1215
1222
1216 2005-03-19 Fernando Perez <fperez@colorado.edu>
1223 2005-03-19 Fernando Perez <fperez@colorado.edu>
1217
1224
1218 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1225 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1219 allow objects which provide their docstrings via non-standard
1226 allow objects which provide their docstrings via non-standard
1220 mechanisms (like Pyro proxies) to still be inspected by ipython's
1227 mechanisms (like Pyro proxies) to still be inspected by ipython's
1221 ? system.
1228 ? system.
1222
1229
1223 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1230 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1224 automatic capture system. I tried quite hard to make it work
1231 automatic capture system. I tried quite hard to make it work
1225 reliably, and simply failed. I tried many combinations with the
1232 reliably, and simply failed. I tried many combinations with the
1226 subprocess module, but eventually nothing worked in all needed
1233 subprocess module, but eventually nothing worked in all needed
1227 cases (not blocking stdin for the child, duplicating stdout
1234 cases (not blocking stdin for the child, duplicating stdout
1228 without blocking, etc). The new %sc/%sx still do capture to these
1235 without blocking, etc). The new %sc/%sx still do capture to these
1229 magical list/string objects which make shell use much more
1236 magical list/string objects which make shell use much more
1230 conveninent, so not all is lost.
1237 conveninent, so not all is lost.
1231
1238
1232 XXX - FIX MANUAL for the change above!
1239 XXX - FIX MANUAL for the change above!
1233
1240
1234 (runsource): I copied code.py's runsource() into ipython to modify
1241 (runsource): I copied code.py's runsource() into ipython to modify
1235 it a bit. Now the code object and source to be executed are
1242 it a bit. Now the code object and source to be executed are
1236 stored in ipython. This makes this info accessible to third-party
1243 stored in ipython. This makes this info accessible to third-party
1237 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1244 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1238 Mantegazza <mantegazza-AT-ill.fr>.
1245 Mantegazza <mantegazza-AT-ill.fr>.
1239
1246
1240 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1247 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1241 history-search via readline (like C-p/C-n). I'd wanted this for a
1248 history-search via readline (like C-p/C-n). I'd wanted this for a
1242 long time, but only recently found out how to do it. For users
1249 long time, but only recently found out how to do it. For users
1243 who already have their ipythonrc files made and want this, just
1250 who already have their ipythonrc files made and want this, just
1244 add:
1251 add:
1245
1252
1246 readline_parse_and_bind "\e[A": history-search-backward
1253 readline_parse_and_bind "\e[A": history-search-backward
1247 readline_parse_and_bind "\e[B": history-search-forward
1254 readline_parse_and_bind "\e[B": history-search-forward
1248
1255
1249 2005-03-18 Fernando Perez <fperez@colorado.edu>
1256 2005-03-18 Fernando Perez <fperez@colorado.edu>
1250
1257
1251 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1258 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1252 LSString and SList classes which allow transparent conversions
1259 LSString and SList classes which allow transparent conversions
1253 between list mode and whitespace-separated string.
1260 between list mode and whitespace-separated string.
1254 (magic_r): Fix recursion problem in %r.
1261 (magic_r): Fix recursion problem in %r.
1255
1262
1256 * IPython/genutils.py (LSString): New class to be used for
1263 * IPython/genutils.py (LSString): New class to be used for
1257 automatic storage of the results of all alias/system calls in _o
1264 automatic storage of the results of all alias/system calls in _o
1258 and _e (stdout/err). These provide a .l/.list attribute which
1265 and _e (stdout/err). These provide a .l/.list attribute which
1259 does automatic splitting on newlines. This means that for most
1266 does automatic splitting on newlines. This means that for most
1260 uses, you'll never need to do capturing of output with %sc/%sx
1267 uses, you'll never need to do capturing of output with %sc/%sx
1261 anymore, since ipython keeps this always done for you. Note that
1268 anymore, since ipython keeps this always done for you. Note that
1262 only the LAST results are stored, the _o/e variables are
1269 only the LAST results are stored, the _o/e variables are
1263 overwritten on each call. If you need to save their contents
1270 overwritten on each call. If you need to save their contents
1264 further, simply bind them to any other name.
1271 further, simply bind them to any other name.
1265
1272
1266 2005-03-17 Fernando Perez <fperez@colorado.edu>
1273 2005-03-17 Fernando Perez <fperez@colorado.edu>
1267
1274
1268 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1275 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1269 prompt namespace handling.
1276 prompt namespace handling.
1270
1277
1271 2005-03-16 Fernando Perez <fperez@colorado.edu>
1278 2005-03-16 Fernando Perez <fperez@colorado.edu>
1272
1279
1273 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1280 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1274 classic prompts to be '>>> ' (final space was missing, and it
1281 classic prompts to be '>>> ' (final space was missing, and it
1275 trips the emacs python mode).
1282 trips the emacs python mode).
1276 (BasePrompt.__str__): Added safe support for dynamic prompt
1283 (BasePrompt.__str__): Added safe support for dynamic prompt
1277 strings. Now you can set your prompt string to be '$x', and the
1284 strings. Now you can set your prompt string to be '$x', and the
1278 value of x will be printed from your interactive namespace. The
1285 value of x will be printed from your interactive namespace. The
1279 interpolation syntax includes the full Itpl support, so
1286 interpolation syntax includes the full Itpl support, so
1280 ${foo()+x+bar()} is a valid prompt string now, and the function
1287 ${foo()+x+bar()} is a valid prompt string now, and the function
1281 calls will be made at runtime.
1288 calls will be made at runtime.
1282
1289
1283 2005-03-15 Fernando Perez <fperez@colorado.edu>
1290 2005-03-15 Fernando Perez <fperez@colorado.edu>
1284
1291
1285 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1292 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1286 avoid name clashes in pylab. %hist still works, it just forwards
1293 avoid name clashes in pylab. %hist still works, it just forwards
1287 the call to %history.
1294 the call to %history.
1288
1295
1289 2005-03-02 *** Released version 0.6.12
1296 2005-03-02 *** Released version 0.6.12
1290
1297
1291 2005-03-02 Fernando Perez <fperez@colorado.edu>
1298 2005-03-02 Fernando Perez <fperez@colorado.edu>
1292
1299
1293 * IPython/iplib.py (handle_magic): log magic calls properly as
1300 * IPython/iplib.py (handle_magic): log magic calls properly as
1294 ipmagic() function calls.
1301 ipmagic() function calls.
1295
1302
1296 * IPython/Magic.py (magic_time): Improved %time to support
1303 * IPython/Magic.py (magic_time): Improved %time to support
1297 statements and provide wall-clock as well as CPU time.
1304 statements and provide wall-clock as well as CPU time.
1298
1305
1299 2005-02-27 Fernando Perez <fperez@colorado.edu>
1306 2005-02-27 Fernando Perez <fperez@colorado.edu>
1300
1307
1301 * IPython/hooks.py: New hooks module, to expose user-modifiable
1308 * IPython/hooks.py: New hooks module, to expose user-modifiable
1302 IPython functionality in a clean manner. For now only the editor
1309 IPython functionality in a clean manner. For now only the editor
1303 hook is actually written, and other thigns which I intend to turn
1310 hook is actually written, and other thigns which I intend to turn
1304 into proper hooks aren't yet there. The display and prefilter
1311 into proper hooks aren't yet there. The display and prefilter
1305 stuff, for example, should be hooks. But at least now the
1312 stuff, for example, should be hooks. But at least now the
1306 framework is in place, and the rest can be moved here with more
1313 framework is in place, and the rest can be moved here with more
1307 time later. IPython had had a .hooks variable for a long time for
1314 time later. IPython had had a .hooks variable for a long time for
1308 this purpose, but I'd never actually used it for anything.
1315 this purpose, but I'd never actually used it for anything.
1309
1316
1310 2005-02-26 Fernando Perez <fperez@colorado.edu>
1317 2005-02-26 Fernando Perez <fperez@colorado.edu>
1311
1318
1312 * IPython/ipmaker.py (make_IPython): make the default ipython
1319 * IPython/ipmaker.py (make_IPython): make the default ipython
1313 directory be called _ipython under win32, to follow more the
1320 directory be called _ipython under win32, to follow more the
1314 naming peculiarities of that platform (where buggy software like
1321 naming peculiarities of that platform (where buggy software like
1315 Visual Sourcesafe breaks with .named directories). Reported by
1322 Visual Sourcesafe breaks with .named directories). Reported by
1316 Ville Vainio.
1323 Ville Vainio.
1317
1324
1318 2005-02-23 Fernando Perez <fperez@colorado.edu>
1325 2005-02-23 Fernando Perez <fperez@colorado.edu>
1319
1326
1320 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1327 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1321 auto_aliases for win32 which were causing problems. Users can
1328 auto_aliases for win32 which were causing problems. Users can
1322 define the ones they personally like.
1329 define the ones they personally like.
1323
1330
1324 2005-02-21 Fernando Perez <fperez@colorado.edu>
1331 2005-02-21 Fernando Perez <fperez@colorado.edu>
1325
1332
1326 * IPython/Magic.py (magic_time): new magic to time execution of
1333 * IPython/Magic.py (magic_time): new magic to time execution of
1327 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1334 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1328
1335
1329 2005-02-19 Fernando Perez <fperez@colorado.edu>
1336 2005-02-19 Fernando Perez <fperez@colorado.edu>
1330
1337
1331 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1338 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1332 into keys (for prompts, for example).
1339 into keys (for prompts, for example).
1333
1340
1334 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1341 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1335 prompts in case users want them. This introduces a small behavior
1342 prompts in case users want them. This introduces a small behavior
1336 change: ipython does not automatically add a space to all prompts
1343 change: ipython does not automatically add a space to all prompts
1337 anymore. To get the old prompts with a space, users should add it
1344 anymore. To get the old prompts with a space, users should add it
1338 manually to their ipythonrc file, so for example prompt_in1 should
1345 manually to their ipythonrc file, so for example prompt_in1 should
1339 now read 'In [\#]: ' instead of 'In [\#]:'.
1346 now read 'In [\#]: ' instead of 'In [\#]:'.
1340 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1347 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1341 file) to control left-padding of secondary prompts.
1348 file) to control left-padding of secondary prompts.
1342
1349
1343 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1350 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1344 the profiler can't be imported. Fix for Debian, which removed
1351 the profiler can't be imported. Fix for Debian, which removed
1345 profile.py because of License issues. I applied a slightly
1352 profile.py because of License issues. I applied a slightly
1346 modified version of the original Debian patch at
1353 modified version of the original Debian patch at
1347 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1354 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1348
1355
1349 2005-02-17 Fernando Perez <fperez@colorado.edu>
1356 2005-02-17 Fernando Perez <fperez@colorado.edu>
1350
1357
1351 * IPython/genutils.py (native_line_ends): Fix bug which would
1358 * IPython/genutils.py (native_line_ends): Fix bug which would
1352 cause improper line-ends under win32 b/c I was not opening files
1359 cause improper line-ends under win32 b/c I was not opening files
1353 in binary mode. Bug report and fix thanks to Ville.
1360 in binary mode. Bug report and fix thanks to Ville.
1354
1361
1355 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1362 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1356 trying to catch spurious foo[1] autocalls. My fix actually broke
1363 trying to catch spurious foo[1] autocalls. My fix actually broke
1357 ',/' autoquote/call with explicit escape (bad regexp).
1364 ',/' autoquote/call with explicit escape (bad regexp).
1358
1365
1359 2005-02-15 *** Released version 0.6.11
1366 2005-02-15 *** Released version 0.6.11
1360
1367
1361 2005-02-14 Fernando Perez <fperez@colorado.edu>
1368 2005-02-14 Fernando Perez <fperez@colorado.edu>
1362
1369
1363 * IPython/background_jobs.py: New background job management
1370 * IPython/background_jobs.py: New background job management
1364 subsystem. This is implemented via a new set of classes, and
1371 subsystem. This is implemented via a new set of classes, and
1365 IPython now provides a builtin 'jobs' object for background job
1372 IPython now provides a builtin 'jobs' object for background job
1366 execution. A convenience %bg magic serves as a lightweight
1373 execution. A convenience %bg magic serves as a lightweight
1367 frontend for starting the more common type of calls. This was
1374 frontend for starting the more common type of calls. This was
1368 inspired by discussions with B. Granger and the BackgroundCommand
1375 inspired by discussions with B. Granger and the BackgroundCommand
1369 class described in the book Python Scripting for Computational
1376 class described in the book Python Scripting for Computational
1370 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1377 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1371 (although ultimately no code from this text was used, as IPython's
1378 (although ultimately no code from this text was used, as IPython's
1372 system is a separate implementation).
1379 system is a separate implementation).
1373
1380
1374 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1381 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1375 to control the completion of single/double underscore names
1382 to control the completion of single/double underscore names
1376 separately. As documented in the example ipytonrc file, the
1383 separately. As documented in the example ipytonrc file, the
1377 readline_omit__names variable can now be set to 2, to omit even
1384 readline_omit__names variable can now be set to 2, to omit even
1378 single underscore names. Thanks to a patch by Brian Wong
1385 single underscore names. Thanks to a patch by Brian Wong
1379 <BrianWong-AT-AirgoNetworks.Com>.
1386 <BrianWong-AT-AirgoNetworks.Com>.
1380 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1387 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1381 be autocalled as foo([1]) if foo were callable. A problem for
1388 be autocalled as foo([1]) if foo were callable. A problem for
1382 things which are both callable and implement __getitem__.
1389 things which are both callable and implement __getitem__.
1383 (init_readline): Fix autoindentation for win32. Thanks to a patch
1390 (init_readline): Fix autoindentation for win32. Thanks to a patch
1384 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1391 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1385
1392
1386 2005-02-12 Fernando Perez <fperez@colorado.edu>
1393 2005-02-12 Fernando Perez <fperez@colorado.edu>
1387
1394
1388 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1395 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1389 which I had written long ago to sort out user error messages which
1396 which I had written long ago to sort out user error messages which
1390 may occur during startup. This seemed like a good idea initially,
1397 may occur during startup. This seemed like a good idea initially,
1391 but it has proven a disaster in retrospect. I don't want to
1398 but it has proven a disaster in retrospect. I don't want to
1392 change much code for now, so my fix is to set the internal 'debug'
1399 change much code for now, so my fix is to set the internal 'debug'
1393 flag to true everywhere, whose only job was precisely to control
1400 flag to true everywhere, whose only job was precisely to control
1394 this subsystem. This closes issue 28 (as well as avoiding all
1401 this subsystem. This closes issue 28 (as well as avoiding all
1395 sorts of strange hangups which occur from time to time).
1402 sorts of strange hangups which occur from time to time).
1396
1403
1397 2005-02-07 Fernando Perez <fperez@colorado.edu>
1404 2005-02-07 Fernando Perez <fperez@colorado.edu>
1398
1405
1399 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1406 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1400 previous call produced a syntax error.
1407 previous call produced a syntax error.
1401
1408
1402 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1409 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1403 classes without constructor.
1410 classes without constructor.
1404
1411
1405 2005-02-06 Fernando Perez <fperez@colorado.edu>
1412 2005-02-06 Fernando Perez <fperez@colorado.edu>
1406
1413
1407 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1414 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1408 completions with the results of each matcher, so we return results
1415 completions with the results of each matcher, so we return results
1409 to the user from all namespaces. This breaks with ipython
1416 to the user from all namespaces. This breaks with ipython
1410 tradition, but I think it's a nicer behavior. Now you get all
1417 tradition, but I think it's a nicer behavior. Now you get all
1411 possible completions listed, from all possible namespaces (python,
1418 possible completions listed, from all possible namespaces (python,
1412 filesystem, magics...) After a request by John Hunter
1419 filesystem, magics...) After a request by John Hunter
1413 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1420 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1414
1421
1415 2005-02-05 Fernando Perez <fperez@colorado.edu>
1422 2005-02-05 Fernando Perez <fperez@colorado.edu>
1416
1423
1417 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1424 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1418 the call had quote characters in it (the quotes were stripped).
1425 the call had quote characters in it (the quotes were stripped).
1419
1426
1420 2005-01-31 Fernando Perez <fperez@colorado.edu>
1427 2005-01-31 Fernando Perez <fperez@colorado.edu>
1421
1428
1422 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1429 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1423 Itpl.itpl() to make the code more robust against psyco
1430 Itpl.itpl() to make the code more robust against psyco
1424 optimizations.
1431 optimizations.
1425
1432
1426 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1433 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1427 of causing an exception. Quicker, cleaner.
1434 of causing an exception. Quicker, cleaner.
1428
1435
1429 2005-01-28 Fernando Perez <fperez@colorado.edu>
1436 2005-01-28 Fernando Perez <fperez@colorado.edu>
1430
1437
1431 * scripts/ipython_win_post_install.py (install): hardcode
1438 * scripts/ipython_win_post_install.py (install): hardcode
1432 sys.prefix+'python.exe' as the executable path. It turns out that
1439 sys.prefix+'python.exe' as the executable path. It turns out that
1433 during the post-installation run, sys.executable resolves to the
1440 during the post-installation run, sys.executable resolves to the
1434 name of the binary installer! I should report this as a distutils
1441 name of the binary installer! I should report this as a distutils
1435 bug, I think. I updated the .10 release with this tiny fix, to
1442 bug, I think. I updated the .10 release with this tiny fix, to
1436 avoid annoying the lists further.
1443 avoid annoying the lists further.
1437
1444
1438 2005-01-27 *** Released version 0.6.10
1445 2005-01-27 *** Released version 0.6.10
1439
1446
1440 2005-01-27 Fernando Perez <fperez@colorado.edu>
1447 2005-01-27 Fernando Perez <fperez@colorado.edu>
1441
1448
1442 * IPython/numutils.py (norm): Added 'inf' as optional name for
1449 * IPython/numutils.py (norm): Added 'inf' as optional name for
1443 L-infinity norm, included references to mathworld.com for vector
1450 L-infinity norm, included references to mathworld.com for vector
1444 norm definitions.
1451 norm definitions.
1445 (amin/amax): added amin/amax for array min/max. Similar to what
1452 (amin/amax): added amin/amax for array min/max. Similar to what
1446 pylab ships with after the recent reorganization of names.
1453 pylab ships with after the recent reorganization of names.
1447 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1454 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1448
1455
1449 * ipython.el: committed Alex's recent fixes and improvements.
1456 * ipython.el: committed Alex's recent fixes and improvements.
1450 Tested with python-mode from CVS, and it looks excellent. Since
1457 Tested with python-mode from CVS, and it looks excellent. Since
1451 python-mode hasn't released anything in a while, I'm temporarily
1458 python-mode hasn't released anything in a while, I'm temporarily
1452 putting a copy of today's CVS (v 4.70) of python-mode in:
1459 putting a copy of today's CVS (v 4.70) of python-mode in:
1453 http://ipython.scipy.org/tmp/python-mode.el
1460 http://ipython.scipy.org/tmp/python-mode.el
1454
1461
1455 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1462 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1456 sys.executable for the executable name, instead of assuming it's
1463 sys.executable for the executable name, instead of assuming it's
1457 called 'python.exe' (the post-installer would have produced broken
1464 called 'python.exe' (the post-installer would have produced broken
1458 setups on systems with a differently named python binary).
1465 setups on systems with a differently named python binary).
1459
1466
1460 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1467 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1461 references to os.linesep, to make the code more
1468 references to os.linesep, to make the code more
1462 platform-independent. This is also part of the win32 coloring
1469 platform-independent. This is also part of the win32 coloring
1463 fixes.
1470 fixes.
1464
1471
1465 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1472 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1466 lines, which actually cause coloring bugs because the length of
1473 lines, which actually cause coloring bugs because the length of
1467 the line is very difficult to correctly compute with embedded
1474 the line is very difficult to correctly compute with embedded
1468 escapes. This was the source of all the coloring problems under
1475 escapes. This was the source of all the coloring problems under
1469 Win32. I think that _finally_, Win32 users have a properly
1476 Win32. I think that _finally_, Win32 users have a properly
1470 working ipython in all respects. This would never have happened
1477 working ipython in all respects. This would never have happened
1471 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1478 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1472
1479
1473 2005-01-26 *** Released version 0.6.9
1480 2005-01-26 *** Released version 0.6.9
1474
1481
1475 2005-01-25 Fernando Perez <fperez@colorado.edu>
1482 2005-01-25 Fernando Perez <fperez@colorado.edu>
1476
1483
1477 * setup.py: finally, we have a true Windows installer, thanks to
1484 * setup.py: finally, we have a true Windows installer, thanks to
1478 the excellent work of Viktor Ransmayr
1485 the excellent work of Viktor Ransmayr
1479 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1486 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1480 Windows users. The setup routine is quite a bit cleaner thanks to
1487 Windows users. The setup routine is quite a bit cleaner thanks to
1481 this, and the post-install script uses the proper functions to
1488 this, and the post-install script uses the proper functions to
1482 allow a clean de-installation using the standard Windows Control
1489 allow a clean de-installation using the standard Windows Control
1483 Panel.
1490 Panel.
1484
1491
1485 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1492 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1486 environment variable under all OSes (including win32) if
1493 environment variable under all OSes (including win32) if
1487 available. This will give consistency to win32 users who have set
1494 available. This will give consistency to win32 users who have set
1488 this variable for any reason. If os.environ['HOME'] fails, the
1495 this variable for any reason. If os.environ['HOME'] fails, the
1489 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1496 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1490
1497
1491 2005-01-24 Fernando Perez <fperez@colorado.edu>
1498 2005-01-24 Fernando Perez <fperez@colorado.edu>
1492
1499
1493 * IPython/numutils.py (empty_like): add empty_like(), similar to
1500 * IPython/numutils.py (empty_like): add empty_like(), similar to
1494 zeros_like() but taking advantage of the new empty() Numeric routine.
1501 zeros_like() but taking advantage of the new empty() Numeric routine.
1495
1502
1496 2005-01-23 *** Released version 0.6.8
1503 2005-01-23 *** Released version 0.6.8
1497
1504
1498 2005-01-22 Fernando Perez <fperez@colorado.edu>
1505 2005-01-22 Fernando Perez <fperez@colorado.edu>
1499
1506
1500 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1507 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1501 automatic show() calls. After discussing things with JDH, it
1508 automatic show() calls. After discussing things with JDH, it
1502 turns out there are too many corner cases where this can go wrong.
1509 turns out there are too many corner cases where this can go wrong.
1503 It's best not to try to be 'too smart', and simply have ipython
1510 It's best not to try to be 'too smart', and simply have ipython
1504 reproduce as much as possible the default behavior of a normal
1511 reproduce as much as possible the default behavior of a normal
1505 python shell.
1512 python shell.
1506
1513
1507 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1514 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1508 line-splitting regexp and _prefilter() to avoid calling getattr()
1515 line-splitting regexp and _prefilter() to avoid calling getattr()
1509 on assignments. This closes
1516 on assignments. This closes
1510 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1517 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1511 readline uses getattr(), so a simple <TAB> keypress is still
1518 readline uses getattr(), so a simple <TAB> keypress is still
1512 enough to trigger getattr() calls on an object.
1519 enough to trigger getattr() calls on an object.
1513
1520
1514 2005-01-21 Fernando Perez <fperez@colorado.edu>
1521 2005-01-21 Fernando Perez <fperez@colorado.edu>
1515
1522
1516 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1523 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1517 docstring under pylab so it doesn't mask the original.
1524 docstring under pylab so it doesn't mask the original.
1518
1525
1519 2005-01-21 *** Released version 0.6.7
1526 2005-01-21 *** Released version 0.6.7
1520
1527
1521 2005-01-21 Fernando Perez <fperez@colorado.edu>
1528 2005-01-21 Fernando Perez <fperez@colorado.edu>
1522
1529
1523 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1530 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1524 signal handling for win32 users in multithreaded mode.
1531 signal handling for win32 users in multithreaded mode.
1525
1532
1526 2005-01-17 Fernando Perez <fperez@colorado.edu>
1533 2005-01-17 Fernando Perez <fperez@colorado.edu>
1527
1534
1528 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1535 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1529 instances with no __init__. After a crash report by Norbert Nemec
1536 instances with no __init__. After a crash report by Norbert Nemec
1530 <Norbert-AT-nemec-online.de>.
1537 <Norbert-AT-nemec-online.de>.
1531
1538
1532 2005-01-14 Fernando Perez <fperez@colorado.edu>
1539 2005-01-14 Fernando Perez <fperez@colorado.edu>
1533
1540
1534 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1541 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1535 names for verbose exceptions, when multiple dotted names and the
1542 names for verbose exceptions, when multiple dotted names and the
1536 'parent' object were present on the same line.
1543 'parent' object were present on the same line.
1537
1544
1538 2005-01-11 Fernando Perez <fperez@colorado.edu>
1545 2005-01-11 Fernando Perez <fperez@colorado.edu>
1539
1546
1540 * IPython/genutils.py (flag_calls): new utility to trap and flag
1547 * IPython/genutils.py (flag_calls): new utility to trap and flag
1541 calls in functions. I need it to clean up matplotlib support.
1548 calls in functions. I need it to clean up matplotlib support.
1542 Also removed some deprecated code in genutils.
1549 Also removed some deprecated code in genutils.
1543
1550
1544 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1551 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1545 that matplotlib scripts called with %run, which don't call show()
1552 that matplotlib scripts called with %run, which don't call show()
1546 themselves, still have their plotting windows open.
1553 themselves, still have their plotting windows open.
1547
1554
1548 2005-01-05 Fernando Perez <fperez@colorado.edu>
1555 2005-01-05 Fernando Perez <fperez@colorado.edu>
1549
1556
1550 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1557 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1551 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1558 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1552
1559
1553 2004-12-19 Fernando Perez <fperez@colorado.edu>
1560 2004-12-19 Fernando Perez <fperez@colorado.edu>
1554
1561
1555 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1562 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1556 parent_runcode, which was an eyesore. The same result can be
1563 parent_runcode, which was an eyesore. The same result can be
1557 obtained with Python's regular superclass mechanisms.
1564 obtained with Python's regular superclass mechanisms.
1558
1565
1559 2004-12-17 Fernando Perez <fperez@colorado.edu>
1566 2004-12-17 Fernando Perez <fperez@colorado.edu>
1560
1567
1561 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1568 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1562 reported by Prabhu.
1569 reported by Prabhu.
1563 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1570 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1564 sys.stderr) instead of explicitly calling sys.stderr. This helps
1571 sys.stderr) instead of explicitly calling sys.stderr. This helps
1565 maintain our I/O abstractions clean, for future GUI embeddings.
1572 maintain our I/O abstractions clean, for future GUI embeddings.
1566
1573
1567 * IPython/genutils.py (info): added new utility for sys.stderr
1574 * IPython/genutils.py (info): added new utility for sys.stderr
1568 unified info message handling (thin wrapper around warn()).
1575 unified info message handling (thin wrapper around warn()).
1569
1576
1570 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1577 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1571 composite (dotted) names on verbose exceptions.
1578 composite (dotted) names on verbose exceptions.
1572 (VerboseTB.nullrepr): harden against another kind of errors which
1579 (VerboseTB.nullrepr): harden against another kind of errors which
1573 Python's inspect module can trigger, and which were crashing
1580 Python's inspect module can trigger, and which were crashing
1574 IPython. Thanks to a report by Marco Lombardi
1581 IPython. Thanks to a report by Marco Lombardi
1575 <mlombard-AT-ma010192.hq.eso.org>.
1582 <mlombard-AT-ma010192.hq.eso.org>.
1576
1583
1577 2004-12-13 *** Released version 0.6.6
1584 2004-12-13 *** Released version 0.6.6
1578
1585
1579 2004-12-12 Fernando Perez <fperez@colorado.edu>
1586 2004-12-12 Fernando Perez <fperez@colorado.edu>
1580
1587
1581 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1588 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1582 generated by pygtk upon initialization if it was built without
1589 generated by pygtk upon initialization if it was built without
1583 threads (for matplotlib users). After a crash reported by
1590 threads (for matplotlib users). After a crash reported by
1584 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1591 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1585
1592
1586 * IPython/ipmaker.py (make_IPython): fix small bug in the
1593 * IPython/ipmaker.py (make_IPython): fix small bug in the
1587 import_some parameter for multiple imports.
1594 import_some parameter for multiple imports.
1588
1595
1589 * IPython/iplib.py (ipmagic): simplified the interface of
1596 * IPython/iplib.py (ipmagic): simplified the interface of
1590 ipmagic() to take a single string argument, just as it would be
1597 ipmagic() to take a single string argument, just as it would be
1591 typed at the IPython cmd line.
1598 typed at the IPython cmd line.
1592 (ipalias): Added new ipalias() with an interface identical to
1599 (ipalias): Added new ipalias() with an interface identical to
1593 ipmagic(). This completes exposing a pure python interface to the
1600 ipmagic(). This completes exposing a pure python interface to the
1594 alias and magic system, which can be used in loops or more complex
1601 alias and magic system, which can be used in loops or more complex
1595 code where IPython's automatic line mangling is not active.
1602 code where IPython's automatic line mangling is not active.
1596
1603
1597 * IPython/genutils.py (timing): changed interface of timing to
1604 * IPython/genutils.py (timing): changed interface of timing to
1598 simply run code once, which is the most common case. timings()
1605 simply run code once, which is the most common case. timings()
1599 remains unchanged, for the cases where you want multiple runs.
1606 remains unchanged, for the cases where you want multiple runs.
1600
1607
1601 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1608 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1602 bug where Python2.2 crashes with exec'ing code which does not end
1609 bug where Python2.2 crashes with exec'ing code which does not end
1603 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1610 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1604 before.
1611 before.
1605
1612
1606 2004-12-10 Fernando Perez <fperez@colorado.edu>
1613 2004-12-10 Fernando Perez <fperez@colorado.edu>
1607
1614
1608 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1615 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1609 -t to -T, to accomodate the new -t flag in %run (the %run and
1616 -t to -T, to accomodate the new -t flag in %run (the %run and
1610 %prun options are kind of intermixed, and it's not easy to change
1617 %prun options are kind of intermixed, and it's not easy to change
1611 this with the limitations of python's getopt).
1618 this with the limitations of python's getopt).
1612
1619
1613 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1620 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1614 the execution of scripts. It's not as fine-tuned as timeit.py,
1621 the execution of scripts. It's not as fine-tuned as timeit.py,
1615 but it works from inside ipython (and under 2.2, which lacks
1622 but it works from inside ipython (and under 2.2, which lacks
1616 timeit.py). Optionally a number of runs > 1 can be given for
1623 timeit.py). Optionally a number of runs > 1 can be given for
1617 timing very short-running code.
1624 timing very short-running code.
1618
1625
1619 * IPython/genutils.py (uniq_stable): new routine which returns a
1626 * IPython/genutils.py (uniq_stable): new routine which returns a
1620 list of unique elements in any iterable, but in stable order of
1627 list of unique elements in any iterable, but in stable order of
1621 appearance. I needed this for the ultraTB fixes, and it's a handy
1628 appearance. I needed this for the ultraTB fixes, and it's a handy
1622 utility.
1629 utility.
1623
1630
1624 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1631 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1625 dotted names in Verbose exceptions. This had been broken since
1632 dotted names in Verbose exceptions. This had been broken since
1626 the very start, now x.y will properly be printed in a Verbose
1633 the very start, now x.y will properly be printed in a Verbose
1627 traceback, instead of x being shown and y appearing always as an
1634 traceback, instead of x being shown and y appearing always as an
1628 'undefined global'. Getting this to work was a bit tricky,
1635 'undefined global'. Getting this to work was a bit tricky,
1629 because by default python tokenizers are stateless. Saved by
1636 because by default python tokenizers are stateless. Saved by
1630 python's ability to easily add a bit of state to an arbitrary
1637 python's ability to easily add a bit of state to an arbitrary
1631 function (without needing to build a full-blown callable object).
1638 function (without needing to build a full-blown callable object).
1632
1639
1633 Also big cleanup of this code, which had horrendous runtime
1640 Also big cleanup of this code, which had horrendous runtime
1634 lookups of zillions of attributes for colorization. Moved all
1641 lookups of zillions of attributes for colorization. Moved all
1635 this code into a few templates, which make it cleaner and quicker.
1642 this code into a few templates, which make it cleaner and quicker.
1636
1643
1637 Printout quality was also improved for Verbose exceptions: one
1644 Printout quality was also improved for Verbose exceptions: one
1638 variable per line, and memory addresses are printed (this can be
1645 variable per line, and memory addresses are printed (this can be
1639 quite handy in nasty debugging situations, which is what Verbose
1646 quite handy in nasty debugging situations, which is what Verbose
1640 is for).
1647 is for).
1641
1648
1642 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1649 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1643 the command line as scripts to be loaded by embedded instances.
1650 the command line as scripts to be loaded by embedded instances.
1644 Doing so has the potential for an infinite recursion if there are
1651 Doing so has the potential for an infinite recursion if there are
1645 exceptions thrown in the process. This fixes a strange crash
1652 exceptions thrown in the process. This fixes a strange crash
1646 reported by Philippe MULLER <muller-AT-irit.fr>.
1653 reported by Philippe MULLER <muller-AT-irit.fr>.
1647
1654
1648 2004-12-09 Fernando Perez <fperez@colorado.edu>
1655 2004-12-09 Fernando Perez <fperez@colorado.edu>
1649
1656
1650 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1657 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1651 to reflect new names in matplotlib, which now expose the
1658 to reflect new names in matplotlib, which now expose the
1652 matlab-compatible interface via a pylab module instead of the
1659 matlab-compatible interface via a pylab module instead of the
1653 'matlab' name. The new code is backwards compatible, so users of
1660 'matlab' name. The new code is backwards compatible, so users of
1654 all matplotlib versions are OK. Patch by J. Hunter.
1661 all matplotlib versions are OK. Patch by J. Hunter.
1655
1662
1656 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1663 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1657 of __init__ docstrings for instances (class docstrings are already
1664 of __init__ docstrings for instances (class docstrings are already
1658 automatically printed). Instances with customized docstrings
1665 automatically printed). Instances with customized docstrings
1659 (indep. of the class) are also recognized and all 3 separate
1666 (indep. of the class) are also recognized and all 3 separate
1660 docstrings are printed (instance, class, constructor). After some
1667 docstrings are printed (instance, class, constructor). After some
1661 comments/suggestions by J. Hunter.
1668 comments/suggestions by J. Hunter.
1662
1669
1663 2004-12-05 Fernando Perez <fperez@colorado.edu>
1670 2004-12-05 Fernando Perez <fperez@colorado.edu>
1664
1671
1665 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1672 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1666 warnings when tab-completion fails and triggers an exception.
1673 warnings when tab-completion fails and triggers an exception.
1667
1674
1668 2004-12-03 Fernando Perez <fperez@colorado.edu>
1675 2004-12-03 Fernando Perez <fperez@colorado.edu>
1669
1676
1670 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1677 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1671 be triggered when using 'run -p'. An incorrect option flag was
1678 be triggered when using 'run -p'. An incorrect option flag was
1672 being set ('d' instead of 'D').
1679 being set ('d' instead of 'D').
1673 (manpage): fix missing escaped \- sign.
1680 (manpage): fix missing escaped \- sign.
1674
1681
1675 2004-11-30 *** Released version 0.6.5
1682 2004-11-30 *** Released version 0.6.5
1676
1683
1677 2004-11-30 Fernando Perez <fperez@colorado.edu>
1684 2004-11-30 Fernando Perez <fperez@colorado.edu>
1678
1685
1679 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1686 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1680 setting with -d option.
1687 setting with -d option.
1681
1688
1682 * setup.py (docfiles): Fix problem where the doc glob I was using
1689 * setup.py (docfiles): Fix problem where the doc glob I was using
1683 was COMPLETELY BROKEN. It was giving the right files by pure
1690 was COMPLETELY BROKEN. It was giving the right files by pure
1684 accident, but failed once I tried to include ipython.el. Note:
1691 accident, but failed once I tried to include ipython.el. Note:
1685 glob() does NOT allow you to do exclusion on multiple endings!
1692 glob() does NOT allow you to do exclusion on multiple endings!
1686
1693
1687 2004-11-29 Fernando Perez <fperez@colorado.edu>
1694 2004-11-29 Fernando Perez <fperez@colorado.edu>
1688
1695
1689 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1696 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1690 the manpage as the source. Better formatting & consistency.
1697 the manpage as the source. Better formatting & consistency.
1691
1698
1692 * IPython/Magic.py (magic_run): Added new -d option, to run
1699 * IPython/Magic.py (magic_run): Added new -d option, to run
1693 scripts under the control of the python pdb debugger. Note that
1700 scripts under the control of the python pdb debugger. Note that
1694 this required changing the %prun option -d to -D, to avoid a clash
1701 this required changing the %prun option -d to -D, to avoid a clash
1695 (since %run must pass options to %prun, and getopt is too dumb to
1702 (since %run must pass options to %prun, and getopt is too dumb to
1696 handle options with string values with embedded spaces). Thanks
1703 handle options with string values with embedded spaces). Thanks
1697 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1704 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1698 (magic_who_ls): added type matching to %who and %whos, so that one
1705 (magic_who_ls): added type matching to %who and %whos, so that one
1699 can filter their output to only include variables of certain
1706 can filter their output to only include variables of certain
1700 types. Another suggestion by Matthew.
1707 types. Another suggestion by Matthew.
1701 (magic_whos): Added memory summaries in kb and Mb for arrays.
1708 (magic_whos): Added memory summaries in kb and Mb for arrays.
1702 (magic_who): Improve formatting (break lines every 9 vars).
1709 (magic_who): Improve formatting (break lines every 9 vars).
1703
1710
1704 2004-11-28 Fernando Perez <fperez@colorado.edu>
1711 2004-11-28 Fernando Perez <fperez@colorado.edu>
1705
1712
1706 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1713 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1707 cache when empty lines were present.
1714 cache when empty lines were present.
1708
1715
1709 2004-11-24 Fernando Perez <fperez@colorado.edu>
1716 2004-11-24 Fernando Perez <fperez@colorado.edu>
1710
1717
1711 * IPython/usage.py (__doc__): document the re-activated threading
1718 * IPython/usage.py (__doc__): document the re-activated threading
1712 options for WX and GTK.
1719 options for WX and GTK.
1713
1720
1714 2004-11-23 Fernando Perez <fperez@colorado.edu>
1721 2004-11-23 Fernando Perez <fperez@colorado.edu>
1715
1722
1716 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1723 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1717 the -wthread and -gthread options, along with a new -tk one to try
1724 the -wthread and -gthread options, along with a new -tk one to try
1718 and coordinate Tk threading with wx/gtk. The tk support is very
1725 and coordinate Tk threading with wx/gtk. The tk support is very
1719 platform dependent, since it seems to require Tcl and Tk to be
1726 platform dependent, since it seems to require Tcl and Tk to be
1720 built with threads (Fedora1/2 appears NOT to have it, but in
1727 built with threads (Fedora1/2 appears NOT to have it, but in
1721 Prabhu's Debian boxes it works OK). But even with some Tk
1728 Prabhu's Debian boxes it works OK). But even with some Tk
1722 limitations, this is a great improvement.
1729 limitations, this is a great improvement.
1723
1730
1724 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1731 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1725 info in user prompts. Patch by Prabhu.
1732 info in user prompts. Patch by Prabhu.
1726
1733
1727 2004-11-18 Fernando Perez <fperez@colorado.edu>
1734 2004-11-18 Fernando Perez <fperez@colorado.edu>
1728
1735
1729 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1736 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1730 EOFErrors and bail, to avoid infinite loops if a non-terminating
1737 EOFErrors and bail, to avoid infinite loops if a non-terminating
1731 file is fed into ipython. Patch submitted in issue 19 by user,
1738 file is fed into ipython. Patch submitted in issue 19 by user,
1732 many thanks.
1739 many thanks.
1733
1740
1734 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1741 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1735 autoquote/parens in continuation prompts, which can cause lots of
1742 autoquote/parens in continuation prompts, which can cause lots of
1736 problems. Closes roundup issue 20.
1743 problems. Closes roundup issue 20.
1737
1744
1738 2004-11-17 Fernando Perez <fperez@colorado.edu>
1745 2004-11-17 Fernando Perez <fperez@colorado.edu>
1739
1746
1740 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1747 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1741 reported as debian bug #280505. I'm not sure my local changelog
1748 reported as debian bug #280505. I'm not sure my local changelog
1742 entry has the proper debian format (Jack?).
1749 entry has the proper debian format (Jack?).
1743
1750
1744 2004-11-08 *** Released version 0.6.4
1751 2004-11-08 *** Released version 0.6.4
1745
1752
1746 2004-11-08 Fernando Perez <fperez@colorado.edu>
1753 2004-11-08 Fernando Perez <fperez@colorado.edu>
1747
1754
1748 * IPython/iplib.py (init_readline): Fix exit message for Windows
1755 * IPython/iplib.py (init_readline): Fix exit message for Windows
1749 when readline is active. Thanks to a report by Eric Jones
1756 when readline is active. Thanks to a report by Eric Jones
1750 <eric-AT-enthought.com>.
1757 <eric-AT-enthought.com>.
1751
1758
1752 2004-11-07 Fernando Perez <fperez@colorado.edu>
1759 2004-11-07 Fernando Perez <fperez@colorado.edu>
1753
1760
1754 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1761 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1755 sometimes seen by win2k/cygwin users.
1762 sometimes seen by win2k/cygwin users.
1756
1763
1757 2004-11-06 Fernando Perez <fperez@colorado.edu>
1764 2004-11-06 Fernando Perez <fperez@colorado.edu>
1758
1765
1759 * IPython/iplib.py (interact): Change the handling of %Exit from
1766 * IPython/iplib.py (interact): Change the handling of %Exit from
1760 trying to propagate a SystemExit to an internal ipython flag.
1767 trying to propagate a SystemExit to an internal ipython flag.
1761 This is less elegant than using Python's exception mechanism, but
1768 This is less elegant than using Python's exception mechanism, but
1762 I can't get that to work reliably with threads, so under -pylab
1769 I can't get that to work reliably with threads, so under -pylab
1763 %Exit was hanging IPython. Cross-thread exception handling is
1770 %Exit was hanging IPython. Cross-thread exception handling is
1764 really a bitch. Thaks to a bug report by Stephen Walton
1771 really a bitch. Thaks to a bug report by Stephen Walton
1765 <stephen.walton-AT-csun.edu>.
1772 <stephen.walton-AT-csun.edu>.
1766
1773
1767 2004-11-04 Fernando Perez <fperez@colorado.edu>
1774 2004-11-04 Fernando Perez <fperez@colorado.edu>
1768
1775
1769 * IPython/iplib.py (raw_input_original): store a pointer to the
1776 * IPython/iplib.py (raw_input_original): store a pointer to the
1770 true raw_input to harden against code which can modify it
1777 true raw_input to harden against code which can modify it
1771 (wx.py.PyShell does this and would otherwise crash ipython).
1778 (wx.py.PyShell does this and would otherwise crash ipython).
1772 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1779 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1773
1780
1774 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1781 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1775 Ctrl-C problem, which does not mess up the input line.
1782 Ctrl-C problem, which does not mess up the input line.
1776
1783
1777 2004-11-03 Fernando Perez <fperez@colorado.edu>
1784 2004-11-03 Fernando Perez <fperez@colorado.edu>
1778
1785
1779 * IPython/Release.py: Changed licensing to BSD, in all files.
1786 * IPython/Release.py: Changed licensing to BSD, in all files.
1780 (name): lowercase name for tarball/RPM release.
1787 (name): lowercase name for tarball/RPM release.
1781
1788
1782 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1789 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1783 use throughout ipython.
1790 use throughout ipython.
1784
1791
1785 * IPython/Magic.py (Magic._ofind): Switch to using the new
1792 * IPython/Magic.py (Magic._ofind): Switch to using the new
1786 OInspect.getdoc() function.
1793 OInspect.getdoc() function.
1787
1794
1788 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1795 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1789 of the line currently being canceled via Ctrl-C. It's extremely
1796 of the line currently being canceled via Ctrl-C. It's extremely
1790 ugly, but I don't know how to do it better (the problem is one of
1797 ugly, but I don't know how to do it better (the problem is one of
1791 handling cross-thread exceptions).
1798 handling cross-thread exceptions).
1792
1799
1793 2004-10-28 Fernando Perez <fperez@colorado.edu>
1800 2004-10-28 Fernando Perez <fperez@colorado.edu>
1794
1801
1795 * IPython/Shell.py (signal_handler): add signal handlers to trap
1802 * IPython/Shell.py (signal_handler): add signal handlers to trap
1796 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1803 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1797 report by Francesc Alted.
1804 report by Francesc Alted.
1798
1805
1799 2004-10-21 Fernando Perez <fperez@colorado.edu>
1806 2004-10-21 Fernando Perez <fperez@colorado.edu>
1800
1807
1801 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1808 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1802 to % for pysh syntax extensions.
1809 to % for pysh syntax extensions.
1803
1810
1804 2004-10-09 Fernando Perez <fperez@colorado.edu>
1811 2004-10-09 Fernando Perez <fperez@colorado.edu>
1805
1812
1806 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
1813 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
1807 arrays to print a more useful summary, without calling str(arr).
1814 arrays to print a more useful summary, without calling str(arr).
1808 This avoids the problem of extremely lengthy computations which
1815 This avoids the problem of extremely lengthy computations which
1809 occur if arr is large, and appear to the user as a system lockup
1816 occur if arr is large, and appear to the user as a system lockup
1810 with 100% cpu activity. After a suggestion by Kristian Sandberg
1817 with 100% cpu activity. After a suggestion by Kristian Sandberg
1811 <Kristian.Sandberg@colorado.edu>.
1818 <Kristian.Sandberg@colorado.edu>.
1812 (Magic.__init__): fix bug in global magic escapes not being
1819 (Magic.__init__): fix bug in global magic escapes not being
1813 correctly set.
1820 correctly set.
1814
1821
1815 2004-10-08 Fernando Perez <fperez@colorado.edu>
1822 2004-10-08 Fernando Perez <fperez@colorado.edu>
1816
1823
1817 * IPython/Magic.py (__license__): change to absolute imports of
1824 * IPython/Magic.py (__license__): change to absolute imports of
1818 ipython's own internal packages, to start adapting to the absolute
1825 ipython's own internal packages, to start adapting to the absolute
1819 import requirement of PEP-328.
1826 import requirement of PEP-328.
1820
1827
1821 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
1828 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
1822 files, and standardize author/license marks through the Release
1829 files, and standardize author/license marks through the Release
1823 module instead of having per/file stuff (except for files with
1830 module instead of having per/file stuff (except for files with
1824 particular licenses, like the MIT/PSF-licensed codes).
1831 particular licenses, like the MIT/PSF-licensed codes).
1825
1832
1826 * IPython/Debugger.py: remove dead code for python 2.1
1833 * IPython/Debugger.py: remove dead code for python 2.1
1827
1834
1828 2004-10-04 Fernando Perez <fperez@colorado.edu>
1835 2004-10-04 Fernando Perez <fperez@colorado.edu>
1829
1836
1830 * IPython/iplib.py (ipmagic): New function for accessing magics
1837 * IPython/iplib.py (ipmagic): New function for accessing magics
1831 via a normal python function call.
1838 via a normal python function call.
1832
1839
1833 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
1840 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
1834 from '@' to '%', to accomodate the new @decorator syntax of python
1841 from '@' to '%', to accomodate the new @decorator syntax of python
1835 2.4.
1842 2.4.
1836
1843
1837 2004-09-29 Fernando Perez <fperez@colorado.edu>
1844 2004-09-29 Fernando Perez <fperez@colorado.edu>
1838
1845
1839 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
1846 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
1840 matplotlib.use to prevent running scripts which try to switch
1847 matplotlib.use to prevent running scripts which try to switch
1841 interactive backends from within ipython. This will just crash
1848 interactive backends from within ipython. This will just crash
1842 the python interpreter, so we can't allow it (but a detailed error
1849 the python interpreter, so we can't allow it (but a detailed error
1843 is given to the user).
1850 is given to the user).
1844
1851
1845 2004-09-28 Fernando Perez <fperez@colorado.edu>
1852 2004-09-28 Fernando Perez <fperez@colorado.edu>
1846
1853
1847 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
1854 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
1848 matplotlib-related fixes so that using @run with non-matplotlib
1855 matplotlib-related fixes so that using @run with non-matplotlib
1849 scripts doesn't pop up spurious plot windows. This requires
1856 scripts doesn't pop up spurious plot windows. This requires
1850 matplotlib >= 0.63, where I had to make some changes as well.
1857 matplotlib >= 0.63, where I had to make some changes as well.
1851
1858
1852 * IPython/ipmaker.py (make_IPython): update version requirement to
1859 * IPython/ipmaker.py (make_IPython): update version requirement to
1853 python 2.2.
1860 python 2.2.
1854
1861
1855 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
1862 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
1856 banner arg for embedded customization.
1863 banner arg for embedded customization.
1857
1864
1858 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
1865 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
1859 explicit uses of __IP as the IPython's instance name. Now things
1866 explicit uses of __IP as the IPython's instance name. Now things
1860 are properly handled via the shell.name value. The actual code
1867 are properly handled via the shell.name value. The actual code
1861 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
1868 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
1862 is much better than before. I'll clean things completely when the
1869 is much better than before. I'll clean things completely when the
1863 magic stuff gets a real overhaul.
1870 magic stuff gets a real overhaul.
1864
1871
1865 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
1872 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
1866 minor changes to debian dir.
1873 minor changes to debian dir.
1867
1874
1868 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
1875 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
1869 pointer to the shell itself in the interactive namespace even when
1876 pointer to the shell itself in the interactive namespace even when
1870 a user-supplied dict is provided. This is needed for embedding
1877 a user-supplied dict is provided. This is needed for embedding
1871 purposes (found by tests with Michel Sanner).
1878 purposes (found by tests with Michel Sanner).
1872
1879
1873 2004-09-27 Fernando Perez <fperez@colorado.edu>
1880 2004-09-27 Fernando Perez <fperez@colorado.edu>
1874
1881
1875 * IPython/UserConfig/ipythonrc: remove []{} from
1882 * IPython/UserConfig/ipythonrc: remove []{} from
1876 readline_remove_delims, so that things like [modname.<TAB> do
1883 readline_remove_delims, so that things like [modname.<TAB> do
1877 proper completion. This disables [].TAB, but that's a less common
1884 proper completion. This disables [].TAB, but that's a less common
1878 case than module names in list comprehensions, for example.
1885 case than module names in list comprehensions, for example.
1879 Thanks to a report by Andrea Riciputi.
1886 Thanks to a report by Andrea Riciputi.
1880
1887
1881 2004-09-09 Fernando Perez <fperez@colorado.edu>
1888 2004-09-09 Fernando Perez <fperez@colorado.edu>
1882
1889
1883 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
1890 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
1884 blocking problems in win32 and osx. Fix by John.
1891 blocking problems in win32 and osx. Fix by John.
1885
1892
1886 2004-09-08 Fernando Perez <fperez@colorado.edu>
1893 2004-09-08 Fernando Perez <fperez@colorado.edu>
1887
1894
1888 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
1895 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
1889 for Win32 and OSX. Fix by John Hunter.
1896 for Win32 and OSX. Fix by John Hunter.
1890
1897
1891 2004-08-30 *** Released version 0.6.3
1898 2004-08-30 *** Released version 0.6.3
1892
1899
1893 2004-08-30 Fernando Perez <fperez@colorado.edu>
1900 2004-08-30 Fernando Perez <fperez@colorado.edu>
1894
1901
1895 * setup.py (isfile): Add manpages to list of dependent files to be
1902 * setup.py (isfile): Add manpages to list of dependent files to be
1896 updated.
1903 updated.
1897
1904
1898 2004-08-27 Fernando Perez <fperez@colorado.edu>
1905 2004-08-27 Fernando Perez <fperez@colorado.edu>
1899
1906
1900 * IPython/Shell.py (start): I've disabled -wthread and -gthread
1907 * IPython/Shell.py (start): I've disabled -wthread and -gthread
1901 for now. They don't really work with standalone WX/GTK code
1908 for now. They don't really work with standalone WX/GTK code
1902 (though matplotlib IS working fine with both of those backends).
1909 (though matplotlib IS working fine with both of those backends).
1903 This will neeed much more testing. I disabled most things with
1910 This will neeed much more testing. I disabled most things with
1904 comments, so turning it back on later should be pretty easy.
1911 comments, so turning it back on later should be pretty easy.
1905
1912
1906 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
1913 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
1907 autocalling of expressions like r'foo', by modifying the line
1914 autocalling of expressions like r'foo', by modifying the line
1908 split regexp. Closes
1915 split regexp. Closes
1909 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
1916 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
1910 Riley <ipythonbugs-AT-sabi.net>.
1917 Riley <ipythonbugs-AT-sabi.net>.
1911 (InteractiveShell.mainloop): honor --nobanner with banner
1918 (InteractiveShell.mainloop): honor --nobanner with banner
1912 extensions.
1919 extensions.
1913
1920
1914 * IPython/Shell.py: Significant refactoring of all classes, so
1921 * IPython/Shell.py: Significant refactoring of all classes, so
1915 that we can really support ALL matplotlib backends and threading
1922 that we can really support ALL matplotlib backends and threading
1916 models (John spotted a bug with Tk which required this). Now we
1923 models (John spotted a bug with Tk which required this). Now we
1917 should support single-threaded, WX-threads and GTK-threads, both
1924 should support single-threaded, WX-threads and GTK-threads, both
1918 for generic code and for matplotlib.
1925 for generic code and for matplotlib.
1919
1926
1920 * IPython/ipmaker.py (__call__): Changed -mpthread option to
1927 * IPython/ipmaker.py (__call__): Changed -mpthread option to
1921 -pylab, to simplify things for users. Will also remove the pylab
1928 -pylab, to simplify things for users. Will also remove the pylab
1922 profile, since now all of matplotlib configuration is directly
1929 profile, since now all of matplotlib configuration is directly
1923 handled here. This also reduces startup time.
1930 handled here. This also reduces startup time.
1924
1931
1925 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
1932 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
1926 shell wasn't being correctly called. Also in IPShellWX.
1933 shell wasn't being correctly called. Also in IPShellWX.
1927
1934
1928 * IPython/iplib.py (InteractiveShell.__init__): Added option to
1935 * IPython/iplib.py (InteractiveShell.__init__): Added option to
1929 fine-tune banner.
1936 fine-tune banner.
1930
1937
1931 * IPython/numutils.py (spike): Deprecate these spike functions,
1938 * IPython/numutils.py (spike): Deprecate these spike functions,
1932 delete (long deprecated) gnuplot_exec handler.
1939 delete (long deprecated) gnuplot_exec handler.
1933
1940
1934 2004-08-26 Fernando Perez <fperez@colorado.edu>
1941 2004-08-26 Fernando Perez <fperez@colorado.edu>
1935
1942
1936 * ipython.1: Update for threading options, plus some others which
1943 * ipython.1: Update for threading options, plus some others which
1937 were missing.
1944 were missing.
1938
1945
1939 * IPython/ipmaker.py (__call__): Added -wthread option for
1946 * IPython/ipmaker.py (__call__): Added -wthread option for
1940 wxpython thread handling. Make sure threading options are only
1947 wxpython thread handling. Make sure threading options are only
1941 valid at the command line.
1948 valid at the command line.
1942
1949
1943 * scripts/ipython: moved shell selection into a factory function
1950 * scripts/ipython: moved shell selection into a factory function
1944 in Shell.py, to keep the starter script to a minimum.
1951 in Shell.py, to keep the starter script to a minimum.
1945
1952
1946 2004-08-25 Fernando Perez <fperez@colorado.edu>
1953 2004-08-25 Fernando Perez <fperez@colorado.edu>
1947
1954
1948 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
1955 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
1949 John. Along with some recent changes he made to matplotlib, the
1956 John. Along with some recent changes he made to matplotlib, the
1950 next versions of both systems should work very well together.
1957 next versions of both systems should work very well together.
1951
1958
1952 2004-08-24 Fernando Perez <fperez@colorado.edu>
1959 2004-08-24 Fernando Perez <fperez@colorado.edu>
1953
1960
1954 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
1961 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
1955 tried to switch the profiling to using hotshot, but I'm getting
1962 tried to switch the profiling to using hotshot, but I'm getting
1956 strange errors from prof.runctx() there. I may be misreading the
1963 strange errors from prof.runctx() there. I may be misreading the
1957 docs, but it looks weird. For now the profiling code will
1964 docs, but it looks weird. For now the profiling code will
1958 continue to use the standard profiler.
1965 continue to use the standard profiler.
1959
1966
1960 2004-08-23 Fernando Perez <fperez@colorado.edu>
1967 2004-08-23 Fernando Perez <fperez@colorado.edu>
1961
1968
1962 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
1969 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
1963 threaded shell, by John Hunter. It's not quite ready yet, but
1970 threaded shell, by John Hunter. It's not quite ready yet, but
1964 close.
1971 close.
1965
1972
1966 2004-08-22 Fernando Perez <fperez@colorado.edu>
1973 2004-08-22 Fernando Perez <fperez@colorado.edu>
1967
1974
1968 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
1975 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
1969 in Magic and ultraTB.
1976 in Magic and ultraTB.
1970
1977
1971 * ipython.1: document threading options in manpage.
1978 * ipython.1: document threading options in manpage.
1972
1979
1973 * scripts/ipython: Changed name of -thread option to -gthread,
1980 * scripts/ipython: Changed name of -thread option to -gthread,
1974 since this is GTK specific. I want to leave the door open for a
1981 since this is GTK specific. I want to leave the door open for a
1975 -wthread option for WX, which will most likely be necessary. This
1982 -wthread option for WX, which will most likely be necessary. This
1976 change affects usage and ipmaker as well.
1983 change affects usage and ipmaker as well.
1977
1984
1978 * IPython/Shell.py (matplotlib_shell): Add a factory function to
1985 * IPython/Shell.py (matplotlib_shell): Add a factory function to
1979 handle the matplotlib shell issues. Code by John Hunter
1986 handle the matplotlib shell issues. Code by John Hunter
1980 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1987 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1981 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
1988 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
1982 broken (and disabled for end users) for now, but it puts the
1989 broken (and disabled for end users) for now, but it puts the
1983 infrastructure in place.
1990 infrastructure in place.
1984
1991
1985 2004-08-21 Fernando Perez <fperez@colorado.edu>
1992 2004-08-21 Fernando Perez <fperez@colorado.edu>
1986
1993
1987 * ipythonrc-pylab: Add matplotlib support.
1994 * ipythonrc-pylab: Add matplotlib support.
1988
1995
1989 * matplotlib_config.py: new files for matplotlib support, part of
1996 * matplotlib_config.py: new files for matplotlib support, part of
1990 the pylab profile.
1997 the pylab profile.
1991
1998
1992 * IPython/usage.py (__doc__): documented the threading options.
1999 * IPython/usage.py (__doc__): documented the threading options.
1993
2000
1994 2004-08-20 Fernando Perez <fperez@colorado.edu>
2001 2004-08-20 Fernando Perez <fperez@colorado.edu>
1995
2002
1996 * ipython: Modified the main calling routine to handle the -thread
2003 * ipython: Modified the main calling routine to handle the -thread
1997 and -mpthread options. This needs to be done as a top-level hack,
2004 and -mpthread options. This needs to be done as a top-level hack,
1998 because it determines which class to instantiate for IPython
2005 because it determines which class to instantiate for IPython
1999 itself.
2006 itself.
2000
2007
2001 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2008 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2002 classes to support multithreaded GTK operation without blocking,
2009 classes to support multithreaded GTK operation without blocking,
2003 and matplotlib with all backends. This is a lot of still very
2010 and matplotlib with all backends. This is a lot of still very
2004 experimental code, and threads are tricky. So it may still have a
2011 experimental code, and threads are tricky. So it may still have a
2005 few rough edges... This code owes a lot to
2012 few rough edges... This code owes a lot to
2006 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2013 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2007 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2014 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2008 to John Hunter for all the matplotlib work.
2015 to John Hunter for all the matplotlib work.
2009
2016
2010 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2017 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2011 options for gtk thread and matplotlib support.
2018 options for gtk thread and matplotlib support.
2012
2019
2013 2004-08-16 Fernando Perez <fperez@colorado.edu>
2020 2004-08-16 Fernando Perez <fperez@colorado.edu>
2014
2021
2015 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2022 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2016 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2023 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2017 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2024 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2018
2025
2019 2004-08-11 Fernando Perez <fperez@colorado.edu>
2026 2004-08-11 Fernando Perez <fperez@colorado.edu>
2020
2027
2021 * setup.py (isfile): Fix build so documentation gets updated for
2028 * setup.py (isfile): Fix build so documentation gets updated for
2022 rpms (it was only done for .tgz builds).
2029 rpms (it was only done for .tgz builds).
2023
2030
2024 2004-08-10 Fernando Perez <fperez@colorado.edu>
2031 2004-08-10 Fernando Perez <fperez@colorado.edu>
2025
2032
2026 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2033 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2027
2034
2028 * iplib.py : Silence syntax error exceptions in tab-completion.
2035 * iplib.py : Silence syntax error exceptions in tab-completion.
2029
2036
2030 2004-08-05 Fernando Perez <fperez@colorado.edu>
2037 2004-08-05 Fernando Perez <fperez@colorado.edu>
2031
2038
2032 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2039 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2033 'color off' mark for continuation prompts. This was causing long
2040 'color off' mark for continuation prompts. This was causing long
2034 continuation lines to mis-wrap.
2041 continuation lines to mis-wrap.
2035
2042
2036 2004-08-01 Fernando Perez <fperez@colorado.edu>
2043 2004-08-01 Fernando Perez <fperez@colorado.edu>
2037
2044
2038 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2045 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2039 for building ipython to be a parameter. All this is necessary
2046 for building ipython to be a parameter. All this is necessary
2040 right now to have a multithreaded version, but this insane
2047 right now to have a multithreaded version, but this insane
2041 non-design will be cleaned up soon. For now, it's a hack that
2048 non-design will be cleaned up soon. For now, it's a hack that
2042 works.
2049 works.
2043
2050
2044 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2051 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2045 args in various places. No bugs so far, but it's a dangerous
2052 args in various places. No bugs so far, but it's a dangerous
2046 practice.
2053 practice.
2047
2054
2048 2004-07-31 Fernando Perez <fperez@colorado.edu>
2055 2004-07-31 Fernando Perez <fperez@colorado.edu>
2049
2056
2050 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2057 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2051 fix completion of files with dots in their names under most
2058 fix completion of files with dots in their names under most
2052 profiles (pysh was OK because the completion order is different).
2059 profiles (pysh was OK because the completion order is different).
2053
2060
2054 2004-07-27 Fernando Perez <fperez@colorado.edu>
2061 2004-07-27 Fernando Perez <fperez@colorado.edu>
2055
2062
2056 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2063 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2057 keywords manually, b/c the one in keyword.py was removed in python
2064 keywords manually, b/c the one in keyword.py was removed in python
2058 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2065 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2059 This is NOT a bug under python 2.3 and earlier.
2066 This is NOT a bug under python 2.3 and earlier.
2060
2067
2061 2004-07-26 Fernando Perez <fperez@colorado.edu>
2068 2004-07-26 Fernando Perez <fperez@colorado.edu>
2062
2069
2063 * IPython/ultraTB.py (VerboseTB.text): Add another
2070 * IPython/ultraTB.py (VerboseTB.text): Add another
2064 linecache.checkcache() call to try to prevent inspect.py from
2071 linecache.checkcache() call to try to prevent inspect.py from
2065 crashing under python 2.3. I think this fixes
2072 crashing under python 2.3. I think this fixes
2066 http://www.scipy.net/roundup/ipython/issue17.
2073 http://www.scipy.net/roundup/ipython/issue17.
2067
2074
2068 2004-07-26 *** Released version 0.6.2
2075 2004-07-26 *** Released version 0.6.2
2069
2076
2070 2004-07-26 Fernando Perez <fperez@colorado.edu>
2077 2004-07-26 Fernando Perez <fperez@colorado.edu>
2071
2078
2072 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2079 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2073 fail for any number.
2080 fail for any number.
2074 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2081 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2075 empty bookmarks.
2082 empty bookmarks.
2076
2083
2077 2004-07-26 *** Released version 0.6.1
2084 2004-07-26 *** Released version 0.6.1
2078
2085
2079 2004-07-26 Fernando Perez <fperez@colorado.edu>
2086 2004-07-26 Fernando Perez <fperez@colorado.edu>
2080
2087
2081 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2088 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2082
2089
2083 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2090 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2084 escaping '()[]{}' in filenames.
2091 escaping '()[]{}' in filenames.
2085
2092
2086 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2093 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2087 Python 2.2 users who lack a proper shlex.split.
2094 Python 2.2 users who lack a proper shlex.split.
2088
2095
2089 2004-07-19 Fernando Perez <fperez@colorado.edu>
2096 2004-07-19 Fernando Perez <fperez@colorado.edu>
2090
2097
2091 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2098 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2092 for reading readline's init file. I follow the normal chain:
2099 for reading readline's init file. I follow the normal chain:
2093 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2100 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2094 report by Mike Heeter. This closes
2101 report by Mike Heeter. This closes
2095 http://www.scipy.net/roundup/ipython/issue16.
2102 http://www.scipy.net/roundup/ipython/issue16.
2096
2103
2097 2004-07-18 Fernando Perez <fperez@colorado.edu>
2104 2004-07-18 Fernando Perez <fperez@colorado.edu>
2098
2105
2099 * IPython/iplib.py (__init__): Add better handling of '\' under
2106 * IPython/iplib.py (__init__): Add better handling of '\' under
2100 Win32 for filenames. After a patch by Ville.
2107 Win32 for filenames. After a patch by Ville.
2101
2108
2102 2004-07-17 Fernando Perez <fperez@colorado.edu>
2109 2004-07-17 Fernando Perez <fperez@colorado.edu>
2103
2110
2104 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2111 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2105 autocalling would be triggered for 'foo is bar' if foo is
2112 autocalling would be triggered for 'foo is bar' if foo is
2106 callable. I also cleaned up the autocall detection code to use a
2113 callable. I also cleaned up the autocall detection code to use a
2107 regexp, which is faster. Bug reported by Alexander Schmolck.
2114 regexp, which is faster. Bug reported by Alexander Schmolck.
2108
2115
2109 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2116 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2110 '?' in them would confuse the help system. Reported by Alex
2117 '?' in them would confuse the help system. Reported by Alex
2111 Schmolck.
2118 Schmolck.
2112
2119
2113 2004-07-16 Fernando Perez <fperez@colorado.edu>
2120 2004-07-16 Fernando Perez <fperez@colorado.edu>
2114
2121
2115 * IPython/GnuplotInteractive.py (__all__): added plot2.
2122 * IPython/GnuplotInteractive.py (__all__): added plot2.
2116
2123
2117 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2124 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2118 plotting dictionaries, lists or tuples of 1d arrays.
2125 plotting dictionaries, lists or tuples of 1d arrays.
2119
2126
2120 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2127 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2121 optimizations.
2128 optimizations.
2122
2129
2123 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2130 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2124 the information which was there from Janko's original IPP code:
2131 the information which was there from Janko's original IPP code:
2125
2132
2126 03.05.99 20:53 porto.ifm.uni-kiel.de
2133 03.05.99 20:53 porto.ifm.uni-kiel.de
2127 --Started changelog.
2134 --Started changelog.
2128 --make clear do what it say it does
2135 --make clear do what it say it does
2129 --added pretty output of lines from inputcache
2136 --added pretty output of lines from inputcache
2130 --Made Logger a mixin class, simplifies handling of switches
2137 --Made Logger a mixin class, simplifies handling of switches
2131 --Added own completer class. .string<TAB> expands to last history
2138 --Added own completer class. .string<TAB> expands to last history
2132 line which starts with string. The new expansion is also present
2139 line which starts with string. The new expansion is also present
2133 with Ctrl-r from the readline library. But this shows, who this
2140 with Ctrl-r from the readline library. But this shows, who this
2134 can be done for other cases.
2141 can be done for other cases.
2135 --Added convention that all shell functions should accept a
2142 --Added convention that all shell functions should accept a
2136 parameter_string This opens the door for different behaviour for
2143 parameter_string This opens the door for different behaviour for
2137 each function. @cd is a good example of this.
2144 each function. @cd is a good example of this.
2138
2145
2139 04.05.99 12:12 porto.ifm.uni-kiel.de
2146 04.05.99 12:12 porto.ifm.uni-kiel.de
2140 --added logfile rotation
2147 --added logfile rotation
2141 --added new mainloop method which freezes first the namespace
2148 --added new mainloop method which freezes first the namespace
2142
2149
2143 07.05.99 21:24 porto.ifm.uni-kiel.de
2150 07.05.99 21:24 porto.ifm.uni-kiel.de
2144 --added the docreader classes. Now there is a help system.
2151 --added the docreader classes. Now there is a help system.
2145 -This is only a first try. Currently it's not easy to put new
2152 -This is only a first try. Currently it's not easy to put new
2146 stuff in the indices. But this is the way to go. Info would be
2153 stuff in the indices. But this is the way to go. Info would be
2147 better, but HTML is every where and not everybody has an info
2154 better, but HTML is every where and not everybody has an info
2148 system installed and it's not so easy to change html-docs to info.
2155 system installed and it's not so easy to change html-docs to info.
2149 --added global logfile option
2156 --added global logfile option
2150 --there is now a hook for object inspection method pinfo needs to
2157 --there is now a hook for object inspection method pinfo needs to
2151 be provided for this. Can be reached by two '??'.
2158 be provided for this. Can be reached by two '??'.
2152
2159
2153 08.05.99 20:51 porto.ifm.uni-kiel.de
2160 08.05.99 20:51 porto.ifm.uni-kiel.de
2154 --added a README
2161 --added a README
2155 --bug in rc file. Something has changed so functions in the rc
2162 --bug in rc file. Something has changed so functions in the rc
2156 file need to reference the shell and not self. Not clear if it's a
2163 file need to reference the shell and not self. Not clear if it's a
2157 bug or feature.
2164 bug or feature.
2158 --changed rc file for new behavior
2165 --changed rc file for new behavior
2159
2166
2160 2004-07-15 Fernando Perez <fperez@colorado.edu>
2167 2004-07-15 Fernando Perez <fperez@colorado.edu>
2161
2168
2162 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2169 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2163 cache was falling out of sync in bizarre manners when multi-line
2170 cache was falling out of sync in bizarre manners when multi-line
2164 input was present. Minor optimizations and cleanup.
2171 input was present. Minor optimizations and cleanup.
2165
2172
2166 (Logger): Remove old Changelog info for cleanup. This is the
2173 (Logger): Remove old Changelog info for cleanup. This is the
2167 information which was there from Janko's original code:
2174 information which was there from Janko's original code:
2168
2175
2169 Changes to Logger: - made the default log filename a parameter
2176 Changes to Logger: - made the default log filename a parameter
2170
2177
2171 - put a check for lines beginning with !@? in log(). Needed
2178 - put a check for lines beginning with !@? in log(). Needed
2172 (even if the handlers properly log their lines) for mid-session
2179 (even if the handlers properly log their lines) for mid-session
2173 logging activation to work properly. Without this, lines logged
2180 logging activation to work properly. Without this, lines logged
2174 in mid session, which get read from the cache, would end up
2181 in mid session, which get read from the cache, would end up
2175 'bare' (with !@? in the open) in the log. Now they are caught
2182 'bare' (with !@? in the open) in the log. Now they are caught
2176 and prepended with a #.
2183 and prepended with a #.
2177
2184
2178 * IPython/iplib.py (InteractiveShell.init_readline): added check
2185 * IPython/iplib.py (InteractiveShell.init_readline): added check
2179 in case MagicCompleter fails to be defined, so we don't crash.
2186 in case MagicCompleter fails to be defined, so we don't crash.
2180
2187
2181 2004-07-13 Fernando Perez <fperez@colorado.edu>
2188 2004-07-13 Fernando Perez <fperez@colorado.edu>
2182
2189
2183 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2190 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2184 of EPS if the requested filename ends in '.eps'.
2191 of EPS if the requested filename ends in '.eps'.
2185
2192
2186 2004-07-04 Fernando Perez <fperez@colorado.edu>
2193 2004-07-04 Fernando Perez <fperez@colorado.edu>
2187
2194
2188 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2195 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2189 escaping of quotes when calling the shell.
2196 escaping of quotes when calling the shell.
2190
2197
2191 2004-07-02 Fernando Perez <fperez@colorado.edu>
2198 2004-07-02 Fernando Perez <fperez@colorado.edu>
2192
2199
2193 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2200 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2194 gettext not working because we were clobbering '_'. Fixes
2201 gettext not working because we were clobbering '_'. Fixes
2195 http://www.scipy.net/roundup/ipython/issue6.
2202 http://www.scipy.net/roundup/ipython/issue6.
2196
2203
2197 2004-07-01 Fernando Perez <fperez@colorado.edu>
2204 2004-07-01 Fernando Perez <fperez@colorado.edu>
2198
2205
2199 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2206 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2200 into @cd. Patch by Ville.
2207 into @cd. Patch by Ville.
2201
2208
2202 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2209 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2203 new function to store things after ipmaker runs. Patch by Ville.
2210 new function to store things after ipmaker runs. Patch by Ville.
2204 Eventually this will go away once ipmaker is removed and the class
2211 Eventually this will go away once ipmaker is removed and the class
2205 gets cleaned up, but for now it's ok. Key functionality here is
2212 gets cleaned up, but for now it's ok. Key functionality here is
2206 the addition of the persistent storage mechanism, a dict for
2213 the addition of the persistent storage mechanism, a dict for
2207 keeping data across sessions (for now just bookmarks, but more can
2214 keeping data across sessions (for now just bookmarks, but more can
2208 be implemented later).
2215 be implemented later).
2209
2216
2210 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2217 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2211 persistent across sections. Patch by Ville, I modified it
2218 persistent across sections. Patch by Ville, I modified it
2212 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2219 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2213 added a '-l' option to list all bookmarks.
2220 added a '-l' option to list all bookmarks.
2214
2221
2215 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2222 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2216 center for cleanup. Registered with atexit.register(). I moved
2223 center for cleanup. Registered with atexit.register(). I moved
2217 here the old exit_cleanup(). After a patch by Ville.
2224 here the old exit_cleanup(). After a patch by Ville.
2218
2225
2219 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2226 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2220 characters in the hacked shlex_split for python 2.2.
2227 characters in the hacked shlex_split for python 2.2.
2221
2228
2222 * IPython/iplib.py (file_matches): more fixes to filenames with
2229 * IPython/iplib.py (file_matches): more fixes to filenames with
2223 whitespace in them. It's not perfect, but limitations in python's
2230 whitespace in them. It's not perfect, but limitations in python's
2224 readline make it impossible to go further.
2231 readline make it impossible to go further.
2225
2232
2226 2004-06-29 Fernando Perez <fperez@colorado.edu>
2233 2004-06-29 Fernando Perez <fperez@colorado.edu>
2227
2234
2228 * IPython/iplib.py (file_matches): escape whitespace correctly in
2235 * IPython/iplib.py (file_matches): escape whitespace correctly in
2229 filename completions. Bug reported by Ville.
2236 filename completions. Bug reported by Ville.
2230
2237
2231 2004-06-28 Fernando Perez <fperez@colorado.edu>
2238 2004-06-28 Fernando Perez <fperez@colorado.edu>
2232
2239
2233 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2240 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2234 the history file will be called 'history-PROFNAME' (or just
2241 the history file will be called 'history-PROFNAME' (or just
2235 'history' if no profile is loaded). I was getting annoyed at
2242 'history' if no profile is loaded). I was getting annoyed at
2236 getting my Numerical work history clobbered by pysh sessions.
2243 getting my Numerical work history clobbered by pysh sessions.
2237
2244
2238 * IPython/iplib.py (InteractiveShell.__init__): Internal
2245 * IPython/iplib.py (InteractiveShell.__init__): Internal
2239 getoutputerror() function so that we can honor the system_verbose
2246 getoutputerror() function so that we can honor the system_verbose
2240 flag for _all_ system calls. I also added escaping of #
2247 flag for _all_ system calls. I also added escaping of #
2241 characters here to avoid confusing Itpl.
2248 characters here to avoid confusing Itpl.
2242
2249
2243 * IPython/Magic.py (shlex_split): removed call to shell in
2250 * IPython/Magic.py (shlex_split): removed call to shell in
2244 parse_options and replaced it with shlex.split(). The annoying
2251 parse_options and replaced it with shlex.split(). The annoying
2245 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2252 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2246 to backport it from 2.3, with several frail hacks (the shlex
2253 to backport it from 2.3, with several frail hacks (the shlex
2247 module is rather limited in 2.2). Thanks to a suggestion by Ville
2254 module is rather limited in 2.2). Thanks to a suggestion by Ville
2248 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2255 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2249 problem.
2256 problem.
2250
2257
2251 (Magic.magic_system_verbose): new toggle to print the actual
2258 (Magic.magic_system_verbose): new toggle to print the actual
2252 system calls made by ipython. Mainly for debugging purposes.
2259 system calls made by ipython. Mainly for debugging purposes.
2253
2260
2254 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2261 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2255 doesn't support persistence. Reported (and fix suggested) by
2262 doesn't support persistence. Reported (and fix suggested) by
2256 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2263 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2257
2264
2258 2004-06-26 Fernando Perez <fperez@colorado.edu>
2265 2004-06-26 Fernando Perez <fperez@colorado.edu>
2259
2266
2260 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2267 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2261 continue prompts.
2268 continue prompts.
2262
2269
2263 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2270 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2264 function (basically a big docstring) and a few more things here to
2271 function (basically a big docstring) and a few more things here to
2265 speedup startup. pysh.py is now very lightweight. We want because
2272 speedup startup. pysh.py is now very lightweight. We want because
2266 it gets execfile'd, while InterpreterExec gets imported, so
2273 it gets execfile'd, while InterpreterExec gets imported, so
2267 byte-compilation saves time.
2274 byte-compilation saves time.
2268
2275
2269 2004-06-25 Fernando Perez <fperez@colorado.edu>
2276 2004-06-25 Fernando Perez <fperez@colorado.edu>
2270
2277
2271 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2278 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2272 -NUM', which was recently broken.
2279 -NUM', which was recently broken.
2273
2280
2274 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2281 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2275 in multi-line input (but not !!, which doesn't make sense there).
2282 in multi-line input (but not !!, which doesn't make sense there).
2276
2283
2277 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2284 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2278 It's just too useful, and people can turn it off in the less
2285 It's just too useful, and people can turn it off in the less
2279 common cases where it's a problem.
2286 common cases where it's a problem.
2280
2287
2281 2004-06-24 Fernando Perez <fperez@colorado.edu>
2288 2004-06-24 Fernando Perez <fperez@colorado.edu>
2282
2289
2283 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2290 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2284 special syntaxes (like alias calling) is now allied in multi-line
2291 special syntaxes (like alias calling) is now allied in multi-line
2285 input. This is still _very_ experimental, but it's necessary for
2292 input. This is still _very_ experimental, but it's necessary for
2286 efficient shell usage combining python looping syntax with system
2293 efficient shell usage combining python looping syntax with system
2287 calls. For now it's restricted to aliases, I don't think it
2294 calls. For now it's restricted to aliases, I don't think it
2288 really even makes sense to have this for magics.
2295 really even makes sense to have this for magics.
2289
2296
2290 2004-06-23 Fernando Perez <fperez@colorado.edu>
2297 2004-06-23 Fernando Perez <fperez@colorado.edu>
2291
2298
2292 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2299 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2293 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2300 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2294
2301
2295 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2302 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2296 extensions under Windows (after code sent by Gary Bishop). The
2303 extensions under Windows (after code sent by Gary Bishop). The
2297 extensions considered 'executable' are stored in IPython's rc
2304 extensions considered 'executable' are stored in IPython's rc
2298 structure as win_exec_ext.
2305 structure as win_exec_ext.
2299
2306
2300 * IPython/genutils.py (shell): new function, like system() but
2307 * IPython/genutils.py (shell): new function, like system() but
2301 without return value. Very useful for interactive shell work.
2308 without return value. Very useful for interactive shell work.
2302
2309
2303 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2310 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2304 delete aliases.
2311 delete aliases.
2305
2312
2306 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2313 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2307 sure that the alias table doesn't contain python keywords.
2314 sure that the alias table doesn't contain python keywords.
2308
2315
2309 2004-06-21 Fernando Perez <fperez@colorado.edu>
2316 2004-06-21 Fernando Perez <fperez@colorado.edu>
2310
2317
2311 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2318 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2312 non-existent items are found in $PATH. Reported by Thorsten.
2319 non-existent items are found in $PATH. Reported by Thorsten.
2313
2320
2314 2004-06-20 Fernando Perez <fperez@colorado.edu>
2321 2004-06-20 Fernando Perez <fperez@colorado.edu>
2315
2322
2316 * IPython/iplib.py (complete): modified the completer so that the
2323 * IPython/iplib.py (complete): modified the completer so that the
2317 order of priorities can be easily changed at runtime.
2324 order of priorities can be easily changed at runtime.
2318
2325
2319 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2326 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2320 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2327 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2321
2328
2322 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2329 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2323 expand Python variables prepended with $ in all system calls. The
2330 expand Python variables prepended with $ in all system calls. The
2324 same was done to InteractiveShell.handle_shell_escape. Now all
2331 same was done to InteractiveShell.handle_shell_escape. Now all
2325 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2332 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2326 expansion of python variables and expressions according to the
2333 expansion of python variables and expressions according to the
2327 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2334 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2328
2335
2329 Though PEP-215 has been rejected, a similar (but simpler) one
2336 Though PEP-215 has been rejected, a similar (but simpler) one
2330 seems like it will go into Python 2.4, PEP-292 -
2337 seems like it will go into Python 2.4, PEP-292 -
2331 http://www.python.org/peps/pep-0292.html.
2338 http://www.python.org/peps/pep-0292.html.
2332
2339
2333 I'll keep the full syntax of PEP-215, since IPython has since the
2340 I'll keep the full syntax of PEP-215, since IPython has since the
2334 start used Ka-Ping Yee's reference implementation discussed there
2341 start used Ka-Ping Yee's reference implementation discussed there
2335 (Itpl), and I actually like the powerful semantics it offers.
2342 (Itpl), and I actually like the powerful semantics it offers.
2336
2343
2337 In order to access normal shell variables, the $ has to be escaped
2344 In order to access normal shell variables, the $ has to be escaped
2338 via an extra $. For example:
2345 via an extra $. For example:
2339
2346
2340 In [7]: PATH='a python variable'
2347 In [7]: PATH='a python variable'
2341
2348
2342 In [8]: !echo $PATH
2349 In [8]: !echo $PATH
2343 a python variable
2350 a python variable
2344
2351
2345 In [9]: !echo $$PATH
2352 In [9]: !echo $$PATH
2346 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2353 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2347
2354
2348 (Magic.parse_options): escape $ so the shell doesn't evaluate
2355 (Magic.parse_options): escape $ so the shell doesn't evaluate
2349 things prematurely.
2356 things prematurely.
2350
2357
2351 * IPython/iplib.py (InteractiveShell.call_alias): added the
2358 * IPython/iplib.py (InteractiveShell.call_alias): added the
2352 ability for aliases to expand python variables via $.
2359 ability for aliases to expand python variables via $.
2353
2360
2354 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2361 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2355 system, now there's a @rehash/@rehashx pair of magics. These work
2362 system, now there's a @rehash/@rehashx pair of magics. These work
2356 like the csh rehash command, and can be invoked at any time. They
2363 like the csh rehash command, and can be invoked at any time. They
2357 build a table of aliases to everything in the user's $PATH
2364 build a table of aliases to everything in the user's $PATH
2358 (@rehash uses everything, @rehashx is slower but only adds
2365 (@rehash uses everything, @rehashx is slower but only adds
2359 executable files). With this, the pysh.py-based shell profile can
2366 executable files). With this, the pysh.py-based shell profile can
2360 now simply call rehash upon startup, and full access to all
2367 now simply call rehash upon startup, and full access to all
2361 programs in the user's path is obtained.
2368 programs in the user's path is obtained.
2362
2369
2363 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2370 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2364 functionality is now fully in place. I removed the old dynamic
2371 functionality is now fully in place. I removed the old dynamic
2365 code generation based approach, in favor of a much lighter one
2372 code generation based approach, in favor of a much lighter one
2366 based on a simple dict. The advantage is that this allows me to
2373 based on a simple dict. The advantage is that this allows me to
2367 now have thousands of aliases with negligible cost (unthinkable
2374 now have thousands of aliases with negligible cost (unthinkable
2368 with the old system).
2375 with the old system).
2369
2376
2370 2004-06-19 Fernando Perez <fperez@colorado.edu>
2377 2004-06-19 Fernando Perez <fperez@colorado.edu>
2371
2378
2372 * IPython/iplib.py (__init__): extended MagicCompleter class to
2379 * IPython/iplib.py (__init__): extended MagicCompleter class to
2373 also complete (last in priority) on user aliases.
2380 also complete (last in priority) on user aliases.
2374
2381
2375 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2382 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2376 call to eval.
2383 call to eval.
2377 (ItplNS.__init__): Added a new class which functions like Itpl,
2384 (ItplNS.__init__): Added a new class which functions like Itpl,
2378 but allows configuring the namespace for the evaluation to occur
2385 but allows configuring the namespace for the evaluation to occur
2379 in.
2386 in.
2380
2387
2381 2004-06-18 Fernando Perez <fperez@colorado.edu>
2388 2004-06-18 Fernando Perez <fperez@colorado.edu>
2382
2389
2383 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2390 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2384 better message when 'exit' or 'quit' are typed (a common newbie
2391 better message when 'exit' or 'quit' are typed (a common newbie
2385 confusion).
2392 confusion).
2386
2393
2387 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2394 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2388 check for Windows users.
2395 check for Windows users.
2389
2396
2390 * IPython/iplib.py (InteractiveShell.user_setup): removed
2397 * IPython/iplib.py (InteractiveShell.user_setup): removed
2391 disabling of colors for Windows. I'll test at runtime and issue a
2398 disabling of colors for Windows. I'll test at runtime and issue a
2392 warning if Gary's readline isn't found, as to nudge users to
2399 warning if Gary's readline isn't found, as to nudge users to
2393 download it.
2400 download it.
2394
2401
2395 2004-06-16 Fernando Perez <fperez@colorado.edu>
2402 2004-06-16 Fernando Perez <fperez@colorado.edu>
2396
2403
2397 * IPython/genutils.py (Stream.__init__): changed to print errors
2404 * IPython/genutils.py (Stream.__init__): changed to print errors
2398 to sys.stderr. I had a circular dependency here. Now it's
2405 to sys.stderr. I had a circular dependency here. Now it's
2399 possible to run ipython as IDLE's shell (consider this pre-alpha,
2406 possible to run ipython as IDLE's shell (consider this pre-alpha,
2400 since true stdout things end up in the starting terminal instead
2407 since true stdout things end up in the starting terminal instead
2401 of IDLE's out).
2408 of IDLE's out).
2402
2409
2403 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2410 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2404 users who haven't # updated their prompt_in2 definitions. Remove
2411 users who haven't # updated their prompt_in2 definitions. Remove
2405 eventually.
2412 eventually.
2406 (multiple_replace): added credit to original ASPN recipe.
2413 (multiple_replace): added credit to original ASPN recipe.
2407
2414
2408 2004-06-15 Fernando Perez <fperez@colorado.edu>
2415 2004-06-15 Fernando Perez <fperez@colorado.edu>
2409
2416
2410 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2417 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2411 list of auto-defined aliases.
2418 list of auto-defined aliases.
2412
2419
2413 2004-06-13 Fernando Perez <fperez@colorado.edu>
2420 2004-06-13 Fernando Perez <fperez@colorado.edu>
2414
2421
2415 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2422 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2416 install was really requested (so setup.py can be used for other
2423 install was really requested (so setup.py can be used for other
2417 things under Windows).
2424 things under Windows).
2418
2425
2419 2004-06-10 Fernando Perez <fperez@colorado.edu>
2426 2004-06-10 Fernando Perez <fperez@colorado.edu>
2420
2427
2421 * IPython/Logger.py (Logger.create_log): Manually remove any old
2428 * IPython/Logger.py (Logger.create_log): Manually remove any old
2422 backup, since os.remove may fail under Windows. Fixes bug
2429 backup, since os.remove may fail under Windows. Fixes bug
2423 reported by Thorsten.
2430 reported by Thorsten.
2424
2431
2425 2004-06-09 Fernando Perez <fperez@colorado.edu>
2432 2004-06-09 Fernando Perez <fperez@colorado.edu>
2426
2433
2427 * examples/example-embed.py: fixed all references to %n (replaced
2434 * examples/example-embed.py: fixed all references to %n (replaced
2428 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2435 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2429 for all examples and the manual as well.
2436 for all examples and the manual as well.
2430
2437
2431 2004-06-08 Fernando Perez <fperez@colorado.edu>
2438 2004-06-08 Fernando Perez <fperez@colorado.edu>
2432
2439
2433 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2440 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2434 alignment and color management. All 3 prompt subsystems now
2441 alignment and color management. All 3 prompt subsystems now
2435 inherit from BasePrompt.
2442 inherit from BasePrompt.
2436
2443
2437 * tools/release: updates for windows installer build and tag rpms
2444 * tools/release: updates for windows installer build and tag rpms
2438 with python version (since paths are fixed).
2445 with python version (since paths are fixed).
2439
2446
2440 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2447 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2441 which will become eventually obsolete. Also fixed the default
2448 which will become eventually obsolete. Also fixed the default
2442 prompt_in2 to use \D, so at least new users start with the correct
2449 prompt_in2 to use \D, so at least new users start with the correct
2443 defaults.
2450 defaults.
2444 WARNING: Users with existing ipythonrc files will need to apply
2451 WARNING: Users with existing ipythonrc files will need to apply
2445 this fix manually!
2452 this fix manually!
2446
2453
2447 * setup.py: make windows installer (.exe). This is finally the
2454 * setup.py: make windows installer (.exe). This is finally the
2448 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2455 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2449 which I hadn't included because it required Python 2.3 (or recent
2456 which I hadn't included because it required Python 2.3 (or recent
2450 distutils).
2457 distutils).
2451
2458
2452 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2459 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2453 usage of new '\D' escape.
2460 usage of new '\D' escape.
2454
2461
2455 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2462 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2456 lacks os.getuid())
2463 lacks os.getuid())
2457 (CachedOutput.set_colors): Added the ability to turn coloring
2464 (CachedOutput.set_colors): Added the ability to turn coloring
2458 on/off with @colors even for manually defined prompt colors. It
2465 on/off with @colors even for manually defined prompt colors. It
2459 uses a nasty global, but it works safely and via the generic color
2466 uses a nasty global, but it works safely and via the generic color
2460 handling mechanism.
2467 handling mechanism.
2461 (Prompt2.__init__): Introduced new escape '\D' for continuation
2468 (Prompt2.__init__): Introduced new escape '\D' for continuation
2462 prompts. It represents the counter ('\#') as dots.
2469 prompts. It represents the counter ('\#') as dots.
2463 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2470 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2464 need to update their ipythonrc files and replace '%n' with '\D' in
2471 need to update their ipythonrc files and replace '%n' with '\D' in
2465 their prompt_in2 settings everywhere. Sorry, but there's
2472 their prompt_in2 settings everywhere. Sorry, but there's
2466 otherwise no clean way to get all prompts to properly align. The
2473 otherwise no clean way to get all prompts to properly align. The
2467 ipythonrc shipped with IPython has been updated.
2474 ipythonrc shipped with IPython has been updated.
2468
2475
2469 2004-06-07 Fernando Perez <fperez@colorado.edu>
2476 2004-06-07 Fernando Perez <fperez@colorado.edu>
2470
2477
2471 * setup.py (isfile): Pass local_icons option to latex2html, so the
2478 * setup.py (isfile): Pass local_icons option to latex2html, so the
2472 resulting HTML file is self-contained. Thanks to
2479 resulting HTML file is self-contained. Thanks to
2473 dryice-AT-liu.com.cn for the tip.
2480 dryice-AT-liu.com.cn for the tip.
2474
2481
2475 * pysh.py: I created a new profile 'shell', which implements a
2482 * pysh.py: I created a new profile 'shell', which implements a
2476 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2483 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2477 system shell, nor will it become one anytime soon. It's mainly
2484 system shell, nor will it become one anytime soon. It's mainly
2478 meant to illustrate the use of the new flexible bash-like prompts.
2485 meant to illustrate the use of the new flexible bash-like prompts.
2479 I guess it could be used by hardy souls for true shell management,
2486 I guess it could be used by hardy souls for true shell management,
2480 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2487 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2481 profile. This uses the InterpreterExec extension provided by
2488 profile. This uses the InterpreterExec extension provided by
2482 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2489 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2483
2490
2484 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2491 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2485 auto-align itself with the length of the previous input prompt
2492 auto-align itself with the length of the previous input prompt
2486 (taking into account the invisible color escapes).
2493 (taking into account the invisible color escapes).
2487 (CachedOutput.__init__): Large restructuring of this class. Now
2494 (CachedOutput.__init__): Large restructuring of this class. Now
2488 all three prompts (primary1, primary2, output) are proper objects,
2495 all three prompts (primary1, primary2, output) are proper objects,
2489 managed by the 'parent' CachedOutput class. The code is still a
2496 managed by the 'parent' CachedOutput class. The code is still a
2490 bit hackish (all prompts share state via a pointer to the cache),
2497 bit hackish (all prompts share state via a pointer to the cache),
2491 but it's overall far cleaner than before.
2498 but it's overall far cleaner than before.
2492
2499
2493 * IPython/genutils.py (getoutputerror): modified to add verbose,
2500 * IPython/genutils.py (getoutputerror): modified to add verbose,
2494 debug and header options. This makes the interface of all getout*
2501 debug and header options. This makes the interface of all getout*
2495 functions uniform.
2502 functions uniform.
2496 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2503 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2497
2504
2498 * IPython/Magic.py (Magic.default_option): added a function to
2505 * IPython/Magic.py (Magic.default_option): added a function to
2499 allow registering default options for any magic command. This
2506 allow registering default options for any magic command. This
2500 makes it easy to have profiles which customize the magics globally
2507 makes it easy to have profiles which customize the magics globally
2501 for a certain use. The values set through this function are
2508 for a certain use. The values set through this function are
2502 picked up by the parse_options() method, which all magics should
2509 picked up by the parse_options() method, which all magics should
2503 use to parse their options.
2510 use to parse their options.
2504
2511
2505 * IPython/genutils.py (warn): modified the warnings framework to
2512 * IPython/genutils.py (warn): modified the warnings framework to
2506 use the Term I/O class. I'm trying to slowly unify all of
2513 use the Term I/O class. I'm trying to slowly unify all of
2507 IPython's I/O operations to pass through Term.
2514 IPython's I/O operations to pass through Term.
2508
2515
2509 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2516 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2510 the secondary prompt to correctly match the length of the primary
2517 the secondary prompt to correctly match the length of the primary
2511 one for any prompt. Now multi-line code will properly line up
2518 one for any prompt. Now multi-line code will properly line up
2512 even for path dependent prompts, such as the new ones available
2519 even for path dependent prompts, such as the new ones available
2513 via the prompt_specials.
2520 via the prompt_specials.
2514
2521
2515 2004-06-06 Fernando Perez <fperez@colorado.edu>
2522 2004-06-06 Fernando Perez <fperez@colorado.edu>
2516
2523
2517 * IPython/Prompts.py (prompt_specials): Added the ability to have
2524 * IPython/Prompts.py (prompt_specials): Added the ability to have
2518 bash-like special sequences in the prompts, which get
2525 bash-like special sequences in the prompts, which get
2519 automatically expanded. Things like hostname, current working
2526 automatically expanded. Things like hostname, current working
2520 directory and username are implemented already, but it's easy to
2527 directory and username are implemented already, but it's easy to
2521 add more in the future. Thanks to a patch by W.J. van der Laan
2528 add more in the future. Thanks to a patch by W.J. van der Laan
2522 <gnufnork-AT-hetdigitalegat.nl>
2529 <gnufnork-AT-hetdigitalegat.nl>
2523 (prompt_specials): Added color support for prompt strings, so
2530 (prompt_specials): Added color support for prompt strings, so
2524 users can define arbitrary color setups for their prompts.
2531 users can define arbitrary color setups for their prompts.
2525
2532
2526 2004-06-05 Fernando Perez <fperez@colorado.edu>
2533 2004-06-05 Fernando Perez <fperez@colorado.edu>
2527
2534
2528 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2535 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2529 code to load Gary Bishop's readline and configure it
2536 code to load Gary Bishop's readline and configure it
2530 automatically. Thanks to Gary for help on this.
2537 automatically. Thanks to Gary for help on this.
2531
2538
2532 2004-06-01 Fernando Perez <fperez@colorado.edu>
2539 2004-06-01 Fernando Perez <fperez@colorado.edu>
2533
2540
2534 * IPython/Logger.py (Logger.create_log): fix bug for logging
2541 * IPython/Logger.py (Logger.create_log): fix bug for logging
2535 with no filename (previous fix was incomplete).
2542 with no filename (previous fix was incomplete).
2536
2543
2537 2004-05-25 Fernando Perez <fperez@colorado.edu>
2544 2004-05-25 Fernando Perez <fperez@colorado.edu>
2538
2545
2539 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2546 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2540 parens would get passed to the shell.
2547 parens would get passed to the shell.
2541
2548
2542 2004-05-20 Fernando Perez <fperez@colorado.edu>
2549 2004-05-20 Fernando Perez <fperez@colorado.edu>
2543
2550
2544 * IPython/Magic.py (Magic.magic_prun): changed default profile
2551 * IPython/Magic.py (Magic.magic_prun): changed default profile
2545 sort order to 'time' (the more common profiling need).
2552 sort order to 'time' (the more common profiling need).
2546
2553
2547 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2554 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2548 so that source code shown is guaranteed in sync with the file on
2555 so that source code shown is guaranteed in sync with the file on
2549 disk (also changed in psource). Similar fix to the one for
2556 disk (also changed in psource). Similar fix to the one for
2550 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2557 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2551 <yann.ledu-AT-noos.fr>.
2558 <yann.ledu-AT-noos.fr>.
2552
2559
2553 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2560 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2554 with a single option would not be correctly parsed. Closes
2561 with a single option would not be correctly parsed. Closes
2555 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2562 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2556 introduced in 0.6.0 (on 2004-05-06).
2563 introduced in 0.6.0 (on 2004-05-06).
2557
2564
2558 2004-05-13 *** Released version 0.6.0
2565 2004-05-13 *** Released version 0.6.0
2559
2566
2560 2004-05-13 Fernando Perez <fperez@colorado.edu>
2567 2004-05-13 Fernando Perez <fperez@colorado.edu>
2561
2568
2562 * debian/: Added debian/ directory to CVS, so that debian support
2569 * debian/: Added debian/ directory to CVS, so that debian support
2563 is publicly accessible. The debian package is maintained by Jack
2570 is publicly accessible. The debian package is maintained by Jack
2564 Moffit <jack-AT-xiph.org>.
2571 Moffit <jack-AT-xiph.org>.
2565
2572
2566 * Documentation: included the notes about an ipython-based system
2573 * Documentation: included the notes about an ipython-based system
2567 shell (the hypothetical 'pysh') into the new_design.pdf document,
2574 shell (the hypothetical 'pysh') into the new_design.pdf document,
2568 so that these ideas get distributed to users along with the
2575 so that these ideas get distributed to users along with the
2569 official documentation.
2576 official documentation.
2570
2577
2571 2004-05-10 Fernando Perez <fperez@colorado.edu>
2578 2004-05-10 Fernando Perez <fperez@colorado.edu>
2572
2579
2573 * IPython/Logger.py (Logger.create_log): fix recently introduced
2580 * IPython/Logger.py (Logger.create_log): fix recently introduced
2574 bug (misindented line) where logstart would fail when not given an
2581 bug (misindented line) where logstart would fail when not given an
2575 explicit filename.
2582 explicit filename.
2576
2583
2577 2004-05-09 Fernando Perez <fperez@colorado.edu>
2584 2004-05-09 Fernando Perez <fperez@colorado.edu>
2578
2585
2579 * IPython/Magic.py (Magic.parse_options): skip system call when
2586 * IPython/Magic.py (Magic.parse_options): skip system call when
2580 there are no options to look for. Faster, cleaner for the common
2587 there are no options to look for. Faster, cleaner for the common
2581 case.
2588 case.
2582
2589
2583 * Documentation: many updates to the manual: describing Windows
2590 * Documentation: many updates to the manual: describing Windows
2584 support better, Gnuplot updates, credits, misc small stuff. Also
2591 support better, Gnuplot updates, credits, misc small stuff. Also
2585 updated the new_design doc a bit.
2592 updated the new_design doc a bit.
2586
2593
2587 2004-05-06 *** Released version 0.6.0.rc1
2594 2004-05-06 *** Released version 0.6.0.rc1
2588
2595
2589 2004-05-06 Fernando Perez <fperez@colorado.edu>
2596 2004-05-06 Fernando Perez <fperez@colorado.edu>
2590
2597
2591 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2598 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2592 operations to use the vastly more efficient list/''.join() method.
2599 operations to use the vastly more efficient list/''.join() method.
2593 (FormattedTB.text): Fix
2600 (FormattedTB.text): Fix
2594 http://www.scipy.net/roundup/ipython/issue12 - exception source
2601 http://www.scipy.net/roundup/ipython/issue12 - exception source
2595 extract not updated after reload. Thanks to Mike Salib
2602 extract not updated after reload. Thanks to Mike Salib
2596 <msalib-AT-mit.edu> for pinning the source of the problem.
2603 <msalib-AT-mit.edu> for pinning the source of the problem.
2597 Fortunately, the solution works inside ipython and doesn't require
2604 Fortunately, the solution works inside ipython and doesn't require
2598 any changes to python proper.
2605 any changes to python proper.
2599
2606
2600 * IPython/Magic.py (Magic.parse_options): Improved to process the
2607 * IPython/Magic.py (Magic.parse_options): Improved to process the
2601 argument list as a true shell would (by actually using the
2608 argument list as a true shell would (by actually using the
2602 underlying system shell). This way, all @magics automatically get
2609 underlying system shell). This way, all @magics automatically get
2603 shell expansion for variables. Thanks to a comment by Alex
2610 shell expansion for variables. Thanks to a comment by Alex
2604 Schmolck.
2611 Schmolck.
2605
2612
2606 2004-04-04 Fernando Perez <fperez@colorado.edu>
2613 2004-04-04 Fernando Perez <fperez@colorado.edu>
2607
2614
2608 * IPython/iplib.py (InteractiveShell.interact): Added a special
2615 * IPython/iplib.py (InteractiveShell.interact): Added a special
2609 trap for a debugger quit exception, which is basically impossible
2616 trap for a debugger quit exception, which is basically impossible
2610 to handle by normal mechanisms, given what pdb does to the stack.
2617 to handle by normal mechanisms, given what pdb does to the stack.
2611 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2618 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2612
2619
2613 2004-04-03 Fernando Perez <fperez@colorado.edu>
2620 2004-04-03 Fernando Perez <fperez@colorado.edu>
2614
2621
2615 * IPython/genutils.py (Term): Standardized the names of the Term
2622 * IPython/genutils.py (Term): Standardized the names of the Term
2616 class streams to cin/cout/cerr, following C++ naming conventions
2623 class streams to cin/cout/cerr, following C++ naming conventions
2617 (I can't use in/out/err because 'in' is not a valid attribute
2624 (I can't use in/out/err because 'in' is not a valid attribute
2618 name).
2625 name).
2619
2626
2620 * IPython/iplib.py (InteractiveShell.interact): don't increment
2627 * IPython/iplib.py (InteractiveShell.interact): don't increment
2621 the prompt if there's no user input. By Daniel 'Dang' Griffith
2628 the prompt if there's no user input. By Daniel 'Dang' Griffith
2622 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2629 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2623 Francois Pinard.
2630 Francois Pinard.
2624
2631
2625 2004-04-02 Fernando Perez <fperez@colorado.edu>
2632 2004-04-02 Fernando Perez <fperez@colorado.edu>
2626
2633
2627 * IPython/genutils.py (Stream.__init__): Modified to survive at
2634 * IPython/genutils.py (Stream.__init__): Modified to survive at
2628 least importing in contexts where stdin/out/err aren't true file
2635 least importing in contexts where stdin/out/err aren't true file
2629 objects, such as PyCrust (they lack fileno() and mode). However,
2636 objects, such as PyCrust (they lack fileno() and mode). However,
2630 the recovery facilities which rely on these things existing will
2637 the recovery facilities which rely on these things existing will
2631 not work.
2638 not work.
2632
2639
2633 2004-04-01 Fernando Perez <fperez@colorado.edu>
2640 2004-04-01 Fernando Perez <fperez@colorado.edu>
2634
2641
2635 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2642 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2636 use the new getoutputerror() function, so it properly
2643 use the new getoutputerror() function, so it properly
2637 distinguishes stdout/err.
2644 distinguishes stdout/err.
2638
2645
2639 * IPython/genutils.py (getoutputerror): added a function to
2646 * IPython/genutils.py (getoutputerror): added a function to
2640 capture separately the standard output and error of a command.
2647 capture separately the standard output and error of a command.
2641 After a comment from dang on the mailing lists. This code is
2648 After a comment from dang on the mailing lists. This code is
2642 basically a modified version of commands.getstatusoutput(), from
2649 basically a modified version of commands.getstatusoutput(), from
2643 the standard library.
2650 the standard library.
2644
2651
2645 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2652 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2646 '!!' as a special syntax (shorthand) to access @sx.
2653 '!!' as a special syntax (shorthand) to access @sx.
2647
2654
2648 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2655 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2649 command and return its output as a list split on '\n'.
2656 command and return its output as a list split on '\n'.
2650
2657
2651 2004-03-31 Fernando Perez <fperez@colorado.edu>
2658 2004-03-31 Fernando Perez <fperez@colorado.edu>
2652
2659
2653 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2660 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2654 method to dictionaries used as FakeModule instances if they lack
2661 method to dictionaries used as FakeModule instances if they lack
2655 it. At least pydoc in python2.3 breaks for runtime-defined
2662 it. At least pydoc in python2.3 breaks for runtime-defined
2656 functions without this hack. At some point I need to _really_
2663 functions without this hack. At some point I need to _really_
2657 understand what FakeModule is doing, because it's a gross hack.
2664 understand what FakeModule is doing, because it's a gross hack.
2658 But it solves Arnd's problem for now...
2665 But it solves Arnd's problem for now...
2659
2666
2660 2004-02-27 Fernando Perez <fperez@colorado.edu>
2667 2004-02-27 Fernando Perez <fperez@colorado.edu>
2661
2668
2662 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2669 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2663 mode would behave erratically. Also increased the number of
2670 mode would behave erratically. Also increased the number of
2664 possible logs in rotate mod to 999. Thanks to Rod Holland
2671 possible logs in rotate mod to 999. Thanks to Rod Holland
2665 <rhh@StructureLABS.com> for the report and fixes.
2672 <rhh@StructureLABS.com> for the report and fixes.
2666
2673
2667 2004-02-26 Fernando Perez <fperez@colorado.edu>
2674 2004-02-26 Fernando Perez <fperez@colorado.edu>
2668
2675
2669 * IPython/genutils.py (page): Check that the curses module really
2676 * IPython/genutils.py (page): Check that the curses module really
2670 has the initscr attribute before trying to use it. For some
2677 has the initscr attribute before trying to use it. For some
2671 reason, the Solaris curses module is missing this. I think this
2678 reason, the Solaris curses module is missing this. I think this
2672 should be considered a Solaris python bug, but I'm not sure.
2679 should be considered a Solaris python bug, but I'm not sure.
2673
2680
2674 2004-01-17 Fernando Perez <fperez@colorado.edu>
2681 2004-01-17 Fernando Perez <fperez@colorado.edu>
2675
2682
2676 * IPython/genutils.py (Stream.__init__): Changes to try to make
2683 * IPython/genutils.py (Stream.__init__): Changes to try to make
2677 ipython robust against stdin/out/err being closed by the user.
2684 ipython robust against stdin/out/err being closed by the user.
2678 This is 'user error' (and blocks a normal python session, at least
2685 This is 'user error' (and blocks a normal python session, at least
2679 the stdout case). However, Ipython should be able to survive such
2686 the stdout case). However, Ipython should be able to survive such
2680 instances of abuse as gracefully as possible. To simplify the
2687 instances of abuse as gracefully as possible. To simplify the
2681 coding and maintain compatibility with Gary Bishop's Term
2688 coding and maintain compatibility with Gary Bishop's Term
2682 contributions, I've made use of classmethods for this. I think
2689 contributions, I've made use of classmethods for this. I think
2683 this introduces a dependency on python 2.2.
2690 this introduces a dependency on python 2.2.
2684
2691
2685 2004-01-13 Fernando Perez <fperez@colorado.edu>
2692 2004-01-13 Fernando Perez <fperez@colorado.edu>
2686
2693
2687 * IPython/numutils.py (exp_safe): simplified the code a bit and
2694 * IPython/numutils.py (exp_safe): simplified the code a bit and
2688 removed the need for importing the kinds module altogether.
2695 removed the need for importing the kinds module altogether.
2689
2696
2690 2004-01-06 Fernando Perez <fperez@colorado.edu>
2697 2004-01-06 Fernando Perez <fperez@colorado.edu>
2691
2698
2692 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2699 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2693 a magic function instead, after some community feedback. No
2700 a magic function instead, after some community feedback. No
2694 special syntax will exist for it, but its name is deliberately
2701 special syntax will exist for it, but its name is deliberately
2695 very short.
2702 very short.
2696
2703
2697 2003-12-20 Fernando Perez <fperez@colorado.edu>
2704 2003-12-20 Fernando Perez <fperez@colorado.edu>
2698
2705
2699 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2706 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2700 new functionality, to automagically assign the result of a shell
2707 new functionality, to automagically assign the result of a shell
2701 command to a variable. I'll solicit some community feedback on
2708 command to a variable. I'll solicit some community feedback on
2702 this before making it permanent.
2709 this before making it permanent.
2703
2710
2704 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2711 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2705 requested about callables for which inspect couldn't obtain a
2712 requested about callables for which inspect couldn't obtain a
2706 proper argspec. Thanks to a crash report sent by Etienne
2713 proper argspec. Thanks to a crash report sent by Etienne
2707 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2714 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2708
2715
2709 2003-12-09 Fernando Perez <fperez@colorado.edu>
2716 2003-12-09 Fernando Perez <fperez@colorado.edu>
2710
2717
2711 * IPython/genutils.py (page): patch for the pager to work across
2718 * IPython/genutils.py (page): patch for the pager to work across
2712 various versions of Windows. By Gary Bishop.
2719 various versions of Windows. By Gary Bishop.
2713
2720
2714 2003-12-04 Fernando Perez <fperez@colorado.edu>
2721 2003-12-04 Fernando Perez <fperez@colorado.edu>
2715
2722
2716 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2723 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2717 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2724 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2718 While I tested this and it looks ok, there may still be corner
2725 While I tested this and it looks ok, there may still be corner
2719 cases I've missed.
2726 cases I've missed.
2720
2727
2721 2003-12-01 Fernando Perez <fperez@colorado.edu>
2728 2003-12-01 Fernando Perez <fperez@colorado.edu>
2722
2729
2723 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2730 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2724 where a line like 'p,q=1,2' would fail because the automagic
2731 where a line like 'p,q=1,2' would fail because the automagic
2725 system would be triggered for @p.
2732 system would be triggered for @p.
2726
2733
2727 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2734 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2728 cleanups, code unmodified.
2735 cleanups, code unmodified.
2729
2736
2730 * IPython/genutils.py (Term): added a class for IPython to handle
2737 * IPython/genutils.py (Term): added a class for IPython to handle
2731 output. In most cases it will just be a proxy for stdout/err, but
2738 output. In most cases it will just be a proxy for stdout/err, but
2732 having this allows modifications to be made for some platforms,
2739 having this allows modifications to be made for some platforms,
2733 such as handling color escapes under Windows. All of this code
2740 such as handling color escapes under Windows. All of this code
2734 was contributed by Gary Bishop, with minor modifications by me.
2741 was contributed by Gary Bishop, with minor modifications by me.
2735 The actual changes affect many files.
2742 The actual changes affect many files.
2736
2743
2737 2003-11-30 Fernando Perez <fperez@colorado.edu>
2744 2003-11-30 Fernando Perez <fperez@colorado.edu>
2738
2745
2739 * IPython/iplib.py (file_matches): new completion code, courtesy
2746 * IPython/iplib.py (file_matches): new completion code, courtesy
2740 of Jeff Collins. This enables filename completion again under
2747 of Jeff Collins. This enables filename completion again under
2741 python 2.3, which disabled it at the C level.
2748 python 2.3, which disabled it at the C level.
2742
2749
2743 2003-11-11 Fernando Perez <fperez@colorado.edu>
2750 2003-11-11 Fernando Perez <fperez@colorado.edu>
2744
2751
2745 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2752 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2746 for Numeric.array(map(...)), but often convenient.
2753 for Numeric.array(map(...)), but often convenient.
2747
2754
2748 2003-11-05 Fernando Perez <fperez@colorado.edu>
2755 2003-11-05 Fernando Perez <fperez@colorado.edu>
2749
2756
2750 * IPython/numutils.py (frange): Changed a call from int() to
2757 * IPython/numutils.py (frange): Changed a call from int() to
2751 int(round()) to prevent a problem reported with arange() in the
2758 int(round()) to prevent a problem reported with arange() in the
2752 numpy list.
2759 numpy list.
2753
2760
2754 2003-10-06 Fernando Perez <fperez@colorado.edu>
2761 2003-10-06 Fernando Perez <fperez@colorado.edu>
2755
2762
2756 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2763 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2757 prevent crashes if sys lacks an argv attribute (it happens with
2764 prevent crashes if sys lacks an argv attribute (it happens with
2758 embedded interpreters which build a bare-bones sys module).
2765 embedded interpreters which build a bare-bones sys module).
2759 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2766 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2760
2767
2761 2003-09-24 Fernando Perez <fperez@colorado.edu>
2768 2003-09-24 Fernando Perez <fperez@colorado.edu>
2762
2769
2763 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2770 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2764 to protect against poorly written user objects where __getattr__
2771 to protect against poorly written user objects where __getattr__
2765 raises exceptions other than AttributeError. Thanks to a bug
2772 raises exceptions other than AttributeError. Thanks to a bug
2766 report by Oliver Sander <osander-AT-gmx.de>.
2773 report by Oliver Sander <osander-AT-gmx.de>.
2767
2774
2768 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2775 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2769 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2776 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2770
2777
2771 2003-09-09 Fernando Perez <fperez@colorado.edu>
2778 2003-09-09 Fernando Perez <fperez@colorado.edu>
2772
2779
2773 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2780 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2774 unpacking a list whith a callable as first element would
2781 unpacking a list whith a callable as first element would
2775 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2782 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2776 Collins.
2783 Collins.
2777
2784
2778 2003-08-25 *** Released version 0.5.0
2785 2003-08-25 *** Released version 0.5.0
2779
2786
2780 2003-08-22 Fernando Perez <fperez@colorado.edu>
2787 2003-08-22 Fernando Perez <fperez@colorado.edu>
2781
2788
2782 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2789 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2783 improperly defined user exceptions. Thanks to feedback from Mark
2790 improperly defined user exceptions. Thanks to feedback from Mark
2784 Russell <mrussell-AT-verio.net>.
2791 Russell <mrussell-AT-verio.net>.
2785
2792
2786 2003-08-20 Fernando Perez <fperez@colorado.edu>
2793 2003-08-20 Fernando Perez <fperez@colorado.edu>
2787
2794
2788 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2795 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2789 printing so that it would print multi-line string forms starting
2796 printing so that it would print multi-line string forms starting
2790 with a new line. This way the formatting is better respected for
2797 with a new line. This way the formatting is better respected for
2791 objects which work hard to make nice string forms.
2798 objects which work hard to make nice string forms.
2792
2799
2793 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2800 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2794 autocall would overtake data access for objects with both
2801 autocall would overtake data access for objects with both
2795 __getitem__ and __call__.
2802 __getitem__ and __call__.
2796
2803
2797 2003-08-19 *** Released version 0.5.0-rc1
2804 2003-08-19 *** Released version 0.5.0-rc1
2798
2805
2799 2003-08-19 Fernando Perez <fperez@colorado.edu>
2806 2003-08-19 Fernando Perez <fperez@colorado.edu>
2800
2807
2801 * IPython/deep_reload.py (load_tail): single tiny change here
2808 * IPython/deep_reload.py (load_tail): single tiny change here
2802 seems to fix the long-standing bug of dreload() failing to work
2809 seems to fix the long-standing bug of dreload() failing to work
2803 for dotted names. But this module is pretty tricky, so I may have
2810 for dotted names. But this module is pretty tricky, so I may have
2804 missed some subtlety. Needs more testing!.
2811 missed some subtlety. Needs more testing!.
2805
2812
2806 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
2813 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
2807 exceptions which have badly implemented __str__ methods.
2814 exceptions which have badly implemented __str__ methods.
2808 (VerboseTB.text): harden against inspect.getinnerframes crashing,
2815 (VerboseTB.text): harden against inspect.getinnerframes crashing,
2809 which I've been getting reports about from Python 2.3 users. I
2816 which I've been getting reports about from Python 2.3 users. I
2810 wish I had a simple test case to reproduce the problem, so I could
2817 wish I had a simple test case to reproduce the problem, so I could
2811 either write a cleaner workaround or file a bug report if
2818 either write a cleaner workaround or file a bug report if
2812 necessary.
2819 necessary.
2813
2820
2814 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
2821 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
2815 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
2822 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
2816 a bug report by Tjabo Kloppenburg.
2823 a bug report by Tjabo Kloppenburg.
2817
2824
2818 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
2825 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
2819 crashes. Wrapped the pdb call in a blanket try/except, since pdb
2826 crashes. Wrapped the pdb call in a blanket try/except, since pdb
2820 seems rather unstable. Thanks to a bug report by Tjabo
2827 seems rather unstable. Thanks to a bug report by Tjabo
2821 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
2828 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
2822
2829
2823 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
2830 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
2824 this out soon because of the critical fixes in the inner loop for
2831 this out soon because of the critical fixes in the inner loop for
2825 generators.
2832 generators.
2826
2833
2827 * IPython/Magic.py (Magic.getargspec): removed. This (and
2834 * IPython/Magic.py (Magic.getargspec): removed. This (and
2828 _get_def) have been obsoleted by OInspect for a long time, I
2835 _get_def) have been obsoleted by OInspect for a long time, I
2829 hadn't noticed that they were dead code.
2836 hadn't noticed that they were dead code.
2830 (Magic._ofind): restored _ofind functionality for a few literals
2837 (Magic._ofind): restored _ofind functionality for a few literals
2831 (those in ["''",'""','[]','{}','()']). But it won't work anymore
2838 (those in ["''",'""','[]','{}','()']). But it won't work anymore
2832 for things like "hello".capitalize?, since that would require a
2839 for things like "hello".capitalize?, since that would require a
2833 potentially dangerous eval() again.
2840 potentially dangerous eval() again.
2834
2841
2835 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
2842 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
2836 logic a bit more to clean up the escapes handling and minimize the
2843 logic a bit more to clean up the escapes handling and minimize the
2837 use of _ofind to only necessary cases. The interactive 'feel' of
2844 use of _ofind to only necessary cases. The interactive 'feel' of
2838 IPython should have improved quite a bit with the changes in
2845 IPython should have improved quite a bit with the changes in
2839 _prefilter and _ofind (besides being far safer than before).
2846 _prefilter and _ofind (besides being far safer than before).
2840
2847
2841 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
2848 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
2842 obscure, never reported). Edit would fail to find the object to
2849 obscure, never reported). Edit would fail to find the object to
2843 edit under some circumstances.
2850 edit under some circumstances.
2844 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
2851 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
2845 which were causing double-calling of generators. Those eval calls
2852 which were causing double-calling of generators. Those eval calls
2846 were _very_ dangerous, since code with side effects could be
2853 were _very_ dangerous, since code with side effects could be
2847 triggered. As they say, 'eval is evil'... These were the
2854 triggered. As they say, 'eval is evil'... These were the
2848 nastiest evals in IPython. Besides, _ofind is now far simpler,
2855 nastiest evals in IPython. Besides, _ofind is now far simpler,
2849 and it should also be quite a bit faster. Its use of inspect is
2856 and it should also be quite a bit faster. Its use of inspect is
2850 also safer, so perhaps some of the inspect-related crashes I've
2857 also safer, so perhaps some of the inspect-related crashes I've
2851 seen lately with Python 2.3 might be taken care of. That will
2858 seen lately with Python 2.3 might be taken care of. That will
2852 need more testing.
2859 need more testing.
2853
2860
2854 2003-08-17 Fernando Perez <fperez@colorado.edu>
2861 2003-08-17 Fernando Perez <fperez@colorado.edu>
2855
2862
2856 * IPython/iplib.py (InteractiveShell._prefilter): significant
2863 * IPython/iplib.py (InteractiveShell._prefilter): significant
2857 simplifications to the logic for handling user escapes. Faster
2864 simplifications to the logic for handling user escapes. Faster
2858 and simpler code.
2865 and simpler code.
2859
2866
2860 2003-08-14 Fernando Perez <fperez@colorado.edu>
2867 2003-08-14 Fernando Perez <fperez@colorado.edu>
2861
2868
2862 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
2869 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
2863 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
2870 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
2864 but it should be quite a bit faster. And the recursive version
2871 but it should be quite a bit faster. And the recursive version
2865 generated O(log N) intermediate storage for all rank>1 arrays,
2872 generated O(log N) intermediate storage for all rank>1 arrays,
2866 even if they were contiguous.
2873 even if they were contiguous.
2867 (l1norm): Added this function.
2874 (l1norm): Added this function.
2868 (norm): Added this function for arbitrary norms (including
2875 (norm): Added this function for arbitrary norms (including
2869 l-infinity). l1 and l2 are still special cases for convenience
2876 l-infinity). l1 and l2 are still special cases for convenience
2870 and speed.
2877 and speed.
2871
2878
2872 2003-08-03 Fernando Perez <fperez@colorado.edu>
2879 2003-08-03 Fernando Perez <fperez@colorado.edu>
2873
2880
2874 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
2881 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
2875 exceptions, which now raise PendingDeprecationWarnings in Python
2882 exceptions, which now raise PendingDeprecationWarnings in Python
2876 2.3. There were some in Magic and some in Gnuplot2.
2883 2.3. There were some in Magic and some in Gnuplot2.
2877
2884
2878 2003-06-30 Fernando Perez <fperez@colorado.edu>
2885 2003-06-30 Fernando Perez <fperez@colorado.edu>
2879
2886
2880 * IPython/genutils.py (page): modified to call curses only for
2887 * IPython/genutils.py (page): modified to call curses only for
2881 terminals where TERM=='xterm'. After problems under many other
2888 terminals where TERM=='xterm'. After problems under many other
2882 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
2889 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
2883
2890
2884 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
2891 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
2885 would be triggered when readline was absent. This was just an old
2892 would be triggered when readline was absent. This was just an old
2886 debugging statement I'd forgotten to take out.
2893 debugging statement I'd forgotten to take out.
2887
2894
2888 2003-06-20 Fernando Perez <fperez@colorado.edu>
2895 2003-06-20 Fernando Perez <fperez@colorado.edu>
2889
2896
2890 * IPython/genutils.py (clock): modified to return only user time
2897 * IPython/genutils.py (clock): modified to return only user time
2891 (not counting system time), after a discussion on scipy. While
2898 (not counting system time), after a discussion on scipy. While
2892 system time may be a useful quantity occasionally, it may much
2899 system time may be a useful quantity occasionally, it may much
2893 more easily be skewed by occasional swapping or other similar
2900 more easily be skewed by occasional swapping or other similar
2894 activity.
2901 activity.
2895
2902
2896 2003-06-05 Fernando Perez <fperez@colorado.edu>
2903 2003-06-05 Fernando Perez <fperez@colorado.edu>
2897
2904
2898 * IPython/numutils.py (identity): new function, for building
2905 * IPython/numutils.py (identity): new function, for building
2899 arbitrary rank Kronecker deltas (mostly backwards compatible with
2906 arbitrary rank Kronecker deltas (mostly backwards compatible with
2900 Numeric.identity)
2907 Numeric.identity)
2901
2908
2902 2003-06-03 Fernando Perez <fperez@colorado.edu>
2909 2003-06-03 Fernando Perez <fperez@colorado.edu>
2903
2910
2904 * IPython/iplib.py (InteractiveShell.handle_magic): protect
2911 * IPython/iplib.py (InteractiveShell.handle_magic): protect
2905 arguments passed to magics with spaces, to allow trailing '\' to
2912 arguments passed to magics with spaces, to allow trailing '\' to
2906 work normally (mainly for Windows users).
2913 work normally (mainly for Windows users).
2907
2914
2908 2003-05-29 Fernando Perez <fperez@colorado.edu>
2915 2003-05-29 Fernando Perez <fperez@colorado.edu>
2909
2916
2910 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
2917 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
2911 instead of pydoc.help. This fixes a bizarre behavior where
2918 instead of pydoc.help. This fixes a bizarre behavior where
2912 printing '%s' % locals() would trigger the help system. Now
2919 printing '%s' % locals() would trigger the help system. Now
2913 ipython behaves like normal python does.
2920 ipython behaves like normal python does.
2914
2921
2915 Note that if one does 'from pydoc import help', the bizarre
2922 Note that if one does 'from pydoc import help', the bizarre
2916 behavior returns, but this will also happen in normal python, so
2923 behavior returns, but this will also happen in normal python, so
2917 it's not an ipython bug anymore (it has to do with how pydoc.help
2924 it's not an ipython bug anymore (it has to do with how pydoc.help
2918 is implemented).
2925 is implemented).
2919
2926
2920 2003-05-22 Fernando Perez <fperez@colorado.edu>
2927 2003-05-22 Fernando Perez <fperez@colorado.edu>
2921
2928
2922 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
2929 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
2923 return [] instead of None when nothing matches, also match to end
2930 return [] instead of None when nothing matches, also match to end
2924 of line. Patch by Gary Bishop.
2931 of line. Patch by Gary Bishop.
2925
2932
2926 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
2933 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
2927 protection as before, for files passed on the command line. This
2934 protection as before, for files passed on the command line. This
2928 prevents the CrashHandler from kicking in if user files call into
2935 prevents the CrashHandler from kicking in if user files call into
2929 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
2936 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
2930 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
2937 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
2931
2938
2932 2003-05-20 *** Released version 0.4.0
2939 2003-05-20 *** Released version 0.4.0
2933
2940
2934 2003-05-20 Fernando Perez <fperez@colorado.edu>
2941 2003-05-20 Fernando Perez <fperez@colorado.edu>
2935
2942
2936 * setup.py: added support for manpages. It's a bit hackish b/c of
2943 * setup.py: added support for manpages. It's a bit hackish b/c of
2937 a bug in the way the bdist_rpm distutils target handles gzipped
2944 a bug in the way the bdist_rpm distutils target handles gzipped
2938 manpages, but it works. After a patch by Jack.
2945 manpages, but it works. After a patch by Jack.
2939
2946
2940 2003-05-19 Fernando Perez <fperez@colorado.edu>
2947 2003-05-19 Fernando Perez <fperez@colorado.edu>
2941
2948
2942 * IPython/numutils.py: added a mockup of the kinds module, since
2949 * IPython/numutils.py: added a mockup of the kinds module, since
2943 it was recently removed from Numeric. This way, numutils will
2950 it was recently removed from Numeric. This way, numutils will
2944 work for all users even if they are missing kinds.
2951 work for all users even if they are missing kinds.
2945
2952
2946 * IPython/Magic.py (Magic._ofind): Harden against an inspect
2953 * IPython/Magic.py (Magic._ofind): Harden against an inspect
2947 failure, which can occur with SWIG-wrapped extensions. After a
2954 failure, which can occur with SWIG-wrapped extensions. After a
2948 crash report from Prabhu.
2955 crash report from Prabhu.
2949
2956
2950 2003-05-16 Fernando Perez <fperez@colorado.edu>
2957 2003-05-16 Fernando Perez <fperez@colorado.edu>
2951
2958
2952 * IPython/iplib.py (InteractiveShell.excepthook): New method to
2959 * IPython/iplib.py (InteractiveShell.excepthook): New method to
2953 protect ipython from user code which may call directly
2960 protect ipython from user code which may call directly
2954 sys.excepthook (this looks like an ipython crash to the user, even
2961 sys.excepthook (this looks like an ipython crash to the user, even
2955 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2962 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2956 This is especially important to help users of WxWindows, but may
2963 This is especially important to help users of WxWindows, but may
2957 also be useful in other cases.
2964 also be useful in other cases.
2958
2965
2959 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
2966 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
2960 an optional tb_offset to be specified, and to preserve exception
2967 an optional tb_offset to be specified, and to preserve exception
2961 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2968 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2962
2969
2963 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
2970 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
2964
2971
2965 2003-05-15 Fernando Perez <fperez@colorado.edu>
2972 2003-05-15 Fernando Perez <fperez@colorado.edu>
2966
2973
2967 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
2974 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
2968 installing for a new user under Windows.
2975 installing for a new user under Windows.
2969
2976
2970 2003-05-12 Fernando Perez <fperez@colorado.edu>
2977 2003-05-12 Fernando Perez <fperez@colorado.edu>
2971
2978
2972 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
2979 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
2973 handler for Emacs comint-based lines. Currently it doesn't do
2980 handler for Emacs comint-based lines. Currently it doesn't do
2974 much (but importantly, it doesn't update the history cache). In
2981 much (but importantly, it doesn't update the history cache). In
2975 the future it may be expanded if Alex needs more functionality
2982 the future it may be expanded if Alex needs more functionality
2976 there.
2983 there.
2977
2984
2978 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
2985 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
2979 info to crash reports.
2986 info to crash reports.
2980
2987
2981 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
2988 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
2982 just like Python's -c. Also fixed crash with invalid -color
2989 just like Python's -c. Also fixed crash with invalid -color
2983 option value at startup. Thanks to Will French
2990 option value at startup. Thanks to Will French
2984 <wfrench-AT-bestweb.net> for the bug report.
2991 <wfrench-AT-bestweb.net> for the bug report.
2985
2992
2986 2003-05-09 Fernando Perez <fperez@colorado.edu>
2993 2003-05-09 Fernando Perez <fperez@colorado.edu>
2987
2994
2988 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
2995 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
2989 to EvalDict (it's a mapping, after all) and simplified its code
2996 to EvalDict (it's a mapping, after all) and simplified its code
2990 quite a bit, after a nice discussion on c.l.py where Gustavo
2997 quite a bit, after a nice discussion on c.l.py where Gustavo
2991 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
2998 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
2992
2999
2993 2003-04-30 Fernando Perez <fperez@colorado.edu>
3000 2003-04-30 Fernando Perez <fperez@colorado.edu>
2994
3001
2995 * IPython/genutils.py (timings_out): modified it to reduce its
3002 * IPython/genutils.py (timings_out): modified it to reduce its
2996 overhead in the common reps==1 case.
3003 overhead in the common reps==1 case.
2997
3004
2998 2003-04-29 Fernando Perez <fperez@colorado.edu>
3005 2003-04-29 Fernando Perez <fperez@colorado.edu>
2999
3006
3000 * IPython/genutils.py (timings_out): Modified to use the resource
3007 * IPython/genutils.py (timings_out): Modified to use the resource
3001 module, which avoids the wraparound problems of time.clock().
3008 module, which avoids the wraparound problems of time.clock().
3002
3009
3003 2003-04-17 *** Released version 0.2.15pre4
3010 2003-04-17 *** Released version 0.2.15pre4
3004
3011
3005 2003-04-17 Fernando Perez <fperez@colorado.edu>
3012 2003-04-17 Fernando Perez <fperez@colorado.edu>
3006
3013
3007 * setup.py (scriptfiles): Split windows-specific stuff over to a
3014 * setup.py (scriptfiles): Split windows-specific stuff over to a
3008 separate file, in an attempt to have a Windows GUI installer.
3015 separate file, in an attempt to have a Windows GUI installer.
3009 That didn't work, but part of the groundwork is done.
3016 That didn't work, but part of the groundwork is done.
3010
3017
3011 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3018 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3012 indent/unindent with 4 spaces. Particularly useful in combination
3019 indent/unindent with 4 spaces. Particularly useful in combination
3013 with the new auto-indent option.
3020 with the new auto-indent option.
3014
3021
3015 2003-04-16 Fernando Perez <fperez@colorado.edu>
3022 2003-04-16 Fernando Perez <fperez@colorado.edu>
3016
3023
3017 * IPython/Magic.py: various replacements of self.rc for
3024 * IPython/Magic.py: various replacements of self.rc for
3018 self.shell.rc. A lot more remains to be done to fully disentangle
3025 self.shell.rc. A lot more remains to be done to fully disentangle
3019 this class from the main Shell class.
3026 this class from the main Shell class.
3020
3027
3021 * IPython/GnuplotRuntime.py: added checks for mouse support so
3028 * IPython/GnuplotRuntime.py: added checks for mouse support so
3022 that we don't try to enable it if the current gnuplot doesn't
3029 that we don't try to enable it if the current gnuplot doesn't
3023 really support it. Also added checks so that we don't try to
3030 really support it. Also added checks so that we don't try to
3024 enable persist under Windows (where Gnuplot doesn't recognize the
3031 enable persist under Windows (where Gnuplot doesn't recognize the
3025 option).
3032 option).
3026
3033
3027 * IPython/iplib.py (InteractiveShell.interact): Added optional
3034 * IPython/iplib.py (InteractiveShell.interact): Added optional
3028 auto-indenting code, after a patch by King C. Shu
3035 auto-indenting code, after a patch by King C. Shu
3029 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3036 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3030 get along well with pasting indented code. If I ever figure out
3037 get along well with pasting indented code. If I ever figure out
3031 how to make that part go well, it will become on by default.
3038 how to make that part go well, it will become on by default.
3032
3039
3033 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3040 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3034 crash ipython if there was an unmatched '%' in the user's prompt
3041 crash ipython if there was an unmatched '%' in the user's prompt
3035 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3042 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3036
3043
3037 * IPython/iplib.py (InteractiveShell.interact): removed the
3044 * IPython/iplib.py (InteractiveShell.interact): removed the
3038 ability to ask the user whether he wants to crash or not at the
3045 ability to ask the user whether he wants to crash or not at the
3039 'last line' exception handler. Calling functions at that point
3046 'last line' exception handler. Calling functions at that point
3040 changes the stack, and the error reports would have incorrect
3047 changes the stack, and the error reports would have incorrect
3041 tracebacks.
3048 tracebacks.
3042
3049
3043 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3050 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3044 pass through a peger a pretty-printed form of any object. After a
3051 pass through a peger a pretty-printed form of any object. After a
3045 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3052 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3046
3053
3047 2003-04-14 Fernando Perez <fperez@colorado.edu>
3054 2003-04-14 Fernando Perez <fperez@colorado.edu>
3048
3055
3049 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3056 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3050 all files in ~ would be modified at first install (instead of
3057 all files in ~ would be modified at first install (instead of
3051 ~/.ipython). This could be potentially disastrous, as the
3058 ~/.ipython). This could be potentially disastrous, as the
3052 modification (make line-endings native) could damage binary files.
3059 modification (make line-endings native) could damage binary files.
3053
3060
3054 2003-04-10 Fernando Perez <fperez@colorado.edu>
3061 2003-04-10 Fernando Perez <fperez@colorado.edu>
3055
3062
3056 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3063 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3057 handle only lines which are invalid python. This now means that
3064 handle only lines which are invalid python. This now means that
3058 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3065 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3059 for the bug report.
3066 for the bug report.
3060
3067
3061 2003-04-01 Fernando Perez <fperez@colorado.edu>
3068 2003-04-01 Fernando Perez <fperez@colorado.edu>
3062
3069
3063 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3070 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3064 where failing to set sys.last_traceback would crash pdb.pm().
3071 where failing to set sys.last_traceback would crash pdb.pm().
3065 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3072 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3066 report.
3073 report.
3067
3074
3068 2003-03-25 Fernando Perez <fperez@colorado.edu>
3075 2003-03-25 Fernando Perez <fperez@colorado.edu>
3069
3076
3070 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3077 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3071 before printing it (it had a lot of spurious blank lines at the
3078 before printing it (it had a lot of spurious blank lines at the
3072 end).
3079 end).
3073
3080
3074 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3081 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3075 output would be sent 21 times! Obviously people don't use this
3082 output would be sent 21 times! Obviously people don't use this
3076 too often, or I would have heard about it.
3083 too often, or I would have heard about it.
3077
3084
3078 2003-03-24 Fernando Perez <fperez@colorado.edu>
3085 2003-03-24 Fernando Perez <fperez@colorado.edu>
3079
3086
3080 * setup.py (scriptfiles): renamed the data_files parameter from
3087 * setup.py (scriptfiles): renamed the data_files parameter from
3081 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3088 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3082 for the patch.
3089 for the patch.
3083
3090
3084 2003-03-20 Fernando Perez <fperez@colorado.edu>
3091 2003-03-20 Fernando Perez <fperez@colorado.edu>
3085
3092
3086 * IPython/genutils.py (error): added error() and fatal()
3093 * IPython/genutils.py (error): added error() and fatal()
3087 functions.
3094 functions.
3088
3095
3089 2003-03-18 *** Released version 0.2.15pre3
3096 2003-03-18 *** Released version 0.2.15pre3
3090
3097
3091 2003-03-18 Fernando Perez <fperez@colorado.edu>
3098 2003-03-18 Fernando Perez <fperez@colorado.edu>
3092
3099
3093 * setupext/install_data_ext.py
3100 * setupext/install_data_ext.py
3094 (install_data_ext.initialize_options): Class contributed by Jack
3101 (install_data_ext.initialize_options): Class contributed by Jack
3095 Moffit for fixing the old distutils hack. He is sending this to
3102 Moffit for fixing the old distutils hack. He is sending this to
3096 the distutils folks so in the future we may not need it as a
3103 the distutils folks so in the future we may not need it as a
3097 private fix.
3104 private fix.
3098
3105
3099 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3106 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3100 changes for Debian packaging. See his patch for full details.
3107 changes for Debian packaging. See his patch for full details.
3101 The old distutils hack of making the ipythonrc* files carry a
3108 The old distutils hack of making the ipythonrc* files carry a
3102 bogus .py extension is gone, at last. Examples were moved to a
3109 bogus .py extension is gone, at last. Examples were moved to a
3103 separate subdir under doc/, and the separate executable scripts
3110 separate subdir under doc/, and the separate executable scripts
3104 now live in their own directory. Overall a great cleanup. The
3111 now live in their own directory. Overall a great cleanup. The
3105 manual was updated to use the new files, and setup.py has been
3112 manual was updated to use the new files, and setup.py has been
3106 fixed for this setup.
3113 fixed for this setup.
3107
3114
3108 * IPython/PyColorize.py (Parser.usage): made non-executable and
3115 * IPython/PyColorize.py (Parser.usage): made non-executable and
3109 created a pycolor wrapper around it to be included as a script.
3116 created a pycolor wrapper around it to be included as a script.
3110
3117
3111 2003-03-12 *** Released version 0.2.15pre2
3118 2003-03-12 *** Released version 0.2.15pre2
3112
3119
3113 2003-03-12 Fernando Perez <fperez@colorado.edu>
3120 2003-03-12 Fernando Perez <fperez@colorado.edu>
3114
3121
3115 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3122 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3116 long-standing problem with garbage characters in some terminals.
3123 long-standing problem with garbage characters in some terminals.
3117 The issue was really that the \001 and \002 escapes must _only_ be
3124 The issue was really that the \001 and \002 escapes must _only_ be
3118 passed to input prompts (which call readline), but _never_ to
3125 passed to input prompts (which call readline), but _never_ to
3119 normal text to be printed on screen. I changed ColorANSI to have
3126 normal text to be printed on screen. I changed ColorANSI to have
3120 two classes: TermColors and InputTermColors, each with the
3127 two classes: TermColors and InputTermColors, each with the
3121 appropriate escapes for input prompts or normal text. The code in
3128 appropriate escapes for input prompts or normal text. The code in
3122 Prompts.py got slightly more complicated, but this very old and
3129 Prompts.py got slightly more complicated, but this very old and
3123 annoying bug is finally fixed.
3130 annoying bug is finally fixed.
3124
3131
3125 All the credit for nailing down the real origin of this problem
3132 All the credit for nailing down the real origin of this problem
3126 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3133 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3127 *Many* thanks to him for spending quite a bit of effort on this.
3134 *Many* thanks to him for spending quite a bit of effort on this.
3128
3135
3129 2003-03-05 *** Released version 0.2.15pre1
3136 2003-03-05 *** Released version 0.2.15pre1
3130
3137
3131 2003-03-03 Fernando Perez <fperez@colorado.edu>
3138 2003-03-03 Fernando Perez <fperez@colorado.edu>
3132
3139
3133 * IPython/FakeModule.py: Moved the former _FakeModule to a
3140 * IPython/FakeModule.py: Moved the former _FakeModule to a
3134 separate file, because it's also needed by Magic (to fix a similar
3141 separate file, because it's also needed by Magic (to fix a similar
3135 pickle-related issue in @run).
3142 pickle-related issue in @run).
3136
3143
3137 2003-03-02 Fernando Perez <fperez@colorado.edu>
3144 2003-03-02 Fernando Perez <fperez@colorado.edu>
3138
3145
3139 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3146 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3140 the autocall option at runtime.
3147 the autocall option at runtime.
3141 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3148 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3142 across Magic.py to start separating Magic from InteractiveShell.
3149 across Magic.py to start separating Magic from InteractiveShell.
3143 (Magic._ofind): Fixed to return proper namespace for dotted
3150 (Magic._ofind): Fixed to return proper namespace for dotted
3144 names. Before, a dotted name would always return 'not currently
3151 names. Before, a dotted name would always return 'not currently
3145 defined', because it would find the 'parent'. s.x would be found,
3152 defined', because it would find the 'parent'. s.x would be found,
3146 but since 'x' isn't defined by itself, it would get confused.
3153 but since 'x' isn't defined by itself, it would get confused.
3147 (Magic.magic_run): Fixed pickling problems reported by Ralf
3154 (Magic.magic_run): Fixed pickling problems reported by Ralf
3148 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3155 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3149 that I'd used when Mike Heeter reported similar issues at the
3156 that I'd used when Mike Heeter reported similar issues at the
3150 top-level, but now for @run. It boils down to injecting the
3157 top-level, but now for @run. It boils down to injecting the
3151 namespace where code is being executed with something that looks
3158 namespace where code is being executed with something that looks
3152 enough like a module to fool pickle.dump(). Since a pickle stores
3159 enough like a module to fool pickle.dump(). Since a pickle stores
3153 a named reference to the importing module, we need this for
3160 a named reference to the importing module, we need this for
3154 pickles to save something sensible.
3161 pickles to save something sensible.
3155
3162
3156 * IPython/ipmaker.py (make_IPython): added an autocall option.
3163 * IPython/ipmaker.py (make_IPython): added an autocall option.
3157
3164
3158 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3165 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3159 the auto-eval code. Now autocalling is an option, and the code is
3166 the auto-eval code. Now autocalling is an option, and the code is
3160 also vastly safer. There is no more eval() involved at all.
3167 also vastly safer. There is no more eval() involved at all.
3161
3168
3162 2003-03-01 Fernando Perez <fperez@colorado.edu>
3169 2003-03-01 Fernando Perez <fperez@colorado.edu>
3163
3170
3164 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3171 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3165 dict with named keys instead of a tuple.
3172 dict with named keys instead of a tuple.
3166
3173
3167 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3174 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3168
3175
3169 * setup.py (make_shortcut): Fixed message about directories
3176 * setup.py (make_shortcut): Fixed message about directories
3170 created during Windows installation (the directories were ok, just
3177 created during Windows installation (the directories were ok, just
3171 the printed message was misleading). Thanks to Chris Liechti
3178 the printed message was misleading). Thanks to Chris Liechti
3172 <cliechti-AT-gmx.net> for the heads up.
3179 <cliechti-AT-gmx.net> for the heads up.
3173
3180
3174 2003-02-21 Fernando Perez <fperez@colorado.edu>
3181 2003-02-21 Fernando Perez <fperez@colorado.edu>
3175
3182
3176 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3183 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3177 of ValueError exception when checking for auto-execution. This
3184 of ValueError exception when checking for auto-execution. This
3178 one is raised by things like Numeric arrays arr.flat when the
3185 one is raised by things like Numeric arrays arr.flat when the
3179 array is non-contiguous.
3186 array is non-contiguous.
3180
3187
3181 2003-01-31 Fernando Perez <fperez@colorado.edu>
3188 2003-01-31 Fernando Perez <fperez@colorado.edu>
3182
3189
3183 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3190 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3184 not return any value at all (even though the command would get
3191 not return any value at all (even though the command would get
3185 executed).
3192 executed).
3186 (xsys): Flush stdout right after printing the command to ensure
3193 (xsys): Flush stdout right after printing the command to ensure
3187 proper ordering of commands and command output in the total
3194 proper ordering of commands and command output in the total
3188 output.
3195 output.
3189 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3196 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3190 system/getoutput as defaults. The old ones are kept for
3197 system/getoutput as defaults. The old ones are kept for
3191 compatibility reasons, so no code which uses this library needs
3198 compatibility reasons, so no code which uses this library needs
3192 changing.
3199 changing.
3193
3200
3194 2003-01-27 *** Released version 0.2.14
3201 2003-01-27 *** Released version 0.2.14
3195
3202
3196 2003-01-25 Fernando Perez <fperez@colorado.edu>
3203 2003-01-25 Fernando Perez <fperez@colorado.edu>
3197
3204
3198 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3205 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3199 functions defined in previous edit sessions could not be re-edited
3206 functions defined in previous edit sessions could not be re-edited
3200 (because the temp files were immediately removed). Now temp files
3207 (because the temp files were immediately removed). Now temp files
3201 are removed only at IPython's exit.
3208 are removed only at IPython's exit.
3202 (Magic.magic_run): Improved @run to perform shell-like expansions
3209 (Magic.magic_run): Improved @run to perform shell-like expansions
3203 on its arguments (~users and $VARS). With this, @run becomes more
3210 on its arguments (~users and $VARS). With this, @run becomes more
3204 like a normal command-line.
3211 like a normal command-line.
3205
3212
3206 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3213 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3207 bugs related to embedding and cleaned up that code. A fairly
3214 bugs related to embedding and cleaned up that code. A fairly
3208 important one was the impossibility to access the global namespace
3215 important one was the impossibility to access the global namespace
3209 through the embedded IPython (only local variables were visible).
3216 through the embedded IPython (only local variables were visible).
3210
3217
3211 2003-01-14 Fernando Perez <fperez@colorado.edu>
3218 2003-01-14 Fernando Perez <fperez@colorado.edu>
3212
3219
3213 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3220 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3214 auto-calling to be a bit more conservative. Now it doesn't get
3221 auto-calling to be a bit more conservative. Now it doesn't get
3215 triggered if any of '!=()<>' are in the rest of the input line, to
3222 triggered if any of '!=()<>' are in the rest of the input line, to
3216 allow comparing callables. Thanks to Alex for the heads up.
3223 allow comparing callables. Thanks to Alex for the heads up.
3217
3224
3218 2003-01-07 Fernando Perez <fperez@colorado.edu>
3225 2003-01-07 Fernando Perez <fperez@colorado.edu>
3219
3226
3220 * IPython/genutils.py (page): fixed estimation of the number of
3227 * IPython/genutils.py (page): fixed estimation of the number of
3221 lines in a string to be paged to simply count newlines. This
3228 lines in a string to be paged to simply count newlines. This
3222 prevents over-guessing due to embedded escape sequences. A better
3229 prevents over-guessing due to embedded escape sequences. A better
3223 long-term solution would involve stripping out the control chars
3230 long-term solution would involve stripping out the control chars
3224 for the count, but it's potentially so expensive I just don't
3231 for the count, but it's potentially so expensive I just don't
3225 think it's worth doing.
3232 think it's worth doing.
3226
3233
3227 2002-12-19 *** Released version 0.2.14pre50
3234 2002-12-19 *** Released version 0.2.14pre50
3228
3235
3229 2002-12-19 Fernando Perez <fperez@colorado.edu>
3236 2002-12-19 Fernando Perez <fperez@colorado.edu>
3230
3237
3231 * tools/release (version): Changed release scripts to inform
3238 * tools/release (version): Changed release scripts to inform
3232 Andrea and build a NEWS file with a list of recent changes.
3239 Andrea and build a NEWS file with a list of recent changes.
3233
3240
3234 * IPython/ColorANSI.py (__all__): changed terminal detection
3241 * IPython/ColorANSI.py (__all__): changed terminal detection
3235 code. Seems to work better for xterms without breaking
3242 code. Seems to work better for xterms without breaking
3236 konsole. Will need more testing to determine if WinXP and Mac OSX
3243 konsole. Will need more testing to determine if WinXP and Mac OSX
3237 also work ok.
3244 also work ok.
3238
3245
3239 2002-12-18 *** Released version 0.2.14pre49
3246 2002-12-18 *** Released version 0.2.14pre49
3240
3247
3241 2002-12-18 Fernando Perez <fperez@colorado.edu>
3248 2002-12-18 Fernando Perez <fperez@colorado.edu>
3242
3249
3243 * Docs: added new info about Mac OSX, from Andrea.
3250 * Docs: added new info about Mac OSX, from Andrea.
3244
3251
3245 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3252 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3246 allow direct plotting of python strings whose format is the same
3253 allow direct plotting of python strings whose format is the same
3247 of gnuplot data files.
3254 of gnuplot data files.
3248
3255
3249 2002-12-16 Fernando Perez <fperez@colorado.edu>
3256 2002-12-16 Fernando Perez <fperez@colorado.edu>
3250
3257
3251 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3258 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3252 value of exit question to be acknowledged.
3259 value of exit question to be acknowledged.
3253
3260
3254 2002-12-03 Fernando Perez <fperez@colorado.edu>
3261 2002-12-03 Fernando Perez <fperez@colorado.edu>
3255
3262
3256 * IPython/ipmaker.py: removed generators, which had been added
3263 * IPython/ipmaker.py: removed generators, which had been added
3257 by mistake in an earlier debugging run. This was causing trouble
3264 by mistake in an earlier debugging run. This was causing trouble
3258 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3265 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3259 for pointing this out.
3266 for pointing this out.
3260
3267
3261 2002-11-17 Fernando Perez <fperez@colorado.edu>
3268 2002-11-17 Fernando Perez <fperez@colorado.edu>
3262
3269
3263 * Manual: updated the Gnuplot section.
3270 * Manual: updated the Gnuplot section.
3264
3271
3265 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3272 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3266 a much better split of what goes in Runtime and what goes in
3273 a much better split of what goes in Runtime and what goes in
3267 Interactive.
3274 Interactive.
3268
3275
3269 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3276 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3270 being imported from iplib.
3277 being imported from iplib.
3271
3278
3272 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3279 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3273 for command-passing. Now the global Gnuplot instance is called
3280 for command-passing. Now the global Gnuplot instance is called
3274 'gp' instead of 'g', which was really a far too fragile and
3281 'gp' instead of 'g', which was really a far too fragile and
3275 common name.
3282 common name.
3276
3283
3277 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3284 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3278 bounding boxes generated by Gnuplot for square plots.
3285 bounding boxes generated by Gnuplot for square plots.
3279
3286
3280 * IPython/genutils.py (popkey): new function added. I should
3287 * IPython/genutils.py (popkey): new function added. I should
3281 suggest this on c.l.py as a dict method, it seems useful.
3288 suggest this on c.l.py as a dict method, it seems useful.
3282
3289
3283 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3290 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3284 to transparently handle PostScript generation. MUCH better than
3291 to transparently handle PostScript generation. MUCH better than
3285 the previous plot_eps/replot_eps (which I removed now). The code
3292 the previous plot_eps/replot_eps (which I removed now). The code
3286 is also fairly clean and well documented now (including
3293 is also fairly clean and well documented now (including
3287 docstrings).
3294 docstrings).
3288
3295
3289 2002-11-13 Fernando Perez <fperez@colorado.edu>
3296 2002-11-13 Fernando Perez <fperez@colorado.edu>
3290
3297
3291 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3298 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3292 (inconsistent with options).
3299 (inconsistent with options).
3293
3300
3294 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3301 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3295 manually disabled, I don't know why. Fixed it.
3302 manually disabled, I don't know why. Fixed it.
3296 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3303 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3297 eps output.
3304 eps output.
3298
3305
3299 2002-11-12 Fernando Perez <fperez@colorado.edu>
3306 2002-11-12 Fernando Perez <fperez@colorado.edu>
3300
3307
3301 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3308 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3302 don't propagate up to caller. Fixes crash reported by François
3309 don't propagate up to caller. Fixes crash reported by François
3303 Pinard.
3310 Pinard.
3304
3311
3305 2002-11-09 Fernando Perez <fperez@colorado.edu>
3312 2002-11-09 Fernando Perez <fperez@colorado.edu>
3306
3313
3307 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3314 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3308 history file for new users.
3315 history file for new users.
3309 (make_IPython): fixed bug where initial install would leave the
3316 (make_IPython): fixed bug where initial install would leave the
3310 user running in the .ipython dir.
3317 user running in the .ipython dir.
3311 (make_IPython): fixed bug where config dir .ipython would be
3318 (make_IPython): fixed bug where config dir .ipython would be
3312 created regardless of the given -ipythondir option. Thanks to Cory
3319 created regardless of the given -ipythondir option. Thanks to Cory
3313 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3320 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3314
3321
3315 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3322 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3316 type confirmations. Will need to use it in all of IPython's code
3323 type confirmations. Will need to use it in all of IPython's code
3317 consistently.
3324 consistently.
3318
3325
3319 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3326 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3320 context to print 31 lines instead of the default 5. This will make
3327 context to print 31 lines instead of the default 5. This will make
3321 the crash reports extremely detailed in case the problem is in
3328 the crash reports extremely detailed in case the problem is in
3322 libraries I don't have access to.
3329 libraries I don't have access to.
3323
3330
3324 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3331 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3325 line of defense' code to still crash, but giving users fair
3332 line of defense' code to still crash, but giving users fair
3326 warning. I don't want internal errors to go unreported: if there's
3333 warning. I don't want internal errors to go unreported: if there's
3327 an internal problem, IPython should crash and generate a full
3334 an internal problem, IPython should crash and generate a full
3328 report.
3335 report.
3329
3336
3330 2002-11-08 Fernando Perez <fperez@colorado.edu>
3337 2002-11-08 Fernando Perez <fperez@colorado.edu>
3331
3338
3332 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3339 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3333 otherwise uncaught exceptions which can appear if people set
3340 otherwise uncaught exceptions which can appear if people set
3334 sys.stdout to something badly broken. Thanks to a crash report
3341 sys.stdout to something badly broken. Thanks to a crash report
3335 from henni-AT-mail.brainbot.com.
3342 from henni-AT-mail.brainbot.com.
3336
3343
3337 2002-11-04 Fernando Perez <fperez@colorado.edu>
3344 2002-11-04 Fernando Perez <fperez@colorado.edu>
3338
3345
3339 * IPython/iplib.py (InteractiveShell.interact): added
3346 * IPython/iplib.py (InteractiveShell.interact): added
3340 __IPYTHON__active to the builtins. It's a flag which goes on when
3347 __IPYTHON__active to the builtins. It's a flag which goes on when
3341 the interaction starts and goes off again when it stops. This
3348 the interaction starts and goes off again when it stops. This
3342 allows embedding code to detect being inside IPython. Before this
3349 allows embedding code to detect being inside IPython. Before this
3343 was done via __IPYTHON__, but that only shows that an IPython
3350 was done via __IPYTHON__, but that only shows that an IPython
3344 instance has been created.
3351 instance has been created.
3345
3352
3346 * IPython/Magic.py (Magic.magic_env): I realized that in a
3353 * IPython/Magic.py (Magic.magic_env): I realized that in a
3347 UserDict, instance.data holds the data as a normal dict. So I
3354 UserDict, instance.data holds the data as a normal dict. So I
3348 modified @env to return os.environ.data instead of rebuilding a
3355 modified @env to return os.environ.data instead of rebuilding a
3349 dict by hand.
3356 dict by hand.
3350
3357
3351 2002-11-02 Fernando Perez <fperez@colorado.edu>
3358 2002-11-02 Fernando Perez <fperez@colorado.edu>
3352
3359
3353 * IPython/genutils.py (warn): changed so that level 1 prints no
3360 * IPython/genutils.py (warn): changed so that level 1 prints no
3354 header. Level 2 is now the default (with 'WARNING' header, as
3361 header. Level 2 is now the default (with 'WARNING' header, as
3355 before). I think I tracked all places where changes were needed in
3362 before). I think I tracked all places where changes were needed in
3356 IPython, but outside code using the old level numbering may have
3363 IPython, but outside code using the old level numbering may have
3357 broken.
3364 broken.
3358
3365
3359 * IPython/iplib.py (InteractiveShell.runcode): added this to
3366 * IPython/iplib.py (InteractiveShell.runcode): added this to
3360 handle the tracebacks in SystemExit traps correctly. The previous
3367 handle the tracebacks in SystemExit traps correctly. The previous
3361 code (through interact) was printing more of the stack than
3368 code (through interact) was printing more of the stack than
3362 necessary, showing IPython internal code to the user.
3369 necessary, showing IPython internal code to the user.
3363
3370
3364 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3371 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3365 default. Now that the default at the confirmation prompt is yes,
3372 default. Now that the default at the confirmation prompt is yes,
3366 it's not so intrusive. François' argument that ipython sessions
3373 it's not so intrusive. François' argument that ipython sessions
3367 tend to be complex enough not to lose them from an accidental C-d,
3374 tend to be complex enough not to lose them from an accidental C-d,
3368 is a valid one.
3375 is a valid one.
3369
3376
3370 * IPython/iplib.py (InteractiveShell.interact): added a
3377 * IPython/iplib.py (InteractiveShell.interact): added a
3371 showtraceback() call to the SystemExit trap, and modified the exit
3378 showtraceback() call to the SystemExit trap, and modified the exit
3372 confirmation to have yes as the default.
3379 confirmation to have yes as the default.
3373
3380
3374 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3381 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3375 this file. It's been gone from the code for a long time, this was
3382 this file. It's been gone from the code for a long time, this was
3376 simply leftover junk.
3383 simply leftover junk.
3377
3384
3378 2002-11-01 Fernando Perez <fperez@colorado.edu>
3385 2002-11-01 Fernando Perez <fperez@colorado.edu>
3379
3386
3380 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3387 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3381 added. If set, IPython now traps EOF and asks for
3388 added. If set, IPython now traps EOF and asks for
3382 confirmation. After a request by François Pinard.
3389 confirmation. After a request by François Pinard.
3383
3390
3384 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3391 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3385 of @abort, and with a new (better) mechanism for handling the
3392 of @abort, and with a new (better) mechanism for handling the
3386 exceptions.
3393 exceptions.
3387
3394
3388 2002-10-27 Fernando Perez <fperez@colorado.edu>
3395 2002-10-27 Fernando Perez <fperez@colorado.edu>
3389
3396
3390 * IPython/usage.py (__doc__): updated the --help information and
3397 * IPython/usage.py (__doc__): updated the --help information and
3391 the ipythonrc file to indicate that -log generates
3398 the ipythonrc file to indicate that -log generates
3392 ./ipython.log. Also fixed the corresponding info in @logstart.
3399 ./ipython.log. Also fixed the corresponding info in @logstart.
3393 This and several other fixes in the manuals thanks to reports by
3400 This and several other fixes in the manuals thanks to reports by
3394 François Pinard <pinard-AT-iro.umontreal.ca>.
3401 François Pinard <pinard-AT-iro.umontreal.ca>.
3395
3402
3396 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3403 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3397 refer to @logstart (instead of @log, which doesn't exist).
3404 refer to @logstart (instead of @log, which doesn't exist).
3398
3405
3399 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3406 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3400 AttributeError crash. Thanks to Christopher Armstrong
3407 AttributeError crash. Thanks to Christopher Armstrong
3401 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3408 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3402 introduced recently (in 0.2.14pre37) with the fix to the eval
3409 introduced recently (in 0.2.14pre37) with the fix to the eval
3403 problem mentioned below.
3410 problem mentioned below.
3404
3411
3405 2002-10-17 Fernando Perez <fperez@colorado.edu>
3412 2002-10-17 Fernando Perez <fperez@colorado.edu>
3406
3413
3407 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3414 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3408 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3415 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3409
3416
3410 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3417 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3411 this function to fix a problem reported by Alex Schmolck. He saw
3418 this function to fix a problem reported by Alex Schmolck. He saw
3412 it with list comprehensions and generators, which were getting
3419 it with list comprehensions and generators, which were getting
3413 called twice. The real problem was an 'eval' call in testing for
3420 called twice. The real problem was an 'eval' call in testing for
3414 automagic which was evaluating the input line silently.
3421 automagic which was evaluating the input line silently.
3415
3422
3416 This is a potentially very nasty bug, if the input has side
3423 This is a potentially very nasty bug, if the input has side
3417 effects which must not be repeated. The code is much cleaner now,
3424 effects which must not be repeated. The code is much cleaner now,
3418 without any blanket 'except' left and with a regexp test for
3425 without any blanket 'except' left and with a regexp test for
3419 actual function names.
3426 actual function names.
3420
3427
3421 But an eval remains, which I'm not fully comfortable with. I just
3428 But an eval remains, which I'm not fully comfortable with. I just
3422 don't know how to find out if an expression could be a callable in
3429 don't know how to find out if an expression could be a callable in
3423 the user's namespace without doing an eval on the string. However
3430 the user's namespace without doing an eval on the string. However
3424 that string is now much more strictly checked so that no code
3431 that string is now much more strictly checked so that no code
3425 slips by, so the eval should only happen for things that can
3432 slips by, so the eval should only happen for things that can
3426 really be only function/method names.
3433 really be only function/method names.
3427
3434
3428 2002-10-15 Fernando Perez <fperez@colorado.edu>
3435 2002-10-15 Fernando Perez <fperez@colorado.edu>
3429
3436
3430 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3437 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3431 OSX information to main manual, removed README_Mac_OSX file from
3438 OSX information to main manual, removed README_Mac_OSX file from
3432 distribution. Also updated credits for recent additions.
3439 distribution. Also updated credits for recent additions.
3433
3440
3434 2002-10-10 Fernando Perez <fperez@colorado.edu>
3441 2002-10-10 Fernando Perez <fperez@colorado.edu>
3435
3442
3436 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3443 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3437 terminal-related issues. Many thanks to Andrea Riciputi
3444 terminal-related issues. Many thanks to Andrea Riciputi
3438 <andrea.riciputi-AT-libero.it> for writing it.
3445 <andrea.riciputi-AT-libero.it> for writing it.
3439
3446
3440 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3447 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3441 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3448 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3442
3449
3443 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3450 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3444 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3451 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3445 <syver-en-AT-online.no> who both submitted patches for this problem.
3452 <syver-en-AT-online.no> who both submitted patches for this problem.
3446
3453
3447 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3454 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3448 global embedding to make sure that things don't overwrite user
3455 global embedding to make sure that things don't overwrite user
3449 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3456 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3450
3457
3451 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3458 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3452 compatibility. Thanks to Hayden Callow
3459 compatibility. Thanks to Hayden Callow
3453 <h.callow-AT-elec.canterbury.ac.nz>
3460 <h.callow-AT-elec.canterbury.ac.nz>
3454
3461
3455 2002-10-04 Fernando Perez <fperez@colorado.edu>
3462 2002-10-04 Fernando Perez <fperez@colorado.edu>
3456
3463
3457 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3464 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3458 Gnuplot.File objects.
3465 Gnuplot.File objects.
3459
3466
3460 2002-07-23 Fernando Perez <fperez@colorado.edu>
3467 2002-07-23 Fernando Perez <fperez@colorado.edu>
3461
3468
3462 * IPython/genutils.py (timing): Added timings() and timing() for
3469 * IPython/genutils.py (timing): Added timings() and timing() for
3463 quick access to the most commonly needed data, the execution
3470 quick access to the most commonly needed data, the execution
3464 times. Old timing() renamed to timings_out().
3471 times. Old timing() renamed to timings_out().
3465
3472
3466 2002-07-18 Fernando Perez <fperez@colorado.edu>
3473 2002-07-18 Fernando Perez <fperez@colorado.edu>
3467
3474
3468 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3475 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3469 bug with nested instances disrupting the parent's tab completion.
3476 bug with nested instances disrupting the parent's tab completion.
3470
3477
3471 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3478 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3472 all_completions code to begin the emacs integration.
3479 all_completions code to begin the emacs integration.
3473
3480
3474 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3481 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3475 argument to allow titling individual arrays when plotting.
3482 argument to allow titling individual arrays when plotting.
3476
3483
3477 2002-07-15 Fernando Perez <fperez@colorado.edu>
3484 2002-07-15 Fernando Perez <fperez@colorado.edu>
3478
3485
3479 * setup.py (make_shortcut): changed to retrieve the value of
3486 * setup.py (make_shortcut): changed to retrieve the value of
3480 'Program Files' directory from the registry (this value changes in
3487 'Program Files' directory from the registry (this value changes in
3481 non-english versions of Windows). Thanks to Thomas Fanslau
3488 non-english versions of Windows). Thanks to Thomas Fanslau
3482 <tfanslau-AT-gmx.de> for the report.
3489 <tfanslau-AT-gmx.de> for the report.
3483
3490
3484 2002-07-10 Fernando Perez <fperez@colorado.edu>
3491 2002-07-10 Fernando Perez <fperez@colorado.edu>
3485
3492
3486 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3493 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3487 a bug in pdb, which crashes if a line with only whitespace is
3494 a bug in pdb, which crashes if a line with only whitespace is
3488 entered. Bug report submitted to sourceforge.
3495 entered. Bug report submitted to sourceforge.
3489
3496
3490 2002-07-09 Fernando Perez <fperez@colorado.edu>
3497 2002-07-09 Fernando Perez <fperez@colorado.edu>
3491
3498
3492 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3499 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3493 reporting exceptions (it's a bug in inspect.py, I just set a
3500 reporting exceptions (it's a bug in inspect.py, I just set a
3494 workaround).
3501 workaround).
3495
3502
3496 2002-07-08 Fernando Perez <fperez@colorado.edu>
3503 2002-07-08 Fernando Perez <fperez@colorado.edu>
3497
3504
3498 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3505 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3499 __IPYTHON__ in __builtins__ to show up in user_ns.
3506 __IPYTHON__ in __builtins__ to show up in user_ns.
3500
3507
3501 2002-07-03 Fernando Perez <fperez@colorado.edu>
3508 2002-07-03 Fernando Perez <fperez@colorado.edu>
3502
3509
3503 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3510 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3504 name from @gp_set_instance to @gp_set_default.
3511 name from @gp_set_instance to @gp_set_default.
3505
3512
3506 * IPython/ipmaker.py (make_IPython): default editor value set to
3513 * IPython/ipmaker.py (make_IPython): default editor value set to
3507 '0' (a string), to match the rc file. Otherwise will crash when
3514 '0' (a string), to match the rc file. Otherwise will crash when
3508 .strip() is called on it.
3515 .strip() is called on it.
3509
3516
3510
3517
3511 2002-06-28 Fernando Perez <fperez@colorado.edu>
3518 2002-06-28 Fernando Perez <fperez@colorado.edu>
3512
3519
3513 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3520 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3514 of files in current directory when a file is executed via
3521 of files in current directory when a file is executed via
3515 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3522 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3516
3523
3517 * setup.py (manfiles): fix for rpm builds, submitted by RA
3524 * setup.py (manfiles): fix for rpm builds, submitted by RA
3518 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3525 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3519
3526
3520 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3527 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3521 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3528 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3522 string!). A. Schmolck caught this one.
3529 string!). A. Schmolck caught this one.
3523
3530
3524 2002-06-27 Fernando Perez <fperez@colorado.edu>
3531 2002-06-27 Fernando Perez <fperez@colorado.edu>
3525
3532
3526 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3533 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3527 defined files at the cmd line. __name__ wasn't being set to
3534 defined files at the cmd line. __name__ wasn't being set to
3528 __main__.
3535 __main__.
3529
3536
3530 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3537 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3531 regular lists and tuples besides Numeric arrays.
3538 regular lists and tuples besides Numeric arrays.
3532
3539
3533 * IPython/Prompts.py (CachedOutput.__call__): Added output
3540 * IPython/Prompts.py (CachedOutput.__call__): Added output
3534 supression for input ending with ';'. Similar to Mathematica and
3541 supression for input ending with ';'. Similar to Mathematica and
3535 Matlab. The _* vars and Out[] list are still updated, just like
3542 Matlab. The _* vars and Out[] list are still updated, just like
3536 Mathematica behaves.
3543 Mathematica behaves.
3537
3544
3538 2002-06-25 Fernando Perez <fperez@colorado.edu>
3545 2002-06-25 Fernando Perez <fperez@colorado.edu>
3539
3546
3540 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3547 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3541 .ini extensions for profiels under Windows.
3548 .ini extensions for profiels under Windows.
3542
3549
3543 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3550 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3544 string form. Fix contributed by Alexander Schmolck
3551 string form. Fix contributed by Alexander Schmolck
3545 <a.schmolck-AT-gmx.net>
3552 <a.schmolck-AT-gmx.net>
3546
3553
3547 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3554 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3548 pre-configured Gnuplot instance.
3555 pre-configured Gnuplot instance.
3549
3556
3550 2002-06-21 Fernando Perez <fperez@colorado.edu>
3557 2002-06-21 Fernando Perez <fperez@colorado.edu>
3551
3558
3552 * IPython/numutils.py (exp_safe): new function, works around the
3559 * IPython/numutils.py (exp_safe): new function, works around the
3553 underflow problems in Numeric.
3560 underflow problems in Numeric.
3554 (log2): New fn. Safe log in base 2: returns exact integer answer
3561 (log2): New fn. Safe log in base 2: returns exact integer answer
3555 for exact integer powers of 2.
3562 for exact integer powers of 2.
3556
3563
3557 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3564 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3558 properly.
3565 properly.
3559
3566
3560 2002-06-20 Fernando Perez <fperez@colorado.edu>
3567 2002-06-20 Fernando Perez <fperez@colorado.edu>
3561
3568
3562 * IPython/genutils.py (timing): new function like
3569 * IPython/genutils.py (timing): new function like
3563 Mathematica's. Similar to time_test, but returns more info.
3570 Mathematica's. Similar to time_test, but returns more info.
3564
3571
3565 2002-06-18 Fernando Perez <fperez@colorado.edu>
3572 2002-06-18 Fernando Perez <fperez@colorado.edu>
3566
3573
3567 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3574 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3568 according to Mike Heeter's suggestions.
3575 according to Mike Heeter's suggestions.
3569
3576
3570 2002-06-16 Fernando Perez <fperez@colorado.edu>
3577 2002-06-16 Fernando Perez <fperez@colorado.edu>
3571
3578
3572 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3579 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3573 system. GnuplotMagic is gone as a user-directory option. New files
3580 system. GnuplotMagic is gone as a user-directory option. New files
3574 make it easier to use all the gnuplot stuff both from external
3581 make it easier to use all the gnuplot stuff both from external
3575 programs as well as from IPython. Had to rewrite part of
3582 programs as well as from IPython. Had to rewrite part of
3576 hardcopy() b/c of a strange bug: often the ps files simply don't
3583 hardcopy() b/c of a strange bug: often the ps files simply don't
3577 get created, and require a repeat of the command (often several
3584 get created, and require a repeat of the command (often several
3578 times).
3585 times).
3579
3586
3580 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3587 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3581 resolve output channel at call time, so that if sys.stderr has
3588 resolve output channel at call time, so that if sys.stderr has
3582 been redirected by user this gets honored.
3589 been redirected by user this gets honored.
3583
3590
3584 2002-06-13 Fernando Perez <fperez@colorado.edu>
3591 2002-06-13 Fernando Perez <fperez@colorado.edu>
3585
3592
3586 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3593 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3587 IPShell. Kept a copy with the old names to avoid breaking people's
3594 IPShell. Kept a copy with the old names to avoid breaking people's
3588 embedded code.
3595 embedded code.
3589
3596
3590 * IPython/ipython: simplified it to the bare minimum after
3597 * IPython/ipython: simplified it to the bare minimum after
3591 Holger's suggestions. Added info about how to use it in
3598 Holger's suggestions. Added info about how to use it in
3592 PYTHONSTARTUP.
3599 PYTHONSTARTUP.
3593
3600
3594 * IPython/Shell.py (IPythonShell): changed the options passing
3601 * IPython/Shell.py (IPythonShell): changed the options passing
3595 from a string with funky %s replacements to a straight list. Maybe
3602 from a string with funky %s replacements to a straight list. Maybe
3596 a bit more typing, but it follows sys.argv conventions, so there's
3603 a bit more typing, but it follows sys.argv conventions, so there's
3597 less special-casing to remember.
3604 less special-casing to remember.
3598
3605
3599 2002-06-12 Fernando Perez <fperez@colorado.edu>
3606 2002-06-12 Fernando Perez <fperez@colorado.edu>
3600
3607
3601 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3608 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3602 command. Thanks to a suggestion by Mike Heeter.
3609 command. Thanks to a suggestion by Mike Heeter.
3603 (Magic.magic_pfile): added behavior to look at filenames if given
3610 (Magic.magic_pfile): added behavior to look at filenames if given
3604 arg is not a defined object.
3611 arg is not a defined object.
3605 (Magic.magic_save): New @save function to save code snippets. Also
3612 (Magic.magic_save): New @save function to save code snippets. Also
3606 a Mike Heeter idea.
3613 a Mike Heeter idea.
3607
3614
3608 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3615 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3609 plot() and replot(). Much more convenient now, especially for
3616 plot() and replot(). Much more convenient now, especially for
3610 interactive use.
3617 interactive use.
3611
3618
3612 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3619 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3613 filenames.
3620 filenames.
3614
3621
3615 2002-06-02 Fernando Perez <fperez@colorado.edu>
3622 2002-06-02 Fernando Perez <fperez@colorado.edu>
3616
3623
3617 * IPython/Struct.py (Struct.__init__): modified to admit
3624 * IPython/Struct.py (Struct.__init__): modified to admit
3618 initialization via another struct.
3625 initialization via another struct.
3619
3626
3620 * IPython/genutils.py (SystemExec.__init__): New stateful
3627 * IPython/genutils.py (SystemExec.__init__): New stateful
3621 interface to xsys and bq. Useful for writing system scripts.
3628 interface to xsys and bq. Useful for writing system scripts.
3622
3629
3623 2002-05-30 Fernando Perez <fperez@colorado.edu>
3630 2002-05-30 Fernando Perez <fperez@colorado.edu>
3624
3631
3625 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3632 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3626 documents. This will make the user download smaller (it's getting
3633 documents. This will make the user download smaller (it's getting
3627 too big).
3634 too big).
3628
3635
3629 2002-05-29 Fernando Perez <fperez@colorado.edu>
3636 2002-05-29 Fernando Perez <fperez@colorado.edu>
3630
3637
3631 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3638 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3632 fix problems with shelve and pickle. Seems to work, but I don't
3639 fix problems with shelve and pickle. Seems to work, but I don't
3633 know if corner cases break it. Thanks to Mike Heeter
3640 know if corner cases break it. Thanks to Mike Heeter
3634 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3641 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3635
3642
3636 2002-05-24 Fernando Perez <fperez@colorado.edu>
3643 2002-05-24 Fernando Perez <fperez@colorado.edu>
3637
3644
3638 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3645 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3639 macros having broken.
3646 macros having broken.
3640
3647
3641 2002-05-21 Fernando Perez <fperez@colorado.edu>
3648 2002-05-21 Fernando Perez <fperez@colorado.edu>
3642
3649
3643 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3650 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3644 introduced logging bug: all history before logging started was
3651 introduced logging bug: all history before logging started was
3645 being written one character per line! This came from the redesign
3652 being written one character per line! This came from the redesign
3646 of the input history as a special list which slices to strings,
3653 of the input history as a special list which slices to strings,
3647 not to lists.
3654 not to lists.
3648
3655
3649 2002-05-20 Fernando Perez <fperez@colorado.edu>
3656 2002-05-20 Fernando Perez <fperez@colorado.edu>
3650
3657
3651 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3658 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3652 be an attribute of all classes in this module. The design of these
3659 be an attribute of all classes in this module. The design of these
3653 classes needs some serious overhauling.
3660 classes needs some serious overhauling.
3654
3661
3655 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3662 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3656 which was ignoring '_' in option names.
3663 which was ignoring '_' in option names.
3657
3664
3658 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3665 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3659 'Verbose_novars' to 'Context' and made it the new default. It's a
3666 'Verbose_novars' to 'Context' and made it the new default. It's a
3660 bit more readable and also safer than verbose.
3667 bit more readable and also safer than verbose.
3661
3668
3662 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3669 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3663 triple-quoted strings.
3670 triple-quoted strings.
3664
3671
3665 * IPython/OInspect.py (__all__): new module exposing the object
3672 * IPython/OInspect.py (__all__): new module exposing the object
3666 introspection facilities. Now the corresponding magics are dummy
3673 introspection facilities. Now the corresponding magics are dummy
3667 wrappers around this. Having this module will make it much easier
3674 wrappers around this. Having this module will make it much easier
3668 to put these functions into our modified pdb.
3675 to put these functions into our modified pdb.
3669 This new object inspector system uses the new colorizing module,
3676 This new object inspector system uses the new colorizing module,
3670 so source code and other things are nicely syntax highlighted.
3677 so source code and other things are nicely syntax highlighted.
3671
3678
3672 2002-05-18 Fernando Perez <fperez@colorado.edu>
3679 2002-05-18 Fernando Perez <fperez@colorado.edu>
3673
3680
3674 * IPython/ColorANSI.py: Split the coloring tools into a separate
3681 * IPython/ColorANSI.py: Split the coloring tools into a separate
3675 module so I can use them in other code easier (they were part of
3682 module so I can use them in other code easier (they were part of
3676 ultraTB).
3683 ultraTB).
3677
3684
3678 2002-05-17 Fernando Perez <fperez@colorado.edu>
3685 2002-05-17 Fernando Perez <fperez@colorado.edu>
3679
3686
3680 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3687 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3681 fixed it to set the global 'g' also to the called instance, as
3688 fixed it to set the global 'g' also to the called instance, as
3682 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3689 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3683 user's 'g' variables).
3690 user's 'g' variables).
3684
3691
3685 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3692 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3686 global variables (aliases to _ih,_oh) so that users which expect
3693 global variables (aliases to _ih,_oh) so that users which expect
3687 In[5] or Out[7] to work aren't unpleasantly surprised.
3694 In[5] or Out[7] to work aren't unpleasantly surprised.
3688 (InputList.__getslice__): new class to allow executing slices of
3695 (InputList.__getslice__): new class to allow executing slices of
3689 input history directly. Very simple class, complements the use of
3696 input history directly. Very simple class, complements the use of
3690 macros.
3697 macros.
3691
3698
3692 2002-05-16 Fernando Perez <fperez@colorado.edu>
3699 2002-05-16 Fernando Perez <fperez@colorado.edu>
3693
3700
3694 * setup.py (docdirbase): make doc directory be just doc/IPython
3701 * setup.py (docdirbase): make doc directory be just doc/IPython
3695 without version numbers, it will reduce clutter for users.
3702 without version numbers, it will reduce clutter for users.
3696
3703
3697 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3704 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3698 execfile call to prevent possible memory leak. See for details:
3705 execfile call to prevent possible memory leak. See for details:
3699 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3706 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3700
3707
3701 2002-05-15 Fernando Perez <fperez@colorado.edu>
3708 2002-05-15 Fernando Perez <fperez@colorado.edu>
3702
3709
3703 * IPython/Magic.py (Magic.magic_psource): made the object
3710 * IPython/Magic.py (Magic.magic_psource): made the object
3704 introspection names be more standard: pdoc, pdef, pfile and
3711 introspection names be more standard: pdoc, pdef, pfile and
3705 psource. They all print/page their output, and it makes
3712 psource. They all print/page their output, and it makes
3706 remembering them easier. Kept old names for compatibility as
3713 remembering them easier. Kept old names for compatibility as
3707 aliases.
3714 aliases.
3708
3715
3709 2002-05-14 Fernando Perez <fperez@colorado.edu>
3716 2002-05-14 Fernando Perez <fperez@colorado.edu>
3710
3717
3711 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3718 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3712 what the mouse problem was. The trick is to use gnuplot with temp
3719 what the mouse problem was. The trick is to use gnuplot with temp
3713 files and NOT with pipes (for data communication), because having
3720 files and NOT with pipes (for data communication), because having
3714 both pipes and the mouse on is bad news.
3721 both pipes and the mouse on is bad news.
3715
3722
3716 2002-05-13 Fernando Perez <fperez@colorado.edu>
3723 2002-05-13 Fernando Perez <fperez@colorado.edu>
3717
3724
3718 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3725 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3719 bug. Information would be reported about builtins even when
3726 bug. Information would be reported about builtins even when
3720 user-defined functions overrode them.
3727 user-defined functions overrode them.
3721
3728
3722 2002-05-11 Fernando Perez <fperez@colorado.edu>
3729 2002-05-11 Fernando Perez <fperez@colorado.edu>
3723
3730
3724 * IPython/__init__.py (__all__): removed FlexCompleter from
3731 * IPython/__init__.py (__all__): removed FlexCompleter from
3725 __all__ so that things don't fail in platforms without readline.
3732 __all__ so that things don't fail in platforms without readline.
3726
3733
3727 2002-05-10 Fernando Perez <fperez@colorado.edu>
3734 2002-05-10 Fernando Perez <fperez@colorado.edu>
3728
3735
3729 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3736 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3730 it requires Numeric, effectively making Numeric a dependency for
3737 it requires Numeric, effectively making Numeric a dependency for
3731 IPython.
3738 IPython.
3732
3739
3733 * Released 0.2.13
3740 * Released 0.2.13
3734
3741
3735 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3742 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3736 profiler interface. Now all the major options from the profiler
3743 profiler interface. Now all the major options from the profiler
3737 module are directly supported in IPython, both for single
3744 module are directly supported in IPython, both for single
3738 expressions (@prun) and for full programs (@run -p).
3745 expressions (@prun) and for full programs (@run -p).
3739
3746
3740 2002-05-09 Fernando Perez <fperez@colorado.edu>
3747 2002-05-09 Fernando Perez <fperez@colorado.edu>
3741
3748
3742 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3749 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3743 magic properly formatted for screen.
3750 magic properly formatted for screen.
3744
3751
3745 * setup.py (make_shortcut): Changed things to put pdf version in
3752 * setup.py (make_shortcut): Changed things to put pdf version in
3746 doc/ instead of doc/manual (had to change lyxport a bit).
3753 doc/ instead of doc/manual (had to change lyxport a bit).
3747
3754
3748 * IPython/Magic.py (Profile.string_stats): made profile runs go
3755 * IPython/Magic.py (Profile.string_stats): made profile runs go
3749 through pager (they are long and a pager allows searching, saving,
3756 through pager (they are long and a pager allows searching, saving,
3750 etc.)
3757 etc.)
3751
3758
3752 2002-05-08 Fernando Perez <fperez@colorado.edu>
3759 2002-05-08 Fernando Perez <fperez@colorado.edu>
3753
3760
3754 * Released 0.2.12
3761 * Released 0.2.12
3755
3762
3756 2002-05-06 Fernando Perez <fperez@colorado.edu>
3763 2002-05-06 Fernando Perez <fperez@colorado.edu>
3757
3764
3758 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3765 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3759 introduced); 'hist n1 n2' was broken.
3766 introduced); 'hist n1 n2' was broken.
3760 (Magic.magic_pdb): added optional on/off arguments to @pdb
3767 (Magic.magic_pdb): added optional on/off arguments to @pdb
3761 (Magic.magic_run): added option -i to @run, which executes code in
3768 (Magic.magic_run): added option -i to @run, which executes code in
3762 the IPython namespace instead of a clean one. Also added @irun as
3769 the IPython namespace instead of a clean one. Also added @irun as
3763 an alias to @run -i.
3770 an alias to @run -i.
3764
3771
3765 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3772 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3766 fixed (it didn't really do anything, the namespaces were wrong).
3773 fixed (it didn't really do anything, the namespaces were wrong).
3767
3774
3768 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3775 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3769
3776
3770 * IPython/__init__.py (__all__): Fixed package namespace, now
3777 * IPython/__init__.py (__all__): Fixed package namespace, now
3771 'import IPython' does give access to IPython.<all> as
3778 'import IPython' does give access to IPython.<all> as
3772 expected. Also renamed __release__ to Release.
3779 expected. Also renamed __release__ to Release.
3773
3780
3774 * IPython/Debugger.py (__license__): created new Pdb class which
3781 * IPython/Debugger.py (__license__): created new Pdb class which
3775 functions like a drop-in for the normal pdb.Pdb but does NOT
3782 functions like a drop-in for the normal pdb.Pdb but does NOT
3776 import readline by default. This way it doesn't muck up IPython's
3783 import readline by default. This way it doesn't muck up IPython's
3777 readline handling, and now tab-completion finally works in the
3784 readline handling, and now tab-completion finally works in the
3778 debugger -- sort of. It completes things globally visible, but the
3785 debugger -- sort of. It completes things globally visible, but the
3779 completer doesn't track the stack as pdb walks it. That's a bit
3786 completer doesn't track the stack as pdb walks it. That's a bit
3780 tricky, and I'll have to implement it later.
3787 tricky, and I'll have to implement it later.
3781
3788
3782 2002-05-05 Fernando Perez <fperez@colorado.edu>
3789 2002-05-05 Fernando Perez <fperez@colorado.edu>
3783
3790
3784 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3791 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3785 magic docstrings when printed via ? (explicit \'s were being
3792 magic docstrings when printed via ? (explicit \'s were being
3786 printed).
3793 printed).
3787
3794
3788 * IPython/ipmaker.py (make_IPython): fixed namespace
3795 * IPython/ipmaker.py (make_IPython): fixed namespace
3789 identification bug. Now variables loaded via logs or command-line
3796 identification bug. Now variables loaded via logs or command-line
3790 files are recognized in the interactive namespace by @who.
3797 files are recognized in the interactive namespace by @who.
3791
3798
3792 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3799 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3793 log replay system stemming from the string form of Structs.
3800 log replay system stemming from the string form of Structs.
3794
3801
3795 * IPython/Magic.py (Macro.__init__): improved macros to properly
3802 * IPython/Magic.py (Macro.__init__): improved macros to properly
3796 handle magic commands in them.
3803 handle magic commands in them.
3797 (Magic.magic_logstart): usernames are now expanded so 'logstart
3804 (Magic.magic_logstart): usernames are now expanded so 'logstart
3798 ~/mylog' now works.
3805 ~/mylog' now works.
3799
3806
3800 * IPython/iplib.py (complete): fixed bug where paths starting with
3807 * IPython/iplib.py (complete): fixed bug where paths starting with
3801 '/' would be completed as magic names.
3808 '/' would be completed as magic names.
3802
3809
3803 2002-05-04 Fernando Perez <fperez@colorado.edu>
3810 2002-05-04 Fernando Perez <fperez@colorado.edu>
3804
3811
3805 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
3812 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
3806 allow running full programs under the profiler's control.
3813 allow running full programs under the profiler's control.
3807
3814
3808 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
3815 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
3809 mode to report exceptions verbosely but without formatting
3816 mode to report exceptions verbosely but without formatting
3810 variables. This addresses the issue of ipython 'freezing' (it's
3817 variables. This addresses the issue of ipython 'freezing' (it's
3811 not frozen, but caught in an expensive formatting loop) when huge
3818 not frozen, but caught in an expensive formatting loop) when huge
3812 variables are in the context of an exception.
3819 variables are in the context of an exception.
3813 (VerboseTB.text): Added '--->' markers at line where exception was
3820 (VerboseTB.text): Added '--->' markers at line where exception was
3814 triggered. Much clearer to read, especially in NoColor modes.
3821 triggered. Much clearer to read, especially in NoColor modes.
3815
3822
3816 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
3823 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
3817 implemented in reverse when changing to the new parse_options().
3824 implemented in reverse when changing to the new parse_options().
3818
3825
3819 2002-05-03 Fernando Perez <fperez@colorado.edu>
3826 2002-05-03 Fernando Perez <fperez@colorado.edu>
3820
3827
3821 * IPython/Magic.py (Magic.parse_options): new function so that
3828 * IPython/Magic.py (Magic.parse_options): new function so that
3822 magics can parse options easier.
3829 magics can parse options easier.
3823 (Magic.magic_prun): new function similar to profile.run(),
3830 (Magic.magic_prun): new function similar to profile.run(),
3824 suggested by Chris Hart.
3831 suggested by Chris Hart.
3825 (Magic.magic_cd): fixed behavior so that it only changes if
3832 (Magic.magic_cd): fixed behavior so that it only changes if
3826 directory actually is in history.
3833 directory actually is in history.
3827
3834
3828 * IPython/usage.py (__doc__): added information about potential
3835 * IPython/usage.py (__doc__): added information about potential
3829 slowness of Verbose exception mode when there are huge data
3836 slowness of Verbose exception mode when there are huge data
3830 structures to be formatted (thanks to Archie Paulson).
3837 structures to be formatted (thanks to Archie Paulson).
3831
3838
3832 * IPython/ipmaker.py (make_IPython): Changed default logging
3839 * IPython/ipmaker.py (make_IPython): Changed default logging
3833 (when simply called with -log) to use curr_dir/ipython.log in
3840 (when simply called with -log) to use curr_dir/ipython.log in
3834 rotate mode. Fixed crash which was occuring with -log before
3841 rotate mode. Fixed crash which was occuring with -log before
3835 (thanks to Jim Boyle).
3842 (thanks to Jim Boyle).
3836
3843
3837 2002-05-01 Fernando Perez <fperez@colorado.edu>
3844 2002-05-01 Fernando Perez <fperez@colorado.edu>
3838
3845
3839 * Released 0.2.11 for these fixes (mainly the ultraTB one which
3846 * Released 0.2.11 for these fixes (mainly the ultraTB one which
3840 was nasty -- though somewhat of a corner case).
3847 was nasty -- though somewhat of a corner case).
3841
3848
3842 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
3849 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
3843 text (was a bug).
3850 text (was a bug).
3844
3851
3845 2002-04-30 Fernando Perez <fperez@colorado.edu>
3852 2002-04-30 Fernando Perez <fperez@colorado.edu>
3846
3853
3847 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
3854 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
3848 a print after ^D or ^C from the user so that the In[] prompt
3855 a print after ^D or ^C from the user so that the In[] prompt
3849 doesn't over-run the gnuplot one.
3856 doesn't over-run the gnuplot one.
3850
3857
3851 2002-04-29 Fernando Perez <fperez@colorado.edu>
3858 2002-04-29 Fernando Perez <fperez@colorado.edu>
3852
3859
3853 * Released 0.2.10
3860 * Released 0.2.10
3854
3861
3855 * IPython/__release__.py (version): get date dynamically.
3862 * IPython/__release__.py (version): get date dynamically.
3856
3863
3857 * Misc. documentation updates thanks to Arnd's comments. Also ran
3864 * Misc. documentation updates thanks to Arnd's comments. Also ran
3858 a full spellcheck on the manual (hadn't been done in a while).
3865 a full spellcheck on the manual (hadn't been done in a while).
3859
3866
3860 2002-04-27 Fernando Perez <fperez@colorado.edu>
3867 2002-04-27 Fernando Perez <fperez@colorado.edu>
3861
3868
3862 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
3869 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
3863 starting a log in mid-session would reset the input history list.
3870 starting a log in mid-session would reset the input history list.
3864
3871
3865 2002-04-26 Fernando Perez <fperez@colorado.edu>
3872 2002-04-26 Fernando Perez <fperez@colorado.edu>
3866
3873
3867 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
3874 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
3868 all files were being included in an update. Now anything in
3875 all files were being included in an update. Now anything in
3869 UserConfig that matches [A-Za-z]*.py will go (this excludes
3876 UserConfig that matches [A-Za-z]*.py will go (this excludes
3870 __init__.py)
3877 __init__.py)
3871
3878
3872 2002-04-25 Fernando Perez <fperez@colorado.edu>
3879 2002-04-25 Fernando Perez <fperez@colorado.edu>
3873
3880
3874 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
3881 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
3875 to __builtins__ so that any form of embedded or imported code can
3882 to __builtins__ so that any form of embedded or imported code can
3876 test for being inside IPython.
3883 test for being inside IPython.
3877
3884
3878 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
3885 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
3879 changed to GnuplotMagic because it's now an importable module,
3886 changed to GnuplotMagic because it's now an importable module,
3880 this makes the name follow that of the standard Gnuplot module.
3887 this makes the name follow that of the standard Gnuplot module.
3881 GnuplotMagic can now be loaded at any time in mid-session.
3888 GnuplotMagic can now be loaded at any time in mid-session.
3882
3889
3883 2002-04-24 Fernando Perez <fperez@colorado.edu>
3890 2002-04-24 Fernando Perez <fperez@colorado.edu>
3884
3891
3885 * IPython/numutils.py: removed SIUnits. It doesn't properly set
3892 * IPython/numutils.py: removed SIUnits. It doesn't properly set
3886 the globals (IPython has its own namespace) and the
3893 the globals (IPython has its own namespace) and the
3887 PhysicalQuantity stuff is much better anyway.
3894 PhysicalQuantity stuff is much better anyway.
3888
3895
3889 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
3896 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
3890 embedding example to standard user directory for
3897 embedding example to standard user directory for
3891 distribution. Also put it in the manual.
3898 distribution. Also put it in the manual.
3892
3899
3893 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
3900 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
3894 instance as first argument (so it doesn't rely on some obscure
3901 instance as first argument (so it doesn't rely on some obscure
3895 hidden global).
3902 hidden global).
3896
3903
3897 * IPython/UserConfig/ipythonrc.py: put () back in accepted
3904 * IPython/UserConfig/ipythonrc.py: put () back in accepted
3898 delimiters. While it prevents ().TAB from working, it allows
3905 delimiters. While it prevents ().TAB from working, it allows
3899 completions in open (... expressions. This is by far a more common
3906 completions in open (... expressions. This is by far a more common
3900 case.
3907 case.
3901
3908
3902 2002-04-23 Fernando Perez <fperez@colorado.edu>
3909 2002-04-23 Fernando Perez <fperez@colorado.edu>
3903
3910
3904 * IPython/Extensions/InterpreterPasteInput.py: new
3911 * IPython/Extensions/InterpreterPasteInput.py: new
3905 syntax-processing module for pasting lines with >>> or ... at the
3912 syntax-processing module for pasting lines with >>> or ... at the
3906 start.
3913 start.
3907
3914
3908 * IPython/Extensions/PhysicalQ_Interactive.py
3915 * IPython/Extensions/PhysicalQ_Interactive.py
3909 (PhysicalQuantityInteractive.__int__): fixed to work with either
3916 (PhysicalQuantityInteractive.__int__): fixed to work with either
3910 Numeric or math.
3917 Numeric or math.
3911
3918
3912 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
3919 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
3913 provided profiles. Now we have:
3920 provided profiles. Now we have:
3914 -math -> math module as * and cmath with its own namespace.
3921 -math -> math module as * and cmath with its own namespace.
3915 -numeric -> Numeric as *, plus gnuplot & grace
3922 -numeric -> Numeric as *, plus gnuplot & grace
3916 -physics -> same as before
3923 -physics -> same as before
3917
3924
3918 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
3925 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
3919 user-defined magics wouldn't be found by @magic if they were
3926 user-defined magics wouldn't be found by @magic if they were
3920 defined as class methods. Also cleaned up the namespace search
3927 defined as class methods. Also cleaned up the namespace search
3921 logic and the string building (to use %s instead of many repeated
3928 logic and the string building (to use %s instead of many repeated
3922 string adds).
3929 string adds).
3923
3930
3924 * IPython/UserConfig/example-magic.py (magic_foo): updated example
3931 * IPython/UserConfig/example-magic.py (magic_foo): updated example
3925 of user-defined magics to operate with class methods (cleaner, in
3932 of user-defined magics to operate with class methods (cleaner, in
3926 line with the gnuplot code).
3933 line with the gnuplot code).
3927
3934
3928 2002-04-22 Fernando Perez <fperez@colorado.edu>
3935 2002-04-22 Fernando Perez <fperez@colorado.edu>
3929
3936
3930 * setup.py: updated dependency list so that manual is updated when
3937 * setup.py: updated dependency list so that manual is updated when
3931 all included files change.
3938 all included files change.
3932
3939
3933 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
3940 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
3934 the delimiter removal option (the fix is ugly right now).
3941 the delimiter removal option (the fix is ugly right now).
3935
3942
3936 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
3943 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
3937 all of the math profile (quicker loading, no conflict between
3944 all of the math profile (quicker loading, no conflict between
3938 g-9.8 and g-gnuplot).
3945 g-9.8 and g-gnuplot).
3939
3946
3940 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
3947 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
3941 name of post-mortem files to IPython_crash_report.txt.
3948 name of post-mortem files to IPython_crash_report.txt.
3942
3949
3943 * Cleanup/update of the docs. Added all the new readline info and
3950 * Cleanup/update of the docs. Added all the new readline info and
3944 formatted all lists as 'real lists'.
3951 formatted all lists as 'real lists'.
3945
3952
3946 * IPython/ipmaker.py (make_IPython): removed now-obsolete
3953 * IPython/ipmaker.py (make_IPython): removed now-obsolete
3947 tab-completion options, since the full readline parse_and_bind is
3954 tab-completion options, since the full readline parse_and_bind is
3948 now accessible.
3955 now accessible.
3949
3956
3950 * IPython/iplib.py (InteractiveShell.init_readline): Changed
3957 * IPython/iplib.py (InteractiveShell.init_readline): Changed
3951 handling of readline options. Now users can specify any string to
3958 handling of readline options. Now users can specify any string to
3952 be passed to parse_and_bind(), as well as the delimiters to be
3959 be passed to parse_and_bind(), as well as the delimiters to be
3953 removed.
3960 removed.
3954 (InteractiveShell.__init__): Added __name__ to the global
3961 (InteractiveShell.__init__): Added __name__ to the global
3955 namespace so that things like Itpl which rely on its existence
3962 namespace so that things like Itpl which rely on its existence
3956 don't crash.
3963 don't crash.
3957 (InteractiveShell._prefilter): Defined the default with a _ so
3964 (InteractiveShell._prefilter): Defined the default with a _ so
3958 that prefilter() is easier to override, while the default one
3965 that prefilter() is easier to override, while the default one
3959 remains available.
3966 remains available.
3960
3967
3961 2002-04-18 Fernando Perez <fperez@colorado.edu>
3968 2002-04-18 Fernando Perez <fperez@colorado.edu>
3962
3969
3963 * Added information about pdb in the docs.
3970 * Added information about pdb in the docs.
3964
3971
3965 2002-04-17 Fernando Perez <fperez@colorado.edu>
3972 2002-04-17 Fernando Perez <fperez@colorado.edu>
3966
3973
3967 * IPython/ipmaker.py (make_IPython): added rc_override option to
3974 * IPython/ipmaker.py (make_IPython): added rc_override option to
3968 allow passing config options at creation time which may override
3975 allow passing config options at creation time which may override
3969 anything set in the config files or command line. This is
3976 anything set in the config files or command line. This is
3970 particularly useful for configuring embedded instances.
3977 particularly useful for configuring embedded instances.
3971
3978
3972 2002-04-15 Fernando Perez <fperez@colorado.edu>
3979 2002-04-15 Fernando Perez <fperez@colorado.edu>
3973
3980
3974 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
3981 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
3975 crash embedded instances because of the input cache falling out of
3982 crash embedded instances because of the input cache falling out of
3976 sync with the output counter.
3983 sync with the output counter.
3977
3984
3978 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
3985 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
3979 mode which calls pdb after an uncaught exception in IPython itself.
3986 mode which calls pdb after an uncaught exception in IPython itself.
3980
3987
3981 2002-04-14 Fernando Perez <fperez@colorado.edu>
3988 2002-04-14 Fernando Perez <fperez@colorado.edu>
3982
3989
3983 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
3990 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
3984 readline, fix it back after each call.
3991 readline, fix it back after each call.
3985
3992
3986 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
3993 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
3987 method to force all access via __call__(), which guarantees that
3994 method to force all access via __call__(), which guarantees that
3988 traceback references are properly deleted.
3995 traceback references are properly deleted.
3989
3996
3990 * IPython/Prompts.py (CachedOutput._display): minor fixes to
3997 * IPython/Prompts.py (CachedOutput._display): minor fixes to
3991 improve printing when pprint is in use.
3998 improve printing when pprint is in use.
3992
3999
3993 2002-04-13 Fernando Perez <fperez@colorado.edu>
4000 2002-04-13 Fernando Perez <fperez@colorado.edu>
3994
4001
3995 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4002 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
3996 exceptions aren't caught anymore. If the user triggers one, he
4003 exceptions aren't caught anymore. If the user triggers one, he
3997 should know why he's doing it and it should go all the way up,
4004 should know why he's doing it and it should go all the way up,
3998 just like any other exception. So now @abort will fully kill the
4005 just like any other exception. So now @abort will fully kill the
3999 embedded interpreter and the embedding code (unless that happens
4006 embedded interpreter and the embedding code (unless that happens
4000 to catch SystemExit).
4007 to catch SystemExit).
4001
4008
4002 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4009 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4003 and a debugger() method to invoke the interactive pdb debugger
4010 and a debugger() method to invoke the interactive pdb debugger
4004 after printing exception information. Also added the corresponding
4011 after printing exception information. Also added the corresponding
4005 -pdb option and @pdb magic to control this feature, and updated
4012 -pdb option and @pdb magic to control this feature, and updated
4006 the docs. After a suggestion from Christopher Hart
4013 the docs. After a suggestion from Christopher Hart
4007 (hart-AT-caltech.edu).
4014 (hart-AT-caltech.edu).
4008
4015
4009 2002-04-12 Fernando Perez <fperez@colorado.edu>
4016 2002-04-12 Fernando Perez <fperez@colorado.edu>
4010
4017
4011 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4018 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4012 the exception handlers defined by the user (not the CrashHandler)
4019 the exception handlers defined by the user (not the CrashHandler)
4013 so that user exceptions don't trigger an ipython bug report.
4020 so that user exceptions don't trigger an ipython bug report.
4014
4021
4015 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4022 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4016 configurable (it should have always been so).
4023 configurable (it should have always been so).
4017
4024
4018 2002-03-26 Fernando Perez <fperez@colorado.edu>
4025 2002-03-26 Fernando Perez <fperez@colorado.edu>
4019
4026
4020 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4027 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4021 and there to fix embedding namespace issues. This should all be
4028 and there to fix embedding namespace issues. This should all be
4022 done in a more elegant way.
4029 done in a more elegant way.
4023
4030
4024 2002-03-25 Fernando Perez <fperez@colorado.edu>
4031 2002-03-25 Fernando Perez <fperez@colorado.edu>
4025
4032
4026 * IPython/genutils.py (get_home_dir): Try to make it work under
4033 * IPython/genutils.py (get_home_dir): Try to make it work under
4027 win9x also.
4034 win9x also.
4028
4035
4029 2002-03-20 Fernando Perez <fperez@colorado.edu>
4036 2002-03-20 Fernando Perez <fperez@colorado.edu>
4030
4037
4031 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4038 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4032 sys.displayhook untouched upon __init__.
4039 sys.displayhook untouched upon __init__.
4033
4040
4034 2002-03-19 Fernando Perez <fperez@colorado.edu>
4041 2002-03-19 Fernando Perez <fperez@colorado.edu>
4035
4042
4036 * Released 0.2.9 (for embedding bug, basically).
4043 * Released 0.2.9 (for embedding bug, basically).
4037
4044
4038 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4045 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4039 exceptions so that enclosing shell's state can be restored.
4046 exceptions so that enclosing shell's state can be restored.
4040
4047
4041 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4048 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4042 naming conventions in the .ipython/ dir.
4049 naming conventions in the .ipython/ dir.
4043
4050
4044 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4051 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4045 from delimiters list so filenames with - in them get expanded.
4052 from delimiters list so filenames with - in them get expanded.
4046
4053
4047 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4054 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4048 sys.displayhook not being properly restored after an embedded call.
4055 sys.displayhook not being properly restored after an embedded call.
4049
4056
4050 2002-03-18 Fernando Perez <fperez@colorado.edu>
4057 2002-03-18 Fernando Perez <fperez@colorado.edu>
4051
4058
4052 * Released 0.2.8
4059 * Released 0.2.8
4053
4060
4054 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4061 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4055 some files weren't being included in a -upgrade.
4062 some files weren't being included in a -upgrade.
4056 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4063 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4057 on' so that the first tab completes.
4064 on' so that the first tab completes.
4058 (InteractiveShell.handle_magic): fixed bug with spaces around
4065 (InteractiveShell.handle_magic): fixed bug with spaces around
4059 quotes breaking many magic commands.
4066 quotes breaking many magic commands.
4060
4067
4061 * setup.py: added note about ignoring the syntax error messages at
4068 * setup.py: added note about ignoring the syntax error messages at
4062 installation.
4069 installation.
4063
4070
4064 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4071 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4065 streamlining the gnuplot interface, now there's only one magic @gp.
4072 streamlining the gnuplot interface, now there's only one magic @gp.
4066
4073
4067 2002-03-17 Fernando Perez <fperez@colorado.edu>
4074 2002-03-17 Fernando Perez <fperez@colorado.edu>
4068
4075
4069 * IPython/UserConfig/magic_gnuplot.py: new name for the
4076 * IPython/UserConfig/magic_gnuplot.py: new name for the
4070 example-magic_pm.py file. Much enhanced system, now with a shell
4077 example-magic_pm.py file. Much enhanced system, now with a shell
4071 for communicating directly with gnuplot, one command at a time.
4078 for communicating directly with gnuplot, one command at a time.
4072
4079
4073 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4080 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4074 setting __name__=='__main__'.
4081 setting __name__=='__main__'.
4075
4082
4076 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4083 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4077 mini-shell for accessing gnuplot from inside ipython. Should
4084 mini-shell for accessing gnuplot from inside ipython. Should
4078 extend it later for grace access too. Inspired by Arnd's
4085 extend it later for grace access too. Inspired by Arnd's
4079 suggestion.
4086 suggestion.
4080
4087
4081 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4088 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4082 calling magic functions with () in their arguments. Thanks to Arnd
4089 calling magic functions with () in their arguments. Thanks to Arnd
4083 Baecker for pointing this to me.
4090 Baecker for pointing this to me.
4084
4091
4085 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4092 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4086 infinitely for integer or complex arrays (only worked with floats).
4093 infinitely for integer or complex arrays (only worked with floats).
4087
4094
4088 2002-03-16 Fernando Perez <fperez@colorado.edu>
4095 2002-03-16 Fernando Perez <fperez@colorado.edu>
4089
4096
4090 * setup.py: Merged setup and setup_windows into a single script
4097 * setup.py: Merged setup and setup_windows into a single script
4091 which properly handles things for windows users.
4098 which properly handles things for windows users.
4092
4099
4093 2002-03-15 Fernando Perez <fperez@colorado.edu>
4100 2002-03-15 Fernando Perez <fperez@colorado.edu>
4094
4101
4095 * Big change to the manual: now the magics are all automatically
4102 * Big change to the manual: now the magics are all automatically
4096 documented. This information is generated from their docstrings
4103 documented. This information is generated from their docstrings
4097 and put in a latex file included by the manual lyx file. This way
4104 and put in a latex file included by the manual lyx file. This way
4098 we get always up to date information for the magics. The manual
4105 we get always up to date information for the magics. The manual
4099 now also has proper version information, also auto-synced.
4106 now also has proper version information, also auto-synced.
4100
4107
4101 For this to work, an undocumented --magic_docstrings option was added.
4108 For this to work, an undocumented --magic_docstrings option was added.
4102
4109
4103 2002-03-13 Fernando Perez <fperez@colorado.edu>
4110 2002-03-13 Fernando Perez <fperez@colorado.edu>
4104
4111
4105 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4112 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4106 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4113 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4107
4114
4108 2002-03-12 Fernando Perez <fperez@colorado.edu>
4115 2002-03-12 Fernando Perez <fperez@colorado.edu>
4109
4116
4110 * IPython/ultraTB.py (TermColors): changed color escapes again to
4117 * IPython/ultraTB.py (TermColors): changed color escapes again to
4111 fix the (old, reintroduced) line-wrapping bug. Basically, if
4118 fix the (old, reintroduced) line-wrapping bug. Basically, if
4112 \001..\002 aren't given in the color escapes, lines get wrapped
4119 \001..\002 aren't given in the color escapes, lines get wrapped
4113 weirdly. But giving those screws up old xterms and emacs terms. So
4120 weirdly. But giving those screws up old xterms and emacs terms. So
4114 I added some logic for emacs terms to be ok, but I can't identify old
4121 I added some logic for emacs terms to be ok, but I can't identify old
4115 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4122 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4116
4123
4117 2002-03-10 Fernando Perez <fperez@colorado.edu>
4124 2002-03-10 Fernando Perez <fperez@colorado.edu>
4118
4125
4119 * IPython/usage.py (__doc__): Various documentation cleanups and
4126 * IPython/usage.py (__doc__): Various documentation cleanups and
4120 updates, both in usage docstrings and in the manual.
4127 updates, both in usage docstrings and in the manual.
4121
4128
4122 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4129 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4123 handling of caching. Set minimum acceptabe value for having a
4130 handling of caching. Set minimum acceptabe value for having a
4124 cache at 20 values.
4131 cache at 20 values.
4125
4132
4126 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4133 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4127 install_first_time function to a method, renamed it and added an
4134 install_first_time function to a method, renamed it and added an
4128 'upgrade' mode. Now people can update their config directory with
4135 'upgrade' mode. Now people can update their config directory with
4129 a simple command line switch (-upgrade, also new).
4136 a simple command line switch (-upgrade, also new).
4130
4137
4131 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4138 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4132 @file (convenient for automagic users under Python >= 2.2).
4139 @file (convenient for automagic users under Python >= 2.2).
4133 Removed @files (it seemed more like a plural than an abbrev. of
4140 Removed @files (it seemed more like a plural than an abbrev. of
4134 'file show').
4141 'file show').
4135
4142
4136 * IPython/iplib.py (install_first_time): Fixed crash if there were
4143 * IPython/iplib.py (install_first_time): Fixed crash if there were
4137 backup files ('~') in .ipython/ install directory.
4144 backup files ('~') in .ipython/ install directory.
4138
4145
4139 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4146 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4140 system. Things look fine, but these changes are fairly
4147 system. Things look fine, but these changes are fairly
4141 intrusive. Test them for a few days.
4148 intrusive. Test them for a few days.
4142
4149
4143 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4150 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4144 the prompts system. Now all in/out prompt strings are user
4151 the prompts system. Now all in/out prompt strings are user
4145 controllable. This is particularly useful for embedding, as one
4152 controllable. This is particularly useful for embedding, as one
4146 can tag embedded instances with particular prompts.
4153 can tag embedded instances with particular prompts.
4147
4154
4148 Also removed global use of sys.ps1/2, which now allows nested
4155 Also removed global use of sys.ps1/2, which now allows nested
4149 embeddings without any problems. Added command-line options for
4156 embeddings without any problems. Added command-line options for
4150 the prompt strings.
4157 the prompt strings.
4151
4158
4152 2002-03-08 Fernando Perez <fperez@colorado.edu>
4159 2002-03-08 Fernando Perez <fperez@colorado.edu>
4153
4160
4154 * IPython/UserConfig/example-embed-short.py (ipshell): added
4161 * IPython/UserConfig/example-embed-short.py (ipshell): added
4155 example file with the bare minimum code for embedding.
4162 example file with the bare minimum code for embedding.
4156
4163
4157 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4164 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4158 functionality for the embeddable shell to be activated/deactivated
4165 functionality for the embeddable shell to be activated/deactivated
4159 either globally or at each call.
4166 either globally or at each call.
4160
4167
4161 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4168 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4162 rewriting the prompt with '--->' for auto-inputs with proper
4169 rewriting the prompt with '--->' for auto-inputs with proper
4163 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4170 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4164 this is handled by the prompts class itself, as it should.
4171 this is handled by the prompts class itself, as it should.
4165
4172
4166 2002-03-05 Fernando Perez <fperez@colorado.edu>
4173 2002-03-05 Fernando Perez <fperez@colorado.edu>
4167
4174
4168 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4175 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4169 @logstart to avoid name clashes with the math log function.
4176 @logstart to avoid name clashes with the math log function.
4170
4177
4171 * Big updates to X/Emacs section of the manual.
4178 * Big updates to X/Emacs section of the manual.
4172
4179
4173 * Removed ipython_emacs. Milan explained to me how to pass
4180 * Removed ipython_emacs. Milan explained to me how to pass
4174 arguments to ipython through Emacs. Some day I'm going to end up
4181 arguments to ipython through Emacs. Some day I'm going to end up
4175 learning some lisp...
4182 learning some lisp...
4176
4183
4177 2002-03-04 Fernando Perez <fperez@colorado.edu>
4184 2002-03-04 Fernando Perez <fperez@colorado.edu>
4178
4185
4179 * IPython/ipython_emacs: Created script to be used as the
4186 * IPython/ipython_emacs: Created script to be used as the
4180 py-python-command Emacs variable so we can pass IPython
4187 py-python-command Emacs variable so we can pass IPython
4181 parameters. I can't figure out how to tell Emacs directly to pass
4188 parameters. I can't figure out how to tell Emacs directly to pass
4182 parameters to IPython, so a dummy shell script will do it.
4189 parameters to IPython, so a dummy shell script will do it.
4183
4190
4184 Other enhancements made for things to work better under Emacs'
4191 Other enhancements made for things to work better under Emacs'
4185 various types of terminals. Many thanks to Milan Zamazal
4192 various types of terminals. Many thanks to Milan Zamazal
4186 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4193 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4187
4194
4188 2002-03-01 Fernando Perez <fperez@colorado.edu>
4195 2002-03-01 Fernando Perez <fperez@colorado.edu>
4189
4196
4190 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4197 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4191 that loading of readline is now optional. This gives better
4198 that loading of readline is now optional. This gives better
4192 control to emacs users.
4199 control to emacs users.
4193
4200
4194 * IPython/ultraTB.py (__date__): Modified color escape sequences
4201 * IPython/ultraTB.py (__date__): Modified color escape sequences
4195 and now things work fine under xterm and in Emacs' term buffers
4202 and now things work fine under xterm and in Emacs' term buffers
4196 (though not shell ones). Well, in emacs you get colors, but all
4203 (though not shell ones). Well, in emacs you get colors, but all
4197 seem to be 'light' colors (no difference between dark and light
4204 seem to be 'light' colors (no difference between dark and light
4198 ones). But the garbage chars are gone, and also in xterms. It
4205 ones). But the garbage chars are gone, and also in xterms. It
4199 seems that now I'm using 'cleaner' ansi sequences.
4206 seems that now I'm using 'cleaner' ansi sequences.
4200
4207
4201 2002-02-21 Fernando Perez <fperez@colorado.edu>
4208 2002-02-21 Fernando Perez <fperez@colorado.edu>
4202
4209
4203 * Released 0.2.7 (mainly to publish the scoping fix).
4210 * Released 0.2.7 (mainly to publish the scoping fix).
4204
4211
4205 * IPython/Logger.py (Logger.logstate): added. A corresponding
4212 * IPython/Logger.py (Logger.logstate): added. A corresponding
4206 @logstate magic was created.
4213 @logstate magic was created.
4207
4214
4208 * IPython/Magic.py: fixed nested scoping problem under Python
4215 * IPython/Magic.py: fixed nested scoping problem under Python
4209 2.1.x (automagic wasn't working).
4216 2.1.x (automagic wasn't working).
4210
4217
4211 2002-02-20 Fernando Perez <fperez@colorado.edu>
4218 2002-02-20 Fernando Perez <fperez@colorado.edu>
4212
4219
4213 * Released 0.2.6.
4220 * Released 0.2.6.
4214
4221
4215 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4222 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4216 option so that logs can come out without any headers at all.
4223 option so that logs can come out without any headers at all.
4217
4224
4218 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4225 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4219 SciPy.
4226 SciPy.
4220
4227
4221 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4228 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4222 that embedded IPython calls don't require vars() to be explicitly
4229 that embedded IPython calls don't require vars() to be explicitly
4223 passed. Now they are extracted from the caller's frame (code
4230 passed. Now they are extracted from the caller's frame (code
4224 snatched from Eric Jones' weave). Added better documentation to
4231 snatched from Eric Jones' weave). Added better documentation to
4225 the section on embedding and the example file.
4232 the section on embedding and the example file.
4226
4233
4227 * IPython/genutils.py (page): Changed so that under emacs, it just
4234 * IPython/genutils.py (page): Changed so that under emacs, it just
4228 prints the string. You can then page up and down in the emacs
4235 prints the string. You can then page up and down in the emacs
4229 buffer itself. This is how the builtin help() works.
4236 buffer itself. This is how the builtin help() works.
4230
4237
4231 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4238 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4232 macro scoping: macros need to be executed in the user's namespace
4239 macro scoping: macros need to be executed in the user's namespace
4233 to work as if they had been typed by the user.
4240 to work as if they had been typed by the user.
4234
4241
4235 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4242 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4236 execute automatically (no need to type 'exec...'). They then
4243 execute automatically (no need to type 'exec...'). They then
4237 behave like 'true macros'. The printing system was also modified
4244 behave like 'true macros'. The printing system was also modified
4238 for this to work.
4245 for this to work.
4239
4246
4240 2002-02-19 Fernando Perez <fperez@colorado.edu>
4247 2002-02-19 Fernando Perez <fperez@colorado.edu>
4241
4248
4242 * IPython/genutils.py (page_file): new function for paging files
4249 * IPython/genutils.py (page_file): new function for paging files
4243 in an OS-independent way. Also necessary for file viewing to work
4250 in an OS-independent way. Also necessary for file viewing to work
4244 well inside Emacs buffers.
4251 well inside Emacs buffers.
4245 (page): Added checks for being in an emacs buffer.
4252 (page): Added checks for being in an emacs buffer.
4246 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4253 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4247 same bug in iplib.
4254 same bug in iplib.
4248
4255
4249 2002-02-18 Fernando Perez <fperez@colorado.edu>
4256 2002-02-18 Fernando Perez <fperez@colorado.edu>
4250
4257
4251 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4258 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4252 of readline so that IPython can work inside an Emacs buffer.
4259 of readline so that IPython can work inside an Emacs buffer.
4253
4260
4254 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4261 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4255 method signatures (they weren't really bugs, but it looks cleaner
4262 method signatures (they weren't really bugs, but it looks cleaner
4256 and keeps PyChecker happy).
4263 and keeps PyChecker happy).
4257
4264
4258 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4265 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4259 for implementing various user-defined hooks. Currently only
4266 for implementing various user-defined hooks. Currently only
4260 display is done.
4267 display is done.
4261
4268
4262 * IPython/Prompts.py (CachedOutput._display): changed display
4269 * IPython/Prompts.py (CachedOutput._display): changed display
4263 functions so that they can be dynamically changed by users easily.
4270 functions so that they can be dynamically changed by users easily.
4264
4271
4265 * IPython/Extensions/numeric_formats.py (num_display): added an
4272 * IPython/Extensions/numeric_formats.py (num_display): added an
4266 extension for printing NumPy arrays in flexible manners. It
4273 extension for printing NumPy arrays in flexible manners. It
4267 doesn't do anything yet, but all the structure is in
4274 doesn't do anything yet, but all the structure is in
4268 place. Ultimately the plan is to implement output format control
4275 place. Ultimately the plan is to implement output format control
4269 like in Octave.
4276 like in Octave.
4270
4277
4271 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4278 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4272 methods are found at run-time by all the automatic machinery.
4279 methods are found at run-time by all the automatic machinery.
4273
4280
4274 2002-02-17 Fernando Perez <fperez@colorado.edu>
4281 2002-02-17 Fernando Perez <fperez@colorado.edu>
4275
4282
4276 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4283 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4277 whole file a little.
4284 whole file a little.
4278
4285
4279 * ToDo: closed this document. Now there's a new_design.lyx
4286 * ToDo: closed this document. Now there's a new_design.lyx
4280 document for all new ideas. Added making a pdf of it for the
4287 document for all new ideas. Added making a pdf of it for the
4281 end-user distro.
4288 end-user distro.
4282
4289
4283 * IPython/Logger.py (Logger.switch_log): Created this to replace
4290 * IPython/Logger.py (Logger.switch_log): Created this to replace
4284 logon() and logoff(). It also fixes a nasty crash reported by
4291 logon() and logoff(). It also fixes a nasty crash reported by
4285 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4292 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4286
4293
4287 * IPython/iplib.py (complete): got auto-completion to work with
4294 * IPython/iplib.py (complete): got auto-completion to work with
4288 automagic (I had wanted this for a long time).
4295 automagic (I had wanted this for a long time).
4289
4296
4290 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4297 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4291 to @file, since file() is now a builtin and clashes with automagic
4298 to @file, since file() is now a builtin and clashes with automagic
4292 for @file.
4299 for @file.
4293
4300
4294 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4301 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4295 of this was previously in iplib, which had grown to more than 2000
4302 of this was previously in iplib, which had grown to more than 2000
4296 lines, way too long. No new functionality, but it makes managing
4303 lines, way too long. No new functionality, but it makes managing
4297 the code a bit easier.
4304 the code a bit easier.
4298
4305
4299 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4306 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4300 information to crash reports.
4307 information to crash reports.
4301
4308
4302 2002-02-12 Fernando Perez <fperez@colorado.edu>
4309 2002-02-12 Fernando Perez <fperez@colorado.edu>
4303
4310
4304 * Released 0.2.5.
4311 * Released 0.2.5.
4305
4312
4306 2002-02-11 Fernando Perez <fperez@colorado.edu>
4313 2002-02-11 Fernando Perez <fperez@colorado.edu>
4307
4314
4308 * Wrote a relatively complete Windows installer. It puts
4315 * Wrote a relatively complete Windows installer. It puts
4309 everything in place, creates Start Menu entries and fixes the
4316 everything in place, creates Start Menu entries and fixes the
4310 color issues. Nothing fancy, but it works.
4317 color issues. Nothing fancy, but it works.
4311
4318
4312 2002-02-10 Fernando Perez <fperez@colorado.edu>
4319 2002-02-10 Fernando Perez <fperez@colorado.edu>
4313
4320
4314 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4321 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4315 os.path.expanduser() call so that we can type @run ~/myfile.py and
4322 os.path.expanduser() call so that we can type @run ~/myfile.py and
4316 have thigs work as expected.
4323 have thigs work as expected.
4317
4324
4318 * IPython/genutils.py (page): fixed exception handling so things
4325 * IPython/genutils.py (page): fixed exception handling so things
4319 work both in Unix and Windows correctly. Quitting a pager triggers
4326 work both in Unix and Windows correctly. Quitting a pager triggers
4320 an IOError/broken pipe in Unix, and in windows not finding a pager
4327 an IOError/broken pipe in Unix, and in windows not finding a pager
4321 is also an IOError, so I had to actually look at the return value
4328 is also an IOError, so I had to actually look at the return value
4322 of the exception, not just the exception itself. Should be ok now.
4329 of the exception, not just the exception itself. Should be ok now.
4323
4330
4324 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4331 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4325 modified to allow case-insensitive color scheme changes.
4332 modified to allow case-insensitive color scheme changes.
4326
4333
4327 2002-02-09 Fernando Perez <fperez@colorado.edu>
4334 2002-02-09 Fernando Perez <fperez@colorado.edu>
4328
4335
4329 * IPython/genutils.py (native_line_ends): new function to leave
4336 * IPython/genutils.py (native_line_ends): new function to leave
4330 user config files with os-native line-endings.
4337 user config files with os-native line-endings.
4331
4338
4332 * README and manual updates.
4339 * README and manual updates.
4333
4340
4334 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4341 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4335 instead of StringType to catch Unicode strings.
4342 instead of StringType to catch Unicode strings.
4336
4343
4337 * IPython/genutils.py (filefind): fixed bug for paths with
4344 * IPython/genutils.py (filefind): fixed bug for paths with
4338 embedded spaces (very common in Windows).
4345 embedded spaces (very common in Windows).
4339
4346
4340 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4347 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4341 files under Windows, so that they get automatically associated
4348 files under Windows, so that they get automatically associated
4342 with a text editor. Windows makes it a pain to handle
4349 with a text editor. Windows makes it a pain to handle
4343 extension-less files.
4350 extension-less files.
4344
4351
4345 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4352 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4346 warning about readline only occur for Posix. In Windows there's no
4353 warning about readline only occur for Posix. In Windows there's no
4347 way to get readline, so why bother with the warning.
4354 way to get readline, so why bother with the warning.
4348
4355
4349 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4356 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4350 for __str__ instead of dir(self), since dir() changed in 2.2.
4357 for __str__ instead of dir(self), since dir() changed in 2.2.
4351
4358
4352 * Ported to Windows! Tested on XP, I suspect it should work fine
4359 * Ported to Windows! Tested on XP, I suspect it should work fine
4353 on NT/2000, but I don't think it will work on 98 et al. That
4360 on NT/2000, but I don't think it will work on 98 et al. That
4354 series of Windows is such a piece of junk anyway that I won't try
4361 series of Windows is such a piece of junk anyway that I won't try
4355 porting it there. The XP port was straightforward, showed a few
4362 porting it there. The XP port was straightforward, showed a few
4356 bugs here and there (fixed all), in particular some string
4363 bugs here and there (fixed all), in particular some string
4357 handling stuff which required considering Unicode strings (which
4364 handling stuff which required considering Unicode strings (which
4358 Windows uses). This is good, but hasn't been too tested :) No
4365 Windows uses). This is good, but hasn't been too tested :) No
4359 fancy installer yet, I'll put a note in the manual so people at
4366 fancy installer yet, I'll put a note in the manual so people at
4360 least make manually a shortcut.
4367 least make manually a shortcut.
4361
4368
4362 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4369 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4363 into a single one, "colors". This now controls both prompt and
4370 into a single one, "colors". This now controls both prompt and
4364 exception color schemes, and can be changed both at startup
4371 exception color schemes, and can be changed both at startup
4365 (either via command-line switches or via ipythonrc files) and at
4372 (either via command-line switches or via ipythonrc files) and at
4366 runtime, with @colors.
4373 runtime, with @colors.
4367 (Magic.magic_run): renamed @prun to @run and removed the old
4374 (Magic.magic_run): renamed @prun to @run and removed the old
4368 @run. The two were too similar to warrant keeping both.
4375 @run. The two were too similar to warrant keeping both.
4369
4376
4370 2002-02-03 Fernando Perez <fperez@colorado.edu>
4377 2002-02-03 Fernando Perez <fperez@colorado.edu>
4371
4378
4372 * IPython/iplib.py (install_first_time): Added comment on how to
4379 * IPython/iplib.py (install_first_time): Added comment on how to
4373 configure the color options for first-time users. Put a <return>
4380 configure the color options for first-time users. Put a <return>
4374 request at the end so that small-terminal users get a chance to
4381 request at the end so that small-terminal users get a chance to
4375 read the startup info.
4382 read the startup info.
4376
4383
4377 2002-01-23 Fernando Perez <fperez@colorado.edu>
4384 2002-01-23 Fernando Perez <fperez@colorado.edu>
4378
4385
4379 * IPython/iplib.py (CachedOutput.update): Changed output memory
4386 * IPython/iplib.py (CachedOutput.update): Changed output memory
4380 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4387 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4381 input history we still use _i. Did this b/c these variable are
4388 input history we still use _i. Did this b/c these variable are
4382 very commonly used in interactive work, so the less we need to
4389 very commonly used in interactive work, so the less we need to
4383 type the better off we are.
4390 type the better off we are.
4384 (Magic.magic_prun): updated @prun to better handle the namespaces
4391 (Magic.magic_prun): updated @prun to better handle the namespaces
4385 the file will run in, including a fix for __name__ not being set
4392 the file will run in, including a fix for __name__ not being set
4386 before.
4393 before.
4387
4394
4388 2002-01-20 Fernando Perez <fperez@colorado.edu>
4395 2002-01-20 Fernando Perez <fperez@colorado.edu>
4389
4396
4390 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4397 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4391 extra garbage for Python 2.2. Need to look more carefully into
4398 extra garbage for Python 2.2. Need to look more carefully into
4392 this later.
4399 this later.
4393
4400
4394 2002-01-19 Fernando Perez <fperez@colorado.edu>
4401 2002-01-19 Fernando Perez <fperez@colorado.edu>
4395
4402
4396 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4403 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4397 display SyntaxError exceptions properly formatted when they occur
4404 display SyntaxError exceptions properly formatted when they occur
4398 (they can be triggered by imported code).
4405 (they can be triggered by imported code).
4399
4406
4400 2002-01-18 Fernando Perez <fperez@colorado.edu>
4407 2002-01-18 Fernando Perez <fperez@colorado.edu>
4401
4408
4402 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4409 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4403 SyntaxError exceptions are reported nicely formatted, instead of
4410 SyntaxError exceptions are reported nicely formatted, instead of
4404 spitting out only offset information as before.
4411 spitting out only offset information as before.
4405 (Magic.magic_prun): Added the @prun function for executing
4412 (Magic.magic_prun): Added the @prun function for executing
4406 programs with command line args inside IPython.
4413 programs with command line args inside IPython.
4407
4414
4408 2002-01-16 Fernando Perez <fperez@colorado.edu>
4415 2002-01-16 Fernando Perez <fperez@colorado.edu>
4409
4416
4410 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4417 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4411 to *not* include the last item given in a range. This brings their
4418 to *not* include the last item given in a range. This brings their
4412 behavior in line with Python's slicing:
4419 behavior in line with Python's slicing:
4413 a[n1:n2] -> a[n1]...a[n2-1]
4420 a[n1:n2] -> a[n1]...a[n2-1]
4414 It may be a bit less convenient, but I prefer to stick to Python's
4421 It may be a bit less convenient, but I prefer to stick to Python's
4415 conventions *everywhere*, so users never have to wonder.
4422 conventions *everywhere*, so users never have to wonder.
4416 (Magic.magic_macro): Added @macro function to ease the creation of
4423 (Magic.magic_macro): Added @macro function to ease the creation of
4417 macros.
4424 macros.
4418
4425
4419 2002-01-05 Fernando Perez <fperez@colorado.edu>
4426 2002-01-05 Fernando Perez <fperez@colorado.edu>
4420
4427
4421 * Released 0.2.4.
4428 * Released 0.2.4.
4422
4429
4423 * IPython/iplib.py (Magic.magic_pdef):
4430 * IPython/iplib.py (Magic.magic_pdef):
4424 (InteractiveShell.safe_execfile): report magic lines and error
4431 (InteractiveShell.safe_execfile): report magic lines and error
4425 lines without line numbers so one can easily copy/paste them for
4432 lines without line numbers so one can easily copy/paste them for
4426 re-execution.
4433 re-execution.
4427
4434
4428 * Updated manual with recent changes.
4435 * Updated manual with recent changes.
4429
4436
4430 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4437 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4431 docstring printing when class? is called. Very handy for knowing
4438 docstring printing when class? is called. Very handy for knowing
4432 how to create class instances (as long as __init__ is well
4439 how to create class instances (as long as __init__ is well
4433 documented, of course :)
4440 documented, of course :)
4434 (Magic.magic_doc): print both class and constructor docstrings.
4441 (Magic.magic_doc): print both class and constructor docstrings.
4435 (Magic.magic_pdef): give constructor info if passed a class and
4442 (Magic.magic_pdef): give constructor info if passed a class and
4436 __call__ info for callable object instances.
4443 __call__ info for callable object instances.
4437
4444
4438 2002-01-04 Fernando Perez <fperez@colorado.edu>
4445 2002-01-04 Fernando Perez <fperez@colorado.edu>
4439
4446
4440 * Made deep_reload() off by default. It doesn't always work
4447 * Made deep_reload() off by default. It doesn't always work
4441 exactly as intended, so it's probably safer to have it off. It's
4448 exactly as intended, so it's probably safer to have it off. It's
4442 still available as dreload() anyway, so nothing is lost.
4449 still available as dreload() anyway, so nothing is lost.
4443
4450
4444 2002-01-02 Fernando Perez <fperez@colorado.edu>
4451 2002-01-02 Fernando Perez <fperez@colorado.edu>
4445
4452
4446 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4453 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4447 so I wanted an updated release).
4454 so I wanted an updated release).
4448
4455
4449 2001-12-27 Fernando Perez <fperez@colorado.edu>
4456 2001-12-27 Fernando Perez <fperez@colorado.edu>
4450
4457
4451 * IPython/iplib.py (InteractiveShell.interact): Added the original
4458 * IPython/iplib.py (InteractiveShell.interact): Added the original
4452 code from 'code.py' for this module in order to change the
4459 code from 'code.py' for this module in order to change the
4453 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4460 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4454 the history cache would break when the user hit Ctrl-C, and
4461 the history cache would break when the user hit Ctrl-C, and
4455 interact() offers no way to add any hooks to it.
4462 interact() offers no way to add any hooks to it.
4456
4463
4457 2001-12-23 Fernando Perez <fperez@colorado.edu>
4464 2001-12-23 Fernando Perez <fperez@colorado.edu>
4458
4465
4459 * setup.py: added check for 'MANIFEST' before trying to remove
4466 * setup.py: added check for 'MANIFEST' before trying to remove
4460 it. Thanks to Sean Reifschneider.
4467 it. Thanks to Sean Reifschneider.
4461
4468
4462 2001-12-22 Fernando Perez <fperez@colorado.edu>
4469 2001-12-22 Fernando Perez <fperez@colorado.edu>
4463
4470
4464 * Released 0.2.2.
4471 * Released 0.2.2.
4465
4472
4466 * Finished (reasonably) writing the manual. Later will add the
4473 * Finished (reasonably) writing the manual. Later will add the
4467 python-standard navigation stylesheets, but for the time being
4474 python-standard navigation stylesheets, but for the time being
4468 it's fairly complete. Distribution will include html and pdf
4475 it's fairly complete. Distribution will include html and pdf
4469 versions.
4476 versions.
4470
4477
4471 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4478 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4472 (MayaVi author).
4479 (MayaVi author).
4473
4480
4474 2001-12-21 Fernando Perez <fperez@colorado.edu>
4481 2001-12-21 Fernando Perez <fperez@colorado.edu>
4475
4482
4476 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4483 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4477 good public release, I think (with the manual and the distutils
4484 good public release, I think (with the manual and the distutils
4478 installer). The manual can use some work, but that can go
4485 installer). The manual can use some work, but that can go
4479 slowly. Otherwise I think it's quite nice for end users. Next
4486 slowly. Otherwise I think it's quite nice for end users. Next
4480 summer, rewrite the guts of it...
4487 summer, rewrite the guts of it...
4481
4488
4482 * Changed format of ipythonrc files to use whitespace as the
4489 * Changed format of ipythonrc files to use whitespace as the
4483 separator instead of an explicit '='. Cleaner.
4490 separator instead of an explicit '='. Cleaner.
4484
4491
4485 2001-12-20 Fernando Perez <fperez@colorado.edu>
4492 2001-12-20 Fernando Perez <fperez@colorado.edu>
4486
4493
4487 * Started a manual in LyX. For now it's just a quick merge of the
4494 * Started a manual in LyX. For now it's just a quick merge of the
4488 various internal docstrings and READMEs. Later it may grow into a
4495 various internal docstrings and READMEs. Later it may grow into a
4489 nice, full-blown manual.
4496 nice, full-blown manual.
4490
4497
4491 * Set up a distutils based installer. Installation should now be
4498 * Set up a distutils based installer. Installation should now be
4492 trivially simple for end-users.
4499 trivially simple for end-users.
4493
4500
4494 2001-12-11 Fernando Perez <fperez@colorado.edu>
4501 2001-12-11 Fernando Perez <fperez@colorado.edu>
4495
4502
4496 * Released 0.2.0. First public release, announced it at
4503 * Released 0.2.0. First public release, announced it at
4497 comp.lang.python. From now on, just bugfixes...
4504 comp.lang.python. From now on, just bugfixes...
4498
4505
4499 * Went through all the files, set copyright/license notices and
4506 * Went through all the files, set copyright/license notices and
4500 cleaned up things. Ready for release.
4507 cleaned up things. Ready for release.
4501
4508
4502 2001-12-10 Fernando Perez <fperez@colorado.edu>
4509 2001-12-10 Fernando Perez <fperez@colorado.edu>
4503
4510
4504 * Changed the first-time installer not to use tarfiles. It's more
4511 * Changed the first-time installer not to use tarfiles. It's more
4505 robust now and less unix-dependent. Also makes it easier for
4512 robust now and less unix-dependent. Also makes it easier for
4506 people to later upgrade versions.
4513 people to later upgrade versions.
4507
4514
4508 * Changed @exit to @abort to reflect the fact that it's pretty
4515 * Changed @exit to @abort to reflect the fact that it's pretty
4509 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4516 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4510 becomes significant only when IPyhton is embedded: in that case,
4517 becomes significant only when IPyhton is embedded: in that case,
4511 C-D closes IPython only, but @abort kills the enclosing program
4518 C-D closes IPython only, but @abort kills the enclosing program
4512 too (unless it had called IPython inside a try catching
4519 too (unless it had called IPython inside a try catching
4513 SystemExit).
4520 SystemExit).
4514
4521
4515 * Created Shell module which exposes the actuall IPython Shell
4522 * Created Shell module which exposes the actuall IPython Shell
4516 classes, currently the normal and the embeddable one. This at
4523 classes, currently the normal and the embeddable one. This at
4517 least offers a stable interface we won't need to change when
4524 least offers a stable interface we won't need to change when
4518 (later) the internals are rewritten. That rewrite will be confined
4525 (later) the internals are rewritten. That rewrite will be confined
4519 to iplib and ipmaker, but the Shell interface should remain as is.
4526 to iplib and ipmaker, but the Shell interface should remain as is.
4520
4527
4521 * Added embed module which offers an embeddable IPShell object,
4528 * Added embed module which offers an embeddable IPShell object,
4522 useful to fire up IPython *inside* a running program. Great for
4529 useful to fire up IPython *inside* a running program. Great for
4523 debugging or dynamical data analysis.
4530 debugging or dynamical data analysis.
4524
4531
4525 2001-12-08 Fernando Perez <fperez@colorado.edu>
4532 2001-12-08 Fernando Perez <fperez@colorado.edu>
4526
4533
4527 * Fixed small bug preventing seeing info from methods of defined
4534 * Fixed small bug preventing seeing info from methods of defined
4528 objects (incorrect namespace in _ofind()).
4535 objects (incorrect namespace in _ofind()).
4529
4536
4530 * Documentation cleanup. Moved the main usage docstrings to a
4537 * Documentation cleanup. Moved the main usage docstrings to a
4531 separate file, usage.py (cleaner to maintain, and hopefully in the
4538 separate file, usage.py (cleaner to maintain, and hopefully in the
4532 future some perlpod-like way of producing interactive, man and
4539 future some perlpod-like way of producing interactive, man and
4533 html docs out of it will be found).
4540 html docs out of it will be found).
4534
4541
4535 * Added @profile to see your profile at any time.
4542 * Added @profile to see your profile at any time.
4536
4543
4537 * Added @p as an alias for 'print'. It's especially convenient if
4544 * Added @p as an alias for 'print'. It's especially convenient if
4538 using automagic ('p x' prints x).
4545 using automagic ('p x' prints x).
4539
4546
4540 * Small cleanups and fixes after a pychecker run.
4547 * Small cleanups and fixes after a pychecker run.
4541
4548
4542 * Changed the @cd command to handle @cd - and @cd -<n> for
4549 * Changed the @cd command to handle @cd - and @cd -<n> for
4543 visiting any directory in _dh.
4550 visiting any directory in _dh.
4544
4551
4545 * Introduced _dh, a history of visited directories. @dhist prints
4552 * Introduced _dh, a history of visited directories. @dhist prints
4546 it out with numbers.
4553 it out with numbers.
4547
4554
4548 2001-12-07 Fernando Perez <fperez@colorado.edu>
4555 2001-12-07 Fernando Perez <fperez@colorado.edu>
4549
4556
4550 * Released 0.1.22
4557 * Released 0.1.22
4551
4558
4552 * Made initialization a bit more robust against invalid color
4559 * Made initialization a bit more robust against invalid color
4553 options in user input (exit, not traceback-crash).
4560 options in user input (exit, not traceback-crash).
4554
4561
4555 * Changed the bug crash reporter to write the report only in the
4562 * Changed the bug crash reporter to write the report only in the
4556 user's .ipython directory. That way IPython won't litter people's
4563 user's .ipython directory. That way IPython won't litter people's
4557 hard disks with crash files all over the place. Also print on
4564 hard disks with crash files all over the place. Also print on
4558 screen the necessary mail command.
4565 screen the necessary mail command.
4559
4566
4560 * With the new ultraTB, implemented LightBG color scheme for light
4567 * With the new ultraTB, implemented LightBG color scheme for light
4561 background terminals. A lot of people like white backgrounds, so I
4568 background terminals. A lot of people like white backgrounds, so I
4562 guess we should at least give them something readable.
4569 guess we should at least give them something readable.
4563
4570
4564 2001-12-06 Fernando Perez <fperez@colorado.edu>
4571 2001-12-06 Fernando Perez <fperez@colorado.edu>
4565
4572
4566 * Modified the structure of ultraTB. Now there's a proper class
4573 * Modified the structure of ultraTB. Now there's a proper class
4567 for tables of color schemes which allow adding schemes easily and
4574 for tables of color schemes which allow adding schemes easily and
4568 switching the active scheme without creating a new instance every
4575 switching the active scheme without creating a new instance every
4569 time (which was ridiculous). The syntax for creating new schemes
4576 time (which was ridiculous). The syntax for creating new schemes
4570 is also cleaner. I think ultraTB is finally done, with a clean
4577 is also cleaner. I think ultraTB is finally done, with a clean
4571 class structure. Names are also much cleaner (now there's proper
4578 class structure. Names are also much cleaner (now there's proper
4572 color tables, no need for every variable to also have 'color' in
4579 color tables, no need for every variable to also have 'color' in
4573 its name).
4580 its name).
4574
4581
4575 * Broke down genutils into separate files. Now genutils only
4582 * Broke down genutils into separate files. Now genutils only
4576 contains utility functions, and classes have been moved to their
4583 contains utility functions, and classes have been moved to their
4577 own files (they had enough independent functionality to warrant
4584 own files (they had enough independent functionality to warrant
4578 it): ConfigLoader, OutputTrap, Struct.
4585 it): ConfigLoader, OutputTrap, Struct.
4579
4586
4580 2001-12-05 Fernando Perez <fperez@colorado.edu>
4587 2001-12-05 Fernando Perez <fperez@colorado.edu>
4581
4588
4582 * IPython turns 21! Released version 0.1.21, as a candidate for
4589 * IPython turns 21! Released version 0.1.21, as a candidate for
4583 public consumption. If all goes well, release in a few days.
4590 public consumption. If all goes well, release in a few days.
4584
4591
4585 * Fixed path bug (files in Extensions/ directory wouldn't be found
4592 * Fixed path bug (files in Extensions/ directory wouldn't be found
4586 unless IPython/ was explicitly in sys.path).
4593 unless IPython/ was explicitly in sys.path).
4587
4594
4588 * Extended the FlexCompleter class as MagicCompleter to allow
4595 * Extended the FlexCompleter class as MagicCompleter to allow
4589 completion of @-starting lines.
4596 completion of @-starting lines.
4590
4597
4591 * Created __release__.py file as a central repository for release
4598 * Created __release__.py file as a central repository for release
4592 info that other files can read from.
4599 info that other files can read from.
4593
4600
4594 * Fixed small bug in logging: when logging was turned on in
4601 * Fixed small bug in logging: when logging was turned on in
4595 mid-session, old lines with special meanings (!@?) were being
4602 mid-session, old lines with special meanings (!@?) were being
4596 logged without the prepended comment, which is necessary since
4603 logged without the prepended comment, which is necessary since
4597 they are not truly valid python syntax. This should make session
4604 they are not truly valid python syntax. This should make session
4598 restores produce less errors.
4605 restores produce less errors.
4599
4606
4600 * The namespace cleanup forced me to make a FlexCompleter class
4607 * The namespace cleanup forced me to make a FlexCompleter class
4601 which is nothing but a ripoff of rlcompleter, but with selectable
4608 which is nothing but a ripoff of rlcompleter, but with selectable
4602 namespace (rlcompleter only works in __main__.__dict__). I'll try
4609 namespace (rlcompleter only works in __main__.__dict__). I'll try
4603 to submit a note to the authors to see if this change can be
4610 to submit a note to the authors to see if this change can be
4604 incorporated in future rlcompleter releases (Dec.6: done)
4611 incorporated in future rlcompleter releases (Dec.6: done)
4605
4612
4606 * More fixes to namespace handling. It was a mess! Now all
4613 * More fixes to namespace handling. It was a mess! Now all
4607 explicit references to __main__.__dict__ are gone (except when
4614 explicit references to __main__.__dict__ are gone (except when
4608 really needed) and everything is handled through the namespace
4615 really needed) and everything is handled through the namespace
4609 dicts in the IPython instance. We seem to be getting somewhere
4616 dicts in the IPython instance. We seem to be getting somewhere
4610 with this, finally...
4617 with this, finally...
4611
4618
4612 * Small documentation updates.
4619 * Small documentation updates.
4613
4620
4614 * Created the Extensions directory under IPython (with an
4621 * Created the Extensions directory under IPython (with an
4615 __init__.py). Put the PhysicalQ stuff there. This directory should
4622 __init__.py). Put the PhysicalQ stuff there. This directory should
4616 be used for all special-purpose extensions.
4623 be used for all special-purpose extensions.
4617
4624
4618 * File renaming:
4625 * File renaming:
4619 ipythonlib --> ipmaker
4626 ipythonlib --> ipmaker
4620 ipplib --> iplib
4627 ipplib --> iplib
4621 This makes a bit more sense in terms of what these files actually do.
4628 This makes a bit more sense in terms of what these files actually do.
4622
4629
4623 * Moved all the classes and functions in ipythonlib to ipplib, so
4630 * Moved all the classes and functions in ipythonlib to ipplib, so
4624 now ipythonlib only has make_IPython(). This will ease up its
4631 now ipythonlib only has make_IPython(). This will ease up its
4625 splitting in smaller functional chunks later.
4632 splitting in smaller functional chunks later.
4626
4633
4627 * Cleaned up (done, I think) output of @whos. Better column
4634 * Cleaned up (done, I think) output of @whos. Better column
4628 formatting, and now shows str(var) for as much as it can, which is
4635 formatting, and now shows str(var) for as much as it can, which is
4629 typically what one gets with a 'print var'.
4636 typically what one gets with a 'print var'.
4630
4637
4631 2001-12-04 Fernando Perez <fperez@colorado.edu>
4638 2001-12-04 Fernando Perez <fperez@colorado.edu>
4632
4639
4633 * Fixed namespace problems. Now builtin/IPyhton/user names get
4640 * Fixed namespace problems. Now builtin/IPyhton/user names get
4634 properly reported in their namespace. Internal namespace handling
4641 properly reported in their namespace. Internal namespace handling
4635 is finally getting decent (not perfect yet, but much better than
4642 is finally getting decent (not perfect yet, but much better than
4636 the ad-hoc mess we had).
4643 the ad-hoc mess we had).
4637
4644
4638 * Removed -exit option. If people just want to run a python
4645 * Removed -exit option. If people just want to run a python
4639 script, that's what the normal interpreter is for. Less
4646 script, that's what the normal interpreter is for. Less
4640 unnecessary options, less chances for bugs.
4647 unnecessary options, less chances for bugs.
4641
4648
4642 * Added a crash handler which generates a complete post-mortem if
4649 * Added a crash handler which generates a complete post-mortem if
4643 IPython crashes. This will help a lot in tracking bugs down the
4650 IPython crashes. This will help a lot in tracking bugs down the
4644 road.
4651 road.
4645
4652
4646 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4653 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4647 which were boud to functions being reassigned would bypass the
4654 which were boud to functions being reassigned would bypass the
4648 logger, breaking the sync of _il with the prompt counter. This
4655 logger, breaking the sync of _il with the prompt counter. This
4649 would then crash IPython later when a new line was logged.
4656 would then crash IPython later when a new line was logged.
4650
4657
4651 2001-12-02 Fernando Perez <fperez@colorado.edu>
4658 2001-12-02 Fernando Perez <fperez@colorado.edu>
4652
4659
4653 * Made IPython a package. This means people don't have to clutter
4660 * Made IPython a package. This means people don't have to clutter
4654 their sys.path with yet another directory. Changed the INSTALL
4661 their sys.path with yet another directory. Changed the INSTALL
4655 file accordingly.
4662 file accordingly.
4656
4663
4657 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4664 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4658 sorts its output (so @who shows it sorted) and @whos formats the
4665 sorts its output (so @who shows it sorted) and @whos formats the
4659 table according to the width of the first column. Nicer, easier to
4666 table according to the width of the first column. Nicer, easier to
4660 read. Todo: write a generic table_format() which takes a list of
4667 read. Todo: write a generic table_format() which takes a list of
4661 lists and prints it nicely formatted, with optional row/column
4668 lists and prints it nicely formatted, with optional row/column
4662 separators and proper padding and justification.
4669 separators and proper padding and justification.
4663
4670
4664 * Released 0.1.20
4671 * Released 0.1.20
4665
4672
4666 * Fixed bug in @log which would reverse the inputcache list (a
4673 * Fixed bug in @log which would reverse the inputcache list (a
4667 copy operation was missing).
4674 copy operation was missing).
4668
4675
4669 * Code cleanup. @config was changed to use page(). Better, since
4676 * Code cleanup. @config was changed to use page(). Better, since
4670 its output is always quite long.
4677 its output is always quite long.
4671
4678
4672 * Itpl is back as a dependency. I was having too many problems
4679 * Itpl is back as a dependency. I was having too many problems
4673 getting the parametric aliases to work reliably, and it's just
4680 getting the parametric aliases to work reliably, and it's just
4674 easier to code weird string operations with it than playing %()s
4681 easier to code weird string operations with it than playing %()s
4675 games. It's only ~6k, so I don't think it's too big a deal.
4682 games. It's only ~6k, so I don't think it's too big a deal.
4676
4683
4677 * Found (and fixed) a very nasty bug with history. !lines weren't
4684 * Found (and fixed) a very nasty bug with history. !lines weren't
4678 getting cached, and the out of sync caches would crash
4685 getting cached, and the out of sync caches would crash
4679 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4686 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4680 division of labor a bit better. Bug fixed, cleaner structure.
4687 division of labor a bit better. Bug fixed, cleaner structure.
4681
4688
4682 2001-12-01 Fernando Perez <fperez@colorado.edu>
4689 2001-12-01 Fernando Perez <fperez@colorado.edu>
4683
4690
4684 * Released 0.1.19
4691 * Released 0.1.19
4685
4692
4686 * Added option -n to @hist to prevent line number printing. Much
4693 * Added option -n to @hist to prevent line number printing. Much
4687 easier to copy/paste code this way.
4694 easier to copy/paste code this way.
4688
4695
4689 * Created global _il to hold the input list. Allows easy
4696 * Created global _il to hold the input list. Allows easy
4690 re-execution of blocks of code by slicing it (inspired by Janko's
4697 re-execution of blocks of code by slicing it (inspired by Janko's
4691 comment on 'macros').
4698 comment on 'macros').
4692
4699
4693 * Small fixes and doc updates.
4700 * Small fixes and doc updates.
4694
4701
4695 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4702 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4696 much too fragile with automagic. Handles properly multi-line
4703 much too fragile with automagic. Handles properly multi-line
4697 statements and takes parameters.
4704 statements and takes parameters.
4698
4705
4699 2001-11-30 Fernando Perez <fperez@colorado.edu>
4706 2001-11-30 Fernando Perez <fperez@colorado.edu>
4700
4707
4701 * Version 0.1.18 released.
4708 * Version 0.1.18 released.
4702
4709
4703 * Fixed nasty namespace bug in initial module imports.
4710 * Fixed nasty namespace bug in initial module imports.
4704
4711
4705 * Added copyright/license notes to all code files (except
4712 * Added copyright/license notes to all code files (except
4706 DPyGetOpt). For the time being, LGPL. That could change.
4713 DPyGetOpt). For the time being, LGPL. That could change.
4707
4714
4708 * Rewrote a much nicer README, updated INSTALL, cleaned up
4715 * Rewrote a much nicer README, updated INSTALL, cleaned up
4709 ipythonrc-* samples.
4716 ipythonrc-* samples.
4710
4717
4711 * Overall code/documentation cleanup. Basically ready for
4718 * Overall code/documentation cleanup. Basically ready for
4712 release. Only remaining thing: licence decision (LGPL?).
4719 release. Only remaining thing: licence decision (LGPL?).
4713
4720
4714 * Converted load_config to a class, ConfigLoader. Now recursion
4721 * Converted load_config to a class, ConfigLoader. Now recursion
4715 control is better organized. Doesn't include the same file twice.
4722 control is better organized. Doesn't include the same file twice.
4716
4723
4717 2001-11-29 Fernando Perez <fperez@colorado.edu>
4724 2001-11-29 Fernando Perez <fperez@colorado.edu>
4718
4725
4719 * Got input history working. Changed output history variables from
4726 * Got input history working. Changed output history variables from
4720 _p to _o so that _i is for input and _o for output. Just cleaner
4727 _p to _o so that _i is for input and _o for output. Just cleaner
4721 convention.
4728 convention.
4722
4729
4723 * Implemented parametric aliases. This pretty much allows the
4730 * Implemented parametric aliases. This pretty much allows the
4724 alias system to offer full-blown shell convenience, I think.
4731 alias system to offer full-blown shell convenience, I think.
4725
4732
4726 * Version 0.1.17 released, 0.1.18 opened.
4733 * Version 0.1.17 released, 0.1.18 opened.
4727
4734
4728 * dot_ipython/ipythonrc (alias): added documentation.
4735 * dot_ipython/ipythonrc (alias): added documentation.
4729 (xcolor): Fixed small bug (xcolors -> xcolor)
4736 (xcolor): Fixed small bug (xcolors -> xcolor)
4730
4737
4731 * Changed the alias system. Now alias is a magic command to define
4738 * Changed the alias system. Now alias is a magic command to define
4732 aliases just like the shell. Rationale: the builtin magics should
4739 aliases just like the shell. Rationale: the builtin magics should
4733 be there for things deeply connected to IPython's
4740 be there for things deeply connected to IPython's
4734 architecture. And this is a much lighter system for what I think
4741 architecture. And this is a much lighter system for what I think
4735 is the really important feature: allowing users to define quickly
4742 is the really important feature: allowing users to define quickly
4736 magics that will do shell things for them, so they can customize
4743 magics that will do shell things for them, so they can customize
4737 IPython easily to match their work habits. If someone is really
4744 IPython easily to match their work habits. If someone is really
4738 desperate to have another name for a builtin alias, they can
4745 desperate to have another name for a builtin alias, they can
4739 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4746 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4740 works.
4747 works.
4741
4748
4742 2001-11-28 Fernando Perez <fperez@colorado.edu>
4749 2001-11-28 Fernando Perez <fperez@colorado.edu>
4743
4750
4744 * Changed @file so that it opens the source file at the proper
4751 * Changed @file so that it opens the source file at the proper
4745 line. Since it uses less, if your EDITOR environment is
4752 line. Since it uses less, if your EDITOR environment is
4746 configured, typing v will immediately open your editor of choice
4753 configured, typing v will immediately open your editor of choice
4747 right at the line where the object is defined. Not as quick as
4754 right at the line where the object is defined. Not as quick as
4748 having a direct @edit command, but for all intents and purposes it
4755 having a direct @edit command, but for all intents and purposes it
4749 works. And I don't have to worry about writing @edit to deal with
4756 works. And I don't have to worry about writing @edit to deal with
4750 all the editors, less does that.
4757 all the editors, less does that.
4751
4758
4752 * Version 0.1.16 released, 0.1.17 opened.
4759 * Version 0.1.16 released, 0.1.17 opened.
4753
4760
4754 * Fixed some nasty bugs in the page/page_dumb combo that could
4761 * Fixed some nasty bugs in the page/page_dumb combo that could
4755 crash IPython.
4762 crash IPython.
4756
4763
4757 2001-11-27 Fernando Perez <fperez@colorado.edu>
4764 2001-11-27 Fernando Perez <fperez@colorado.edu>
4758
4765
4759 * Version 0.1.15 released, 0.1.16 opened.
4766 * Version 0.1.15 released, 0.1.16 opened.
4760
4767
4761 * Finally got ? and ?? to work for undefined things: now it's
4768 * Finally got ? and ?? to work for undefined things: now it's
4762 possible to type {}.get? and get information about the get method
4769 possible to type {}.get? and get information about the get method
4763 of dicts, or os.path? even if only os is defined (so technically
4770 of dicts, or os.path? even if only os is defined (so technically
4764 os.path isn't). Works at any level. For example, after import os,
4771 os.path isn't). Works at any level. For example, after import os,
4765 os?, os.path?, os.path.abspath? all work. This is great, took some
4772 os?, os.path?, os.path.abspath? all work. This is great, took some
4766 work in _ofind.
4773 work in _ofind.
4767
4774
4768 * Fixed more bugs with logging. The sanest way to do it was to add
4775 * Fixed more bugs with logging. The sanest way to do it was to add
4769 to @log a 'mode' parameter. Killed two in one shot (this mode
4776 to @log a 'mode' parameter. Killed two in one shot (this mode
4770 option was a request of Janko's). I think it's finally clean
4777 option was a request of Janko's). I think it's finally clean
4771 (famous last words).
4778 (famous last words).
4772
4779
4773 * Added a page_dumb() pager which does a decent job of paging on
4780 * Added a page_dumb() pager which does a decent job of paging on
4774 screen, if better things (like less) aren't available. One less
4781 screen, if better things (like less) aren't available. One less
4775 unix dependency (someday maybe somebody will port this to
4782 unix dependency (someday maybe somebody will port this to
4776 windows).
4783 windows).
4777
4784
4778 * Fixed problem in magic_log: would lock of logging out if log
4785 * Fixed problem in magic_log: would lock of logging out if log
4779 creation failed (because it would still think it had succeeded).
4786 creation failed (because it would still think it had succeeded).
4780
4787
4781 * Improved the page() function using curses to auto-detect screen
4788 * Improved the page() function using curses to auto-detect screen
4782 size. Now it can make a much better decision on whether to print
4789 size. Now it can make a much better decision on whether to print
4783 or page a string. Option screen_length was modified: a value 0
4790 or page a string. Option screen_length was modified: a value 0
4784 means auto-detect, and that's the default now.
4791 means auto-detect, and that's the default now.
4785
4792
4786 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4793 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4787 go out. I'll test it for a few days, then talk to Janko about
4794 go out. I'll test it for a few days, then talk to Janko about
4788 licences and announce it.
4795 licences and announce it.
4789
4796
4790 * Fixed the length of the auto-generated ---> prompt which appears
4797 * Fixed the length of the auto-generated ---> prompt which appears
4791 for auto-parens and auto-quotes. Getting this right isn't trivial,
4798 for auto-parens and auto-quotes. Getting this right isn't trivial,
4792 with all the color escapes, different prompt types and optional
4799 with all the color escapes, different prompt types and optional
4793 separators. But it seems to be working in all the combinations.
4800 separators. But it seems to be working in all the combinations.
4794
4801
4795 2001-11-26 Fernando Perez <fperez@colorado.edu>
4802 2001-11-26 Fernando Perez <fperez@colorado.edu>
4796
4803
4797 * Wrote a regexp filter to get option types from the option names
4804 * Wrote a regexp filter to get option types from the option names
4798 string. This eliminates the need to manually keep two duplicate
4805 string. This eliminates the need to manually keep two duplicate
4799 lists.
4806 lists.
4800
4807
4801 * Removed the unneeded check_option_names. Now options are handled
4808 * Removed the unneeded check_option_names. Now options are handled
4802 in a much saner manner and it's easy to visually check that things
4809 in a much saner manner and it's easy to visually check that things
4803 are ok.
4810 are ok.
4804
4811
4805 * Updated version numbers on all files I modified to carry a
4812 * Updated version numbers on all files I modified to carry a
4806 notice so Janko and Nathan have clear version markers.
4813 notice so Janko and Nathan have clear version markers.
4807
4814
4808 * Updated docstring for ultraTB with my changes. I should send
4815 * Updated docstring for ultraTB with my changes. I should send
4809 this to Nathan.
4816 this to Nathan.
4810
4817
4811 * Lots of small fixes. Ran everything through pychecker again.
4818 * Lots of small fixes. Ran everything through pychecker again.
4812
4819
4813 * Made loading of deep_reload an cmd line option. If it's not too
4820 * Made loading of deep_reload an cmd line option. If it's not too
4814 kosher, now people can just disable it. With -nodeep_reload it's
4821 kosher, now people can just disable it. With -nodeep_reload it's
4815 still available as dreload(), it just won't overwrite reload().
4822 still available as dreload(), it just won't overwrite reload().
4816
4823
4817 * Moved many options to the no| form (-opt and -noopt
4824 * Moved many options to the no| form (-opt and -noopt
4818 accepted). Cleaner.
4825 accepted). Cleaner.
4819
4826
4820 * Changed magic_log so that if called with no parameters, it uses
4827 * Changed magic_log so that if called with no parameters, it uses
4821 'rotate' mode. That way auto-generated logs aren't automatically
4828 'rotate' mode. That way auto-generated logs aren't automatically
4822 over-written. For normal logs, now a backup is made if it exists
4829 over-written. For normal logs, now a backup is made if it exists
4823 (only 1 level of backups). A new 'backup' mode was added to the
4830 (only 1 level of backups). A new 'backup' mode was added to the
4824 Logger class to support this. This was a request by Janko.
4831 Logger class to support this. This was a request by Janko.
4825
4832
4826 * Added @logoff/@logon to stop/restart an active log.
4833 * Added @logoff/@logon to stop/restart an active log.
4827
4834
4828 * Fixed a lot of bugs in log saving/replay. It was pretty
4835 * Fixed a lot of bugs in log saving/replay. It was pretty
4829 broken. Now special lines (!@,/) appear properly in the command
4836 broken. Now special lines (!@,/) appear properly in the command
4830 history after a log replay.
4837 history after a log replay.
4831
4838
4832 * Tried and failed to implement full session saving via pickle. My
4839 * Tried and failed to implement full session saving via pickle. My
4833 idea was to pickle __main__.__dict__, but modules can't be
4840 idea was to pickle __main__.__dict__, but modules can't be
4834 pickled. This would be a better alternative to replaying logs, but
4841 pickled. This would be a better alternative to replaying logs, but
4835 seems quite tricky to get to work. Changed -session to be called
4842 seems quite tricky to get to work. Changed -session to be called
4836 -logplay, which more accurately reflects what it does. And if we
4843 -logplay, which more accurately reflects what it does. And if we
4837 ever get real session saving working, -session is now available.
4844 ever get real session saving working, -session is now available.
4838
4845
4839 * Implemented color schemes for prompts also. As for tracebacks,
4846 * Implemented color schemes for prompts also. As for tracebacks,
4840 currently only NoColor and Linux are supported. But now the
4847 currently only NoColor and Linux are supported. But now the
4841 infrastructure is in place, based on a generic ColorScheme
4848 infrastructure is in place, based on a generic ColorScheme
4842 class. So writing and activating new schemes both for the prompts
4849 class. So writing and activating new schemes both for the prompts
4843 and the tracebacks should be straightforward.
4850 and the tracebacks should be straightforward.
4844
4851
4845 * Version 0.1.13 released, 0.1.14 opened.
4852 * Version 0.1.13 released, 0.1.14 opened.
4846
4853
4847 * Changed handling of options for output cache. Now counter is
4854 * Changed handling of options for output cache. Now counter is
4848 hardwired starting at 1 and one specifies the maximum number of
4855 hardwired starting at 1 and one specifies the maximum number of
4849 entries *in the outcache* (not the max prompt counter). This is
4856 entries *in the outcache* (not the max prompt counter). This is
4850 much better, since many statements won't increase the cache
4857 much better, since many statements won't increase the cache
4851 count. It also eliminated some confusing options, now there's only
4858 count. It also eliminated some confusing options, now there's only
4852 one: cache_size.
4859 one: cache_size.
4853
4860
4854 * Added 'alias' magic function and magic_alias option in the
4861 * Added 'alias' magic function and magic_alias option in the
4855 ipythonrc file. Now the user can easily define whatever names he
4862 ipythonrc file. Now the user can easily define whatever names he
4856 wants for the magic functions without having to play weird
4863 wants for the magic functions without having to play weird
4857 namespace games. This gives IPython a real shell-like feel.
4864 namespace games. This gives IPython a real shell-like feel.
4858
4865
4859 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
4866 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
4860 @ or not).
4867 @ or not).
4861
4868
4862 This was one of the last remaining 'visible' bugs (that I know
4869 This was one of the last remaining 'visible' bugs (that I know
4863 of). I think if I can clean up the session loading so it works
4870 of). I think if I can clean up the session loading so it works
4864 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
4871 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
4865 about licensing).
4872 about licensing).
4866
4873
4867 2001-11-25 Fernando Perez <fperez@colorado.edu>
4874 2001-11-25 Fernando Perez <fperez@colorado.edu>
4868
4875
4869 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
4876 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
4870 there's a cleaner distinction between what ? and ?? show.
4877 there's a cleaner distinction between what ? and ?? show.
4871
4878
4872 * Added screen_length option. Now the user can define his own
4879 * Added screen_length option. Now the user can define his own
4873 screen size for page() operations.
4880 screen size for page() operations.
4874
4881
4875 * Implemented magic shell-like functions with automatic code
4882 * Implemented magic shell-like functions with automatic code
4876 generation. Now adding another function is just a matter of adding
4883 generation. Now adding another function is just a matter of adding
4877 an entry to a dict, and the function is dynamically generated at
4884 an entry to a dict, and the function is dynamically generated at
4878 run-time. Python has some really cool features!
4885 run-time. Python has some really cool features!
4879
4886
4880 * Renamed many options to cleanup conventions a little. Now all
4887 * Renamed many options to cleanup conventions a little. Now all
4881 are lowercase, and only underscores where needed. Also in the code
4888 are lowercase, and only underscores where needed. Also in the code
4882 option name tables are clearer.
4889 option name tables are clearer.
4883
4890
4884 * Changed prompts a little. Now input is 'In [n]:' instead of
4891 * Changed prompts a little. Now input is 'In [n]:' instead of
4885 'In[n]:='. This allows it the numbers to be aligned with the
4892 'In[n]:='. This allows it the numbers to be aligned with the
4886 Out[n] numbers, and removes usage of ':=' which doesn't exist in
4893 Out[n] numbers, and removes usage of ':=' which doesn't exist in
4887 Python (it was a Mathematica thing). The '...' continuation prompt
4894 Python (it was a Mathematica thing). The '...' continuation prompt
4888 was also changed a little to align better.
4895 was also changed a little to align better.
4889
4896
4890 * Fixed bug when flushing output cache. Not all _p<n> variables
4897 * Fixed bug when flushing output cache. Not all _p<n> variables
4891 exist, so their deletion needs to be wrapped in a try:
4898 exist, so their deletion needs to be wrapped in a try:
4892
4899
4893 * Figured out how to properly use inspect.formatargspec() (it
4900 * Figured out how to properly use inspect.formatargspec() (it
4894 requires the args preceded by *). So I removed all the code from
4901 requires the args preceded by *). So I removed all the code from
4895 _get_pdef in Magic, which was just replicating that.
4902 _get_pdef in Magic, which was just replicating that.
4896
4903
4897 * Added test to prefilter to allow redefining magic function names
4904 * Added test to prefilter to allow redefining magic function names
4898 as variables. This is ok, since the @ form is always available,
4905 as variables. This is ok, since the @ form is always available,
4899 but whe should allow the user to define a variable called 'ls' if
4906 but whe should allow the user to define a variable called 'ls' if
4900 he needs it.
4907 he needs it.
4901
4908
4902 * Moved the ToDo information from README into a separate ToDo.
4909 * Moved the ToDo information from README into a separate ToDo.
4903
4910
4904 * General code cleanup and small bugfixes. I think it's close to a
4911 * General code cleanup and small bugfixes. I think it's close to a
4905 state where it can be released, obviously with a big 'beta'
4912 state where it can be released, obviously with a big 'beta'
4906 warning on it.
4913 warning on it.
4907
4914
4908 * Got the magic function split to work. Now all magics are defined
4915 * Got the magic function split to work. Now all magics are defined
4909 in a separate class. It just organizes things a bit, and now
4916 in a separate class. It just organizes things a bit, and now
4910 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
4917 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
4911 was too long).
4918 was too long).
4912
4919
4913 * Changed @clear to @reset to avoid potential confusions with
4920 * Changed @clear to @reset to avoid potential confusions with
4914 the shell command clear. Also renamed @cl to @clear, which does
4921 the shell command clear. Also renamed @cl to @clear, which does
4915 exactly what people expect it to from their shell experience.
4922 exactly what people expect it to from their shell experience.
4916
4923
4917 Added a check to the @reset command (since it's so
4924 Added a check to the @reset command (since it's so
4918 destructive, it's probably a good idea to ask for confirmation).
4925 destructive, it's probably a good idea to ask for confirmation).
4919 But now reset only works for full namespace resetting. Since the
4926 But now reset only works for full namespace resetting. Since the
4920 del keyword is already there for deleting a few specific
4927 del keyword is already there for deleting a few specific
4921 variables, I don't see the point of having a redundant magic
4928 variables, I don't see the point of having a redundant magic
4922 function for the same task.
4929 function for the same task.
4923
4930
4924 2001-11-24 Fernando Perez <fperez@colorado.edu>
4931 2001-11-24 Fernando Perez <fperez@colorado.edu>
4925
4932
4926 * Updated the builtin docs (esp. the ? ones).
4933 * Updated the builtin docs (esp. the ? ones).
4927
4934
4928 * Ran all the code through pychecker. Not terribly impressed with
4935 * Ran all the code through pychecker. Not terribly impressed with
4929 it: lots of spurious warnings and didn't really find anything of
4936 it: lots of spurious warnings and didn't really find anything of
4930 substance (just a few modules being imported and not used).
4937 substance (just a few modules being imported and not used).
4931
4938
4932 * Implemented the new ultraTB functionality into IPython. New
4939 * Implemented the new ultraTB functionality into IPython. New
4933 option: xcolors. This chooses color scheme. xmode now only selects
4940 option: xcolors. This chooses color scheme. xmode now only selects
4934 between Plain and Verbose. Better orthogonality.
4941 between Plain and Verbose. Better orthogonality.
4935
4942
4936 * Large rewrite of ultraTB. Much cleaner now, with a separation of
4943 * Large rewrite of ultraTB. Much cleaner now, with a separation of
4937 mode and color scheme for the exception handlers. Now it's
4944 mode and color scheme for the exception handlers. Now it's
4938 possible to have the verbose traceback with no coloring.
4945 possible to have the verbose traceback with no coloring.
4939
4946
4940 2001-11-23 Fernando Perez <fperez@colorado.edu>
4947 2001-11-23 Fernando Perez <fperez@colorado.edu>
4941
4948
4942 * Version 0.1.12 released, 0.1.13 opened.
4949 * Version 0.1.12 released, 0.1.13 opened.
4943
4950
4944 * Removed option to set auto-quote and auto-paren escapes by
4951 * Removed option to set auto-quote and auto-paren escapes by
4945 user. The chances of breaking valid syntax are just too high. If
4952 user. The chances of breaking valid syntax are just too high. If
4946 someone *really* wants, they can always dig into the code.
4953 someone *really* wants, they can always dig into the code.
4947
4954
4948 * Made prompt separators configurable.
4955 * Made prompt separators configurable.
4949
4956
4950 2001-11-22 Fernando Perez <fperez@colorado.edu>
4957 2001-11-22 Fernando Perez <fperez@colorado.edu>
4951
4958
4952 * Small bugfixes in many places.
4959 * Small bugfixes in many places.
4953
4960
4954 * Removed the MyCompleter class from ipplib. It seemed redundant
4961 * Removed the MyCompleter class from ipplib. It seemed redundant
4955 with the C-p,C-n history search functionality. Less code to
4962 with the C-p,C-n history search functionality. Less code to
4956 maintain.
4963 maintain.
4957
4964
4958 * Moved all the original ipython.py code into ipythonlib.py. Right
4965 * Moved all the original ipython.py code into ipythonlib.py. Right
4959 now it's just one big dump into a function called make_IPython, so
4966 now it's just one big dump into a function called make_IPython, so
4960 no real modularity has been gained. But at least it makes the
4967 no real modularity has been gained. But at least it makes the
4961 wrapper script tiny, and since ipythonlib is a module, it gets
4968 wrapper script tiny, and since ipythonlib is a module, it gets
4962 compiled and startup is much faster.
4969 compiled and startup is much faster.
4963
4970
4964 This is a reasobably 'deep' change, so we should test it for a
4971 This is a reasobably 'deep' change, so we should test it for a
4965 while without messing too much more with the code.
4972 while without messing too much more with the code.
4966
4973
4967 2001-11-21 Fernando Perez <fperez@colorado.edu>
4974 2001-11-21 Fernando Perez <fperez@colorado.edu>
4968
4975
4969 * Version 0.1.11 released, 0.1.12 opened for further work.
4976 * Version 0.1.11 released, 0.1.12 opened for further work.
4970
4977
4971 * Removed dependency on Itpl. It was only needed in one place. It
4978 * Removed dependency on Itpl. It was only needed in one place. It
4972 would be nice if this became part of python, though. It makes life
4979 would be nice if this became part of python, though. It makes life
4973 *a lot* easier in some cases.
4980 *a lot* easier in some cases.
4974
4981
4975 * Simplified the prefilter code a bit. Now all handlers are
4982 * Simplified the prefilter code a bit. Now all handlers are
4976 expected to explicitly return a value (at least a blank string).
4983 expected to explicitly return a value (at least a blank string).
4977
4984
4978 * Heavy edits in ipplib. Removed the help system altogether. Now
4985 * Heavy edits in ipplib. Removed the help system altogether. Now
4979 obj?/?? is used for inspecting objects, a magic @doc prints
4986 obj?/?? is used for inspecting objects, a magic @doc prints
4980 docstrings, and full-blown Python help is accessed via the 'help'
4987 docstrings, and full-blown Python help is accessed via the 'help'
4981 keyword. This cleans up a lot of code (less to maintain) and does
4988 keyword. This cleans up a lot of code (less to maintain) and does
4982 the job. Since 'help' is now a standard Python component, might as
4989 the job. Since 'help' is now a standard Python component, might as
4983 well use it and remove duplicate functionality.
4990 well use it and remove duplicate functionality.
4984
4991
4985 Also removed the option to use ipplib as a standalone program. By
4992 Also removed the option to use ipplib as a standalone program. By
4986 now it's too dependent on other parts of IPython to function alone.
4993 now it's too dependent on other parts of IPython to function alone.
4987
4994
4988 * Fixed bug in genutils.pager. It would crash if the pager was
4995 * Fixed bug in genutils.pager. It would crash if the pager was
4989 exited immediately after opening (broken pipe).
4996 exited immediately after opening (broken pipe).
4990
4997
4991 * Trimmed down the VerboseTB reporting a little. The header is
4998 * Trimmed down the VerboseTB reporting a little. The header is
4992 much shorter now and the repeated exception arguments at the end
4999 much shorter now and the repeated exception arguments at the end
4993 have been removed. For interactive use the old header seemed a bit
5000 have been removed. For interactive use the old header seemed a bit
4994 excessive.
5001 excessive.
4995
5002
4996 * Fixed small bug in output of @whos for variables with multi-word
5003 * Fixed small bug in output of @whos for variables with multi-word
4997 types (only first word was displayed).
5004 types (only first word was displayed).
4998
5005
4999 2001-11-17 Fernando Perez <fperez@colorado.edu>
5006 2001-11-17 Fernando Perez <fperez@colorado.edu>
5000
5007
5001 * Version 0.1.10 released, 0.1.11 opened for further work.
5008 * Version 0.1.10 released, 0.1.11 opened for further work.
5002
5009
5003 * Modified dirs and friends. dirs now *returns* the stack (not
5010 * Modified dirs and friends. dirs now *returns* the stack (not
5004 prints), so one can manipulate it as a variable. Convenient to
5011 prints), so one can manipulate it as a variable. Convenient to
5005 travel along many directories.
5012 travel along many directories.
5006
5013
5007 * Fixed bug in magic_pdef: would only work with functions with
5014 * Fixed bug in magic_pdef: would only work with functions with
5008 arguments with default values.
5015 arguments with default values.
5009
5016
5010 2001-11-14 Fernando Perez <fperez@colorado.edu>
5017 2001-11-14 Fernando Perez <fperez@colorado.edu>
5011
5018
5012 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5019 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5013 example with IPython. Various other minor fixes and cleanups.
5020 example with IPython. Various other minor fixes and cleanups.
5014
5021
5015 * Version 0.1.9 released, 0.1.10 opened for further work.
5022 * Version 0.1.9 released, 0.1.10 opened for further work.
5016
5023
5017 * Added sys.path to the list of directories searched in the
5024 * Added sys.path to the list of directories searched in the
5018 execfile= option. It used to be the current directory and the
5025 execfile= option. It used to be the current directory and the
5019 user's IPYTHONDIR only.
5026 user's IPYTHONDIR only.
5020
5027
5021 2001-11-13 Fernando Perez <fperez@colorado.edu>
5028 2001-11-13 Fernando Perez <fperez@colorado.edu>
5022
5029
5023 * Reinstated the raw_input/prefilter separation that Janko had
5030 * Reinstated the raw_input/prefilter separation that Janko had
5024 initially. This gives a more convenient setup for extending the
5031 initially. This gives a more convenient setup for extending the
5025 pre-processor from the outside: raw_input always gets a string,
5032 pre-processor from the outside: raw_input always gets a string,
5026 and prefilter has to process it. We can then redefine prefilter
5033 and prefilter has to process it. We can then redefine prefilter
5027 from the outside and implement extensions for special
5034 from the outside and implement extensions for special
5028 purposes.
5035 purposes.
5029
5036
5030 Today I got one for inputting PhysicalQuantity objects
5037 Today I got one for inputting PhysicalQuantity objects
5031 (from Scientific) without needing any function calls at
5038 (from Scientific) without needing any function calls at
5032 all. Extremely convenient, and it's all done as a user-level
5039 all. Extremely convenient, and it's all done as a user-level
5033 extension (no IPython code was touched). Now instead of:
5040 extension (no IPython code was touched). Now instead of:
5034 a = PhysicalQuantity(4.2,'m/s**2')
5041 a = PhysicalQuantity(4.2,'m/s**2')
5035 one can simply say
5042 one can simply say
5036 a = 4.2 m/s**2
5043 a = 4.2 m/s**2
5037 or even
5044 or even
5038 a = 4.2 m/s^2
5045 a = 4.2 m/s^2
5039
5046
5040 I use this, but it's also a proof of concept: IPython really is
5047 I use this, but it's also a proof of concept: IPython really is
5041 fully user-extensible, even at the level of the parsing of the
5048 fully user-extensible, even at the level of the parsing of the
5042 command line. It's not trivial, but it's perfectly doable.
5049 command line. It's not trivial, but it's perfectly doable.
5043
5050
5044 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5051 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5045 the problem of modules being loaded in the inverse order in which
5052 the problem of modules being loaded in the inverse order in which
5046 they were defined in
5053 they were defined in
5047
5054
5048 * Version 0.1.8 released, 0.1.9 opened for further work.
5055 * Version 0.1.8 released, 0.1.9 opened for further work.
5049
5056
5050 * Added magics pdef, source and file. They respectively show the
5057 * Added magics pdef, source and file. They respectively show the
5051 definition line ('prototype' in C), source code and full python
5058 definition line ('prototype' in C), source code and full python
5052 file for any callable object. The object inspector oinfo uses
5059 file for any callable object. The object inspector oinfo uses
5053 these to show the same information.
5060 these to show the same information.
5054
5061
5055 * Version 0.1.7 released, 0.1.8 opened for further work.
5062 * Version 0.1.7 released, 0.1.8 opened for further work.
5056
5063
5057 * Separated all the magic functions into a class called Magic. The
5064 * Separated all the magic functions into a class called Magic. The
5058 InteractiveShell class was becoming too big for Xemacs to handle
5065 InteractiveShell class was becoming too big for Xemacs to handle
5059 (de-indenting a line would lock it up for 10 seconds while it
5066 (de-indenting a line would lock it up for 10 seconds while it
5060 backtracked on the whole class!)
5067 backtracked on the whole class!)
5061
5068
5062 FIXME: didn't work. It can be done, but right now namespaces are
5069 FIXME: didn't work. It can be done, but right now namespaces are
5063 all messed up. Do it later (reverted it for now, so at least
5070 all messed up. Do it later (reverted it for now, so at least
5064 everything works as before).
5071 everything works as before).
5065
5072
5066 * Got the object introspection system (magic_oinfo) working! I
5073 * Got the object introspection system (magic_oinfo) working! I
5067 think this is pretty much ready for release to Janko, so he can
5074 think this is pretty much ready for release to Janko, so he can
5068 test it for a while and then announce it. Pretty much 100% of what
5075 test it for a while and then announce it. Pretty much 100% of what
5069 I wanted for the 'phase 1' release is ready. Happy, tired.
5076 I wanted for the 'phase 1' release is ready. Happy, tired.
5070
5077
5071 2001-11-12 Fernando Perez <fperez@colorado.edu>
5078 2001-11-12 Fernando Perez <fperez@colorado.edu>
5072
5079
5073 * Version 0.1.6 released, 0.1.7 opened for further work.
5080 * Version 0.1.6 released, 0.1.7 opened for further work.
5074
5081
5075 * Fixed bug in printing: it used to test for truth before
5082 * Fixed bug in printing: it used to test for truth before
5076 printing, so 0 wouldn't print. Now checks for None.
5083 printing, so 0 wouldn't print. Now checks for None.
5077
5084
5078 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5085 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5079 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5086 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5080 reaches by hand into the outputcache. Think of a better way to do
5087 reaches by hand into the outputcache. Think of a better way to do
5081 this later.
5088 this later.
5082
5089
5083 * Various small fixes thanks to Nathan's comments.
5090 * Various small fixes thanks to Nathan's comments.
5084
5091
5085 * Changed magic_pprint to magic_Pprint. This way it doesn't
5092 * Changed magic_pprint to magic_Pprint. This way it doesn't
5086 collide with pprint() and the name is consistent with the command
5093 collide with pprint() and the name is consistent with the command
5087 line option.
5094 line option.
5088
5095
5089 * Changed prompt counter behavior to be fully like
5096 * Changed prompt counter behavior to be fully like
5090 Mathematica's. That is, even input that doesn't return a result
5097 Mathematica's. That is, even input that doesn't return a result
5091 raises the prompt counter. The old behavior was kind of confusing
5098 raises the prompt counter. The old behavior was kind of confusing
5092 (getting the same prompt number several times if the operation
5099 (getting the same prompt number several times if the operation
5093 didn't return a result).
5100 didn't return a result).
5094
5101
5095 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5102 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5096
5103
5097 * Fixed -Classic mode (wasn't working anymore).
5104 * Fixed -Classic mode (wasn't working anymore).
5098
5105
5099 * Added colored prompts using Nathan's new code. Colors are
5106 * Added colored prompts using Nathan's new code. Colors are
5100 currently hardwired, they can be user-configurable. For
5107 currently hardwired, they can be user-configurable. For
5101 developers, they can be chosen in file ipythonlib.py, at the
5108 developers, they can be chosen in file ipythonlib.py, at the
5102 beginning of the CachedOutput class def.
5109 beginning of the CachedOutput class def.
5103
5110
5104 2001-11-11 Fernando Perez <fperez@colorado.edu>
5111 2001-11-11 Fernando Perez <fperez@colorado.edu>
5105
5112
5106 * Version 0.1.5 released, 0.1.6 opened for further work.
5113 * Version 0.1.5 released, 0.1.6 opened for further work.
5107
5114
5108 * Changed magic_env to *return* the environment as a dict (not to
5115 * Changed magic_env to *return* the environment as a dict (not to
5109 print it). This way it prints, but it can also be processed.
5116 print it). This way it prints, but it can also be processed.
5110
5117
5111 * Added Verbose exception reporting to interactive
5118 * Added Verbose exception reporting to interactive
5112 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5119 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5113 traceback. Had to make some changes to the ultraTB file. This is
5120 traceback. Had to make some changes to the ultraTB file. This is
5114 probably the last 'big' thing in my mental todo list. This ties
5121 probably the last 'big' thing in my mental todo list. This ties
5115 in with the next entry:
5122 in with the next entry:
5116
5123
5117 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5124 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5118 has to specify is Plain, Color or Verbose for all exception
5125 has to specify is Plain, Color or Verbose for all exception
5119 handling.
5126 handling.
5120
5127
5121 * Removed ShellServices option. All this can really be done via
5128 * Removed ShellServices option. All this can really be done via
5122 the magic system. It's easier to extend, cleaner and has automatic
5129 the magic system. It's easier to extend, cleaner and has automatic
5123 namespace protection and documentation.
5130 namespace protection and documentation.
5124
5131
5125 2001-11-09 Fernando Perez <fperez@colorado.edu>
5132 2001-11-09 Fernando Perez <fperez@colorado.edu>
5126
5133
5127 * Fixed bug in output cache flushing (missing parameter to
5134 * Fixed bug in output cache flushing (missing parameter to
5128 __init__). Other small bugs fixed (found using pychecker).
5135 __init__). Other small bugs fixed (found using pychecker).
5129
5136
5130 * Version 0.1.4 opened for bugfixing.
5137 * Version 0.1.4 opened for bugfixing.
5131
5138
5132 2001-11-07 Fernando Perez <fperez@colorado.edu>
5139 2001-11-07 Fernando Perez <fperez@colorado.edu>
5133
5140
5134 * Version 0.1.3 released, mainly because of the raw_input bug.
5141 * Version 0.1.3 released, mainly because of the raw_input bug.
5135
5142
5136 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5143 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5137 and when testing for whether things were callable, a call could
5144 and when testing for whether things were callable, a call could
5138 actually be made to certain functions. They would get called again
5145 actually be made to certain functions. They would get called again
5139 once 'really' executed, with a resulting double call. A disaster
5146 once 'really' executed, with a resulting double call. A disaster
5140 in many cases (list.reverse() would never work!).
5147 in many cases (list.reverse() would never work!).
5141
5148
5142 * Removed prefilter() function, moved its code to raw_input (which
5149 * Removed prefilter() function, moved its code to raw_input (which
5143 after all was just a near-empty caller for prefilter). This saves
5150 after all was just a near-empty caller for prefilter). This saves
5144 a function call on every prompt, and simplifies the class a tiny bit.
5151 a function call on every prompt, and simplifies the class a tiny bit.
5145
5152
5146 * Fix _ip to __ip name in magic example file.
5153 * Fix _ip to __ip name in magic example file.
5147
5154
5148 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5155 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5149 work with non-gnu versions of tar.
5156 work with non-gnu versions of tar.
5150
5157
5151 2001-11-06 Fernando Perez <fperez@colorado.edu>
5158 2001-11-06 Fernando Perez <fperez@colorado.edu>
5152
5159
5153 * Version 0.1.2. Just to keep track of the recent changes.
5160 * Version 0.1.2. Just to keep track of the recent changes.
5154
5161
5155 * Fixed nasty bug in output prompt routine. It used to check 'if
5162 * Fixed nasty bug in output prompt routine. It used to check 'if
5156 arg != None...'. Problem is, this fails if arg implements a
5163 arg != None...'. Problem is, this fails if arg implements a
5157 special comparison (__cmp__) which disallows comparing to
5164 special comparison (__cmp__) which disallows comparing to
5158 None. Found it when trying to use the PhysicalQuantity module from
5165 None. Found it when trying to use the PhysicalQuantity module from
5159 ScientificPython.
5166 ScientificPython.
5160
5167
5161 2001-11-05 Fernando Perez <fperez@colorado.edu>
5168 2001-11-05 Fernando Perez <fperez@colorado.edu>
5162
5169
5163 * Also added dirs. Now the pushd/popd/dirs family functions
5170 * Also added dirs. Now the pushd/popd/dirs family functions
5164 basically like the shell, with the added convenience of going home
5171 basically like the shell, with the added convenience of going home
5165 when called with no args.
5172 when called with no args.
5166
5173
5167 * pushd/popd slightly modified to mimic shell behavior more
5174 * pushd/popd slightly modified to mimic shell behavior more
5168 closely.
5175 closely.
5169
5176
5170 * Added env,pushd,popd from ShellServices as magic functions. I
5177 * Added env,pushd,popd from ShellServices as magic functions. I
5171 think the cleanest will be to port all desired functions from
5178 think the cleanest will be to port all desired functions from
5172 ShellServices as magics and remove ShellServices altogether. This
5179 ShellServices as magics and remove ShellServices altogether. This
5173 will provide a single, clean way of adding functionality
5180 will provide a single, clean way of adding functionality
5174 (shell-type or otherwise) to IP.
5181 (shell-type or otherwise) to IP.
5175
5182
5176 2001-11-04 Fernando Perez <fperez@colorado.edu>
5183 2001-11-04 Fernando Perez <fperez@colorado.edu>
5177
5184
5178 * Added .ipython/ directory to sys.path. This way users can keep
5185 * Added .ipython/ directory to sys.path. This way users can keep
5179 customizations there and access them via import.
5186 customizations there and access them via import.
5180
5187
5181 2001-11-03 Fernando Perez <fperez@colorado.edu>
5188 2001-11-03 Fernando Perez <fperez@colorado.edu>
5182
5189
5183 * Opened version 0.1.1 for new changes.
5190 * Opened version 0.1.1 for new changes.
5184
5191
5185 * Changed version number to 0.1.0: first 'public' release, sent to
5192 * Changed version number to 0.1.0: first 'public' release, sent to
5186 Nathan and Janko.
5193 Nathan and Janko.
5187
5194
5188 * Lots of small fixes and tweaks.
5195 * Lots of small fixes and tweaks.
5189
5196
5190 * Minor changes to whos format. Now strings are shown, snipped if
5197 * Minor changes to whos format. Now strings are shown, snipped if
5191 too long.
5198 too long.
5192
5199
5193 * Changed ShellServices to work on __main__ so they show up in @who
5200 * Changed ShellServices to work on __main__ so they show up in @who
5194
5201
5195 * Help also works with ? at the end of a line:
5202 * Help also works with ? at the end of a line:
5196 ?sin and sin?
5203 ?sin and sin?
5197 both produce the same effect. This is nice, as often I use the
5204 both produce the same effect. This is nice, as often I use the
5198 tab-complete to find the name of a method, but I used to then have
5205 tab-complete to find the name of a method, but I used to then have
5199 to go to the beginning of the line to put a ? if I wanted more
5206 to go to the beginning of the line to put a ? if I wanted more
5200 info. Now I can just add the ? and hit return. Convenient.
5207 info. Now I can just add the ? and hit return. Convenient.
5201
5208
5202 2001-11-02 Fernando Perez <fperez@colorado.edu>
5209 2001-11-02 Fernando Perez <fperez@colorado.edu>
5203
5210
5204 * Python version check (>=2.1) added.
5211 * Python version check (>=2.1) added.
5205
5212
5206 * Added LazyPython documentation. At this point the docs are quite
5213 * Added LazyPython documentation. At this point the docs are quite
5207 a mess. A cleanup is in order.
5214 a mess. A cleanup is in order.
5208
5215
5209 * Auto-installer created. For some bizarre reason, the zipfiles
5216 * Auto-installer created. For some bizarre reason, the zipfiles
5210 module isn't working on my system. So I made a tar version
5217 module isn't working on my system. So I made a tar version
5211 (hopefully the command line options in various systems won't kill
5218 (hopefully the command line options in various systems won't kill
5212 me).
5219 me).
5213
5220
5214 * Fixes to Struct in genutils. Now all dictionary-like methods are
5221 * Fixes to Struct in genutils. Now all dictionary-like methods are
5215 protected (reasonably).
5222 protected (reasonably).
5216
5223
5217 * Added pager function to genutils and changed ? to print usage
5224 * Added pager function to genutils and changed ? to print usage
5218 note through it (it was too long).
5225 note through it (it was too long).
5219
5226
5220 * Added the LazyPython functionality. Works great! I changed the
5227 * Added the LazyPython functionality. Works great! I changed the
5221 auto-quote escape to ';', it's on home row and next to '. But
5228 auto-quote escape to ';', it's on home row and next to '. But
5222 both auto-quote and auto-paren (still /) escapes are command-line
5229 both auto-quote and auto-paren (still /) escapes are command-line
5223 parameters.
5230 parameters.
5224
5231
5225
5232
5226 2001-11-01 Fernando Perez <fperez@colorado.edu>
5233 2001-11-01 Fernando Perez <fperez@colorado.edu>
5227
5234
5228 * Version changed to 0.0.7. Fairly large change: configuration now
5235 * Version changed to 0.0.7. Fairly large change: configuration now
5229 is all stored in a directory, by default .ipython. There, all
5236 is all stored in a directory, by default .ipython. There, all
5230 config files have normal looking names (not .names)
5237 config files have normal looking names (not .names)
5231
5238
5232 * Version 0.0.6 Released first to Lucas and Archie as a test
5239 * Version 0.0.6 Released first to Lucas and Archie as a test
5233 run. Since it's the first 'semi-public' release, change version to
5240 run. Since it's the first 'semi-public' release, change version to
5234 > 0.0.6 for any changes now.
5241 > 0.0.6 for any changes now.
5235
5242
5236 * Stuff I had put in the ipplib.py changelog:
5243 * Stuff I had put in the ipplib.py changelog:
5237
5244
5238 Changes to InteractiveShell:
5245 Changes to InteractiveShell:
5239
5246
5240 - Made the usage message a parameter.
5247 - Made the usage message a parameter.
5241
5248
5242 - Require the name of the shell variable to be given. It's a bit
5249 - Require the name of the shell variable to be given. It's a bit
5243 of a hack, but allows the name 'shell' not to be hardwire in the
5250 of a hack, but allows the name 'shell' not to be hardwire in the
5244 magic (@) handler, which is problematic b/c it requires
5251 magic (@) handler, which is problematic b/c it requires
5245 polluting the global namespace with 'shell'. This in turn is
5252 polluting the global namespace with 'shell'. This in turn is
5246 fragile: if a user redefines a variable called shell, things
5253 fragile: if a user redefines a variable called shell, things
5247 break.
5254 break.
5248
5255
5249 - magic @: all functions available through @ need to be defined
5256 - magic @: all functions available through @ need to be defined
5250 as magic_<name>, even though they can be called simply as
5257 as magic_<name>, even though they can be called simply as
5251 @<name>. This allows the special command @magic to gather
5258 @<name>. This allows the special command @magic to gather
5252 information automatically about all existing magic functions,
5259 information automatically about all existing magic functions,
5253 even if they are run-time user extensions, by parsing the shell
5260 even if they are run-time user extensions, by parsing the shell
5254 instance __dict__ looking for special magic_ names.
5261 instance __dict__ looking for special magic_ names.
5255
5262
5256 - mainloop: added *two* local namespace parameters. This allows
5263 - mainloop: added *two* local namespace parameters. This allows
5257 the class to differentiate between parameters which were there
5264 the class to differentiate between parameters which were there
5258 before and after command line initialization was processed. This
5265 before and after command line initialization was processed. This
5259 way, later @who can show things loaded at startup by the
5266 way, later @who can show things loaded at startup by the
5260 user. This trick was necessary to make session saving/reloading
5267 user. This trick was necessary to make session saving/reloading
5261 really work: ideally after saving/exiting/reloading a session,
5268 really work: ideally after saving/exiting/reloading a session,
5262 *everythin* should look the same, including the output of @who. I
5269 *everythin* should look the same, including the output of @who. I
5263 was only able to make this work with this double namespace
5270 was only able to make this work with this double namespace
5264 trick.
5271 trick.
5265
5272
5266 - added a header to the logfile which allows (almost) full
5273 - added a header to the logfile which allows (almost) full
5267 session restoring.
5274 session restoring.
5268
5275
5269 - prepend lines beginning with @ or !, with a and log
5276 - prepend lines beginning with @ or !, with a and log
5270 them. Why? !lines: may be useful to know what you did @lines:
5277 them. Why? !lines: may be useful to know what you did @lines:
5271 they may affect session state. So when restoring a session, at
5278 they may affect session state. So when restoring a session, at
5272 least inform the user of their presence. I couldn't quite get
5279 least inform the user of their presence. I couldn't quite get
5273 them to properly re-execute, but at least the user is warned.
5280 them to properly re-execute, but at least the user is warned.
5274
5281
5275 * Started ChangeLog.
5282 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now